Migrar de ambientes baseados em X11 (como XFCE, Openbox, Fluxbox e i3wm) para o Wayland

Para quem usa xfce, openbox, fluxbox e i3wm qual solução para wayland?

LabWC inspirada em Openbox - Seria a solução só que não tem barra de tarefa.

Copia os arquivos do openbox para LabWC e ajuste os detalhes.

XFCE ainda não tem suporte completo ao Wayland - ficou sem o papel de parede.

Sway (i3wm para Wayland) - não testei

Wayfire (mais próximo de um desktop tradicional). lembra o Windows 7 e trava muito.

Hyprland - não testei.

Os programas não funcionam:

  • Parole (usei o vlc)
  • ssr

Esse painel chamado de waybar é muito ruim.

Compatibilidade X11 (caso necessário):

  • XWayland: camada de compatibilidade para apps que ainda dependem do X11.

Exemplo de migração de i3 para Sway:

Instale o sway

Copie seu arquivo de config:
cp ~/.config/i3/config ~/.config/sway/config

Ajuste pequenos detalhes:

    Substitua exec --no-startup-id por exec

    Substitua comandos X-specific por suas versões compatíveis com Wayland (xrandr → wlr-randr, etc.)

Programas:

Compositor/WM LabWC
Nitrogen Azote version 1.13.1 (sem suporte para arquivo .heic e .avif)
Painel/Barra de tarefas (tint2/polybar) Waybar ou wf-panel-pi (falta no repositorio da distro)
Menu de aplicativos (rofi) wofi, bemenu, ou fuzzel
Launcher (rofi) wofi, fuzzel
Systray (se necessário) integrado no painel
Gestor de notificações (notify-send) mako
Bloqueio de tela swaylock, waylock
Captura de tela (scrot) grim + slurp
Config de saída de vídeo (xrandr) wlr-randr, wdisplays

Substituí o notify-send por makoctl para garantir a compatibilidade com Wayland.

Fontes:

3 curtidas

Gostaria de mencionar as ferramentas do nwg-shell.

Ferramenta Opções
Menu de aplicativos nwg-drawer/nwg-grid
Gestor de notificação SwayNC
Painel nwg-panel*, nwg-dock*, sfwbar
Bloqueio de tela gtk-lock

Especialmente para gerenciador de notificações, acho difícil achar algo que bata o SwayNC, até mesmo em ambientes X11.

*Os painéis do NWG infelizmente só funcionam no Sway e (compilando uma branch experimental) o Hyprland. Ela não é parte do projeto, mas mencionei a sfwbar porque ela deve funcionar em basicamente qualquer compositor “indie” baseado no wlroots – já vi ela sendo combinada com o labwc especificamente nos unixporn da vida.

Os únicos ambientes com gerenciamento de janelas “floating” que eu usei no Wayland foram DEs completas, então não consigo sugerir muitas opções para montar um workflow estilo {Open,Flux}box.


No que, exatamente?

Vale a pena. Um bocado de ferramentas do i3 funcionam sem alteração nenhuma devido aos protocolos serem os mesmos (i3status, i3blocks, i3-ipc, etc.). É o que mais se aproxima de “copie a configuração, cole em outro lugar, e seja feliz”.

Onde você viu isso? O notify-send não tem relação específica com o X11 ou Wayland, e sim com uma camada paralela levemente mais em baixo, o D-Bus. Todos os gestores de notificação devem ser compatíveis com ele (por definição).

Isso só deixa mais trabalhoso de migrar do Mako para, por exemplo, o Dunst, o Fnott ou o SwayNC, ou de voltar para o X11.

4 curtidas

Imaginava algo no estilo Tint2 ou Polybar

Podemos adicionar algo similar ao jgmenu no waybar?

Não esta relacionado com x11?

Quero evita o uso de Xwayland

Bem, o Gnome é a opção mais completa, considerando o desenvolvimento e tecnologias no entorno.

Eu sou um usuário antigo de XFCE e decide migrar para o Gnome nessa versão 48 porque me pareceu finalmente “pronto”.

O notify-send não aciona o X11 de forma alguma. Pode até rodar um ldd nele; não há nenhuma biblioteca específica desse protocolo.

Não consigo imaginar uma função da Polybar que não tenha um equivalente, nem que seja indireto, na Waybar.

Quanto à aparência padrão, realmente é bem mais cafona que a padrão da Polybar, mas as possibilidades de customização são altíssimas (até maiores, dado que você pode usar o amplo subconjunto do CSS suportado pelo GTK). Na Wiki há um tutorial, e modelo minimalista que pode ser expandido a gosto.

Quanto ao tint2 e jgmenu, infelizmente não estou familiarizado com nenhum dos dois ecossistemas de WMs floating (X11 ou Wayland) o suficiente para responder essas perguntas.

Buscar alternativa para o comando pkexec no Wayland.

Semelhante ao notify-send, o pkexec não trabalha com Wayland ou X11, mas sim com o D-Bus. Não precisa substituí-lo, e dependo dos pacotes que você tem no sistema, pode não ser viável pois é parte da infraestrutura de várias outras coisas, como prompts de root nos programas do KDE/GNOME.

