Si tienes instalada alguna distribución de Linux en Windows10 usando WSL1 o WSL2, o si te has conectado a una máquina remota mediante SSH con la opción -X, podrás abrir cualquier interfáz gráfica sólo si instalas un intérprete de X11 para Windows como Xming o VcXsrv y configuras algunas opciones en tu ventana de Linux (WSL).
- Si aún no tienes instalado WSL (Linux en Windows), puedes seguir mi tutorial en este otro link.
1. Instalación de intérprete de X11
Lo primero es elegir el programa que interpretará la interfáz gráfica de Linux en Windows. Es un programa que se ejecuta en Windows cada vez que vas a ejecutar una aplicación gráfica en tu ventana linux WSL.
Dos opciones:
VcXrv es un programa más actualizado, más fácil de configurar, pero no se pueden programar los comandos.
Descargar desde este link instalarlo
Al ejecutarlo, presionar "siguiente" hasta la última pantalla donde tendrán que marcar "disable access control".
Esto, cada vez que lo ejecuten (por eso no me gusta).
Xming es un programa algo antiguo pero funcional... yo lo prefiero.
Descargar desde este link instalarlo
Debes editar la línea de ejecución del acceso directo agregando algunas opciones (en esto te debo ayudar).
"C:\Program Files (x86)\Xming\Xming.exe" :0 -clipboard -multiwindow -xkbmodel pc105 -xkblayout latam -a
Este cambio se hace una vez y para siempre.
2. Ahora vamos a configurar nuestra terminal de Ubuntu WSL
Primero debes revisar qué versión de WSL tienes pues eso determina cuál comando tendrás que ejecutar.
- PowerShell es una ventana de línea de comandos de Windows con capacidades mejoradas. La puedes encontrar en el menú de inicio. Elige la que dice «Windows PowerShell» y, antes de ejecutarla presionas el botón derecho sobre el programa y seleccionas «Ejecutar como Administrador»
Abre PowerShell como administrador y ejecuta lo siguiente:
wsl --list --verbose
Según el resultado tendrás que elegir alguno de los siguientes pasos y ejecutarlos en la terminal de Linux.
Si se usa WSL1:
En caso de desear que el cambio sea momentáneo:
export DISPLAY=localhost:0.0
En caso de desear que el cambio permanente (recomendado):
echo "export DISPLAY=localhost:0.0" >> ~/.bashrc
. ~/.profile
Si se usa WSL2:
En caso de desear que el cambio sea momentáneo:
export DISPLAY=$(awk '/nameserver / {print $2; exit}' /etc/resolv.conf 2>/dev/null):0
export LIBGL_ALWAYS_INDIRECT=1
En caso de desear que el cambio permanente (recomendado):
echo "export DISPLAY=\$(awk '/nameserver / {print \$2; exit}' /etc/resolv.conf 2>/dev/null):0" >> ~/.bashrc
echo "export LIBGL_ALWAYS_INDIRECT=1" >> ~/.bashrc
. ~/.profile
3. Finalmente probamos que todo funciona
Una forma simpática de probar nuestro sistema es ejecutando la aplicación de linux xeyes la cual levantará una ventana con un par de ojos que siguen el movimiento de nuestro mouse.
Instalamos algunas aplicaciones básicas de Linux (xeyes, xcalc, etc..)
sudo apt install xapps
Ejecutamos VcXrv o Xming según lo que hayas instalado
(recuerda que en caso de VcXrv tendrás que marcar "disable access control")
Ahora, en nuestra terminal de linux ejecutamos xeyes
xeyes
Debieras ver un par de ojos que siguen los movimientos de tu mouse.
Para salir, puede cerrar la ventana de los ojos que se mueven, o ir a la ventana de linux y presionar ctrl+C (control + C) o, simplemente cerrar la ventana de linux.
Acá un listado de otras aplicaciones:
xmesagge "mi propio mensaje"
# display a message or query in a window (X-based /bin/echo)
xmore archivo.txt
# plain text display program for the X Window System
xlogo
# X Window System logo
xedit
# simple text editor for X
xcalc
# scientific calculator for X
xclock
# analog / digital clock for X
ocloc
# round X clock
xclipboard
# interchange between cut buffer and selection
xman
# Manual page display program for the X Window System
xgc
# X graphics demo
ico
# animate an icosahedron or other polyhedron
4. Tips VNC en Ubunti para X11
Edit and add to .vnc/xstartup
#!/bin/sh
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
startxfce4 &
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
chmod 775 .vnc/xstartup
vnc4server -geometry 1024x768 -geometry 1600x900 -geometry 1366x768 -geometry 1280x1024
tigervncserver -geometry 1024x768 -geometry 1600x900 -geometry 1366x768 -geometry 1280x1024
xrandr -s 1600x900
vnc4server -kill :1
vncpasswd