[Guia/Tutorial] Instalar Niri no Debian 13

Olá, pessoal! Atendendo a uma solicitação de um membro da comunidade (@liviaaa), decidi criar este guia explicando o meu processo de instalação do Niri no Debian 13 (Trixie).
Neste post, vou cobrir os requisitos para a compilação e instalação tanto do Niri (Wayland Compositor) quanto do utilitário xwayland-satellite. O objetivo é criar um ambiente leve e mínimo, para que possa ser personalizado à gosto de qualquer pessoa.

Nota sobre o ambiente base: Quando faço a instalação de qualquer WM no Debian, começo com uma instalação sem qualquer Desktop Environment. Este guia leva em consideração esse cenário, mas sinta-se à vontade para adaptar conforme sua necessidade.

1. Preparação do Ambiente: Podman e Distrobox

Eu pessoalmente prefiro compilar pacotes dentro de containers. Para isso, utilizo podman com distrobox. Acredito que isso mantém o ambiente mais organizado e evita poluir o diretório /home do usuário.

No seu terminal, execute:

sudo apt install podman distrobox
# Reinicie o sistema para aplicar as permissões de grupo, se necessário
sudo reboot

Após reiniciar, vamos criar o diretório de desenvolvimento e o container com o Debian Trixie:

mkdir ~/Devel && cd ~/Devel
distrobox create -i debian:trixie -n trixie-dev --home ~/Distrobox/trixie-dev/
distrobox enter trixie-dev

A partir de agora, estamos no nosso ambiente isolado para iniciar a preparação.

2. Instalação de Dependências e Rust

Dentro do container trixie-dev , vamos instalar as ferramentas essenciais de compilação e as bibliotecas necessárias:

sudo apt install build-essential clang rustup libwayland-dev libgbm-dev pkg-config \
libinput-dev libseat-dev libudev-dev libxkbcommon-dev libpango1.0-dev \
libdisplay-info-dev libpipewire-0.3-dev libsystemd-dev libxcb-cursor-dev \
git nano

Em seguida, configuramos o compilador Rust (rustc ) e o gerenciador de pacotes (cargo ) para o padrão estável , e instalamos o cargo-deb para criar pacotes Debian automaticamente:

rustup default stable
cargo install cargo-deb

Obs: É uma boa prática no Debian compilar binários em .deb, isso os deixa facilmente gerenciáveis via apt para remoção futura caso seja necessário. Essas e outras práticas estão descritas em Não quebre o Debian.

3. Compilando o Niri

Vamos baixar o código fonte da última versão estável:

