¿Cómo configurar la variable predeterminada para un solo comando con variables env?

¿Cómo configurar la variable predeterminada para un solo comando con variables env?

Necesito anular el navegador predeterminado para un solo proceso. Este proceso comienza manualmente desde los scripts npm. Para lograr esto mediante programación, decidí anular BROWSERla variable de entorno justo antes del script. Pero no funciona. Robo abre el navegador predeterminado de todo el sistema. Lo intenté con xdg-open, pero tampoco funciona.

Para ser breve, quiero que el siguiente comando abra la URL dada en el navegador proporcionado, no en el predeterminado.

BROWSER='path to desired browser' xdg-open 'any url'

PD: Sólo para contar un poco más sobre mi problema. Estoy usando Firefox como navegador predeterminado en todas mis máquinas y me acostumbré bastante. Pero recientemente, al depurar una aplicación web, me di cuenta de que las herramientas de desarrollo de Firefox no utilizaban algunos puntos de interrupción. Instalé Chromium y su depurador funcionó como se esperaba. Utilizo el libro de cuentos para el desarrollo y me gustaría abrirlo en Chromium, mientras uso Firefox como variable predeterminada para el uso diario.

Respuesta1

Necesitaba algo similar, pero no limitado a situaciones que respetaran $BROWSER, como xdg-openusar frecuentemente el perfil de navegador incorrecto.

Aquí hay una solución alternativa con los siguientes componentes:

  • Un script que carga la BROWSERvariable e inicia el navegador correcto.
  • Anulación del .desktopperfil predeterminado actual copiándolo en el ~/.local/share/applicationsdirectorio.
  • Cambie las Execdeclaraciones en el .desktoparchivo para usar el script personalizado.
  • Establezca la BROWSERvariable en un valor predeterminado sensato en el shell de inicio de sesión para tener un respaldo.

Paso a paso

Agregué un script a mi ~/bindirectorio llamado custom-browserque se parece a:

$BROWSER "$@"

En segundo lugar, busque el .desktopperfil actual con:

xdg-settings get default-web-browser

Eso me dio firefox.desktop, que copié en el directorio de inicio de mi usuario:

cp /usr/share/applications/firefox.desktop ~/.local/share/applications/firefox.desktop

Modifiqué las Execdeclaraciones ~/.local/share/applications/firefox.desktoppara iniciar /home/{user}/bin/custom-browser.

Ahora puedo usar:

BROWSER='chromium' xdg-open 'https://startpage.com'
BROWSER='firefox' xdg-open 'https://startpage.com'

Para abrir diferentes navegadores según la BROWSERvariable. Espero que esto te ayude de alguna manera.

mi uso

yo suelodirenv[1] para configurar la BROWSERvariable según el directorio, por ejemplo, los directorios de trabajo usan un perfil de trabajo para mi navegador.

Otra es que inicio aplicaciones para BROWSER=hardened-firefox signal-desktopforzar que la aplicación abra enlaces con un navegador específico.

Notas

  • El script es necesario porque el .desktoparchivo no carga variables de entorno, por lo que agregarlo Exec=$BROWSER %udirectamente no funciona.
  • Es posible configurar el respaldo BROWSERen el script en lugar del shell de inicio de sesión.
  • Es posible escribir un .desktoparchivo personalizado y cambiar el valor predeterminado con xdg-settings/ xdg-mimeen lugar de anular el valor predeterminado; Me resultó más fácil hacerlo "bien" con la anulación.
  • Si utiliza navegadores que no utilizan la URL como primer parámetro posicional, .desktoppuede ser más fácil personalizarlo y tratarlo en el script.
  • Si el .desktopperfil no está en /usr/share/applications, o la anulación en $HOME/.local/share/applicationsno funciona, pruebe lacaminos alternativos[2] o consulte la documentación de su distribución.

Enlaces

  1. https://direnv.net/
  2. https://specifications.freedesktop.org/mime-apps-spec/latest/ar01s02.html

Respuesta2

export BROWSER='path to desired browser' && xdg-open 'any url'debería funcionar.

información relacionada