Resolvi fazer uns testes com o wayland por aqui, afinal essa época do ano não temos muito o que fazer além das festas de família. Nada sério porque não tenho capacidade para isso. Apenas uns testes para ver como está o uso de algum dos twm disponíveis para wayland no dia a dia de um usuário comum, que é o meu caso. Faz quase 2 semanas que comecei a usar o sway.
Peguei minha config do i3wm e simplesmente copiei para a pasta do sway (~/.config/sway/) e tudo funcionou normalmente com duas exceções. Uso o atalho $mod+Shitf+Maior(greater) e $mod+Shift+Menor(less) para as opções de “focus parent” e “focus child”. Essas teclas são acionadas com shift+ponto e shift+vírgula, por algum motivo o sway não estava reconhecendo os atalhos, tive que mudar para $mod+Shift+period(ponto) e $mod+Shift+semicolon(vírgula). E também precisei alterar as classes dos programas no config. O sway não utiliza o “class”, usa o “app_id”.
i3wm:
assign [class="^thunar|vifm$"] $ws4
sway:
assign [app_id="^thunar|vifm$"] $ws4
Além disso não tive mais qualquer problema com meu arquivo de config do i3wm.
Uma coisa que achei bem interessante no sway, dá para fazer praticamente qualquer configuração que eu preciso direto no arquivo de config dele. Exemplo, o tema gtk/ponteiro/ícone, layout do teclado, opções do touchpad e habilitar o numlock junto com a sessão do sway. Ou seja, adiciono as configs lá e, se quiser trocar alguma coisa, basta um simples reload do sway e já era. Achei isso bem prático.
O que estou usando no wayland?
-
twm: sway
-
Terminal: foot (sei que o alacritty ja tem tempo que possui suporte para wayland, mas resolvi testar o foot e gostei bastante. Tenho o alacritty instalado e ele funciona perfeitamente também. A única coisa que sinto falta nos dois são as abas que tenho no xfce4-terminal. Para wayland, o kitty e o wezterm tem abas)
-
Painel: waybar (as configs do i3status funcionaram de boa na sway bar, assim como o i3blocks. No começo achei um pouco confusa a config da waybar, depois fui acostumando. A organização lembra um pouco a polybar)
-
Gerenciador de notificações: mako (o dunst é compatível com wayland)
-
Wallpaper: swaybg (funciona de forma parecida com o feh, só não consegui setar o wallpaper rápido como com o feh, tenho que editar o config do sway para trocar e depois dar um reload)
-
Bloqueador de tela: swaylock (bloqueador de tela simples, quase igual ao i3lock)
-
Gerenciador de arquivos: vifm (ainda estou sem o preview, porque no X11 uso o ueberzug) e o thunar (não é totalmente compatível com wayland, embora eu não tenha encontrado nenhum problema ao usá-lo)
-
Lançador de aplicações: dmenu (sim, estou usando ele e funcionando de boa. Testei o fuzzel, tofi e bemenu. O bemenu eu encontrei um problema com a fonte que ainda não consegui resolver. Se conseguir, vou migrar para ele. É um dmenu para wayland, tem os mesmos recursos que o dmenu (sem os patches). O fuzzel eu até achei interessante. Desisti de usá-lo apenas porque acho mais prático a forma de lidar com os scripts que tenho com o dmenu/bemenu. São scripts que fiz para usar com o dmenu, então a integração com o bemenu é bem mais simples. Na prática, não precisei de fazer nada, só trocar a forma como o bmenu lida com as cores e trocar o dmenu por bemenu dentro dos scripts.
O resto são programas que funcionam normalmente no wayland, como libreoffice, gimp, firefox, polkit, vim, pulseaudio, zathura etc.
Alguns outros programas (do X11) ainda não encontrei uma alternativa definitiva ou que eu gostasse/me adaptasse ou que fossem tão simples de usar. São eles: scrot, feh (ou o swayimg é meio limitado ou eu que ainda não sei usar ele. E não encontrei uma forma se definir o wallpaper rapidamente como com o feh), um bom front-end para o mpv (gosto bastante do smplayer), preview no vifm (fiz um teste com sixel + foot e ainda não tive bons resultados. Eu consigo obter os previews, porém o carregamento das imagens fica meio esquisito). Não quis testar outro gerenciador de arquivos TUI porque nunca encontrei um que tenha um painel duplo bom como o vifm. Tem até um jeito de fazer isso com o ranger, porém não é tão prático como no vifm.
TWM/compositores para wayland que testei
Testei o river (é baseado no bspwm, embora praticamente não tenha usado), qtile (que já havia utilizado no X11) e hyprland. Para mim o sway está bem a frente dos outros três. No hyprland eu tive problemas de congelamento do meu notebook após fazer logout. O bug é o seguinte: após fazer qualquer alteração no arquivo de configuração do hyprland, quando eu saia dele e retornava ou para o tty (sem gerenciador de login) ou para a tela do gerenciador do login, em vezes aleatórias (no meu caso foi a maioria) a tela ficava toda preta e o pc congelava totalmente. Eu não conseguia nem mudar para outro tty. Pesquisando no github oficial do projeto vi que existiam vários tópicos sobre esse problema e não existe uma solução para ele ainda.
Dois exemplos de issues desse bug de tela preta, se procurar lá no github tem mais sobre o tema: issue 1 issue 2
Quando digo que o sway está bem a frente, não estou falando que os outros dois não sejam possíveis de se utilizar, pelo contrário. Dá para usar tranquilamente, só que o sway está mais pronto. Até o momento não encontrei nada que me atrapalhasse ou impedisse o uso do sway, como minha limitação em python do qtile, o bug da tela preta do hyprland e minha preguiça em testar mais o river.
Class e app_id
A única dificuldade que encontrei até agora, e pode ser falta de leitura da wiki, é o problema que citei com as fontes no bemenu e com as classes na config do sway. No X11 basta um xprop e pegamos a classe do programa para adicionar ao arquivo de configuração de algum twm. O sway não trabalha com as classes, ele usa a opção “app_id”. Só que ainda não encontrei nada simples como o xprop e muitos programas não estão abrindo nas áreas de trabalho corretas. Vou pesquisar mais para achar uma alternativa ao xprop, certamente já tem. Não sei se é um problema com as classes/app_id ou se é de compatibilidade dos programas com o wayland.
Isso não é nada demais, significa apenas que estou em uma situação nova para mim e, obviamente, terei que aprender corretamente como funciona o wayland e o sway.
Conclusão
Estou apanhando um pouco da waybar, o sway tá bem de boa. O que ainda acho ou um pouco confuso, são os espaços, as separações, entre os itens na waybar. Porque acostumei muito com os separadores da polybar, embora eles também possam ser utilizados na waybar. Em síntese, a waybar funciona parecido com a polybar, só que ela divide, se você quiser, as configs entre personalização gráfica e opções/configurações, nos arquivos config e style.css.
Sinceramente, escutei falar muito do wayland, se fala muito bem e muito mal. Como sempre, respeito a opinião de quem entende e gosto também de tirar minhas próprias conclusões. E essa experiência com o wayland + sway em uso mais básico como o meu tem funcionado bem. Nem sei até que ponto o wayland atende a usuários com perfis mais específicos (tem o problema da nvidia, alguns com o obs etc.). Com algumas limitações e, sempre com a sensação de que está faltando algo (talvez por falta de familiaridade com wayland), tem sido uma experiência relativamente tranquila.
Pelo meu gosto pessoal e pela rápida experiência, acho que posso seguir usando o sway. Não diria o mesmo para o hyprland ou para o qtile. No caso do qtile, acho que é o que já comentei por aqui outras vezes, minha total falta de conhecimento em python, sinto que usar ele sem saber python é muito limitado. E no do hyprland por causa de bug que está ainda sem solução. Eu tive que desligar meu notebook no botão power umas 5 ou 6 vezes por causa desse bug. No github do projeto tem um script simples de um usuário que ajuda a evitar isso. A grande questão é que é uma solução temporária/quebra galho e, pelo que falam as issues abertas, os devs ainda não sabem o que está causando isso. Me lembrou até o bug eterno da systray da polybar com alguns ambientes (fluxbox, openbox, i3 etc.) que os devs também não sabiam o que causava o problema e resolveram (no último release da polybar) transformando a systray em modulo.
Pra galera da customização estilo unixporn, esses compositores para wayland serão uma farra. A waybar e o hyprland, por exemplo, dá para fazer muita coisa, efeitos ao mover janelas, degradê, bordas arredondadas e coloridas e por aí vai.
Os únicos pontos que achei negativos foram a ausência de algumas coisas nos repositórios oficiais. Instalei o sway no Arch, que é minha distro secundária e de testes, então várias coisas eu só achava no AUR. E uma sensação que tenho ao usar o wayland de que sempre está faltando alguma coisa. Essa sensação, suspeito, como já disse, pode ser falta de familiaridade com o wayland.
Os pontos positivos são a fluidez que o sway tem, o i3wm se usado sem nenhum compositor fica com a movimentação das janelas meio “dura”, no sway é mais suave, tem maior fluidez. Fiquei com a sensação, isso só o tempo pode confirmar, que o uso dos recursos do sistema é ligeiramente mais eficiente que no X11.
Acredito que quando sair uma versão estável do ecossistema do xfce para wayland (que já vem sendo realizada) talvez eu consiga migrar e ver o que acontece. Certamente terei que aprender algumas coisas novas (como já estou aprendendo), porém isso faz parte. Seguirei com o sway e se não encontrar nenhum problema ou empecilho, acho que futuramente vou tentar fazer uma instalação limpa aqui apenas com o wayland. Será uma experiência interessante.
E aí, a galera que já usa o wayland, o que tem a dizer? Essa minha curta experiência tá mais ou menos dentro do que se encontra o wayland atualmente?
Tinha esquecido do print, tá igual meus outros twm:
Links úteis:
Compilado de alternativas para wayland
Alterntivas para o wayland (dicas da wiki do sway)
Guia de migração do i3 para sway
comunidade do reddit
A wiki do Arch tem boas dicas
A wiki do Gentoo tem boas dicas
P.S: como sempre, qualquer erro de digitação, informações incorreta etc. avisa aí que eu arrumo.
P.S²: depois adiciono uns prints para ilustrar o tópico.