Se ele não estiver funcionando, deve ser pela falta de um agente de autenticação.

Se não conseguir fazer ele funcionar e precisar de uma alternativa, tem o clássico sudo.

O Wayland bloqueia o uso de pkexec por questão de segurança.

O jgmenu trava

$ jgmenu
warning: file 'mintlocale.desktop1.tar.xz' is not utf-8 compatible
info: created 43 symlinks in /home/goku/.cache/jgmenu/icons
**warning: problem loading svg /usr/share/pixmaps/mintupload/icon.svg-I/O error: Erro ao abrir arquivo /usr/share/pixmaps/mintupload/icon.svg: Arquivo ou diretório inexistente**
**warning: problem loading svg /usr/share/icons/hicolor/scalable/apps/software-sources.svg-I/O error: Erro ao abrir arquivo /usr/share/icons/hicolor/scalable/apps/software-sources.svg: Arquivo ou diretório inexistente**
^[^[^[^[^[^[^[^[^[^[^[^[^[^[^[^[^[^[^C
info: caught SIGTERM or SIGINT

Alternativa seria:

$ wofi --dmenu --show

Falta melhora o visual

Qual a mensagem que você recebe ao usar o pkexec? A conexão dele com o ambiente gráfico é indireta, pelos agentes de autenticação do Polkit.

Não consigo reproduzir o problema, nem recebo qualquer mensagem sobre “segurança” (e se você estiver recebendo, provavelmente é algum problema de configuração que afeta não só o X11, como ambiente em modo texto também – grupos, permissões, etc.).

Como fica o D-Bus com o Wayland?

$ DISPLAY=:0 pkexec thunar

(process:14364): thunar-WARNING **: 16:08:12.450: **thunar: Failed to initialize Xfconf: Não foi possível iniciar automaticamente o D-Bus sem X11 $DISPLAY**

(thunar:14364): Gtk-WARNING **: 16:08:12.455: cannot open display: 



**Serviço D-Bus esta ativo e funcionando** 


$ sudo thunar

(process:16685): thunar-WARNING **: 16:19:20.777: thunar: Failed to initialize Xfconf: Erro ao chamar a linha de comandos “dbus-launch --autolaunch=5beea936ec03960d45a3f115615e42f3 --binary-syntax --close-stderr”: Processo filho concluiu com código 1
Authorization required, but no authorization protocol specified


(thunar:16685): Gtk-WARNING **: 16:19:20.800: cannot open display: :1



$ pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY thunar

(process:15569): thunar-WARNING **: 16:14:06.569: thunar: Failed to initialize Xfconf: Erro ao chamar a linha de comandos “dbus-launch --autolaunch=5beea936ec03960d45a3f115615e42f3 --binary-syntax --close-stderr”: Processo filho concluiu com código 1
Authorization required, but no authorization protocol specified


(thunar:15569): Gtk-WARNING **: 16:14:06.606: cannot open display: :1


$ DISPLAY=:0 pkexec env DISPLAY=:0 XAUTHORITY=$XAUTHORITY thunar

(process:15959): thunar-WARNING **: 16:16:00.808: thunar: Failed to initialize Xfconf: Erro ao chamar a linha de comandos “dbus-launch --autolaunch=5beea936ec03960d45a3f115615e42f3 --binary-syntax --close-stderr”: Processo filho concluiu com código 1
Authorization required, but no authorization protocol specified


(thunar:15959): Gtk-WARNING **: 16:16:00.838: cannot open display: :0



$ sudo env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY thunar
Senha: 

(process:16201): thunar-WARNING **: 16:17:06.644: thunar: Failed to initialize Xfconf: Erro ao chamar a linha de comandos “dbus-launch --autolaunch=5beea936ec03960d45a3f115615e42f3 --binary-syntax --close-stderr”: Processo filho concluiu com código 1
Authorization required, but no authorization protocol specified


(thunar:16201): Gtk-WARNING **: 16:17:06.666: cannot open display: :1



$ dbus-launch pkexec thunar

(process:16321): thunar-WARNING **: 16:17:44.059: thunar: Failed to initialize Xfconf: Não foi possível iniciar automaticamente o D-Bus sem X11 $DISPLAY

(thunar:16321): Gtk-WARNING **: 16:17:44.064: cannot open display:

Coloca a senha e nada de abrir.

===========================================================================

Usando isso abre como root a pasta.

**$ sudo -E thunar**

(process:16864): thunar-WARNING **: 16:20:13.464: thunar: Failed to initialize Xfconf: A conexão está fechada
Error creating proxy: A conexão está fechada (g-io-error-quark, 18)
Error creating proxy: A conexão está fechada (g-io-error-quark, 18)
Error creating proxy: A conexão está fechada (g-io-error-quark, 18)

(thunar:16864): thunar-WARNING **: 16:20:13.718: Nome 'org.xfce.FileManager' perdido no barramento de mensagens.

(thunar:16864): thunar-WARNING **: 16:20:13.718: Nome 'org.freedesktop.FileManager1' perdido no barramento de mensagens.



(thunar:16864): thunar-WARNING **: 16:20:13.718: ThunarThumbnailer: failed to create proxy: A conexão está fechada

(thunar:16864): thunar-WARNING **: 16:20:13.856: Thumbnailer Proxy Failed ... starting attempt to re-initialize

(thunar:16864): thunar-WARNING **: 16:20:14.723: ThunarThumbnailer: failed to create proxy: A conexão está fechada

O write do Libreoffice só abre em tela cheia ignora o espaço onde esta waybar.

Tem ícones de programas abertos que não aparece na waybar

Ex: firefox, write e outros.

Os ambientes em Wayland esperam iniciar com o D-Bus já configurado.

Se você consegue ver as notificações enviadas pelos programas, e echo "$DBUS_SESSION_BUS_ADDRESS" tiver alguma saída, ele provavelmente já está configurado adequadamente e não há nada a fazer.

Caso contrário, a resposta depende da distribuição, especialmente em ambientes sem o systemd. Várias camadas podem ser encarregadas disso: o display manager, os scripts que rodam no login, algum serviço, etc.

Note que sudo e pkexec por padrão não passam informações de como se conectar ao D-Bus para os programas que iniciam como root.

Chegou a testar:

  1. Autorizar conexões pelo usuário root no Xwayland com xhost si:localuser:root
  2. Passar a variável do Wayland (WAYLAND_DISPLAY) no env

Todas as variações que você postou basicamente forçam que os programas rodem via Xwayland, exceto a última que passa todo o ambiente do shell.

Vejo que sua distribuição também é um das que configuram o pkexec a não passar nenhuma variável relacionada ao ambiente gráfico, pois o cannot open display: na saída de erro era vazio ao menos que você “injetasse” com o env.


Pode mostrar imagens desses problemas? Qual ambiente você está usando agora, e como você configurou os módulos da Waybar?

Waybar - programas em tela cheia (Barra na parte inferior da tela)

"layer": "bottom",
"position": "bottom",

Assim só tem problema com o write que fica em tela cheia:

    "layer": "top",        
    "position": "top"

Falta configura o atalho para usa o print?

comando scrot -d 10 ~/screenshot.png gerou tela preta

O scrot funciona no Wayland?

O write sem o ícone:

Não é só copiar : cp ~/.config/openbox/rc.xml ~/.config/labwc/

openbox

    <keybind key="A-F2">
      <action name="Execute">
        <execute>rofi -show drun -show-icons</execute>
      </action>
    </keybind>

labwc

 <keybind key="S-Print">
      <action name="Execute" command="bash -c '/usr/local/bin/foto-wayland.sh'" />
 </keybind>

a solução é não usar wayland enquanto o suporte para essas interfaces não estiver completo.

Sempre deixe a layer como top e ajuste apenas a position. A opção layer configura a “prioridade” da barra.

(Esperava uma cópia ou um pastebin da configuração completa para ajudar-nos a reproduzir os problemas que estão acontecendo…)

(Prints tirados numa sessão do labwc aberta dentro do KDE Plasma Wayland – dá para fazer a mesma coisa no X11 enquanto experimenta com o setup até ele funcionar como desejado).

A princípio, não consegui reproduzir o problema.

Tive que forçar o programa a rodar via Xwayland (env -u WAYLAND_DISPLAY XDG_SESSION_TYPE=x11 soffice --writer) para ter algo parecido:

O mesmo vale para o Firefox:

Firefox Wayland

Pelo que vejo no print, por algum motivo, o LibreOffice aí está configurado para usar a interface “genérica” que utiliza o X11 diretamente. Para ele usar o Wayland, vai ser necessário instalar pacotes adicionais do LibreOffice e/ou configurar a variável SAL_USE_VCLPLUGIN para gtk3, qt5 ou qt6 (vai depender de como sua distribuição compila o LibreOffice e do seu gosto).

Para o Firefox, se você tiver uma distribuição que fornece um Firefox ESR anterior à versão 121, será necessário iniciá-lo com a variável MOZ_ENABLE_WAYLAND=1.

Infelizmente, não consegui reproduzir a questão do LibreOffice se sobrepor à barra quando maximizado, nem rodando por Xwayland.

Não, nem o modo para capturar janelas individuais.

Um análogo seria: sleep 10 && grim ~/screenshot.png


A questão dos ícones faltantes parece ser alguma coisa do labwc, pois não há essa diferença entre Wayland e Xwayland no Sway.

Esta no estilo x11

Isso fica sem os ícones no menu:

$ SAL_USE_VCLPLUGIN=gtk3 libreoffice --writer

Modelo usado:

1 curtida

Outro problema é achar um parcellite para Wayland:

Clipman não é 100% para Wayland.

wl-clipboard ( wl-copy, wl-paste) + scripts personalizados não ficou funcional.

Não é igual ao parcellite (GPaste):

$ gpaste-client ui