Arch Linux上配置Niri:基础篇
Arch Linux上配置Niri:基础篇
Tinsiag Zhu阅读提示
本文默认 Niri 主配置文件为:
~/.config/niri/config.kdl文中使用 Vim 编辑配置文件,你也可以换成 Nano、Neovim 或其他编辑器。
安装软件包时,请按软件包名称选择提供者。例如 JACK 兼容层选择
pipewire-jack,字体选择noto-fonts。部分 AUR 软件包或配置项可能随时间变化,请以软件包页面及 Niri 官方文档为准。
0. 创建普通用户并配置 sudo
请避免直接使用 root 账户完成日常桌面环境配置。
创建用户并加入 wheel 用户组:
useradd -m -G wheel -s /bin/bash tinsiag
passwd tinsiag
安装 sudo:
pacman -S sudo
编辑 sudoers 文件:
EDITOR=vim visudo
找到以下内容并删除前面的 #:
%wheel ALL=(ALL:ALL) ALL
保存后退出,重新登录普通用户账户。
1. 可选:安装 Fish Shell
安装 Fish:
sudo pacman -S fish
临时进入 Fish:
fish
如果希望 Kitty 打开时直接进入 Fish,可在 Niri 快捷键中使用:
Mod+T hotkey-overlay-title="打开终端:Kitty + Fish" {
spawn "kitty" "-e" "fish";
}
也可以使用 Shell 命令:
Mod+T {
spawn-sh "kitty -e fish";
}
2. 安装 Niri 与基础组件
安装 Niri、终端、启动器、浏览器及常用字体:
sudo pacman -S niri xwayland-satellite xdg-desktop-portal-gnome fuzzel kitty firefox wqy-zenhei
各软件包的用途如下:
| 软件包 | 用途 |
|---|---|
niri |
Niri 平铺窗口管理器 |
xwayland-satellite |
为 X11/XWayland 应用提供兼容支持 |
xdg-desktop-portal-gnome |
文件选择、屏幕共享等桌面门户能力 |
fuzzel |
程序启动器 |
kitty |
终端模拟器 |
firefox |
浏览器 |
wqy-zenhei |
文泉驿正黑中文字体 |
安装时如出现提供者选择:
- JACK 兼容层请选择
pipewire-jack; - 字体提供者请选择
noto-fonts。
首次启动 Niri:
niri-session
如果使用 GDM、SDDM 等显示管理器,可在登录界面直接选择 Niri 会话。
3. 修改默认终端与基础快捷键
按下 Super+Shift+E 退出 Niri,然后编辑配置:
vim ~/.config/niri/config.kdl
搜索 alacritty,将默认终端绑定修改为 Kitty:
Mod+T hotkey-overlay-title="打开终端:Kitty" {
spawn "kitty";
}
常用快捷键如下:
| 快捷键 | 功能 |
|---|---|
Super+Shift+/ |
打开或关闭 Niri 快捷键说明 |
Super+T |
打开终端 |
Super+D |
打开 Fuzzel 启动器 |
Super+U / Super+I |
上下切换工作区 |
Super+Shift+E |
退出 Niri |
4. 配置显示器
先查看显示输出名称及支持的模式:
niri msg outputs
在 config.kdl 中添加显示器配置。请将接口名、分辨率、刷新率与缩放比例替换为自己的实际参数:
output "eDP-1" {
mode "2560x1440@165"
scale 1.33
position x=0 y=0
focus-at-startup
// 可选:启用可变刷新率
// variable-refresh-rate
// 可选:旋转屏幕
// transform "90"
}
外接显示器示例:
output "DP-2" {
mode "2560x1440@180"
scale 1
position x=1925 y=0
}
多显示器坐标使用缩放后的逻辑尺寸:
逻辑宽度 = 物理分辨率宽度 ÷ scale
逻辑高度 = 物理分辨率高度 ÷ scale
- 右侧显示器:修改
x; - 下方显示器:修改
y; - 左侧或上方显示器:使用负坐标;
- 不设置
position时,Niri 会自动排列显示器。
5. 关闭鼠标加速
在配置文件的 input 中找到或加入 mouse:
input {
mouse {
accel-profile "flat"
// 可选:鼠标速度,通常范围为 -1.0 至 1.0
// accel-speed -0.2
// 可选:滚轮速度
// scroll-factor horizontal=2.0 vertical=1.0
}
touchpad {
// 不需要自然滚动时,注释掉这一行
natural-scroll
}
}
accel-profile "flat" 可关闭系统默认的鼠标加速曲线。
6. 安装通知服务与 Polkit 权限代理
安装通知服务、通知命令和 Polkit 认证代理:
sudo pacman -S libnotify mako polkit-gnome
在 Niri 配置中加入:
spawn-at-startup "/usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1"
spawn-at-startup "mako"
无需重启 Niri,立即启动服务:
/usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 & disown
mako & disown
创建 Mako 配置文件:
mkdir -p ~/.config/mako
vim ~/.config/mako/config
写入以下内容:
default-timeout=8000
border-radius=8
重新加载 Mako:
makoctl reload
测试通知:
notify-send "Niri" "通知功能正常"
7. 设置中文界面
如果希望应用界面使用中文,但仍保持系统主语言为英文,可在 Niri 配置中加入:
environment {
LC_MESSAGES "zh_CN.UTF-8"
}
仅设置 LC_MESSAGES 可以让菜单、提示等界面使用中文,同时避免全局切换语言可能引发的输入法兼容问题。
若系统尚未生成中文 Locale,编辑:
sudo vim /etc/locale.gen
取消下面这一行的注释:
zh_CN.UTF-8 UTF-8
然后生成 Locale:
sudo locale-gen
退出并重新登录后生效。
如果只想让某个应用使用完整中文环境,可单独启动:
LANG=zh_CN.UTF-8 firefox
8. 添加 Arch Linux CN 软件源
仅当你需要安装 Arch Linux CN 中的软件包,例如
rime-ice-pinyin-git或 Yay 时,才需要执行本节操作。
编辑 Pacman 配置:
sudo vim /etc/pacman.conf
在文件末尾加入:
[archlinuxcn]
Server = https://mirrors.ustc.edu.cn/archlinuxcn/$arch
Server = https://mirrors.tuna.tsinghua.edu.cn/archlinuxcn/$arch
Server = https://mirrors.hit.edu.cn/archlinuxcn/$arch
Server = https://repo.huaweicloud.com/archlinuxcn/$arch
安装密钥环:
sudo pacman -Sy archlinuxcn-keyring
随后进行完整系统更新,避免部分升级:
sudo pacman -Syu
9. 安装 Fcitx5、RIME 与雾凇拼音
安装输入法框架、RIME 引擎及雾凇拼音:
sudo pacman -S fcitx5-im fcitx5-rime rime-ice-pinyin-git
在 Niri 的 environment 配置中补充:
environment {
LC_MESSAGES "zh_CN.UTF-8"
XMODIFIERS "@im=fcitx"
}
创建 RIME 配置目录:
mkdir -p ~/.local/share/fcitx5/rime
vim ~/.local/share/fcitx5/rime/default.custom.yaml
写入:
patch:
__include: rime_ice_suggestion:/
立即启动 Fcitx5:
fcitx5 -d
打开 Fcitx5 配置,添加 Rime(中州韵) 输入法。首次切换时需要等待部署完成。
将 Fcitx5 加入 Niri 自动启动:
spawn-at-startup "fcitx5"
如果 Fcitx5 导致部分 GTK 弹窗无法正常打开,可以添加一个临时开关:
Mod+F1 {
spawn-sh "pkill fcitx5 || fcitx5";
}
10. 配置 Nautilus 文件管理器
安装 Nautilus 及常用扩展:
sudo pacman -S ffmpegthumbnailer gvfs-smb nautilus-open-any-terminal file-roller gnome-keyring gst-plugins-base gst-plugins-good gst-libav
这些组件主要提供以下功能:
- 文件缩略图;
- SMB/NAS 网络共享访问;
- 右键在终端中打开;
- 压缩与解压;
- 密钥环与密码保存;
- 媒体信息预览。
如需让 Nautilus 的“在终端中打开”调用 Kitty,可创建兼容链接:
sudo ln -s /usr/bin/kitty /usr/bin/gnome-terminal
如果
/usr/bin/gnome-terminal已存在,请不要覆盖。此时建议通过nautilus-open-any-terminal自身的设置方式选择终端。
让 Kitty 默认使用 Fish:
mkdir -p ~/.config/kitty
vim ~/.config/kitty/kitty.conf
写入:
shell /usr/bin/fish
为 Nautilus 添加快捷键:
Mod+E {
spawn "nautilus";
}
11. 可选:使用 Thunar 与 GTK 文件选择器
如果更喜欢 Thunar,可以安装以下组件:
sudo pacman -S --needed xdg-desktop-portal-gtk thunar tumbler ffmpegthumbnailer poppler-glib gvfs-smb file-roller thunar-archive-plugin gnome-keyring
创建 Portal 配置目录:
mkdir -p ~/.config/xdg-desktop-portal
vim ~/.config/xdg-desktop-portal/niri-portals.conf
写入:
[preferred]
default=gnome;gtk;
org.freedesktop.impl.portal.FileChooser=gtk
12. 配置 Swaylock 锁屏
安装 Swaylock Effects:
sudo pacman -S swaylock-effects
创建配置文件:
mkdir -p ~/.config/swaylock
vim ~/.config/swaylock/config
写入:
screenshots
clock
indicator
indicator-radius=200
indicator-thickness=15
effect-blur=10x5
Niri 默认配置通常已经包含 Mod+Alt+L 的锁屏绑定。可在 config.kdl 中搜索 swaylock 确认。
13. 配置 Swayidle 自动锁屏、熄屏与休眠
安装 Swayidle:
sudo pacman -S swayidle
创建脚本目录和脚本文件:
mkdir -p ~/.config/niri/scripts
vim ~/.config/niri/scripts/swayidle.sh
写入:
#!/usr/bin/env bash
# 5 分钟锁屏,10 分钟关闭显示器,20 分钟挂起
exec swayidle -w \
timeout 300 'swaylock -f' \
timeout 600 'niri msg action power-off-monitors' \
resume 'niri msg action power-on-monitors' \
timeout 1200 'systemctl suspend'
赋予执行权限:
chmod +x ~/.config/niri/scripts/swayidle.sh
加入 Niri 自动启动:
spawn-at-startup "~/.config/niri/scripts/swayidle.sh"
立即运行:
bash ~/.config/niri/scripts/swayidle.sh & disown
14. 蓝牙与性能模式
蓝牙
安装蓝牙服务和终端管理工具:
sudo pacman -S --needed bluez bluetui
sudo systemctl enable --now bluetooth
如需图形化蓝牙管理工具,可额外安装并运行 blueberry。
性能模式
安装并启用电源配置服务:
sudo pacman -S power-profiles-daemon
sudo systemctl enable --now power-profiles-daemon
15. 安装 Clipse 剪贴板管理器
安装 Yay:
sudo pacman -S yay
安装剪贴板组件:
yay -S wl-clipboard clipse-git clipse-gui
立即开启剪贴板历史监听:
clipse --listen
在 Niri 中自动启动:
spawn-sh-at-startup "clipse --listen"
设置快捷键:
Mod+Alt+V {
spawn "clipse-gui";
}
查询窗口信息:
niri msg pick-window
选中 Clipse GUI 窗口后,根据返回的 app-id 或 title 添加浮动规则:
window-rule {
match app-id="clipse-gui"
open-floating true
}
16. 使用 Satty 编辑截图
安装 Satty:
sudo pacman -S satty
创建配置目录:
mkdir -p ~/.config/satty
vim ~/.config/satty/config.toml
写入:
[general]
copy-command = "wl-copy"
focus-toggles-toolbars = true
actions-on-right-click = ["save-to-clipboard"]
创建截图编辑脚本:
vim ~/.config/niri/scripts/edit-screenshot.sh
写入:
#!/usr/bin/env bash
# 记录截图前的剪贴板哈希
CLIPNOW=$(wl-paste | sha1sum)
# 打开 Niri 区域截图
niri msg action screenshot
# 等待剪贴板内容变化
while [ "$(wl-paste | sha1sum)" = "$CLIPNOW" ]; do
sleep .05
done
# 将新截图传给 Satty
wl-paste | satty -f -
赋予脚本执行权限:
chmod +x ~/.config/niri/scripts/edit-screenshot.sh
设置快捷键:
Mod+Shift+S {
spawn "~/.config/niri/scripts/edit-screenshot.sh";
}
Niri 原生截图的区域截图、全屏截图、窗口截图及保存路径,可在 config.kdl 中搜索 screenshot 和 screenshot-path。
17. 配置 PipeWire 音频服务
安装声卡相关固件:
sudo pacman -S --needed sof-firmware alsa-ucm-conf alsa-firmware
安装 PipeWire 及兼容层:
sudo pacman -S --needed pipewire wireplumber pipewire-pulse pipewire-alsa pipewire-jack
启用用户级服务:
systemctl --user enable --now pipewire pipewire-pulse wireplumber
安装图形化音量控制工具:
sudo pacman -S pavucontrol
18. 配置屏幕共享
在 Niri 启动项中同步会话环境并启动 GNOME Portal:
spawn-sh-at-startup "dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP=niri && /usr/lib/xdg-desktop-portal-gnome"
设置完成后,重启 Niri 或重新登录系统。
可以通过支持屏幕共享功能的浏览器、会议软件或录屏工具测试是否能够正常选择显示器或窗口。
19. 可选:安装 Flatpak 与软件商城
安装 Flatpak 和 Bazaar:
sudo pacman -S flatpak bazaar
如需使用上海交通大学的 Flathub 镜像,可执行:
sudo flatpak remote-modify flathub --url=https://mirror.sjtu.edu.cn/flathub
完成后建议重启系统。
20. 可选:Alt+Tab 窗口切换
新版 Niri 可能已经提供或改进原生窗口切换功能。配置前建议先检查当前默认配置与官方文档。
安装 Niriswitcher:
yay -S niriswitcher
立即启动:
niriswitcher & disown
加入自动启动和快捷键:
spawn-at-startup "niriswitcher"
Alt+Tab repeat=false {
spawn "niriswitcherctl" "show" "--window";
}
仅显示当前显示器上的窗口:
mkdir -p ~/.config/niriswitcher
vim ~/.config/niriswitcher/config.toml
写入:
current_output_only = true
21. 笔记本亮度调节
安装亮度控制工具:
sudo pacman -S brightnessctl
后续可结合 Niri 快捷键调用 brightnessctl 调节亮度。
22. 配置 Swww 与 Waypaper 壁纸
安装 Swww 和 Waypaper:
yay -S swww waypaper
在 Niri 中启动 Swww 守护进程,并绑定 Waypaper:
spawn-at-startup "swww-daemon"
Mod+Alt+W {
spawn "waypaper";
}
使用以下命令查询 Waypaper 窗口信息:
niri msg pick-window
然后添加浮动窗口规则:
window-rule {
match app-id="waypaper"
open-floating true
}
23. 安装 Waybar
安装 Waybar 和 Nerd Font:
sudo pacman -S waybar ttf-jetbrains-mono-nerd
如果默认配置中没有 Waybar 自动启动项,加入:
spawn-at-startup "waybar"
添加重启 Waybar 的快捷键,方便配置修改后重新加载:
Mod+F2 {
spawn-sh "pkill waybar || true && waybar";
}
立即启动 Waybar:
waybar & disown
可选安装蓝牙和网络托盘组件:
sudo pacman -S blueman network-manager-applet dnsmasq
加入自动启动:
spawn-at-startup "blueman-applet"
spawn-at-startup "nm-applet"
如果不需要图形化网络托盘,可直接在终端中运行:
nmtui
24. 可选:导入 Waybar 配置
这一部分依赖较多,且 AUR 包名可能发生变化。建议先创建系统快照,再逐项安装和测试。
安装相关依赖:
yay -S --needed waybar-cava-git cava grim slurp swappy wf-recorder hyprpicker waybar-niri-taskbar-git waybar-module-pacman-updates-git ddcutil-service blueberry wlogout
下载配置仓库:
git clone https://github.com/SHORiN-KiWATA/ShorinArchExperience-ArchlinuxGuide.git
在仓库中找到类似以下路径的 Waybar 配置目录:
dotfiles/.config/waybar-niri-LikeWin11
将其复制到:
~/.config/waybar
随后使用前文设置的快捷键重启 Waybar。
如果需要通过 DDC/CI 调节外接显示器亮度,还需要将当前用户加入 i2c 组:
sudo gpasswd -a "$USER" i2c
reboot
25. 可选:使用 Matugen 根据壁纸生成 Waybar 配色
安装 Matugen 并创建模板目录:
yay -S matugen
mkdir -p ~/.config/matugen/templates
将 colors.css 模板复制到:
~/.config/matugen/templates/colors.css
编辑 Matugen 配置:
vim ~/.config/matugen/config.toml
写入:
[config.wallpaper]
command = "swww"
[templates.waybar]
input_path = '~/.config/matugen/templates/colors.css'
output_path = '~/.config/waybar/colors.css'
编辑 Waypaper 配置:
vim ~/.config/waypaper/config.ini
设置壁纸切换后的执行命令:
post_command = matugen image $wallpaper
同时确认 Waybar 的 style.css 已导入生成的颜色文件:
@import "colors.css";
26. Niri 外观与交互微调
全局窗口规则示例:
window-rule {
geometry-corner-radius 8
clip-to-geometry true
opacity 0.99
draw-border-with-background false
}
其他常用配置项:
| 配置项 | 用途 |
|---|---|
focus-ring |
设置聚焦边框的粗细与颜色 |
prefer-no-csd |
请求应用隐藏客户端标题栏 |
focus-follows-mouse |
鼠标悬停时自动聚焦窗口 |
warp-mouse-to-focus |
切换焦点后将鼠标移动到目标窗口 |
gaps |
设置窗口间距 |
center-focused-column |
设置聚焦列居中策略 |
preset-column-widths |
设置窗口宽度切换预设 |
default-column-width |
设置新窗口默认宽度 |
安装 Breeze 光标主题:
sudo pacman -S breeze-cursors
在 Niri 配置中加入:
cursor {
xcursor-theme "breeze_cursors"
xcursor-size 30
hide-after-inactive-ms 15000
}
关键路径速查
| 内容 | 路径 |
|---|---|
| Niri 主配置 | ~/.config/niri/config.kdl |
| Niri 脚本 | ~/.config/niri/scripts/ |
| Mako 配置 | ~/.config/mako/config |
| Fcitx5 RIME 配置 | ~/.local/share/fcitx5/rime/ |
| Kitty 配置 | ~/.config/kitty/kitty.conf |
| XDG Portal 配置 | ~/.config/xdg-desktop-portal/niri-portals.conf |
| Swaylock 配置 | ~/.config/swaylock/config |
| Satty 配置 | ~/.config/satty/config.toml |
| Niriswitcher 配置 | ~/.config/niriswitcher/config.toml |
| Waybar 配置 | ~/.config/waybar/ |
| Matugen 配置 | ~/.config/matugen/ |
| Waypaper 配置 | ~/.config/waypaper/config.ini |


