¿Cuál es la forma más fácil de ejecutar aplicaciones GUI en Windows Subsystem para Linux a partir de 2018?

89

Busqué alrededor, y actualmente hay dos métodos sugeridos; instalando una mejora para Windows Subsystem para Linux e instalando un XServer.

Quiero saber qué método es el más sencillo (fácil de instalar Y de usar) y cuál tiene menos memoria.

Solo quiero Synaptic y CMake. ¿Por qué no podría ser una característica incorporada?

George Hovhannisian
fuente
1
¡Mi sensación personal es que WSL es una broma! ¿Por qué no simplemente cargar una VM?
Charles Green
3
@CharlesGreen memory ... Actualmente estoy en una laptop bastante vieja.
George Hovhannisian
Yo también, pero ejecuto Windows 10 en una máquina virtual para el único programa que necesito que solo se ejecuta en Windows
Charles Green el
1
@CharlesGreen VirtualBox?
George Hovhannisian
"¡Realmente quiero ejecutar Steam y finalmente jugar Portal 2 en Linux! ' WSL no es Linux, así que nunca va a suceder. WSL tampoco está pensado como una plataforma de juegos. Es una plataforma para liberar el poder de BASH a Windows. Nada más. Y para ejecutar Steam en WSL no solo necesitarías un escritorio en WSL Pero también STEAM para apoyar WSL. Nunca va a suceder.
Rinzwind

Respuestas:

29

La respuesta corta es que no puede, ya que WSL aún no admite esta función. WSL no es una instalación completa de Linux con un kernel de Linux, le permite ejecutar algunos comandos / binarios nativos de Linux en un kernel de Windows (Microsoft) y tiene limitaciones.

Ver https://github.com/Microsoft/WSL/issues/2356

Sin embargo, puede instalar un servidor X de terceros, como xming y ssh en su WSL.

https://virtualizationreview.com/articles/2017/02/08/graphical-programs-on-windows-subsystem-on-linux.aspx

No copié ese tutorial aquí, ya que es bastante ubicuo (X sobre ssh) y esperaría que algunas aplicaciones simplemente no funcionen incluso con esta técnica.

Pantera
fuente
Entonces, ¿sin problemas no es una opción, entonces? Quizás alguien haga que Synaptic para Windows trabaje con WSL en el futuro ...
George Hovhannisian
1
Los programas gráficos en WSL no significan que pueda usar Steam en WSL. Necesitaría Valve para crear soporte para WSL.
Rinzwind
77
Tenga en cuenta que no tiene que usar SSH en absoluto. Simplemente DISPLAYconfigúrelo y ya está listo (para xming y VcXsrv de todos modos).
dma1324
55
Votaría en contra esta respuesta, ya que es 1: no es completamente precisa y 2: no está en el espíritu de la pregunta: sí, puede ejecutar aplicaciones gui en wsl con un servidor x. El operador no preguntó sobre las aplicaciones compatibles. (instale vcxserve o algo similar, sudo apt-get install synaptic después de configurar DISPLAY, no necesita ssh) ...
decuser
1
@decuser Upvote mejores respuestas en su lugar: si no hay una, escriba una.
Thorbjørn Ravn Andersen
62

VcXsrv

Elegí usar VcXsrven WSL (Windows 10 Subsystem for Linux). Recomiendo que todos investiguen xming(la respuesta aceptada) y VcXsrv antes de seleccionar uno u otro para el soporte de la Interfaz gráfica de usuario (GUI) en Windows 10 Ubuntu 16.04.

Instalación

La instalación es sencilla. A partir del 17 de marzo de 2019, simplemente puede aceptar los valores predeterminados. Si desea llamar geditdesde su Bash Shell / Terminal, debe editar ~/.bashrce insertar esta línea:

export DISPLAY=localhost:0.0

¿Qué puede hacer después de instalar VcXsrv?

Pude ejecutar:

sudo apt install ubuntu-desktop
sudo apt install yad
sudo apt install gedit

... para instalar el software de escritorio GUI. Esto luego me permitió correr gedity nautilus. También pude instalar aplicaciones GUI específicas a través de la CLI (Command Line Interface) usando apto apt-getcomandos.

Cuando quiero probar muchos de mis scripts bash Ubuntu dentro de WSL VcXsrv debe instalarse de modo zenityy yadcuadros de diálogo X-windows se muestran para la entrada del usuario.

Como otros han señalado, la GUI dentro de WSL no es perfecta y puede esperar pasar tiempo resolviendo algunos problemas. Además, algunos programas GUI simplemente no funcionarán en WSL.

