Hyprland (Português)

Status de tradução:
Esse artigo é uma tradução de
Hyprland
. Data da última tradução: 2026-03-11. Você pode ajudar a sincronizar a tradução, se houver
alterações
na versão em inglês.
Este artigo ou esta seção precisa de
tradução
.
Notas:
Artigo em processo de tradução. (Discuta em
Talk:Hyprland (Português)#
)
Artigos relacionados
Gerenciador de janela
Wayland (Português)
Hyprland
é um
compositor Wayland
de tiling independente escrito em C++. Funções notórias do Hyprland incluem tiling dinâmico, janelas espaçadas, uma base de código C++ limpa e legível, e um renderizador customizado que provê animações de janela, bordas arredondadas, e blur em janelas transparentes. Uso geral e configuração estão extensivamente documentados em
Hyprland wiki
.
Instalação
Instale
o pacote
hyprland
.
Desde
#6608
, o Hyprland usa
aquamarine
como sua própria biblioteca backend de renderização. Antes disso, ele vinha junto com sua própria versão do
wlroots
, which closely followed
wlroots-git
AUR
.
Nota
Usuários de GPUs da
NVIDIA
devem certificar-se de seguir as instruções na página NVIDIA specific page on the
upstream Wiki
antes de tentar inicializar o Hyprland. Failure to do so will likely result em diversos bugs incluindo incapacidade de logar, janelas piscantes e alto uso de placa de vídeo.
O uso de GPUs da NVIDIA com o Hyprland não é suportado. Muitos usuários conseguiram mas se algo não estiver funcionando, você está por si só.
Certifique-se de instalar o pacote
Polkit
, ou
inicie
e
habilite
seatd.service
. Falha em cumprir essas etapas causará com que o Hyprland falhe ao tentar iniciar.
Usuários de VMware/VirtualBox podem precisar habilitar a aceleração 3D para executar o Hyprland propriamente.
Configuração
Nota
Maior parte das opções listadas (e mais) são explicadas em detalhe na página de variáveis
hyprland Wiki
.
A configuração é feita por meio de um único arquivo de configuração,
hyprland.conf
, entretanto, é possível dividir a configuração em múltiplos arquivos e incluí-los em
hyprland.conf
. O arquivo padrão é
/usr/share/hypr/hyprland.conf
e, depois de logar pela primeira vez,
~/.config/hypr/hyprland.conf
.
hyprland.conf
Inclui diretivas para configurar seus dispositivos (teclados, mouses, trackpads, monitores), assim como configurações para animações, decorações, layouts etc. Você pode definir teclas de atalho, regras para janelas, e executar comandos (tanto uma vez ou toda vez) que a configuração é recarregada. settings for animations, decorations, layout, etc.
A configuração é automaticamente recarregada toda vez que você atualiza e salva o arquivo. Você também pode usar
hyprctl reload
para obter o mesmo resultado. Para algumas configurações (particularmente configurações de input), você pode precisar reiniciar a sua sessão Hyprland.
Configurações também podem ser alteradas em tempo real com
hyprctl
mas elas não serão salvas.
Teclado
Mapa de teclado
Por padrão o Hyprland usa o layout
US Qwerty
; você pode configurar outro layout da seguinte maneira:
~/.config/hypr/hyprland.conf
# German Colemak layout
input {
...
kb_layout = de
kb_variant = colemak
...
}
Para uma lista com todas as opções disponíveis, veja a
Hyprland Wiki
.
Nota
O Hyprland sobrescreverá definições
locale
então é necessário mudar o mapa de teclado se você não usa um teclado com layout
US
.
Atraso e ritmo de repetição de teclas
Usuários Xorg podem estar acostumados com essa configuração
definida no nível do servidor
, no Wayland cada compositor gerencia essa configuração de sua própria forma:
~/.config/hypr/hyprland.conf
# Repeat rate and delay
input {
...
repeat_rate = 25
repeat_delay = 600
...
}
Luzes de fundo do teclado
Usar os controles de brilho de seu teclado por meio do Hyprland é possível.
Instale
brightnessctl
e então adicione as teclas relacionadas (substitua
keyboard_brightness_*
por
SUPER, F
X
ou
XF86KbdBrightness
dependendo de como o seu hardware expõe a
luz de fundo do teclado
):
~/.config/hypr/hyprland.conf
# Keyboard backlight
bind = ,
keyboard_brightness_up_shortcut
, exec, brightnessctl -d *::kbd_backlight set +33%
bind = ,
keyboard_brightness_down_shortcut
, exec, brightnessctl -d *::kbd_backlight set 33%-
Também é possível ter
notificações na tela
que são mostradas quando mudanças são feitas.
Teclas de controle de mídia
É possível controlar a reprodução de mídia por meio de teclas de atalho usando as símbolos de tecla do
XF86Audio
e uma aplicação como
pavucontrol
ou
pamixer
e
playerctl
:
~/.config/hypr/hyprland.conf
# Volume and Media Control
bind = , XF86AudioRaiseVolume, exec, pamixer -i 5
bind = , XF86AudioLowerVolume, exec, pamixer -d 5
bind = , XF86AudioMicMute, exec, pamixer --default-source -m
bind = , XF86AudioMute, exec, pamixer -t
bind = , XF86AudioPlay, exec, playerctl play-pause
bind = , XF86AudioPause, exec, playerctl play-pause
bind = , XF86AudioNext, exec, playerctl next
bind = , XF86AudioPrev, exec, playerctl previous
Também é possível ter
notificações na tela
que são mostradas quando mudanças são feitas.
Gestos touchpad
Por ser um compositor
Wayland
, o Hyprland tem suporte total a gestos touchpad. Por padrão, estes estão desabilitados. Para habilita-los, faça a seguinte edição:
~/.config/hypr/hyprland.conf
# Enable touchpad gestures
gesture = 3, horizontal, workspace
Veja a
wiki upstream
para uma lista com todas as opções disponíveis.
Configurações de exibição
Transmissão de tela
Veja a página relevante de transmissão de tela na
wiki upstream
Por ser um compositor compatível como o wlroots, o Hyprland pode utilizar
xdg-desktop-portal-wlr
para habilitar a captura de tela em diversos aplicativos por meio do pacote
xdg-desktop-portal
.
Hyprland também mantém
xdg-desktop-portal-hyprland
, que suporta transmissão de tela (incluindo transmissões de regiões e transmissões de janelas), teclas de atalho globais, e uma ferramenta gráfica de seleção de cores. O uso do portal é mais detalhadamente documentado na
Hyprland wiki
.
Vale enfasar que xdg-desktop-portal-hyprland não inclui um seletor de arquivos, para isso usuários podem optar por instalar
xdg-desktop-portal-gtk
.
Definindo resolução da tela
O Hyprland tentará detectar a resolução de sua tela automaticamente e selecionar uma escala de 1x. 1.5x ou 2x para a tela.
[1]
Entretanto, algumas vezes essa detecção falhará e usará uma configuração padrão à prova de falhas, isso geralmente ocorre quando há múltiplas telas ou se você possui um laptop híbrido. Se tudo na sua tela estiver muito grande então você precisa configurar o monitor padrão e a resolução manualmente.
Ache o seu monitor padrão usando
hyprctl
:
$ hyprctl monitors
Monitor
eDP-1
(ID 0):
1920x1080@144
.003006 at
0x0
description: Chimei Innolux Corporation 0x153C (eDP-1)
        ...
