跳转至内容

Niri

来自 ArchWiki

Niri 是一款可滚动的平铺式 Wayland 合成器。与 SwayHyprland 不同,Niri 将窗口排列在一个无限的水平桌面中,您可以向左或向右滚动(尽管也可以实现更高级的布局)。它类似于 GNOME 的 PaperWM 和 KDE 的 Karousel。

安装

Niri 可以通过 niri 包进行安装。此外,为了获得更好的体验,您可能需要安装

启动

Niri 提供了一个可以被显示管理器加载的桌面入口;选择它将运行 niri-session,它负责将环境变量导出到systemd

此外,您可以通过执行以下命令从 getty 启动 Niri:

niri-session

这可以与自动登录配对,以获得无缝的启动体验。

配置

Niri 从 ~/.config/niri/config.kdl 读取配置。这是一个 KDL 文件,按节划分。首次运行时创建的默认配置记录了带注释的默认选项。但是,更新引入的选项将不会在用户的配置中记录;您可以在Niri 的官方文档中查看。

Niri 在保存配置后会自动应用。无效配置的实时重新加载不会使 Niri 崩溃;相反,会保留最后的工作状态,并通知用户配置错误。niri validate 可以在 Niri 会话之外调用以验证配置。

键盘映射

要配置键盘布局,请编辑 input/keyboard/xkb 部分。

例如,如果您想拥有一个“US Int Alt Gr”布局,并将 CapsLock 用作 Ctrl

~/.config/niri/config.kdl
input {
    keyboard {
        xkb {
            layout "us"
            variant "altgr-intl"
            options "ctrl:nocaps"
        }
    }
    ...
}

输出

首先运行 niri msg outputs 以获取 Niri 识别的输出的概览。然后您可以将配置应用于每个显示器。例如,要将 HDMI 显示器设置为 2560x1440 60Hz 并进行 1.2 倍缩放,并关闭笔记本电脑显示器,请进行以下设置:

~/.config/niri/config.kdl
output "HDMI-A-1" {
    mode "2560x1440@60.000"
    scale 1.2
}

output "eDP-1" {
    off
}

使用 kanshi 进行动态布局

或者,您可以使用 kanshi 设置动态布局,例如,当您连接到外部显示器时关闭内部笔记本电脑屏幕。

绑定

binds 部分允许设置对 Niri 有效的各种组合键。许多绑定已在首次启动时生成的默认配置中设置。这些都可以重新映射。

请注意,Niri 加载任何默认绑定。如果配置中未指定绑定,则该绑定将无效。“默认值”只是自动生成的配置中存在的绑定。因此,在删除绑定时请小心。建议而是注释掉未使用的绑定。

绑定使用修饰键后跟一个 + 号,然后在括号中指定操作来定义。特殊操作 spawn 将启动一个程序。例如,您会发现以下绑定分别在 Mod+TMod+D 上启动 alacrittyfuzzelMod 通常是 Super 键(如果独立运行),但如果是运行在另一个合成器中,则为 Alt 键。

~/.config/niri/config.kdl
binds {
    ...
    Mod+T { spawn "alacritty"; }
    Mod+D { spawn "fuzzel"; }
    ...
}

请注意,spawn 启动的进程的所有以空格分隔的参数都必须用引号括起来

~/.config/niri/config.kdl
binds {
    ...
    Mod+Ctrl+semicolon {
        spawn "swaylock" "-c" "121212" "-e" "-f" "-F"
    }
    ...
}

类似 WASD 的导航

可以配置 Niri 工作区和绑定,使得在窗口之间跳转遵循类似于游戏中 WASD 的导航。

~/.config/niri/config.kdl
binds {
    ...
    Mod+A { focus-column-left; }
    Mod+S { focus-window-or-workspace-down; }
    Mod+W { focus-window-or-workspace-up; }
    Mod+D { focus-column-right; }
    ...
}

请注意,此配置可能还需要重新映射其他绑定。此外,有些人可能更喜欢将 WASD 导航放在右侧,或者使用更类似 Vim 的导航。

自启动

Niri 允许一些程序与 Niri 一起启动。例如,前面提到的某些程序,如 makowaybarswayidle/swaylock 可以被配置

~/.config/niri/config.kdl
spawn-at-startup "mako"
spawn-at-startup "waybar"
spawn-at-startup "swayidle" "-w" "timeout" "601" "niri msg action power-off-monitors" "timeout" "600" "swaylock -f" "before-sleep" "swaylock -f"

请注意,这些进程与 Niri 会话绑定,当 Niri 退出暂停时,它们也会被终止。要使进程持久化,您可以提供 "&" 参数将其设置为后台任务。

XWayland

Niri 不提供 XWayland 支持来运行 X11 应用程序。相反,它建议使用外部工具:xwayland-satellite 列在可选依赖项中。安装后无需额外配置。

参见