Notas de configuración

Modifiqué /etc/environmentpara ajustar los menús desplegables de la GUI:

PATH="/mnt/e/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
export LIBGL_ALWAYS_INDIRECT=Yes
export DISPLAY=localhost:0.0
  • /mnt/e/bines una ruta inusual porque es donde guardo los scripts utilizados en Windows 10 dual boot WSL y Ubuntu 16.04 dual boot. La mayoría de los usuarios no incluirían esto en su máquina.
WinEunuuchs2Unix
fuente
1
@GeorgeHovhannisian La ventaja para mí es que puedo usar geditlo que estoy familiarizado con la experiencia de Ubuntu Desktop. También muchos de mis scripts de bash usan zenityo yadpara cuadros de diálogo de x-windows. Estas secuencias de comandos bash no se ejecutarán a menos que VcXsrvesté instalado.
WinEunuuchs2Unix
66
+1 simplemente hilarante: ¿Cómo puedo convertir secretamente mi sistema de Windows a Ubuntu desde adentro?
postre
8
Esto fue sencillo: en Windows, descargué VcXsrv usando el enlace proporcionado. Instalado y lanzado. Luego abrí un shell de Ubuntu y entré export DISPLAY=:0. Ahora podría ejecutar xhost, xeyesy gnuploten Ubuntu (siempre que estos programas ya estén instalados en Ubuntu WSL).
Daniel K.
2
@dessert +1 a tu comentario. Es doblemente divertido teniendo en cuenta que mi nombre de usuario significa "Limitado por el usuario de Windows cambiado a Unix". Gracias a WSL, ahora uso Windows 10 ocasionalmente porque puedo ejecutar Ubuntu dentro de él. Llámame WinEunuuchs2Unix2WinSub4Linux? : p
WinEunuuchs2Unix
2
también export LIBGL_ALWAYS_INDIRECT=1y obtienes algo de aceleración de hardware en aplicaciones GL sobre X usando VcXsrv
Jippers
19

He tenido una experiencia muy positiva con VcXsrv en Win 10 Bash en Ubuntu en Windows (Ubuntu 16.04 Xenial x86_64 Linux 4.4.0-17074-Microsoft). No me concentré en ejecutar el escritorio de Unity, ya que es inútil y consume muchos recursos. Simplemente ejecuté aplicaciones de bash en modo GUI desde el escritorio de Windows10 usando XServer.

  1. Instale VcXsrv desde aquí en Sourceforge

  2. Ejecute la aplicación VcXsrv directamente, no inicie XLaunch. Debería ver localhost:0.0 - 0 clientscuando pasa el cursor sobre el icono en la barra de tareas de Win10

  3. Abre Ubuntu Bash:

    cd /mnt
    

    (resultados en localhost @ localhost: / mnt $)

    cd .. 
    

    (localhost @ localhost: / $ significa que este comando lo lleva al comienzo del disco duro hasta donde WSL puede ver ...)

    sudo apt-get install dbus synaptic nautilus --install-suggests --show-progress
    

    (esto instalará "dbus" para crear un conector virtual para GUI, "Synaptic Package Manager" y el explorador de archivos "Nautilus" para unity-desktop

    cd /usr/share/dbus-1 && sudo vi session.conf
    

    (Cuando se session.confabre en el editor vi)

    Presione ipara ingresar al modo de inserción y agregar

    <!-- <listen>unix:tmpdir=/tmp</listen> || Original Command --> to preserve original rules
    

    que agregar:

    <listen>tcp:host=localhost,bind=0.0.0.0,port=0</listen>
    <auth>EXTERNAL</auth>
    <auth>DBUS_COOKIE_SHA1</auth>
    <auth>allow_anonymous</auth> 
    

    Presione ESC cuando haya terminado de editar el archivo y :wqpara guardar el archivo.

    Ejecute estos comandos y verifique su salida:

    $ export DISPLAY=localhost:0
    $ sudo service dbus start
    * Starting system message bus dbus                 [OK]
    $ echo $DISPLAY
    localhost:0
    
  4. ¡Estás listo! Ahora solo ejecute synaptic, nautilus o firefox desde Bash y deberían cargarse en el escritorio Win10. Las opciones de GUI como esta son defectuosas pero operativas. Puede instalar ubuntu-desktop, unity, ccsm, compizy tratar de ejecutar la Unidad de escritorio para Ubuntu . No intenté configurar el "Steam" porque todavía estoy sufriendo por correr "Unreal", buena suerte :)