Então adicione o monitor à configuração:
~/.config/hypr/hyprland.conf
...
# Monitor details
monitorv2 {
    output = eDP-1
    mode = 1920x1080@144
    position = 0x0
    scale = 1
}
...
0x0
é o offset de posição usado para setups com múltiplas telas e o
1
no final é o fator de escala da tela.
Confira
Hyprland Monitors Wiki
para mais detalhes.
GUI de configurações
O pacote
nwg-displays
disponibiliza uma aplicação GUI para organização de monitores e suporta o Hyprland. Ele é parte do pacote
nwg-shell
(mas funciona sozinho), veja
nwg-displays github
para mais detalhes.
Luz de fundo da tela
Instale
brightnessctl
e então adicione as seguintes teclas:
~/.config/hypr/hyprland.conf
# Screen brightness
bind = , XF86MonBrightnessUp, exec, brightnessctl s +5%
bind = , XF86MonBrightnessDown, exec, brightnessctl s 5%-
Também é possível ter
notificações na tela
que são mostradas quando mudanças são feitas.
Uso
Iniciando
Gerenciador de Sessões Universal para Wayland
O
Gerenciador de Sessões Universal para Wayland
embrulha o compositor e aplicações configuradas de acordo e daemons por meio de arquivos de units do systemd, permitindo que você controle-as com
systemctl
.
O Hyprland pode ser iniciado via um
gerenciador de exibição
com
uwsm
selecionando
hyprland (uwsm-managed)
.
Você pode iniciar o Hyprland com o uwsm tanto em um
getty
quanto com o seguinte script no seu
shell de login
:
if uwsm check may-start && uwsm select; then
  exec systemd-cat -t uwsm_start uwsm start default
fi
Nota
uwsm check may-start
verifica se está tudo bem inicializar a sessão wayland, em particular caso esteja rodando em um
shell de login
. Entretanto, você ainda deveria evitar usar isso dentro de
.bashrc
ou outros arquivos providos até por shells que não são de login.
O Hyprland deixou de
recomendar
iniciar suas sessões com
uwsm
uma vez que a ferramenta é considerada experimental e direcionada a usuários experientes que entendem suas implicações e
peculiaridades
.
Dica
Se você deseja pular o menu de seleção de compositor e iniciar o Hyprland diretamente, use esse código em seu
shell de login
:
if uwsm check may-start; then
  exec uwsm start hyprland.desktop
