[Hyprland] Minha opnião depois de seis meses de uso

Devido a ascenção eminente do Wayland e o x11 começando a entrar em desuso comecei a migrar para o wayland em tempo integral. Há alguns anos me adaptei aos twm e desde então não me interessei mais em usar os ambientes de desktop como gnome, kde, xfce embora eu ainda tenho o kde plasma instalado no computador “da família”.

Em relação aos outros twm o hyprland ainda é bem novo, mas seus recursos são bem completos. Animações suaves sem comprometer o desempenho, escrito em C++, blur e sombras nativos, o dispachante hyprctl, o arquivo de configuração é recarregado em tempo real e muito mais.

Primeiramente testei em um desktop (Phenom II x4 + RX550) e usei tanto no arch como no fedora. Depois instalei em um notebook ideapad 3 (Ryzen7 5700u). No desktop não tive nenhum problema, o sistema funcionou normalmente, já no notebook tive problemas com o encerramento do próprio Hyprland pelo que percebi tem um bug em qualquer comando que encerra o Hyprland como reboot, poweroff, hyprctl dispatch exit. O bug me deixava em uma tela preta quando executava comandos de energia, mas não acontecia sempre. Para contornar esse problema enquanto não sai uma nova atualização para o Arch linux recorri ao tty mesmo. Desinstalei o sddm e antes de desligar ou reiniciar o sistema eu primeiro fecho o Hyprland. Primeiro testei killall Hyprland mas as vezes retornava um erro, agora uso o comando loginctl kill-session $XDG_SESSION_ID e agora está funcionando normalmente sem erros.

os pacotes que uso pra o hyprland no são:
hyprland
hyprpaper
xdg-desktop-portal-hyprland
xdg-desktop-portal-wlr
waybar
wofi
pulseaudio
qt6-wayland
polkit-kde-agent
grim
slurp
cliphist
wl-clipboard
ttf-font-awesome
dunst
Como estou logando pelo tty, basta eu digitar Hyprland + enter. O Sistema prova que é leve na sua inicialização:

Dentre esses pacotes gostaria de mencionar a waybar que têm uma integração incrível com o hyprland. Já que no hyprland conseguimos configurar o local exato de cada aplicativo separadamente, eu crio algumas interfaces gráficas em python e faço elas abrirem em seus respectivos botões da waybar o que dá um efeito bem legal, além disso pode-se configurar um unicode para cada aplicativo do sistema, facilitando a visualização nos espaços de trabalho.

Exemplo de um aplicativo integrado com a waybar:

sobre os unicodes dos espaços de trabalho:

Enfim, estou gostando bastente do workflow do hyprland, da customização, das animações e dos outros recursos também. Espero que a comunidade linux ajude os criadores do projeto a aperfeiçoá-lo ainda mais.

Artigos úteis: Hyprland Wiki e Arch Wiki - Hyprland
Minhas configurações: https://github.com/SobDex/hyprland-Materia-dark

Edit: Sobre o problema de logout a wiki do Hyprland aconselha a usar o AUR sddm-git como gerenciador de login caso não queira logar pelo tty como eu. Outro sddm testado com sucesso foi o sddm-sway do fedora 39.

6 curtidas

Gostei do texto. Senti falta de você falar mais sobre os recursos do hyprland em si. Chegou a usar os “scratchpads” (chamados de especial workspace)? E o modo tabeado? Testou algum dos plugins disponíveis?

Ah, o problema da tela preta, que eu também tive quando tem uma aberta issue no github do projeto. Pelo que entendi, ainda não conseguiram descobrir de fato que causa o problema.

Ando pensando em instalar ele novamente pra testar mais a fundo as possibilidades de config.

Ah, e posta os arquivos de config aí pra gente dar uma olhada!

1 curtida

Eu ainda estou testando, li um pouco sobre os scratchpads, mas confesso que ainda não mexi nessas opções. Dos plugins o único que achei interessante foi o da barra de título nas janelas onde dá para adicionar botões.

