Qual é a maneira mais fácil de executar aplicativos GUI no Windows Subsystem para Linux a partir de 2018?

89

Eu procurei e atualmente existem dois métodos sugeridos; instalando um aprimoramento para o Windows Subsystem para Linux e instalando um XServer.

Quero saber qual método é o mais fácil de usar (fácil de instalar e usar) e qual é o que consome menos memória.

Eu só quero Synaptic e CMake. Por que esse recurso não pode ser incorporado?

George Hovhannisian
fonte
1
Meu sentimento pessoal é que a WSL é uma piada! Por que não simplesmente carregar uma VM?
Charles Green
3
@CharlesGreen memory ... Atualmente, estou em um laptop bem antigo.
George Hovhannisian
Eu também, mas eu executar o Windows 10 em uma máquina virtual para o programa que eu preciso que só funciona no Windows
Charles Green
1
@CharlesGreen VirtualBox?
George Hovhannisian
"Eu realmente quero rodar o Steam e finalmente jogar o Portal 2 no Linux! ' A WSL não é Linux, então nunca acontecerá. A WSL também não é uma plataforma de jogos. É uma plataforma para liberar o poder do BASH no Windows. Nada mais. E para executar o vapor na WSL, você não precisaria apenas de um desktop na WSL. Mas também o STEAM para dar suporte à WSL, nunca vai acontecer.
Rinzwind

Respostas:

29

A resposta curta é que você não pode, pois o WSL ainda não suporta esta função. O WSL não é uma instalação completa do Linux com um kernel do Linux, permite executar alguns comandos / binários nativos do linux em um kernel do Windows (Microsoft) e possui limitações.

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

No entanto, você pode instalar um servidor X de terceiros, como xming e ssh, na sua WSL.

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

Não copiei esse tutorial aqui, pois é bastante onipresente (X sobre ssh) e espero que alguns aplicativos simplesmente não funcionem, mesmo com essa técnica.

Pantera
fonte
Então, sem complicações não é uma opção, então? Talvez alguém vai fazer Synaptic para Windows para trabalhar com WSL no futuro ....
George Hovhannisian
1
Programas gráficos na WSL não significa que você possa usar o Steam na WSL. Você precisaria da Valve para criar suporte para WSL.
Rinzwind 7/01/19
7
Lembre-se de que você não precisa usar o SSH. Basta definir DISPLAYe você está pronto para ir (para xming e VcXsrv de qualquer maneira).
precisa saber é o seguinte
5
Eu rebaixaria essa resposta, pois ela é 1: não totalmente precisa e 2: não no espírito da pergunta - sim, você pode executar aplicativos GUI no wsl com um xserver. A operação não perguntou sobre aplicativos suportados. (instale vcxserve ou algo semelhante, sudo apt-get install synaptic após configurar DISPLAY, não há necessidade de ssh) ...
decuser
1
@decuser Voto positivo em vez de respostas melhores: se não houver, escreva uma.
Thorbjørn Ravn Andersen
62

VcXsrv

Eu escolhi usar VcXsrvno WSL (Windows 10 Subsystem para Linux). Eu recomendo que todos façam sua pesquisa entre xming(a resposta aceita) e o VcXsrv antes de selecionar um ou outro para suporte à Interface Gráfica do Usuário (GUI) no Windows 10 Ubuntu 16.04.

Instalação

A instalação é simples. A partir de 17 de março de 2019, você poderá simplesmente aceitar os padrões. Se você quiser ligar geditde dentro do seu Bash Shell / Terminal, precisará editar ~/.bashrce inserir esta linha:

export DISPLAY=localhost:0.0

O que você pode fazer após a instalação do VcXsrv?

Eu era capaz de executar:

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

... para instalar o software da área de trabalho da GUI. Isso então me permitiu correr gedite nautilus. Também pude instalar aplicativos GUI específicos por meio da CLI (Command Line Interface) usando aptou apt-getcomandos.

Quando eu quero tentar muitos dos meus scripts bash Ubuntu dentro WSL VcXsrv deve ser instalado de forma zenitye yadcaixas de diálogo X-windows são exibidos para a entrada do usuário.