fi
Atenção
Se você optou por iniciar o Hyprland via
uwsm
então você deve ajustar suas configurações de acordo. Em particular:
Você deve evitar usar o dispatcher
exit
ou finalizar o processo do Hyprland diretamente já que isso interferiria com o processo de finalização padrão
. Use
uwsm stop
ou
loginctl terminate-user ""
para finalizar o Hyprland e sair da sessão de usuário, por exemplo:
~/.config/hypr/hyprland.conf
bind = $mainMod, M, exec, uwsm stop
Não coloque variáveis de ambiente em
hyprland.conf
, ao invés disso, use os arquivos do
uwsm
~/.config/uwsm/env
para variáveis comuns para todas as sessões gráficas gerenciadas pelo uwsm (GTK, Qt, xcursor, ...) e
~/.config/uwms/env-hyprland
para variáveis de ambiente exclusivas para o Hyprland (variáveis
Hypr*
e
AQ_*
por exemplo). O formato desses arquivos é
export
KEY
=
VALUE
em cada linha sem comentários. É fortemente indicado que, caso você use múltiplas GPUs, que coloque as variável de ambiente
AQ_DRM_DEVICES
dentro de
env-hyprland
para evitar conflitos com outros compositores.
Leia a
página relacionada na Wiki upstream
para informações adicionais sobre configuração com uwsm.
Terminal
Você pode iniciar o Hyprland por um
getty
com o seguinte comando:
$ start-hyprland
Nota
O Hyprland deixou de
recomendar
iniciar suas sessões com
Hyprland
já que o novo comando prove recuperação de travamento e um modo seguro.
Gerenciadores de exibição
Apesar de iniciar o Hyprland por meio de um
gerenciador de exibição
não ser oficialmente suportado, usuários obtiveram sucesso usando
GDM
,
SDDM
e outros. A
wiki upstream
mantém uma lista de compatibilidade com gerenciadores de exibição. O pacote
hyprland
contem dois
desktop entries
, e todos pacotes AUR do Hyprland também irão gerar um automaticamente.
Ambos os métodos geram resultados idênticos, com mais ou menos variáveis de ambiente e serviços.
Login automático
Usuários podem logar automaticamente usando um
gerenciador de exibição
ou adaptando o método descrito em
Xinit (Português)#Inicializar_automaticamente_o_X_no_login
.
hyprctl e IPC
hyprctl
é um ferramenta de linhas de comando que vem instalada juntamente do Hyprland para comunicar com o servidor de exibição. Ela permite que você envie comandos para o servidor (equivalente aos comandos no arquivo de configuração, mas com uma sintaxe levemente diferente), defina keywords, envie consultas e peça por informações. Veja a
documentação completa
.
O Hyprland também expõe
2 soquetes UNIX
para controlar e receber informações sobre o Hyprland por meio de código ou linhas de comando. Esses soquetes transmitem informações quando ocorrem eventos de mudança de foco (janelas, áreas de trabalho, monitores), criação de janelas/áreas de trabalho, etc.
Ambos
hyprctl
e os sockets IPC podem ser usados em scripts para controlar o Hyprland e performar tarefas complexas.
Inicialização automática
Ao iniciar aplicações é importante usar o tipo correto de dispatcher, usar
exec
incorretamente pode causar com que aplicações sejam iniciadas múltiplas vezes, tomando recursos do sistema e nos piores casos, causando condições de corrida que podem travar seu sistema.
Nota
Como mencionado em
#Configuração
, O Hyprland automaticamente reavalia o
hyprland.conf
toda vez que uma mudança ao arquivo é feita e salva
: não use
exec
para tudo.
Na maioria dos casos você deve usar
exec-once
para executar aplicações e daemons ao iniciar o Hyprland, esse comando não irá rodar esse comando novamente ao recarregar, apenas use
exec
caso você
realmente
queira que esse comando rode novamente cada vez que o arquivo de configuração recarregar.
Dica
Se você inicializou o Hyprland por meio do gerenciador de sessões universal para wayland (uwsm) e a aplicação que você quer rodar possui uma unit do systemd então você pode
habilitar
ela para que ela seja inicializada automaticamente quando o Hyprland estiver pronto. Você pode, alternativamente, passar esta aplicação para
uwsm app
como um argumento para que ela seja gerenciada pelo
uwsm
. Por exemplo:
~/.config/hypr/hyprland.conf
exec-once = uwsm app -- mycommand --arg1 --arg2
bind = SUPER, E, exec, uwsm app -- pcmanfm-qt.desktop
Definindo variáveis de ambiente
É possível definir
variáveis de ambiente
diretamente no
hyprland.conf
usando a keyword
env
, que possui uma sintaxe diferente do comando UNIX 'env' usado por shells.
As diferenças são explicadas na
Wiki upstream
.
Ecossistema-Hypr
Atenção
Algumas das ferramentas mostradas nas seções a seguir ainda são um trabalho em progresso. Portanto, bugs são esperados. Por essa razão, instruções completas e exemplos serão omitidos até que estejam maturas o suficiente para serem estáveis. Instruções detalhadas sobre o uso dessas ferramentas é documentado na
Wiki upstream
.
O time de desenvolvimento do Hyprland está construindo um ecossistema de aplicações feitos especificamente para serem usados com o Hyprland, essas ferramentas incluem dispatchers que permitem elas sejam usadas com
hyprctl
ao invés de depender de scripts.
Atualmente o ecossistema consiste de:
Hyprpaper
Hyprpaper é uma ferramenta de papéis de parede; ela pode ser instalada com o pacote
hyprpaper
.
Hyprpicker
Hyprpicker é uma ferramenta para selecionar uma cor de um desktop; ela pode ser instalada com o pacote
hyprpicker
. Ela não requere configuração.
Hypridle
Hypridle é um daemon de gerenciamento de inatividade; ele pode ser instalado com o pacote
hypridle
.
Hyprlock
Hyprlock
é um gerenciador de trancamento de tela; ele pode ser instalado com o pacote
hyprlock
.
Hyprcursor
Hyprcursor é o novo formato para lidar com cursores de ela que oferece diversas melhorias em comparação ao método tradicional; ele pode ser instalado com o pacote
hyprcursor
.
Temas do Hyprcursor
Dica
Se você instalar o hyprcursor e não instalar nenhum tema junto dele então ele irá usar as suas configurações de cursor antigas
Temas para cursor podem ser instalados pela
AUR
, por exemplo:
sweet-cursors-hyprcursor-git
AUR
nordzy-hyprcursors
AUR
xcursor-pro-hyprcursor
AUR
hyprcursor-dracula-kde-git
AUR
Instruções para portar temas existentes para o Hyprcursor estão disponíveis no
repositório github do projeto
.
XDG-Desktop-Portal-Hyprland
Implementação do
XDG Desktop Portal
do Hyprland. Compatível com outros compositores baseados em wlroots, mas provê funcionalidades extra quando usado com o Hyprland. Disponível através do pacote
xdg-desktop-portal-hyprland
.
Hyprpolkitagent
Hyprpolkitagent é um daemon de autenticação
polkit
. Ele pode ser instalado com o pacote
hyprpolkitagent
.
Hyprsunset
Hyprsunset é uma pequena ferramente que disponibiliza um filtro de luz azul para sua tela. Ele pode ser instalado pelo pacote
hyprsunset
.
Hyprsysteminfo
Hyprsysteminfo é um programa de pega informações de seu sistema, similarmente ao
neofetch
AUR
ou
fastfetch
. Ele pode ser instalado pelo pacote AUR
hyprsysteminfo
AUR
.
Dicas e truques
Nota
Para todas as seções abaixo geralmente haverá mais do que uma maneira para atingir um mesmo resultado, todos os pedaços de código aqui servem como exemplos básicos.
Para uma lista compreensiva de alternativas veja
Lista de aplicações
, uma lista específica para Hyprland pode ser encontrada na
Wiki upstream
.
Gerenciador de arquivos
O Hyprland requere uma aplicação externa compatível com wayland caso um gerenciador de arquivos gráficos for desejado. Usando
thunar
como exemplo, basta definirmos uma tecla de atalho:
~/.config/hypr/hyprland.conf
...
bind = SUPER, E, exec, thunar
...
Inicializador de aplicações
O Hyprland requere uma aplicação externa compatível com wayland para iniciar aplicações. Usando
wofi
como exemplo, basta definirmos uma tecla de atalho:
~/.config/hypr/hyprland.conf
...
bind = SUPER, F, exec, wofi --show drun
...
Inatividade
O Hyprland requere uma aplicação externa compatível com wayland caso um daemon de gerenciamento de inatividade for desejado. A configuração mais comum é usar os pacotes
hypridle
e
hyprlock
. Você pode trancar sua tela manualmente usando a seguinte tecla de atalho:
~/.config/hypr/hyprland.conf
...
bind = SUPER, L, exec, hyprlock
...
Trancamento de tela automático e suspensão
Crie o seguinte arquivo:
~/.config/hypr/hypridle.conf
general {
    lock_cmd = pidof hyprlock || hyprlock
}

