Jump to content

niri

From Official NixOS Wiki
Revision as of 16:19, 4 August 2026 by Ardenet (talk | contribs) (Created page with "在使用诸如 programs.waybar.enable 这样的配置选项时,waybar 在 Niri 上可能会启动两次。这是因为[$1 默认的 Niri 配置文件会在系统启动时自动启动 waybar]。请从该配置文件中移除 spawn-at-startup "waybar" 的设置,或者在不使用 home-manager 选项的情况下,将 waybar 添加到系统的软件包列表中。")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

警告:顯示標題「niri」覆蓋了之前的顯示標題「Niri」。

niri

Wayland compositor Application

100%
Initial release2023-11-26
Latest release26.04; 25 Apr 2026
StatusActive
Operating SystemLinux, FreeBSD
Language(s)Rust, GLSL
LicenseGNU General Public License v3.0 only
External links
GitHubniri-wm/niri
Bug trackerhttps://github.com/niri-wm/niri/issues
DocumentationOfficial wiki, niri-flake

Niri 是一個可滾動平鋪的 Wayland 合成器。

安裝

只需啟用 programs.niri

❄︎ /etc/nixos/configuration.nix
programs.niri.enable = true;
Note: 無需安裝自定義 flake(例如 niri-flake)即可啟用 Niri。儘管截至 2025 年,該存儲庫在搜尋引擎中的排名仍然靠前,但只有當您想要使用最新版本的 Niri 或想要用 Nix 語言編寫配置時,才需要 niri-flake


⚠︎
Warning: 如果沒有進行 配置附加設置,或者在全新安裝後,您可能由於缺少 Alacritty 和 fuzzel 等預期程序而無法啟動應用程式。請按 Super+Shift+E 退出 niri 並繼續執行其中一項操作。


配置

niri 的配置路徑為 $XDG_CONFIG_HOME/niri/config.kdl。因此,可以使用 Home Manager 進行配置:

❄︎ ~/.config/home-manager/home.nix
xdg.configFile."niri/config.kdl".source = ./config.kdl;

如果您希望在構建過程中對配置進行驗證,可以使用 pkgs.runCommand,用法如下:

❄︎ ~/.config/home-manager/home.nix
xdg.configFile."niri/config.kdl".source =
  pkgs.runCommand "niri-config-checked"
    {
      nativeBuildInputs = [ pkgs.niri ];
    }
    ''
      niri validate --config ${./config.kdl}
      cp ${./config.kdl} $out
    '';


您可能想從默認配置文件開始,如這裡所述。

有關 niri 的配置選項,請參閱 此 wiki

Greetd

您可以使用 greeted 配置啟動 niri:

❄︎ /etc/nixos/configuration.nix
programs.niri.enable = true;

services.greetd = {
  enable = true;
  settings = {
    default_session = {
      command = "${config.programs.niri.package}/bin/niri-session";
      user = "myuser";
    };
  };
};

# NixOS otherwise injects a stripped PATH via Environment= on the niri.service
# unit which shadows the imported user-manager PATH. Disabling the default
# lets niri inherit the full PATH set up by niri-session.
systemd.user.services.niri.enableDefaultPath = false;

額外設置

示例 systemd 設置 (niri wiki)中所述,您可能需要設置一些額外的服務,包括以下的 SwayidleSwaylockWaybarPolkitSecret Service,以補充常規窗口管理器的功能。其中一些設置也是啟用默認配置文件所有功能所必需的。

❄︎ /etc/nixos/configuration.nix
security.polkit.enable = true; # polkit
services.gnome.gnome-keyring.enable = true; # secret service
security.pam.services.swaylock = {};

programs.waybar.enable = true; # top bar
environment.systemPackages = with pkgs; [ alacritty fuzzel swaylock mako swayidle ];

或者使用 Home Manager

❄︎ ~/.config/home-manager/home.nix
programs.alacritty.enable = true; # Super+T in the default setting (terminal)
programs.fuzzel.enable = true; # Super+D in the default setting (app launcher)
programs.swaylock.enable = true; # Super+Alt+L in the default setting (screen locker)
programs.waybar.enable = true; # launch on startup in the default setting (bar)
services.mako.enable = true; # notification daemon
services.swayidle.enable = true; # idle management daemon
services.polkit-gnome.enable = true; # polkit
home.packages = with pkgs; [
  swaybg # wallpaper
];

故障排除

IME 在 Electron 應用中無法正常工作

有一種通用的解決方法,即按照Wayland#Electron_and_Chromium中的說明設置NIXOS_OZONE_WL

❄︎ /etc/nixos/configuration.nix
environment.sessionVariables.NIXOS_OZONE_WL = "1";

然而,由於 niri 不支持 text-input-v1,有時需要通過手動添加 --wayland-text-input-version=3 標誌來啟用 text-input-v3,IME 才能正常工作:

$ slack --wayland-text-input-version=3

wrapProgram 可用於自動添加該標誌:

❄︎ /etc/nixos/configuration.nix
environment.systemPackages = [
  (pkgs.symlinkJoin {
    pname = pkgs.vscode.pname;
    paths = [ pkgs.vscode ];
    buildInputs = [ pkgs.makeWrapper ];
    postBuild = "wrapProgram $out/bin/code --add-flags --wayland-text-input-version=3";
  };)
];

XWayland 應用無法正常工作

Niri 有一個可選依賴,強烈建議安裝(您可閱讀 這篇文章 以了解更多相關信息)。

❄︎ /etc/nixos/configuration.nix
environment.systemPackages = with pkgs; [ 
    xwayland-satellite # xwayland support
];

或者使用 Home Manager

❄︎ ~/.config/home-manager/home.nix
home.packages = with pkgs; [
  xwayland-satellite # xwayland support
];

安裝 xwayland-satellite 後,niri 將會將其無縫集成,您的所有 XWayland 應用都將正常運行。

文件選擇器無法正常工作

如果您正在使用 xdg-desktop-portal-gnome,它會嘗試將 Nautilus 用作文件選擇器,但如果未安裝 Nautilus,則會失敗。

為解決此問題,您可以改為強制使用 GTK 或 KDE 的文件選擇器門戶:

❄︎ /etc/nixos/configuration.nix
xdg.portal.config.niri = {
  "org.freedesktop.impl.portal.FileChooser" = [ "gtk" ]; # or "kde"
};

Waybar 啟動兩次

在使用諸如 programs.waybar.enable 這樣的配置選項時,waybar 在 Niri 上可能會啟動兩次。這是因為默認的 Niri 配置文件會在系統啟動時自動啟動 waybar。請從該配置文件中移除 spawn-at-startup "waybar" 的設置,或者在不使用 home-manager 選項的情況下,將 waybar 添加到系統的軟體包列表中。

另見