Sim eu também pesquisei um pouco. Pelo que parece eles corrigiram na versão .git, mas ainda estou esperando sair no repositório do Arch para atualizar. Posso estar errado, mas aparentemente tem alguma coisa relacionada ao hardware e ao kernel, já que no meu computador antigo não tenho esse problema.

Sim em breve eu posto aqui nesse mesmo tópico tanto as configs quanto o uso dos outros recursos, estou preparando um doc lá no github.

1 curtida

Tudo pronto amigo! Segue aí a config de como está o sistema. Deixei umas observações relavantes la na página principal. TMJ.

1 curtida

Qual o nome desta aplicação?

Este bug não acontece com todos. Tenho 3 máquinas diferentes com o Hyprland e não me lembro de acontecer isso. (quase não uso ele nas 3…rs, estão todos na fase ainda de ajustes nas configurações e resolver os bugs que cada pc enfrenta com o Linux :face_with_hand_over_mouth:)

Olhando o seu dotfiles, acredito que a solução para o problema que acontece em um dos pcs seja uma config que você utilizou.

xwayland {
    force_zero_scaling = true
}

Queria saber porque você utiliza um sleep e kill para matar e depois reiniciar o xdg-portal?

Além dos 3 pcs, costumo testar outras distros em VM, e as vezes insisto no Hyprland, e no Fedora em especifico estava passando por um problema de waybar não carregar após o login, e depois vi que tinha algo haver com o xdg-portal (para variar), apenas coloquei um delay no inicio do waybar e resolveu o problema.

Pelo pouco que usei de Hyprland, o maior problema ao meu ver é a incompatibilidade do wayland com alguns softwares (talvez esta opção de xwayland resolva alguns deles)

1 curtida

Essa aplicação eu fiz em qt-designer + python. Posso disponibilizar o código mas precisa das bibliotecas do pyQt5. Fiz com o objetivo de unificar informações e configurações. Hoje eu estava até melhorando o programa:

Então esse bug não aconteceu comigo quando testei no fedora já que lá eu estava usando o sddm do sway. Mas é um bug que acontece as vezes, em 80% dos casos não acontecia. Mas agora com a alteração do comando para encerrar a sessão nunca mais aconteceu.

Vou testar comentar essas linhas…

Esse script é uma sugestão do hyprland para ser executado quando o sistema inicializa para configurar como padrão o xdg-desktop-portal-hyprland. Esse script é uma sugestão da wiki do Hyprland. O sleep deve ser apenas para que os processos tenham tempo de serem encerrados e iniciados.

3 curtidas

não entendi
:melting_face:

1 curtida

O Hyperland ja consegue compartilhar janelas com seu portal? Exemplo, usando OBS Studio e compartilhar janela…

compartilhar seria gravar uma janela? Se for o caso, sim.

1 curtida

Curti bastante seu texto, estou querendo testar um twm que seja compatível com wayland e fiquei entre o hyprland e o dwl, por eu utilizar o dwm a bastante tempo e funcionar tudo rendondinho bate aquela preguiça.
Vou ver se instalo final de semana o hyprland, inclusive que eu vi que a mesma animação que uso no dwm tem disponível no hyprland, quem sabe eu não adote o wayland como padrão já que muitas pessoas estão falando que está estável suficiente para usar diariamente.

1 curtida

