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 viaaptpara 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-debdetecte 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:
FuzzeleAlacrittysã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-csdpara 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.