Si alguien sabe cómo ejecutar gnome-terminalXServer en lugar de XTerm, comparta ...

PD
: puede agregar VcXsrv como un arranque de Win10

Para maximizar sus fuentes con "Steam" como se especifica en la publicación original, ajuste un poco su Windows para la administración de paquetes de red (para reducir la latencia) y la priorización de CPU / GPU para hacer un Win10XBox ... :)

Aunque ejecutará "Steam" en "Unix", el shell sigue siendo "Windows", lo que le permite iniciar "Steam" en "Unix" ...

Preparación para Tcp :;

En regedit:

 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parameters\Interfaces

Aquí debe revisar la lista de subclaves para ubicar la entrada del adaptador de red que se utiliza para conectarse a Internet. Si está utilizando DHCP, debe buscar la DhcpIPAdddressentrada (con valores de datos del sistema NO :0.0.0.0) para encontrar el adaptador correcto.

Una vez que haya localizado la clave correcta, haga clic con el botón derecho y seleccione Nuevo> Valor de Dword (32 bits) .

Póngale el nombre TcpFrequency y haga clic ok.

Luego, haga doble clic en el valor y establezca su Valor decimal en 1. (Para restaurar la configuración predeterminada, cambie el valor a 2 o elimine la clave) Ahora navegue a la siguiente clave: HKEY_LOCAL_MACHINE\Software\Microsoft\MSMQ

Haga clic derecho en la clave nuevamente y seleccione Nuevo> Valor de Dword (32 bits) .

Nombre el nuevo parámetro TcpDelay

Luego haga doble clic en él y cambie su valor decimal a 1. (Para restaurar la clave en un momento posterior cámbielo a 0 o elimine la clave)

Algoritmo de Nagle

El algoritmo de Nagle combina varios paquetes pequeños en un solo paquete más grande para transmisiones más eficientes. Esto está diseñado para mejorar la eficiencia del rendimiento de la transmisión de datos. Deshabilitar "nagling" puede ayudar a reducir la latencia / ping en algunos juegos. El algoritmo de Nagle está habilitado en Windows de forma predeterminada. Para implementar este ajuste, modifique las siguientes claves de registro.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\{NIC-id}

Para el {NIC-id}, busque el que tenga su dirección IP en la lista; bajo esta {NIC-id}clave, cree el siguiente valor DWORD:

  • TcpFrequency y configúrelo en 1 para deshabilitar "nagling" para juegos.
  • TCPDelay y configúrelo también en 1 para deshabilitar "nagling"
  • TcpTicks y configúralo en 0

Nota:

Algunos informes dicen que los ajustes redujeron la latencia al jugar Dota 2 y League of Legends, pero no funciona para algunos. Lo probé y mi latencia mejoró de 110 a 90 ms (servidor SEA) al jugar Dota 2.

Índice de limitación de red

Windows implementa un mecanismo de limitación de red, la idea detrás de dicha limitación es que el procesamiento de paquetes de red puede ser una tarea intensiva en recursos. Es beneficioso desactivar dicha aceleración para lograr el máximo rendimiento.

Para implementar este ajuste, ejecute regedit y modifique el registro

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile. 

En SystemProfile , cree un valor DWORD y asígnele el nombre a NetworkThrottlingIndex, luego establezca su valor hexadecimal en ffffffff para juegos y rendimiento máximo: ffffffff desactiva por completo la limitación.


Capacidad de respuesta del sistema de juego (no estoy tan seguro de esto :)

La transmisión multimedia y algunos juegos que utilizan el servicio "Programador de clases multimedia" (MMCSS) solo pueden utilizar hasta el 80% de la CPU. El servicio "Multimedia Class Scheduler" (MMCSS) garantiza el acceso prioritario a los recursos de la CPU, sin negar los recursos de la CPU a las aplicaciones en segundo plano de menor prioridad.

Para implementar este ajuste, ejecute regedit y modifique la clave de registro

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile. 

A partir de ahí, cree un nuevo DWORD y asígnele un nombre a SystemResponsiveness, establezca su valor decimal en 00000000 para juegos / streaming puro.

En la misma sección del Registro que el ajuste anterior, también puede cambiar la prioridad de los Juegos. Para implementar este ajuste, vaya a

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile\Tasks\Games

y cambie los siguientes valores de registro:

  • "GPU Priority" cambia sus valores a 8 para juegos.
  • "Prioridad" establecida en 1 para juegos.

