Jump to content

Niri/zh: Difference between revisions

From Official NixOS Wiki
Ardenet (talk | contribs)
Created page with "=== 文件选择器无法正常工作 ==="
Tags: Mobile edit Mobile web edit
Ardenet (talk | contribs)
Created page with "=== Waybar 启动两次 ==="
Tags: Mobile edit Mobile web edit
Line 179: Line 179:
};|name=/etc/nixos/configuration.nix|lang=nix}}
};|name=/etc/nixos/configuration.nix|lang=nix}}


<div lang="en" dir="ltr" class="mw-content-ltr">
<span id="Waybar_launches_twice"></span>
=== Waybar launches twice ===
=== Waybar 启动两次 ===
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<div lang="en" dir="ltr" class="mw-content-ltr">

Revision as of 16:42, 31 May 2026

警告:显示标题“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 并继续执行其中一项操作。


配置

The configuration path for niri is $XDG_CONFIG_HOME/niri/config.kdl. Therefore Home Manager can be used for configuration:

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

You might want to start from the default configuration file described at here.

有关 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;

额外设置

As described in Example systemd Setup (niri wiki), you might want to set up some additional services including Swayidle, Swaylock, Waybar, Polkit and Secret Service as follows to complement the functionality of a regular window manager. Some of the these settings are also required to enable all the features of the default configuration file.

❄︎ /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 应用中无法正常工作

There is a general workaround to set NIXOS_OZONE_WL as described in Wayland#Electron_and_Chromium:

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

However, since niri does not support text-input-v1, sometimes enabling text-input-v3 by manually adding --wayland-text-input-version=3 flag is necessary for IME to work:

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

wrapProgram may be used to add the flag automatically:

❄︎ /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 应用无法正常工作

There is a optional dependency for niri which is highly recommended to install (you can read this article to learn more about this)

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

Or using Home Manager

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

After you installed xwayland-satellite niri will integrate it out of the box and all of your XWayland apps will function properly.

文件选择器无法正常工作

If you are using xdg-desktop-portal-gnome, it will attempt to use Nautilus as the file picker, which will fail if Nautilus is not installed.

To work around this problem, you can force usage of the gtk or kde portals for file picker instead:

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

Waybar 启动两次

When using a configuration option like programs.waybar.enable, waybar may launch twice on Niri. This is because the default Niri config file launches waybar on launch. Remove the spawn-at-startup "waybar" from the config file, or add waybar to your systems packages without using the home-manager option.

See Also