listener {
    timeout = 300
    on-timeout = loginctl lock-session
}

listener {
    timeout = 600
    on-timeout = systemctl suspend
}
Dica
Você pode ajustar os intervalos de tempo modificando os valores numéricos, em segundos. 300 é 5 minutos, 600 é 10 minutos etc.
E então execute ele:
~/.config/hypr/hyprland.conf
...
exec-once = hypridle
...
Desligando a tela usando DPMS depois de um período de tempo
O Hyprland possui um dispatcher integrado para lidar com requisições DPMS entretanto usá-lo diretamente com uma tecla de atalho não é recomendado, fazer isso causará com que você não consiga ligar sua tela de volta, te obrigando a reiniciar sua máquina.
Edite o arquivo acima e altere-o para ficar da seguinte forma:
~/.config/hypr/hypridle.conf
general {
    lock_cmd = pidof hyprlock || hyprlock
}

listener {
    timeout = 300
    on-timeout = loginctl lock-session
}

listener {
    timeout = 600
    on-timeout = hyprctl dispatch dpms off
    on-resume = hyprctl dispatch dpms on
}

listener {
    timeout = 900
    on-timeout = systemctl suspend
}
Barra de status
O Hyprland requere uma aplicação externa compatível com o wayland para exibir uma barra de status. Usando o pacote
waybar
como exemplo, nós só precisamos chama-la da seguinte forma:
~/.config/hypr/hyprland.conf
...
exec-once = waybar
...
Overview da área de trabalho
waybar
possui um módulo já integrado que suporta áreas de trabalho do Hyprland nativamente e é altamente customizável.
Veja a waybar Wiki
[2]
para mais detalhes.
Autenticação Polkit
Autenticação
Polkit
requer o uso de um
agente de autenticação
externo. O Hyprland recomenda usar
hyprpolkitagent
mas qualquer um deve funcionar.
Chame-o da seguinte forma:
~/.config/hypr/hyprland.conf
...
exec-once = systemctl --user start hyprpolkitagent
...
Papel de parede do desktop
O Hyprland requere uma aplicação externa compatível com o wayland para gerenciar papéis de parede. Usando
hyprpaper
como exemplo, nós podemos chama-lo da seguinte forma:
~/.config/hypr/hyprland.conf
...
exec-once = hyprpaper
...
Adicionalmente, já que
hyprpaper
requer um arquivo de configuração para iniciar; crie o arquivo da seguinte forma:
~/.config/hypr/hyprpaper.conf
wallpaper {
    monitor =
monitor
path = /home/me/amongus.png
    fit_mode = cover
}
Substitua
monitor
com o monitor que você deseja que o papel de parede seja aplicado, você pode obter uma lista usando
hyprctl monitors
.
monitor
também pode ser deixado em branco para que a regra se aplique a todos os monitores.
Usando um script para randomizar o papel de parede
Crie o seguinte script e certifique-se de que ele é
executável
:
~/.config/hypr/scripts/hyprpaper-random
#!/usr/bin/env bash

