Cómo crear un acceso directo en Windows 10 para iniciar una aplicación GUI WSL2 en VcXsrv

Cómo crear un acceso directo en Windows 10 para iniciar una aplicación GUI WSL2 en VcXsrv

Estoy intentando crear un acceso directo para Firefox desde WSL2 a Windows 10 Home, pero no he podido hacerlo. Estoy usando VcXsrv, que configuré para que se inicie automáticamente. No puedo usar WSLg porque no tengo Windows 11.

¿Puedes usar aplicaciones, como Firefox, en un acceso directo de Windows sin tener que exportar DISPLAYmanualmente?

Respuesta1

Suena como tú:

  • Ya tiene su DISPLAYvariable configurada correctamente y puede ejecutar Firefox desde la línea de comandos en VcXsrv. Ese es un gran comienzo.

  • Notodavía tengo la DISPLAYvariable exportada en ~/.bashrc, ya que mencionas tener que exportarla manualmente.

Si ese es el caso, primero deberá exportar la variable en su configuración de inicio. Si ya has hecho esta parte, salta a la"Línea de comando de acceso directo"sección siguiente.

Exportar DISPLAY en el inicio

Agregue lo siguiente a su ~/.bashrc:

export DISPLAY="$(hostname).local:0"

Que utiliza mDNS para recoger la dirección IP adecuada según miresponde aquí sobre el tema. Si tiene otra DISPLAYconfiguración que funcione para usted, puede usarla en su lugar, pero creo que el hostnameenfoque basado es el más fácil en la mayoría de los casos.

Entonces:

source ~/.bashrc

para que vuelva a leer la configuración. También puedes reiniciar el shell para asegurarte. Luego asegúrese de que Firefox se ejecute.

Línea de comando de acceso directo

Lo anterior funciona cuando estás en unainteractivoshell, ya que el archivo rc proviene de shells interactivos. Sin embargo, cuando inicias Firefox a través de un acceso directo, necesitarás usar el wsl.execomando y, de forma predeterminada, esono esun shell interactivo (o de inicio de sesión).

Desde la memoria aquí, intente configurar su acceso directo de Windows en:

wsl -e bash -lic "firefox"

Eso ejecutará Bash:

  • Como shell de inicio de sesión ( -l) que generará su~/.bash_profile
  • Como un shell interactivo ( -i) que generará su~/.bashrc
  • Y ejecuta el comando ( -c) Firefox

Respuesta2

Recomiendo usar la siguiente sintaxis:

wsl -e bash -lic "nohup firefox &"

"&" en Linux significa "iniciar en segundo plano". Sin "&" tenemos una ventana activa con el proceso padre (bash), con "&" pero sin "nohup" nuestro proceso terminará junto con el padre (ventanas bash).

Con "nohup" y "&" todo se ve bonito, solo el proceso de Firefox.

Respuesta3

Aún más a:

Acceso directo de Windows (comando de destino)

Esto es lo que funciona mejor y de manera más confiable para mí en mis circunstancias particulares, es decir, Windows 10 con WSL2 Debian.

C:\Windows\System32\wsl.exe -d Debian -- bash -lic "nohup firefox &"

Nota (si migra desde GWSL)

Si solía usar GWSL para iniciar aplicaciones GUI antes de actualizar a WSL2, asegúrese de revisar sus archivos ~/.bashrc& ~/.profile(o ~/.bash_profile) para eliminar cualquier configuración que GWSL haya colocado allí y que sin darse cuenta podría sobrescribir la DISPLAYvariable de entorno a algo no válido que contenga su servidor de nombres. Dirección IP (de /etc/resolve.conf).

En mi caso, las configuraciones heredadas de GWSL establecidas DISPLAYen 1.1.1.1:0.0lugar de :0las cuales causaron que las cosas se rompieran.

Respuesta4

Al intentar ejecutar un IDE de Xilinx en WSL con el entorno requerido y mi directorio de trabajo, terminé con lo siguiente:

wsl.exe -e bash -lic ". /opt/Xilinx/14.7/ISE_DS/settings64.sh && cd /mnt/c/Users/%username%/Documents/ISE_Projects && nohup ise &"

Encadenar comandos usando && me permitió forzar el entorno y el directorio de trabajo deseados antes de iniciar el programa.

La sustitución de% nombre de usuario% parece estar funcionando.

información relacionada