Hyprland (Português) - ArchWiki

Jump to content

# Hyprland (Português)

From ArchWiki
Status de tradução: Este 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-gitAUR.

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, FX` 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-gitAUR
- nordzy-hyprcursorsAUR
- xcursor-pro-hyprcursorAUR
- hyprcursor-dracula-kde-gitAUR

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 neofetchAUR ou fastfetch. Ele pode ser instalado pelo pacote AUR hyprsysteminfoAUR.

## 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 gojqAUR.

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-kdeAUR 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

Category:

- Wayland compositors (Português)

Hidden categories:

- Pages or sections flagged with Template:Translateme (Português)
- Pages or sections flagged with Template:Style

Hyprland (Português)
Add topic