WALLPAPER_DIR="$HOME/.config/hypr/wallpapers/"
CURRENT_WALL=$(hyprctl hyprpaper listloaded)

# Get a random wallpaper that is not the current one
WALLPAPER=$(find "$WALLPAPER_DIR" -type f ! -name "$(basename "$CURRENT_WALL")" | shuf -n 1)

# Apply the selected wallpaper
hyprctl hyprpaper reload ,"$WALLPAPER"
Agora crie um novo
diretório
para armazenar papéis de parede, algo como
~/.config/hypr/wallpapers
deve funcionar, e insira nele as imagens que você deseja.
Por fim, chame o script quando a tecla de atalho
especifica
é pressionada:
~/.config/hypr/hyprland.conf
...
$mainMod = super

bind = $mainMod, r, exec, ~/.config/hypr/scripts/hyprpaper-random
...
Notificações na tela
Notificações na tela para ações como alterações de brilho ou volume são possíveis usando um daemon de notificações externo. Este é um tópico muito complexo e cobri-lo completamente é além do escopo dessa página. Ao invés disso, essa sessão irá focar no pacote
mako
, portanto,
instale
ele.
Veja
Notificações de desktop
para mais instruções e
Desktop_notifications#Standalone
para uma lista de alternativas.
Nota
Todos os scripts aqui oferecidos são exemplos e vão, muito provavelmente, precisar ser ajustados para seu setup.
Todos os scripts nessa sessão devem ser
executáveis
.
Mako
This article or section needs language, wiki syntax or style improvements. See
Help:Style
for reference.
Reason:
This section goes beyond the scope of this page and probably deserves its own dedicated page. (Discuss in
Talk:Hyprland (Português)
)
Mako is a lightweight notification daemon, you can read
mako(5)
for details. Its configuration file is
~/.config/mako/config
, icons used for OSD are stored at
~/.config/mako/icons/
and should be in PNG format.
For the rest of this section all the images used by the scripts are available from
this GitHub folder
.
Keyboard backlight notifications
First create the following script:
~/.config/hypr/scripts/kbbacklight
#!/usr/bin/env bash

iDIR="$HOME/.config/mako/icons"