Nunca testei o dwl, o link da arch wiki que postei no final do tópico é um bom guia para a instalação hyprland, mas leve em consideração o fato do hyprland ser um projeto novo, muitas vezes tive que “quebrar a cabeça” para configurar algo do meu jeito, percebi que falta ainda mais integração com o sistema em geral. Um bom exemplo sobre isto foi que para eu mudar o tema aqui no meu pc não adiantou apenas adicionar uma linha de comando no hyprland.conf, tive que alterar o arquivo /etc/environment (mas isso aconteceu apenas no notebook). Estou citando este exemplo para dizer que o hyprland ainda está em desenvolvimento e algumas coisas ainda podem melhorar, por isso uma leitura na Hyprland Wiki é uma boa escolha quando for configurar o sistema, além disso ainda tem alguns vídeos no youtube bons com doc disponíveis. É como você disse, para deixar tudo redondinho demora um pouco. O twm em wayland mais fácil de configurar que usei foi o sway já que basicamente ele usa a configuração do i3, porém não tem os recursos do hyprland o que para alguns podem não fazer falta.

3 curtidas

Eu iria instalar final de semana, mas acabei de fazer a instalação do hyprland, como estou no Gentoo foi extremamente simples a instalação. A documentação do hyprland é extremamente completa e super fácil de configurar, em 15 minutos tudo funcionando. Agora o que me falta é tirar um tempinho para configurar a waybar da maneira que acho mais adequada e usar no dia dia. Mas valeu pelas dicas.

1 curtida

Só discordo de a documentação ser boa. Pro básico do básico, ela é rápida mesmo, pra conhecer o compositor (como eles chamam os window managers no wayland) e seus recursos, é bem fraca. A doc só cobre o básico, tive que fuçar bastante em issues pra achar algumas coisas.

2 curtidas

Sim, também tive a mesma sensação. Acho que a Wiki do hyprland devia ter mais exemplos de usos dos comandos, uma melhor explicação dos recursos, etc. Apenas cito ela como ponto de partida nas configurações. Realmente para algumas coisas tive que “vasculhar” pelo google.

Sobre a wiki do Hyprland ( serve para qualquer outro TWM).

Costumo seguir a seguinte estratégia para configurar um twm pela primeira vez.

  1. Encontro uma customização que melhor me agrada no Reddit do unixporn (muitas vezes até mesclo configurações)
  2. Utilizo o dotfiles desta customização juntamente com a documentação oficial para fazer os ajustes que eu quero, visto que normalmente a documentação tem apenas os parâmetros possíveis, não mostra exemplos reais aplicados.

Foi assim com o Qtile e com o Hyprland + waybar.

3 curtidas

@Pio Boa dica, eu costumo começar pelo arquivo de config padrão mesmo, se ele for comentado. Se arquivo default for ruim eu corro para wiki, as issues do repositório do projeto e para a internet. Pô, to sentindo falta, no wayland, de um recurso que usava bastante no qtile e via patch no dwm. Aquele modo “monocle” de uma janela só, muito útil!!! É o “lazy.layout.toggle_split”.

Pra galera do hyprland aí, sabem se tem como definir um tamanho para a janela flutuante junto do atalho para transformar a janela em flutuante (togglefloating)?

Explicando de forma prática. Eu uso o atalho padrão:

bind = $mainMod, space, togglefloating

para transformar uma janela em floating. No sway/i3 eu posso definir várias coisas para uma janela flutuante em um mesmo atalho, da seguinte forma:

bindsym $mod+space floating toggle; resize set 1000 590; move position center

No atalho acima, meu container vira flutuante, centraliza na tela e fica no tamanho que eu escolhi. Fucei em tudo que é canto da wiki do hyprland e não achei nada do tipo. Será que não tem alguma forma de fazer isso?

Pelo que percebi nos testes que fiz, hyprland não se incomoda, ou pelo menos não dá mensagem de erro, quando eu uso mais de um comando para o mesmo atalho. Foi o que fiz, assim ao usar super+espaço serão executados três comandos ao mesmo tempo. Consegui da seguinte forma:

bind = $mainMod, space, togglefloating                  # toggle floating
bind = $mainMod, space, resizeactive, exact 1000 600   # tamanho da janela flutuante
bind = $mainMod, space, centerwindow                   # sempre centralizar uma janela fluante