Como outros observaram, a GUI na WSL não é perfeita e você pode esperar gastar algum tempo resolvendo alguns problemas. Além disso, alguns softwares da GUI simplesmente não funcionam na WSL.

Notas de instalação

Modifiquei /etc/environmentpara ajustar os menus suspensos da 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/biné um caminho incomum, porque é onde eu armazeno os scripts usados ​​no Windows 10 dual boot WSL e no Ubuntu 16.04 dual boot. A maioria dos usuários não incluiria isso em sua máquina.
WinEunuuchs2Unix
fonte
1
@GeorgeHovhannisian A vantagem para mim é que posso usar o geditque estou familiarizado com a experiência no Ubuntu Desktop. Muitos dos meus scripts bash também usam zenityou yadpara caixas de diálogo x-windows. Esses scripts bash não serão executados a menos que VcXsrvestejam instalados.
WinEunuuchs2Unix
6
+1 apenas hilário: como converter secretamente meu sistema Windows para Ubuntu por dentro?
dessert
8
Isso foi indolor: no Windows, baixou o VcXsrv usando o link fornecido. Instalado e lançado. Então eu abri um shell do Ubuntu e entrei export DISPLAY=:0. Agora eu poderia executar xhost, xeyese gnuplotno Ubuntu (desde que esses programas já estejam instalados no WSL do Ubuntu).
Daniel K.
2
@dessert +1 ao seu comentário. É duas vezes hilário, considerando que meu nome de usuário significa "Limitado pelo usuário do Windows alterado para Unix". Graças à WSL, uso o Windows 10 ocasionalmente agora porque posso executar o Ubuntu dentro dele. Me chame de WinEunuuchs2Unix2WinSub4Linux? : p
WinEunuuchs2Unix
2
também export LIBGL_ALWAYS_INDIRECT=1e você obtém alguma aceleração de hardware nos aplicativos GL sobre X usando VcXsrv
Jippers
19

Eu tive uma experiência muito positiva com o VcXsrv no Win 10 Bash no Ubuntu no Windows (Ubuntu 16.04 Xenial x86_64 Linux 4.4.0-17074-Microsoft). Não me concentrei em executar o desktop Unity, pois é inútil e consome recursos. Eu simplesmente executei aplicativos do bash no modo GUI na área de trabalho do Windows10 usando o XServer.

  1. Instale o VcXsrv a partir daqui no Sourceforge

  2. Execute o aplicativo VcXsrv diretamente, não inicie o XLaunch. Você deve ver localhost:0.0 - 0 clientsquando passar o mouse sobre o ícone na barra de tarefas do Win10

  3. Abra o Ubuntu Bash:

    cd /mnt
    

    (resulta em localhost @ localhost: / mnt $)

    cd .. 
    

    (localhost @ localhost: / $ significa que esses comandos levam você ao início do disco rígido, até onde a WSL pode ver ...)

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

    (isso instalará "dbus" para criar um conector virtual para GUI, "Synaptic Package Manager" e "Nautilus" file explorer para unity-desktop

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

    (Quando session.confabre no editor vi)

    Pressione ipara entrar no modo de inserção e adicionar

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

    do que adicionar:

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

    Pressione ESC quando terminar de editar o arquivo e :wqsalvar o arquivo.

    Execute estes comandos e verifique sua saída:

    $ export DISPLAY=localhost:0
    $ sudo service dbus start
    * Starting system message bus dbus                 [OK]
    $ echo $DISPLAY
    localhost:0
    
  4. Você terminou! Agora basta executar o synaptic, nautilus ou firefox do Bash e eles devem ser carregados na área de trabalho do Win10. Opções de GUI como essa são com erros, mas operacionais. Você pode instalar ubuntu-desktop, unity, ccsm, compize tente executar Unidade Desktop para Ubuntu . Não tentei configurar o "Steam" porque ainda estou tentando executar o "Unreal", boa sorte :)

Se alguém souber executar gnome-terminalno XServer em vez do XTerm, compartilhe ...

PS
Você pode adicionar o VcXsrv como um inicializador Win10