# Get brightness
get_backlight() {
	LIGHT="$(cat /sys/class/leds/*::kbd_backlight/brightness)"
	echo "${LIGHT}"
}

# Get icons
get_icon() {
	current="$(cat /sys/class/leds/*::kbd_backlight/brightness)"

	if [[ ("$current" -ge "0") && ("$current" -le "1") ]]; then
		icon="$iDIR/brightness-20.png"
	elif [[ ("$current" -ge "1") && ("$current" -le "2") ]]; then
		icon="$iDIR/brightness-60.png"
	elif [[ ("$current" -ge "2") && ("$current" -le "3") ]]; then
		icon="$iDIR/brightness-100.png"
	fi
}

# Notify
notify_user() {
	notify-send -h string:x-canonical-private-synchronous:sys-notify -u low -i "$icon" "Keyboard Brightness : $(brightnessctl -d '*::kbd_backlight' g)"
}

# Increase brightness
inc_backlight() {
	brightnessctl -d *::kbd_backlight set 33%+ && get_icon && notify_user
}

# Decrease brightness
dec_backlight() {
	brightnessctl -d *::kbd_backlight set 33%- && get_icon && notify_user
}

# Zero brightness
zero_backlight() {
	brightnessctl -d *::kbd_backlight s 0%
}

# Full brightness
full_backlight() {
	brightnessctl -d *::kbd_backlight s 100%
}

# Execute accordingly
if [[ "$1" == "--get" ]]; then
	brightnessctl -d '*::kbd_backlight' g
elif [[ "$1" == "--inc" ]]; then
	inc_backlight
elif [[ "$1" == "--dec" ]]; then
	dec_backlight
elif [[ "$1" == "--zero" ]]; then
	zero_backlight
elif [[ "$1" == "--full" ]]; then
	full_backlight

else
	get_backlight
fi
Then add a new bind, or edit any
existing one
:
~/.config/hypr/hyprland.conf
# Keyboard brightness
bind =
keyboard_brightness_up_shortcut
, exec, ~/.config/hypr/scripts/kbbacklight --inc
bind =
keyboard_brightness_down_shortcut
, exec, ~/.config/hypr/scripts/kbbacklight --dec
Media key notifications
First create the following script:
~/.config/hypr/scripts/volume
#!/usr/bin/env bash

iDIR="$HOME/.config/mako/icons"

# Get Volume
get_volume() {
	volume=$(pamixer --get-volume)
	echo "$volume"
}

# Get icons
get_icon() {
	current=$(get_volume)
	if [[ "$current" -eq "0" ]]; then
		echo "$iDIR/volume-mute.png"
	elif [[ ("$current" -ge "0") && ("$current" -le "30") ]]; then
		echo "$iDIR/volume-low.png"
	elif [[ ("$current" -ge "30") && ("$current" -le "60") ]]; then
		echo "$iDIR/volume-mid.png"
	elif [[ ("$current" -ge "60") && ("$current" -le "100") ]]; then
		echo "$iDIR/volume-high.png"
	fi
}

# Notify
notify_user() {
	notify-send -h string:x-canonical-private-synchronous:sys-notify -u low -i "$(get_icon)" "Volume : $(get_volume) %"
}

# Increase Volume
inc_volume() {
	pamixer -i 5 && notify_user
}

# Decrease Volume
dec_volume() {
	pamixer -d 5 && notify_user
}

# Toggle Mute
toggle_mute() {
	if [ "$(pamixer --get-mute)" == "false" ]; then
		pamixer -m && notify-send -h string:x-canonical-private-synchronous:sys-notify -u low -i "$iDIR/volume-mute.png" "Volume Switched OFF"
	elif [ "$(pamixer --get-mute)" == "true" ]; then
		pamixer -u && notify-send -h string:x-canonical-private-synchronous:sys-notify -u low -i "$(get_icon)" "Volume Switched ON"
	fi
}

# Toggle Mic
toggle_mic() {
	if [ "$(pamixer --default-source --get-mute)" == "false" ]; then
		pamixer --default-source -m && notify-send -h string:x-canonical-private-synchronous:sys-notify -u low -i "$iDIR/microphone-mute.png" "Microphone Switched OFF"
	elif [ "$(pamixer --default-source --get-mute)" == "true" ]; then
		pamixer -u --default-source u && notify-send -h string:x-canonical-private-synchronous:sys-notify -u low -i "$iDIR/microphone.png" "Microphone Switched ON"
	fi
}
# Get icons
get_mic_icon() {
	current=$(pamixer --default-source --get-volume)
	if [[ "$current" -eq "0" ]]; then
		echo "$iDIR/microphone.png"
	elif [[ ("$current" -ge "0") && ("$current" -le "30") ]]; then
		echo "$iDIR/microphone.png"
	elif [[ ("$current" -ge "30") && ("$current" -le "60") ]]; then
		echo "$iDIR/microphone.png"
	elif [[ ("$current" -ge "60") && ("$current" -le "100") ]]; then
		echo "$iDIR/microphone.png"
	fi
}
# Notify
notify_mic_user() {
	notify-send -h string:x-canonical-private-synchronous:sys-notify -u low -i "$(get_mic_icon)" "Mic-Level : $(pamixer --default-source --get-volume) %"
}