VERSION="v25.11"
wget "https://github.com/niri-wm/niri/archive/refs/tags/${VERSION}.tar.gz" -O niri_${VERSION#v}.orig.tar.gz
tar -xvf niri_25.11.orig.tar.gz && cd niri-25.11/

Editando o Cargo.toml

Precisamos editar o manifesto do projeto para configurar as dependências do pacote .deb.
Para uma edição simples vamos usar o nano: nano Cargo.toml.
Navegue até a última linha e procure pela seção [package.metadata.deb]. Na parte de dependências (depends ), apague o conteúdo existente e coloque "$auto".

Por que fazer isso? Isso garante que o cargo-deb detecte automaticamente as bibliotecas compartilhadas necessárias.

O arquivo deve ficar assim no final:

[package.metadata.deb]
depends = "$auto" 
assets = [
    ["target/release/niri", "usr/bin/", "755"],
    ["resources/niri-session", "usr/bin/", "755"],
    ["resources/niri.desktop", "/usr/share/wayland-sessions/", "644"],
    ["resources/niri-portals.conf", "/usr/share/xdg-desktop-portal/", "644"],
    ["resources/niri.service", "/usr/lib/systemd/user/", "644"],
    ["resources/niri-shutdown.target", "/usr/lib/systemd/user/", "644"],
]

Agora, compilamos o pacote:
cargo deb -- --locked

4. Instalando o Niri e Essenciais

Após a compilação, instale o pacote gerado no sistema host (ajuste o caminho se necessário):

exit
sudo apt install ~/Devel/niri-25.11/target/debian/niri_25.11.0-1_amd64.deb

Aproveite para instalar pacotes essenciais para o sistema (áudio, fontes, drivers mesa, waybar, etc.):

sudo apt install fuzzel waybar alacritty fonts-noto fonts-noto-cjk fonts-noto-extra \
fonts-noto-cjk-extra fonts-noto-color-emoji fonts-jetbrains-mono fonts-font-awesome \
pipewire pipewire-alsa pipewire-jack pavucontrol xdg-desktop-portal \
xdg-desktop-portal-gtk libglx-mesa0 libegl-mesa0 libgbm1 mesa-vulkan-drivers \
mesa-va-drivers mesa-vdpau-drivers libegl1 swaylock swaybg swayidle

# Recomendado para melhor integração
sudo apt install --no-install-recommends xdg-desktop-portal-gnome

Obs: Fuzzel e Alacritty são pacotes padrões usados pela configuração do Niri, mas é possível fazer a substituição por outros, caso queira.

5. Compilando o Xwayland-Satellite

O xwayland-satellite é a forma como o Niri lida com aplicações que ainda rodam em X11/Xwayland. Vamos prepará-lo:

cd ~/Devel
VERSION="v0.8"
wget "https://github.com/Supreeeme/xwayland-satellite/archive/refs/tags/${VERSION}.tar.gz" -O xwayland-satellite_${VERSION#v}.orig.tar.gz
tar -xvf xwayland-satellite-0.8.tar.gz && cd xwayland-satellite-0.8/
nano Cargo.toml

Faremos uma edição similar à do Niri, mas adicionando xwayland explicitamente nas dependências. A seção deve ficar assim:

[package.metadata.deb]
depends = "$auto, xwayland"
assets = [
    ["target/release/xwayland-satellite", "usr/bin/", "755"],
    ["resources/xwayland-satellite.service", "/usr/lib/systemd/user/", "644"],
]

Compile com suporte ao SystemD (importante para o Debian):
cargo deb -- -F systemd --locked

6. Configuração Final (Display Manager e Polkit)

Para manter o minimalismo, utilizo o tuigreet como Display Manager e o mate-polkit (necessário para controlar privilégios em todo o sistema):
sudo apt install mate-polkit tuigreet greetd

Configurando o Greetd

Edite o arquivo de configuração:
sudo nano /etc/greetd/config.toml

Altere a linha command para:
command = "tuigreet --remember --cmd niri-session"

E para o polkit, vamos adicionar o comando de inicialização (preferencialmente próximo aos outros spawn-at-startup) no arquivo de configurações do Niri em ~/.config/niri/config.kdl, usando nano mais uma vez:
spawn-at-startup "/usr/libexec/polkit-mate-authentication-agent-1"

Dica: Eu também gosto de descomentar a opção prefer-no-csd para evitar barras de título nos programas. Sinta-se a vontade para realizar outras personalizações.

Conclusão e Sugestões

Voilà! Basta reiniciar e você terá um ambiente Niri rodando no Debian, totalmente limpo e pronto para configurar.

Para quem busca inspiração, aqui estão algumas sugestões de aplicativos focados em terminal e uso via teclado que compõem meu workflow:

  • Terminal: Kitty
  • Gerenciador de arquivos: ranger (com udiskie para montar dispositivos)
  • Notificações: mako-notifier (com libnotify-bin)
  • Editor de texto: vim
  • Monitoramento: btop
  • Multimídia: mpv (vídeo) e imv (imagens)
  • PDF: zathura (com zathura-pdf-poppler)
  • Clipboard: cliphist
  • Utilidades: qalculate-gtk (calculadora), gammastep (luz noturna), firewalld (firewall).

Espero que o guia sirva para desmistificar e ajuda no processo daqueles que querem testar este belo Wayland Compositor em sistemas Debian e derivados.

7 curtidas

Obrigada pelo tutorial, vou conferir com as minhas anotações e ver o que eu estava fazendo de errado (provavelmente dependencias faltando) e testar no fim de semana.

1 curtida