Para maximizar suas fontes com o "Steam", conforme especificado na postagem original, ajuste um pouco o Windows para gerenciamento de pacotes de rede (para latência menor) e priorização de CPU / GPU para criar um Win10XBox… :)

Embora você execute o "Steam" no "Unix", o shell ainda é "Windows", o que permite iniciar o "Steam" no "Unix"…

Prep Tcp :;

No regedit:

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

Aqui você precisa percorrer a lista de subchaves para localizar a entrada do adaptador de rede usada para conectar-se à Internet. Se você estiver usando DHCP, precisará procurar a DhcpIPAdddressentrada (com valores de dados do sistema NÃO :0.0.0.0) para encontrar o adaptador correto.

Depois de localizar a chave correta, clique com o botão direito do mouse e selecione Novo> Valor Dword (32 bits) .

Nomeie-o TcpFrequency e clique em ok.

Clique duas vezes no valor depois e defina seu valor decimal como 1. (Para restaurar a configuração padrão, altere o valor para 2 ou exclua a chave) Agora navegue até a seguinte chave: HKEY_LOCAL_MACHINE\Software\Microsoft\MSMQ

Clique com o botão direito do mouse na chave novamente e selecione Novo> Valor Dword (32 bits) .

Nomeie o novo parâmetro TcpDelay

Clique duas vezes depois e altere seu valor decimal para 1. (Para restaurar a chave posteriormente, altere-a para 0 ou exclua a chave)

Algoritmo de Nagle

O algoritmo de Nagle combina vários pacotes pequenos em um único pacote maior para transmissões mais eficientes. Isso foi desenvolvido para melhorar a eficiência da taxa de transferência da transmissão de dados. Desabilitar o “nagling” pode ajudar a reduzir a latência / ping em alguns jogos. O algoritmo de Nagle está ativado no Windows por padrão. Para implementar esse ajuste, modifique as seguintes chaves do Registro.

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

Para o {NIC-id}, procure aquele com o seu endereço IP listado; sob essa {NIC-id}chave, crie o seguinte valor DWORD:

  • TcpFrequency e defina-o como 1 para desativar o "nagling" nos jogos.
  • TCPDelay e defina-o também como 1 para desativar o "nagling"
  • TcpTicks e defina-o como 0

Nota:

Alguns relatos dizem que os ajustes reduziram a latência ao jogar Dota 2 e League of Legends, mas isso não funciona para alguns. Eu tentei e minha latência aumentou de 110 para 90ms (SEA Server) ao jogar o Dota 2.

Índice de limitação de rede

O Windows implementa um mecanismo de limitação de rede, a idéia por trás dessa limitação é que o processamento de pacotes de rede pode ser uma tarefa que consome muitos recursos. É benéfico desativar essa limitação para obter o máximo rendimento.

Para implementar esse ajuste, execute regedit e modifique o registro

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

Em SystemProfile , crie um valor DWORD e nomeie-o como NetworkThrottlingIndex e defina seu valor hexadecimal como ffffffff para jogos e taxa de transferência máxima: ffffffff desativa completamente a otimização.


Capacidade de resposta do jogo no sistema (Não tenho tanta certeza sobre este :)

O streaming de multimídia e alguns jogos que usam o serviço "Multimedia Class Scheduler" (MMCSS) podem utilizar apenas até 80% da CPU. O serviço "Multimedia Class Scheduler" (MMCSS) garante acesso prioritário aos recursos da CPU, sem negar recursos da CPU para aplicativos em segundo plano de menor prioridade.

Para implementar esse ajuste, execute regedit e modifique a chave do registro

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

A partir daí, crie um novo DWORD e nomeie-o como SystemResponsiveness. Defina seu valor decimal como 00000000 para puro jogo / streaming.

Na mesma seção do Registro que o ajuste acima, você também pode alterar a prioridade dos Jogos. Para implementar esse ajuste, vá para

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

e altere os seguintes valores do registro:

  • "Prioridade GPU" altere seus valores para 8 para jogos.
  • "Prioridade" definido como 1 para jogos.