# Increase MIC Volume
inc_mic_volume() {
	pamixer --default-source -i 5 && notify_mic_user
}

# Decrease MIC Volume
dec_mic_volume() {
	pamixer --default-source -d 5 && notify_mic_user
}

# Execute accordingly
if [[ "$1" == "--get" ]]; then
	get_volume
elif [[ "$1" == "--inc" ]]; then
	inc_volume
elif [[ "$1" == "--dec" ]]; then
	dec_volume
elif [[ "$1" == "--toggle" ]]; then
	toggle_mute
elif [[ "$1" == "--toggle-mic" ]]; then
	toggle_mic
elif [[ "$1" == "--get-icon" ]]; then
	get_icon
elif [[ "$1" == "--get-mic-icon" ]]; then
	get_mic_icon
elif [[ "$1" == "--mic-inc" ]]; then
	inc_mic_volume
elif [[ "$1" == "--mic-dec" ]]; then
	dec_mic_volume
else
	get_volume
fi
Then add the following (or edit any existing binds):
~/.config/hypr/hyprland.conf
# Volume
bind = , XF86AudioRaiseVolume, exec, ~/.config/hypr/scripts/volume --inc 
bind = , XF86AudioLowerVolume, exec, ~/.config/hypr/scripts/volume --dec 
bind = , XF86AudioMicMute, exec, ~/.config/hypr/scripts/volume --toggle-mic 
bind = , XF86AudioMute, exec, ~/.config/hypr/scripts/volume --toggle
Screen backlight notifications
First create the following script:
~/.config/hypr/scripts/backlight
#!/usr/bin/env bash

iDIR="$HOME/.config/mako/icons"

# Get brightness
get_backlight() {
	LIGHT=$(printf "%.0f\n" $(brightnessctl g))
	echo "${LIGHT}"
}

# Get icons
get_icon() {
	current="$(get_backlight)"
	if [[ ("$current" -ge "0") && ("$current" -le "19200") ]]; then
		icon="$iDIR/brightness-20.png"
	elif [[ ("$current" -ge "19200") && ("$current" -le "38400") ]]; then
		icon="$iDIR/brightness-40.png"
	elif [[ ("$current" -ge "38400") && ("$current" -le "57600") ]]; then
		icon="$iDIR/brightness-60.png"
	elif [[ ("$current" -ge "57600") && ("$current" -le "76800") ]]; then
		icon="$iDIR/brightness-80.png"
	elif [[ ("$current" -ge "76800") && ("$current" -le "96000") ]]; then
		icon="$iDIR/brightness-100.png"
	fi
}

# Notify
notify_user() {
	notify-send -h string:x-canonical-private-synchronous:sys-notify -u low -i "$icon" "Brightness : $(get_backlight)"
}

# Increase brightness
inc_backlight() {
	brightnessctl s +5% && get_icon && notify_user
}

# Decrease brightness
dec_backlight() {
	brightnessctl s 5%- && get_icon && notify_user
}

# Execute accordingly
if [[ "$1" == "--get" ]]; then
	get_backlight
elif [[ "$1" == "--inc" ]]; then
	inc_backlight
elif [[ "$1" == "--dec" ]]; then
	dec_backlight
else
	get_backlight
fi
Then add the following (or edit any existing binds):
~/.config/hypr/hyprland.conf
# Screen brightness
bind = , XF86MonBrightnessUp, exec, ~/.config/hypr/scripts/backlight --inc 
bind = , XF86MonBrightnessDown, exec, ~/.config/hypr/scripts/backlight --dec
Keyboard language notifications
To run this script, you need a command-line JSON processor
gojq
AUR
.
First create the following script:
~/.config/hypr/scripts/lang
#!/usr/bin/env bash

icon="$HOME/.config/mako/icons/language.png"

# Get language
get_lang() {
	lang=$(hyprctl devices -j | gojq -r '.keyboards[] | select(.name == "at-translated-set-2-keyboard") | .active_keymap' | cut -c 1-2 | tr 'A-Z' 'a-z')
	case $lang in
		en)
			lang="English language"
			;;
		ru)
			lang="Русский язык"
			;;
		uk)
			lang="Українська мова"
			;;
	esac
	echo $lang
}

# Notify
notify-send -h string:x-canonical-private-synchronous:sys-notify -u low -i "$icon" "$(get_lang)"
Then add the following (or edit any existing binds):
~/.config/hypr/hyprland.conf
device:at-translated-set-2-keyboard {
    kb_layout = us,ru,ua
    kb_variant = lang
    kb_options = grp:win_space_toggle
}