Se alguém souber uma forma melhor de fazer isso (com menos repetições), avisa aí. Confesso que achei essa forma bem pouco prática. Repetir o mesmo atalho três vezes é meio contraintuitivo.

1 curtida

Percebi isso esses dias quando estava testando o special workspace. O atalho era o mesmo para outra coisa e funcionava.

Ficou muito boa tua config para as janelas flutuantes! Copiado :joy:.

P.S. Sobre o special workspace. Testei ele esses dias, posso estar errado, mas o workspace special é um workspace além dos outros padrões que se sobrepõe aos outros. Como se vc tivesse deixado uma janela “fixada” ou “pinada”. Isso seria a base do scratchpad? Nunca usei isso.

1 curtida

Reparei somente um inconveniente com esse esquema que fiz. Em alguns momentos, voltando para o modo tiling com o super+espaço o tamanho das janelas fica alterado. Isso, obviamente, é por contada da gambiarra que fiz. Como raramente volto uma janela flutuante para o modo tiling, isso não é um problema para mim. Se alguém precisar e isso for um incomodo, adiciona mais um atalho a lista, com sugestão:

bind = $mainMod SHIFT, space, togglefloating

Dessa forma, retorne a janela flutuante para tiling não com super+espaço e sim super+shift+espaço. Até agora é a única forma que encontrei. E, de certa forma, é uma gambiarra.

@SobDex O scracthpad é uma área de trabalho invisível. No sway/i3 você manda a janela para lá e não tem acesso a ela até chamar a janela novamente. Você chama uma janela por vez ou uma janela específica (aí depende da config e das regras que definiu). Porém, no sway/i3 você não vê essa área de trabalho, ela é, de fato, invisível.

O “especial workspace” do hyprland é uma área de trabalho que se sobrepõe as outras, as janelas ficam organizadas nela como uma área de trabalho normal, que fica escondida, e que pode ser chamada com o “togglespecialworkspace”. Ou, se preferir pode definir, como no sway/i3, um atalho/regras para as janelas que estiverem nele. É possível iniciar janelas direto no “especial workspace”, e eles ficam, muito entre aspas, como se estivessem minimizadas (elas não ficam visíveis, até você chamar alguma delas).

Pois é, essa de não avisar sobre um atalho duplicado me incomodou. Tem que lembrar se já não usei aquele atalho antes, porque o config não vai apresentar nenhuma mensagem, erro nem nada.

1 curtida

Eu não tinha percebido sobre a dimensão da janela quando ela volta para o modo tiling. Fiquei com a impressão que a animação estava bugando, mas acho que sua hipótese é mais lógica. Todavia isso também não me incomoda.

Hoje eu estava pesquisando sobre o special workspace e encontrei como usar no reddit.

Um exemplo do xfce4-terminal usando o scracthpad:

windowrulev2 = move 1027 53,class:^(xfce4-terminal)(.*)$
windowrulev2 = float,class:^(xfce4-terminal)
windowrulev2 = workspace special:xfce4-terminal,class:^(xfce4-terminal)
bind = $mainMod, L, exec, pgrep xfce4-terminal && hyprctl dispatch togglespecialworkspace xfce4-terminal || xfce4-terminal

Quando você aperta Super+L o sistema confere se o xfce4-terminal está aberto, alterna para o special workspace se estiver aberto ou abre o programa se não estiver. É de exemplo desse tipo que faltam na Hyprland Wiki.
Com a mesma lógica desse bind aí do exemplo, tentei unir aqueles seus comandos das janelas flutuates com && mas o hyprland retornou um erro. Tentei apenas com bind = $mainMod, space, togglefloating && centerwindow, porém o mesmo erro foi reportado. Mas apenas com esses dois comandos associados ao Super+Space, ao meu parecer, ficou bastante fluido.

Agora consegui entender a usabilidade do scratchpad, obrigado por esclarecer.

1 curtida