Todos os aplausos por "desconhecido" (desculpe-me já faz um tempo desde que copiei suas instruções) autor deste tweak do Windows = Xbox ...

PPS: Se o XServer falhar no que você gostaria de fazer, tente encontrar a solução alternativa com o Docker.

tenedas
fonte
6-5-7; : 5-6-7 ...
tenedas 27/02
Obrigado por uma resposta muito detalhada. Caso contrário, graças a quem sugeriu a edição, não acredito, as pessoas estão realmente sugerindo soluções para a execução do Steam. Por outro lado, as pessoas continuam sugerindo desktops, o que eu ainda não tenho idéia de qual seria o uso disso. Pessoalmente, nem preciso de um gerenciador de arquivos, muito menos de um desktop flexível completo.
George Hovhannisian
Eu instalei o Xming no Windows e, em seguida, usei todas as etapas da seção 3. aqui (acima) - instale o dbus (não há necessidade real de sináptico ou nautilus, mas o nautilus é uma boa verificação), faça o session.conf editar e inicie o dbus serviço. O Nautilus inicia com sucesso com algumas mensagens de erro.
MikeW
O que você quer dizer com "Executar o aplicativo VcXsrv diretamente" - como exatamente fazer isso?
Erel Segal-Halevi
Mude <auth>allow_anonymous</auth>para <auth>ANONYMOUS</auth>, então service dbus restarte gnome-terminaldeve funcionar
ZAB
9

Embora um ambiente completo de área de trabalho da GUI não seja 'oficialmente' suportado pela Microsoft, ele pode funcionar.

Ativar ou desativar os recursos do
Windows Ativar subsistema Windows para Linux
Reiniciar o computador
Inicie a Microsoft Store
Search para Ubuntu
Selecione Ubuntu 18.04 em Aplicativos
Clique em
Iniciar, inicie o Ubuntu e aguarde a instalação
Definir nome de usuário e senha

Execute os seguintes 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

Criar e modificar .xsession

cd /home/user/
sudo vim .xsession

Adicione texto:

gnome-session --session=ubuntu-2d

Salvar e sair vi

sudo chmod 755 .xsession
sudo systemctl enable xrdp

Você precisará de uma segunda conta no Ubuntu

sudo adduser remote
sudo usermod -aG sudo remote

Modifique startwm.sh

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

Comente as duas linhas inferiores

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

Adicione texto:

startxfce4

Salvar e sair vi

exit

No Windows, reinicie o Ubuntu e execute:

sudo /etc/init.d/xrdp start

No Windows, execute o mstsc.exe
Computador: 127.0.0.1:3390
Deixe o nome de usuário em branco
Conectar

Sessão:
nome de usuário do Xorg :
senha remota : senha

Aproveite o xfce!

Quando terminar, feche a conexão da área de trabalho remota.
Retorne à linha de comando do Ubuntu

sudo /etc/init.d/xrdp stop
exit
Convidado
fonte
1
Isso está funcionando. Eu usei o Ubuntu 16. Eu não tinha aparência de GUI nativa do Ubuntu. O Xorg não está disponível na lista xrdp
TRiNE
Continuo recebendo a seguinte mensagem de erro - "o login falhou para a exibição 0". Pensamentos? Por que o xrdp não me permite entrar?
precisa
2

Como você quer que seja fácil ... Há um aplicativo na Microsoft Store chamado x410 . É basicamente um servidor Cygwin X11 sem o uso do próprio Cygwin. Após a instalação - que é zero de configuração - você pode executar o WSL X11 Apps! (ou até desktops inteiros). Você pode inserir as seguintes linhas no seu .bashrc (da sua conta de usuário da WSL) para poder executar os aplicativos no seu 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

Eu comprei x410 na pomada por cerca de 5 €. Então, se for demais, talvez espere uma venda!

Por que sempre o login e a senha
fonte
2

Se você deseja uma solução pronta para uso, use o MobaXTerm . É um excelente emulador de terminal com várias tabelas com suporte direto para WSL e possui um servidor X otimizado embutido. Eu uso sináptica o tempo todo em Moba. Até o RStudio.