Todos los aplausos por "desconocido" (perdóname hace un tiempo desde que copié sus instrucciones) autor de este ajuste de Windows = Xbox ...

PPS: si XServer falla en lo que le gustaría hacer, intente encontrar la solución con Docker.

tenedas
fuente
6-5-7; : 5-6-7 ...
tenedas
Gracias por una respuesta muy detallada. De lo contrario, gracias a quien sugirió la edición, no puedo creer que la gente sugiera soluciones para ejecutar Steam. Por otro lado, la gente todavía sigue sugiriendo escritorios, que todavía no tengo idea de cuál sería el uso de eso, personalmente ni siquiera necesito un administrador de archivos, y mucho menos un escritorio flexible completo.
George Hovhannisian
Instalé Xming en Windows, luego utilicé todos los pasos de la sección 3. aquí (arriba): instale dbus (no hay necesidad real de synaptic o nautilus, pero nautilus es una buena comprobación), edite el session.conf e inicie el dbus Servicio. Nautilus luego se inicia con éxito con algunos mensajes de error.
MikeW
¿Qué quiere decir con "Ejecutar la aplicación VcXsrv directamente" - cómo exactamente hacer esto?
Erel Segal-Halevi
Cambie <auth>allow_anonymous</auth>a <auth>ANONYMOUS</auth>, entonces service dbus restarty gnome-terminaldebería funcionar
ZAB
9

A pesar de que un entorno de escritorio GUI completo no es "oficialmente" compatible con Microsoft, puede funcionar.

Active o desactive las características de
Windows Habilite el subsistema de Windows para Linux
Reinicie la computadora
Inicie Microsoft Store
Busque Ubuntu
Seleccione Ubuntu 18.04 en Aplicaciones
Haga clic en Obtener
Iniciar Ubuntu y espere a la instalación
Establezca el nombre de usuario y la contraseña

Ejecute los siguientes comandos:

sudo apt-get update -y
sudo apt-get install ubuntu-desktop -y
sudo apt-get install xfce4 xorg xrdp -y
sudo sed -i 's/port=3389/port=3390/g' /etc/xrdp/xrdp.ini

Crear y modificar .xsession

cd /home/user/
sudo vim .xsession

Añadir texto:

gnome-session --session=ubuntu-2d

Guardar y salir vi

sudo chmod 755 .xsession
sudo systemctl enable xrdp

Necesitarás una segunda cuenta en Ubuntu

sudo adduser remote
sudo usermod -aG sudo remote

Modificar startwm.sh

cd /etc/xrdp
sudo chmod 777 startwm.sh
vim startwm.sh

Comente las dos líneas inferiores

#test -x /etc/X11/Xsession && exec /etc/X11/Xsession
#exec /bin/sh /etc/X11/Xsession

Añadir texto:

startxfce4

Guardar y salir vi

exit

En Windows, reinicie Ubuntu y ejecute:

sudo /etc/init.d/xrdp start

En Windows, ejecute mstsc.exe
Computadora: 127.0.0.1:3390
Deje el nombre de usuario en blanco
Conectar

Sesión:
nombre de usuario Xorg :
contraseña remota : contraseña

¡Disfruta de xfce!

Cuando termine, cierre la conexión de escritorio remoto
Regrese a la línea de comando de Ubuntu

sudo /etc/init.d/xrdp stop
exit
Huésped
fuente
1
Esto esta funcionando. Usé ubuntu 16. No tenía la apariencia de la GUI nativa de ubuntu. Xorg no está disponible en la lista
xrdp
Sigo recibiendo el siguiente mensaje de error: "error de inicio de sesión para mostrar 0". Pensamientos? ¿Por qué xrdp no me permite iniciar sesión?
J-Dizzle
2

Como lo quieres fácil ... Hay una aplicación en Microsoft Store llamada x410 . Básicamente es un servidor Cygwin X11 sin el uso de Cygwin. Después de la instalación, que es cero configuración, ¡puede ejecutar WSL X11 Apps! (o incluso escritorios completos). Es posible que desee insertar las siguientes líneas en su .bashrc (desde su cuenta de usuario WSL) para que pueda ejecutar las aplicaciones desde su terminal bash.

### Setup a D-Bus instance that will be shared by all X-Window apps
pidof dbus-launch 1> /dev/null || dbus-launch --exit-with-x11 1> /dev/null 2> 
/dev/null

## Export
export DISPLAY=127.0.0.1:0.0

Compré x410 en ungüento por unos 5 euros. Entonces, si es demasiado, ¡tal vez espere una venta!