# Language
bind = SUPER, SPACE, exec, ~/.config/hypr/scripts/lang
Controle de alimentação
O Hyprland requere uma aplicação externa compatível com o wayland para controlar a alimentação do sistema. Usando
nwg-bar
como exemplo, podemos simplesmente adicionar a seguinte tecla de atalho:
~/.config/hypr/hyprland.conf
...
bind = SUPER, ESCAPE, exec, nwg-bar
...
Pranchetas
Quando copiamos dados para uma prancheta em
Wayland
esses dados são deletados ao fecharmos a aplicação cuja copiamos esses dados. Outros ambientes desktop contornam esse problema usando um gerenciador de prancheta dedicado e no Hyprland existem diversas opções compatíveis para escolher. Veja a
wiki upstream
para mais informações.
Essa seção ira cobrir o pacote
cliphist
já que ele suporta copiar tanto imagens como texto, comece adicionando o seguinte ao arquivo de configuração:
~/.config/hypr/hyprland.conf
...
exec-once = wl-paste --type text --watch cliphist store
exec-once = wl-paste --type image --watch cliphist store
...
Então crie uma tecla de atalho para puxar o histórico no seu
inicializador de aplicativos
de preferência:
~/.config/hypr/hyprland.conf
...
bind = SUPER, V, exec, cliphist list | wofi --dmenu | cliphist decode | wl-copy
...
Agora ao pressionar
Super+v
vai abrir uma janela
wofi
com uma lista com o histórico da prancheta.
Habilitar/desabilitar dispositivos
Para habilitar/desabilitar dispositivos (ex.: touchpad), primeiro use:
$ hyprctl devices
para obter o nome do seu dispositivo.
Coloque essas linhas de código no seu arquivo de configuração (substitua <device_name> com o nome do dispositivo obtido acima) para ligar/desligar o dispositivo:
~/.config/hypr/hyprland.conf
device {
  name = <device_name>
  enabled = {true/false}
}
Para dinamicamente ligar/desligar o dispositivo use hyprctl:
$ hyprctl keyword "device[<device_name>]:enabled" {true|false}
Você também pode criar teclas de atalho, ex.:
~/.config/hypr/hyprland.conf
...
bind = $mainMod, t, exec, hyprctl keyword "device[pixa3854:00-093a:0274-touchpad]:enabled" false
bind = $mainMod Shift, t, exec, hyprctl keyword "device[pixa3854:00-093a:0274-touchpad]:enabled" true
...
Perfil dconf separado
Caso você não queira infectar as configurações de outros ambientes desktops baseados em GTK, você pode usar um perfil
dconf
separado. Por exemplo:
Declare um novo perfil global dconf:
/etc/dconf/profile/hyprland
user-db:hyprland
~/.config/hypr/hyprland.conf
...
env = DCONF_PROFILE, hyprland
...
Agora você pode usar
gsettings
e isso não deve afetar outros ambientes desktop.
Aplicações KDE Plasma não seguindo o tema Qt
Mesmo com um tema Qt definido, alguns aplicativos plasma podem não segui-lo. Isso pode ser resolvido instalando
qt6ct-kde
AUR
e escolhendo um KColorScheme ou adicionando essa linha de configuração em kdeglobals:
~/.config/kdeglobals
[UiSettings]
ColorScheme=
NameOfTheProfile
Solução de problemas
Aplicativos electron nativos (wayland) piscando em GPUs NVIDIA
Esse é um problema comum entre usuários da NVIDIA no Hyprland
[3]
,
[4]
devido à falta de suporte para sincronização explicita no Hyprland
[5]
. A solução temporária recomendada é usar X11 (XWayland) com aplicações problemáticas passando-as
--ozone-platform-hint=x11
ou definindo
env = ELECTRON_OZONE_PLATFORM_HINT,x11
em
~/.config/hypr/hyprland.conf
para forçar todas as aplicações electron a serem executadas usando XWayland.
Problemas de foco em aplicativos da Jetbrains
Aplicativos da Jetbrains (Pycharm, Intellij) podem apresentar problemas estranhos de foco como:
Não é possível arrastar uma aba da barra de abas
[6]
para um split ou outra pilha de abas sem que o foco seja roubado e a aba seja largada assim que você arrasta ela para fora da barra de abas atual.
Janela popup de auto completar roubando o foco até o mouse ser movido.
Para mitigar esse problema adicione isso ao arquivo de configuração do
Hyprland
:
~/.config/hypr/hyprland.conf
windowrule = match:xwayland true, no_initial_focus on
Veja também
Website do Hyprland
A documentação oficial
Página Github do Hyprland
lista de ferramentas, plugins e extensões mantidas pela comunidade
Repositório Github de SolDoesTech - Criador de scripts de notificação