Skip to content

niri guide usage

ES edited this page Jul 16, 2026 · 1 revision

Niri 使用指南

Niri 是可滚动平铺的 Wayland 合成器。窗口沿水平方向组成无限条带,每一列可以放一个或多个窗口;新窗口不会强制缩小已有窗口,而是扩展到右侧,通过水平移动浏览

本文记录当前 dotfiles 的真实使用方式。Mod 表示 Super,也就是 Windows 键

5 分钟上手

快捷键 功能
Mod-t 打开 Kitty
Mod-d 打开 fuzzel 应用启动器
Mod-e 打开 Dolphin
Mod-Tab 打开或关闭 Overview
Alt-Tab / Alt-Shift-Tab 切换当前工作区的最近窗口
Mod-q 关闭窗口
Mod-Alt-l 锁屏
Alt-v 打开剪贴板历史

登录时配置会自动启动 Ghostty 和 Firefox;Mod-t 启动的是 Kitty,两者不是同一个默认终端概念

焦点与窗口移动

快捷键 功能
Mod-h/j/k/l 向左、下、上、右移动焦点
Mod-Ctrl-h/j/k/l 向对应方向移动列或窗口
Mod-Home / Mod-End 聚焦第一列或最后一列
Mod-Ctrl-Home / Mod-Ctrl-End 把当前列移动到最前或最后

Niri 的水平单位是“列”,垂直单位是列中的“窗口”。因此 h/l 操作列,j/k 操作同列窗口或相邻工作区

列、窗口大小与布局

快捷键 功能
Mod-Left/Right 列宽减少或增加 10%
Mod-Up/Down 窗高增加或减少 10%
Mod-r / Mod-Shift-r 正向或反向切换列宽预设
Mod-Ctrl-Shift-r 切换窗口高度预设
Mod-Ctrl-r 重置窗口高度
Mod-f 最大化当前列
Mod-Shift-f 当前窗口全屏
Mod-m 窗口扩展到屏幕边缘
Mod-Ctrl-f 当前列扩展到可用宽度
Mod-c 居中当前列
Mod-Ctrl-c 居中所有可见列
Mod-v 切换窗口浮动状态
Mod-Shift-v 在浮动层和平铺层之间切换焦点

当前默认列宽为屏幕的 1/2,预设为 1/31/22/3。窗口间距为 0,使用 2px 边框、圆角和阴影

把窗口吸入或移出列

快捷键 功能
Mod-[ 向左侧列吸入或移出窗口,处于最左列时自动反向
Mod-] 向右侧操作;多窗口列时优先把窗口移出

这两个快捷键调用本地脚本并依赖 niri msg -jjq。脚本当前写死 /home/dev/.config/niri,复制配置到其他用户名时需要修改路径

工作区

快捷键 功能
Mod-u/i 切换到下一个或上一个工作区
Mod-Ctrl-u/i 把当前列移动到下一个或上一个工作区
Mod-Shift-u/i 向下或向上重排当前工作区
Mod-滚轮上下 切换工作区
Mod-Ctrl-滚轮上下 把当前列移动到相邻工作区
Mod-Shift-滚轮上下 水平切换列

Page Up/Page Down 也提供对应操作

多显示器

快捷键 功能
Mod-Shift-h/j/k/l 聚焦对应方向的显示器
Mod-Ctrl-Shift-h/j/k/l 把当前列移动到对应显示器

单显示器无需写 output 配置。查看真实输出名称和参数:

niri msg outputs

~/.config/niri/output.kdl 当前只有被禁用的示例,不能将其中的分辨率视为实际配置

截图

快捷键 功能
F1 打开 mark-shot 截图与标注
Ctrl-Print 截取整个屏幕
Alt-Print 截取当前窗口

Waybar 的截图按钮会打开 Niri 内置区域截图。Niri 内置截图保存到 ~/Pictures/Screenshots/

mark-shot 的标注界面中可按 F3 贴图;OCR 需要额外安装 rapidocr 和 onnxruntime

音量、亮度与媒体

键盘的音量、麦克风、播放、上一首、下一首和亮度键均已配置,并允许在锁屏状态下使用。音量与亮度优先通过 swayosd 显示 OSD,失败时回退到 wpctl 或 brightnessctl

Waybar 菜单

  • 网络左键:打开 fuzzel 网络菜单,可开关 Wi-Fi、扫描、连接已保存或新网络
  • 网络右键:直接切换 Wi-Fi
  • 电源左键:打开锁屏、退出、重启和关机菜单
  • 截图按钮:打开区域截图

网络和电源菜单目前没有 Niri 键盘快捷键,它们是 Waybar 入口

壁纸与动态配色

登录后会启动主桌面和 Overview 两个 awww daemon。壁纸脚本默认从 ~/Pictures 中随机选择图片,每 600 秒切换一次,并调用 matugen 生成 Niri、Waybar、Mako、fcitx5 和 fuzzel 等组件的配色

colors.kdl 是生成文件,不应手工维护。Overview 背景由 ImageMagick 生成模糊、压暗缓存

自动锁屏与息屏

  • 登录后立即启动 hyprlock
  • 空闲 15 分钟自动锁屏
  • 空闲 17 分钟强制关闭显示器
  • 已经锁屏时,再空闲 2 分钟关闭显示器
  • 休眠前锁屏
  • 解锁后重置 swayidle 计时器

注意“2 分钟关屏”只在已经锁屏时生效,并不是正常使用时 2 分钟就黑屏

桌面组件地图

Niri 只是合成器,不是完整桌面环境:

组件 职责
Waybar 状态栏、托盘和桌面菜单入口
Mako 通知守护进程
fuzzel 应用、网络和电源菜单
awww 壁纸与过渡动画
hyprlock 锁屏界面
swayidle 空闲、锁屏和关屏策略
wl-clipboard + cliphist Wayland 剪贴板与历史
Quickshell 剪贴板历史 UI
xwayland-satellite X11 应用兼容
swayosd 音量和亮度 OSD

配置与排错

配置入口为 ~/.config/niri/config.kdl,并拆分加载:

layout.kdl
blur.kdl
rules.kdl
animations.kdl
binds.kdl
output.kdl      # 可选
colors.kdl      # 可选、由 matugen 生成
nvidia.kdl      # 可选、由检测脚本生成

保存配置后 Niri 会热重载。修改前后可检查语法:

niri validate

常用 IPC:

niri msg windows
niri msg workspaces
niri msg outputs
niri msg action focus-column-left

常见问题:

  • 中文显示方块:用 fc-match -s 'sans-serif:lang=zh' 检查 CJK fallback,再运行 fc-cache -fv
  • 应用集体退出或无法启动但 Niri 仍存活:优先检查 systemd user session 与 D-Bus
  • 输入法候选窗被平铺:确认 fcitx window rule 仍匹配
  • 修改显示器参数无效:确认 output.kdl 中目标节点没有被 /- 禁用
  • consume 快捷键失效:检查脚本路径和 jq

完整 Arch 安装、Niri 生态原理、字体和故障记录保存在:

~/Documents/note/StudyNote/Linux/Arch/
~/Documents/note/StudyNote/Linux/Arch/Niri/

Clone this wiki locally