abalter
fonte
1

Escolhi a resposta da Pantera não apenas porque é a única, mas também porque é a resposta correta; não existe uma maneira simples e direta de obter aplicativos de GUI em execução.

Além disso, usei este tutorial, com algumas alterações:

  1. Não instalei xfce, porque não sei por que precisaria de um desktop.
  2. Escolheu Multiple Windowsem XLaunch(Sem DE, portanto, não há necessidade de uma janela gigante)
  3. Não há necessidade de correção mkdir e não há necessidade de um terminal separado.

Quais aplicativos GUI eu instalei? Somente Synaptic e CMake, já que eu realmente não consigo pensar em mais nada que eu precisaria no wsl.

Eu não faço VM / Dual Boot, pela mesma razão que Panther apontou; Preciso de um ambiente de desenvolvimento conveniente (para mim), não de um sistema operacional completo.

George Hovhannisian
fonte
vagrantup.com/docs/other/wsl.html - vagrant é uma excelente ferramenta para criar rapidamente ambientes de desenvolvimento. Parece que suporta wsl. Embora eu não tenha tentado ainda.
TamusJRoyce
1

Com base em minha pesquisa, o wsl não foi originalmente projetado para usuários de GUI. No entanto, podemos instalar um servidor X de terceiros para exibir a GUI. Eu testei que o VcXsrv com alguma configuração apropriada pode ser usado para exibir o desktop Debian Linux.

Eu acho que minha abordagem funciona sem problemas para exibir mate-desktop (GUI) no subsistema Windows Linux Debian. Eu fiz um vídeo sobre como instalar e exibir o mate-desktop (GUI) no wsl Debian do zero. Link: https://youtu.be/QjogEWudpaM

A instalação do mate-desktop no Ubuntu é um pouco diferente.

Etapa 1 : instalar o wsl

  • Abra o PowerShell como administrador e digiteEnable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
  • Instale "Debian" ou "Ubuntu" na loja da Microsoft.

Etapa 2 : instale uma interface gráfica do usuário, como o mate desktop.

Para usuário Debian :

  • Abra o console Linux no Windows 10 e instale o mate-desktop digitando:, sudo apt-get updatepressione enter.
  • Após o término da atualização, digite sudo apt install task-mate-desktop, pressione enter.

OU para usuário do Ubuntu :

  • abra o console ubuntu a partir do windows 10
  • digite sudo apt install tasksel, pressione enter
  • digite sudo apt update, pressione enter
  • digite sudo tasksel install ubuntu-mate-desktop, pressione enter

Etapa 3 : Instale o servidor X no Windows 10. Eu usei um servidor de código aberto chamado VcXsrv. Pode ser baixado em https://sourceforge.net/projects/vcxsrv/ .
Depois que a instalação estiver concluída:

  • Abra o XLauch no Windows 10

  • execute a seguinte configuração:

    • selecione: "One large window"
    • selecionar Display number: 0
    • clique next
    • selecionar Start no client
    • clique next
    • clique finish

Etapa 4 : configurar no console do Linux:

  • tipo export DISPLAY=:0

  • tipo export LIBGL_ALWAYS_INDIRECT=1(talvez este elogio não seja obrigatório)

Etapa 5 : Exibir a GUI do mate-desktop:

  • digite mate-sessionpara usuário Debian

  • digite mate-sessionou lightdm-sessionpara usuário do Ubuntu

Se você ficar confuso com a minha descrição, poderá conferir meus vídeos do youtube Install GUI (mate desktop) no Microsoft Windows Subsystem Linux .

David Xue
fonte
-1

Geralmente, o host de um convidado do VirtualBox pode ser alcançado em 10.0.2.2

Agora você pode qualquer programa WSL X na área de trabalho do Fedora, mesmo com o Windows perfeito.

weberjn
fonte
Agora, isso é interessante. Eu não sou um grande fã do fedora. O mesmo pode ser feito com o Arch?
George Hovhannisian
Acho que sim. O servidor X é acessível no Fedora via ssh por padrão; talvez você precise alterar algumas configurações do sshd no Arch.
Weberjn