WhySiempreTheLoginAndPassword
fuente
2

Si desea una solución lista para usar sin esfuerzo, use MobaXTerm . Es un excelente emulador de terminal de múltiples fichas con soporte directo para WSL, y tiene un servidor X optimizado incorporado. Uso sináptico todo el tiempo en Moba. Incluso RStudio.

abalter
fuente
1

Elegí la respuesta de Panther no solo porque es la única, sino también porque es la respuesta correcta; no hay una forma fácil (sin complicaciones) de ejecutar aplicaciones de interfaz gráfica de usuario.

Además, utilicé este tutorial, con algunos cambios:

  1. No lo instalé xfceporque no sé por qué necesitaría un escritorio.
  2. Escogió Multiple Windowsen XLaunch(n DE, por lo tanto, no hay necesidad de una ventana gigante)
  3. No hay necesidad de arreglar mkdir ni de un terminal separado.

¿Qué aplicaciones gui instalé? Solo Synaptic y CMake, ya que realmente no puedo pensar en nada más que necesitaría en wsl.

No hago VM / Dual Boot, por la misma razón que Panther señaló; Necesito un entorno de desarrollo conveniente (para mí), no un sistema operativo flexible completo.

George Hovhannisian
fuente
vagrantup.com/docs/other/wsl.html : vagrant es una excelente herramienta para acelerar los entornos de desarrollo. Parece que es compatible con wsl. Aunque todavía no lo he probado.
TamusJRoyce
1

Basado en mi investigación, wsl originalmente no fue diseñado para usuarios de GUI. Sin embargo, podemos instalar un servidor X de un tercero para mostrar la GUI. He probado que VcXsrv con alguna configuración adecuada puede usarse para mostrar Debian Linux-desktop.

Creo que mi enfoque funciona sin problemas para mostrar mate-desktop (GUI) en el subsistema de Windows Linux Debian. Hice un video sobre cómo instalar y mostrar mate-desktop (GUI) en wsl Debian desde cero. Enlace: https://youtu.be/QjogEWudpaM

La instalación del mate-escritorio en Ubuntu es ligeramente diferente.

Paso 1 : instalar wsl

  • Abra PowerShell como administrador y escribaEnable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
  • Instale "Debian" o "Ubuntu" desde la tienda de Microsoft.

Paso 2 : instale una interfaz gráfica de usuario, como el escritorio mate.

Para usuarios de Debian :

  • Abra la consola de Linux en Windows 10 e instale mate-desktop escribiendo:, sudo apt-get updatepresione enter.
  • Después de finalizar la actualización, escriba sudo apt install task-mate-desktop, presione enter.

O para el usuario de Ubuntu :

  • abra la consola de ubuntu desde windows 10
  • escriba sudo apt install tasksel, presione enter
  • escriba sudo apt update, presione enter
  • escriba sudo tasksel install ubuntu-mate-desktop, presione enter

Paso 3 : Instale el servidor X en Windows 10. Utilicé un servidor de código abierto llamado VcXsrv. Se puede descargar desde https://sourceforge.net/projects/vcxsrv/ .
Una vez que se completa la instalación:

  • Abra XLauch en Windows 10

  • realice la siguiente configuración:

    • seleccionar: "One large window"
    • seleccionar Display number: 0
    • hacer clic next
    • seleccionar Start no client
    • hacer clic next
    • hacer clic finish

Paso 4 : configuración en la consola de Linux:

  • tipo export DISPLAY=:0

  • tipo export LIBGL_ALWAYS_INDIRECT=1(tal vez esta recomendación no es necesaria)

Paso 5 : Mostrar la GUI de mate-escritorio:

  • tipo mate-sessionpara usuario de Debian

  • escriba mate-sessiono lightdm-sessionpara el usuario de Ubuntu

Si se confunde acerca de mi descripción, puede consultar mis videos de YouTube Instalar GUI (Mate Desktop) en el subsistema Microsoft Windows Linux .

David Xue
fuente
-1

Por lo general, se puede llegar al host de un invitado VirtualBox en 10.0.2.2

Ahora puede usar cualquier programa WSL X en su escritorio Fedora, incluso con Windows sin interrupciones.

weberjn
fuente
Ahora, esto es interesante. No soy un gran fanático de Fedora. ¿Se puede hacer lo mismo con Arch?
George Hovhannisian
Supongo que sí. Se puede acceder al servidor X en Fedora a través de ssh de forma predeterminada, es posible que deba cambiar algunas configuraciones de sshd en Arch.
weberjn