Note
Caso você deseje uma experiência mais completa e já utilizou o tutorial do Xvnc, talvez você deva tentar o tutorial de WSLg (Xwayland) ao invés deste.
Warning
Esse tutorial está em desenvolvimento, portanto as alterações propostas nele podem interferir nas funcionalidades existentes. Proceda com cautela!
Nesse tutorial, vamos instalar e utilizar o ambiente desktop do GNOME no WSL2, sem nenhuma utilização de software externo. A única exigência é o WSLg instalado e funcionando. Atualmente, as instruções são somente para as distribuições do Ubuntu (20.04, 22.04 e 24.04) e GNOME, mas você pode solicitar que eu teste outras distribuições e ambientes desktop.
- Não há suporte para tela inteira
- Não há suporte ao desktop completo (com Display Manager)
- Não há suporte à área de transferência (copiar e colar) de/para o Windows
-
Abra um terminal do Ubuntu (20.04, 22.04 ou 24.04). Primeiro de tudo, precisamos nos certificar que todos os pacotes instalados estão atualizados.
sudo apt update sudo apt upgrade
-
O WSL não instala a loja de aplicativos por padrão, então vamos instalá-la manualmente (você pode pular esse passo se não precisar dela).
sudo snap install snap-store
-
Agora vamos instalar os pacotes necessários. Isso pode demorar bastante, então você precisará ser paciente.
sudo apt install ubuntu-desktop acpi-support-
sudo apt install ubuntu-desktop
Important
Repare no sinal de menos (-) após o pacote acpi-support
. Isso é necessário porque ele é instalado por padrão, e instalá-lo tornará sua distribuição praticamente inutilizável (detalhes em microsoft/WSL#10059), então configuramos o apt
para não instalá-lo.
-
Agora que instalamos todos os pacotes, devemos configurar algumas coisas antes de utilizar o shell do GNOME. Primeiro, vamos desativar o serviço do GDM, porque infelizmente ele ainda não funciona com o WSLg (pelo menos eu ainda não descobri como fazer ele funcionar).
sudo systemctl mask gdm.service
-
Agora precisamos ajustar o diretório
/tmp/.X11-unix/
, porque é montado como somente leitura por padrão. Vamos criar uma nova unidade dosystemd
.sudo systemctl edit --full --force wslg-fix.service
-
Cole o código abaixo no editor.
[Service] Type=oneshot ExecStart=-/usr/bin/umount /tmp/.X11-unix ExecStart=/usr/bin/rm -rf /tmp/.X11-unix ExecStart=/usr/bin/mkdir /tmp/.X11-unix ExecStart=/usr/bin/chmod 1777 /tmp/.X11-unix ExecStart=/usr/bin/ln -s /mnt/wslg/.X11-unix/X0 /tmp/.X11-unix/X0 [Install] WantedBy=multi-user.target
[Service] Type=oneshot ExecStart=-/usr/bin/umount /tmp/.X11-unix ExecStart=/usr/bin/rm -rf /tmp/.X11-unix ExecStart=/usr/bin/mkdir /tmp/.X11-unix ExecStart=/usr/bin/chmod 1777 /tmp/.X11-unix ExecStart=/usr/bin/ln -s /mnt/wslg/.X11-unix/X0 /tmp/.X11-unix/X0 ExecStart=/usr/bin/chmod 0777 /mnt/wslg/runtime-dir ExecStart=/usr/bin/chmod 0666 /mnt/wslg/runtime-dir/wayland-0.lock [Install] WantedBy=multi-user.target
-
Salve o arquivo e feche o editor. Agora temos que habilitar esse serviço.
sudo systemctl enable wslg-fix.service
-
O último passo é configurar o shell do GNOME para iniciar no modo aninhado.
sudo mkdir /etc/systemd/user/gnome-shell-wayland.service.d/ sudo nano /etc/systemd/user/gnome-shell-wayland.service.d/override.conf
sudo mkdir /etc/systemd/user/org.gnome.Shell@wayland.service.d/ sudo nano /etc/systemd/user/org.gnome.Shell@wayland.service.d/override.conf
-
Cole o código abaixo no editor.
[Service] ExecStart= ExecStart=/usr/bin/gnome-shell --nested
-
Salve o arquivo e feche o editor. Em seguida, feche a janela do terminal da sua distribuição.
-
Finalmente, vamos parar o WSL.
wsl.exe --shutdown
A configuração está completa.
-
Abra novamente a janela do terminal da sua distribuição, e cole o comando abaixo.
DESKTOP_SESSION=ubuntu \ GDMSESSION=ubuntu \ GNOME_SHELL_SESSION_MODE=ubuntu \ GTK_IM_MODULE=ibus \ GTK_MODULES=gail:atk-bridge \ IM_CONFIG_CHECK_ENV=1 \ IM_CONFIG_PHASE=1 \ QT_ACCESSIBILITY=1 \ QT_IM_MODULE=ibus \ XDG_CURRENT_DESKTOP=ubuntu:GNOME \ XDG_DATA_DIRS=/usr/share/ubuntu:$XDG_DATA_DIRS \ XDG_SESSION_TYPE=wayland \ XMODIFIERS=@im=ibus \ MUTTER_DEBUG_DUMMY_MODE_SPECS=1366x768 \ gnome-session
-
Aparecerá uma janela do shell do GNOME.