Niri桌面在ArchLinux上的使用

封面
(封面图源Niri@Github)

TL;DR

在用了KDE和Gnome后,感觉有点索然无味了。KDE确实好看,但太重了;Gnome的平铺动态多工作区模式确实效率高,但果味十足可自定义性没KDE强。那怎么办呢,不如来看看niri吧!这是一个用RUST写的桌面合成器,我配好桌面+附加组建后开机空载就只吃1.3G内存!老机狂喜!

Rust Meme

当然,它是个桌面合成器而已,仅此而已,所以你还需要自己安装状态栏、锁屏界面、通知栏等一系列工具。

安装基础软件包

这是niri桌面和依赖的一些组建。

1
sudo pacman -S --needed niri alacritty fuzzel swaylock swayidle waybar swaybg xwayland-satellite swaync

alacritty: 终端命令行。
fuzzel: 相当于krunner,是个应用程序启动器。
swaylock: 锁屏界面。
swayidle: 负责处理超时自动休眠。
waybar: 系统顶部的状态栏。
swaybg: 壁纸组件。
xwayland-satellite: 用于兼容运行旧式X11软件。
swaync: 通知栏组件。

安装字体

1
2
3
4
5
6
7
8
9
10
11
sudo pacman -S  noto-fonts-emoji  otf-font-awesome

# 搜索可用的 CaskaydiaCove 相关包,这是waybar配置文件中的首选字体
paru -Ss caskaydia
paru -Ss cascadia
paru -S ttf-cascadia-code-nerd

sudo pacman -S ttf-fira-code

# 更新字体缓存
fc-cache -fv

添加swaybg作为服务运行

1
2
systemctl --user add-wants niri.service waybar.service
systemctl --user add-wants niri.service swaybg.service

添加配置文件

我的仓库克隆下来,运行deploy.sh即可。

⚠️注
如您使用的是我的配置文件,均包含后文所述修改和问题的解决方案,并且自动化部署脚本deploy.sh都会帮你去做好,您只需手动安装对应的软件包即可。

鼠标指针

修改deploy.shTHEME_CURSORTHEME_CURSOR_SIZE两个变量的值,第一个设置成你的主题名,第二个设置成大小(默认是24),改完运行deploy.sh可动态应用指针修改。如果有些软件(如vscode)没能更改过来,把软件关了重启即可。

主题名可在~/.icons里找到,这里面每个文件夹名都是主题名。主题可以在KDE设置里直接下载,或者用浏览器下载好了解压进去。

状态栏

我采用的是waybar,配置文件见dotconfig/waybar/config.jsoncdotconfig/waybar/style.css。我是基于woioeow/hyprland-dotfiles GitHub仓库二改的,所以和他的样子大差不差,但也有些不同。做了修改后记得运行deploy.sh更新配置。
详细配置教程可看官方文档

配置文件结构

前面三个节点"modules-left""modules-center""modules-right"用于声明左中右三个方位的内容,后面就是对每个节点的详细配置。

状态栏天气

你需要添加dotconfig/waybar/weather.sh这个脚本,保证脚本最后返回值是你的天气内容。比如广州 晴 11.4-5.14°C,它会显示在屏幕右上角通知和时间图标的中间。默认触发查询间隔是1小时,你可以修改dotconfig/waybar/config.jsonc进行修改,位于"custom/weather"节点。

蓝牙控制

我采用的是bluetoothctl进行命令管理操作,使用blueman作为界面前端,你需要保证安装了这两个包。

1
sudo pacman -S bluez-utils blueman

ZRAMSWAP监控

我的电脑配置了ZRAMSWAP,想要在状态栏监视其用量状态。
dotconfig/waybar/config.jsonc里添加节点"custom/zramswap"即可。

系统壁纸和锁屏配置

系统壁纸

分为桌面壁纸和锁屏壁纸,默认壁纸位置是:
桌面壁纸(或者修改我的配置文件仓库里dotfiles/systemd/user/swaybg.service,然后重新运行deploy.sh即可刷新):

1
~/Pictures/wallpaper/wallpaper_desktop.png

锁屏壁纸(或者修改我的配置文件仓库里dotconfig/swaylock/config,然后重新运行deploy.sh即可刷新):

1
~/Pictures/wallpaper/wallpaper_lock.png

锁屏配置

锁屏界面采用的是swaylock,详细可看官方文档

修改我的配置文件仓库里dotconfig/swaylock/config,然后重新运行deploy.sh即可刷新

通知栏

采用的是swaync,可高度自定义主题界面。我的配置文件位于dotconfig/swaync/config.jsondotconfig/swaync/style.css
其实你可以去下载大家分享的主题,详见swaync的这个issues

Dolphin相关问题

没法选择文件打开方式怎么办?

安装archlinux-xdg-menu然后在终端运行

1
XDG_MENU_PREFIX=arch- kbuildsycoca6

即可。

没法弹出挂载授权认证界面怎么办?

config.kdl中添加如下语句:

1
2
// 开机启动KDE polkit防止dolphin挂载磁盘的弹窗弹不出来
spawn-sh-at-startup "/usr/lib/polkit-kde-authentication-agent-1 &"

剪贴板历史记录怎么办

我使用的vicinae来解决这个问题,并绑定了Super+X这个快捷键(不像KDEWindowsSuper+V是因为这个键默认绑到了切换浮窗上,虽然你可以去配置文件里改绑,但我不太想动这些默认的习惯设置)。
安装vicinae

1
paru -S vicinae-bin

添加到~/.config/niri/config.kdl

1
2
// vicinae剪贴板历史记录
Super+X { spawn-sh "vicinae toggle"; }

如果你坚持修改默认的习惯设置,在~/.config/niri/config.kdl里找到这行,然后修改即可。将大括号里的像上面的一样换成spawn-sh "vicinae toggle";即可:

1
2
// Move the focused window between the floating and the tiling layout.
Mod+V { toggle-window-floating; }

微信右键消息没法弹出菜单、表情等小弹窗乱飞怎么办

gamescope,具体可参考这个WiKi。它需要你安装好了mesa驱动组建,具体可以看这个WiKi
总的来说,你只需要安装这三个包就行(对于像我一样的Intel核显机器):

1
sudo pacman -S gamescope mesa vulkan-intel

然后用gamescope运行你的应用程序your_progrom即可。就像这样:

1
2
3
4
# 直接运行
gamescope -- your_progrom
# 使用特定分辨率和帧率运行
gamescope -W 1920 -H 1080 -r 60 -- your_program

如果你的软件和wayland有兼容性问题,给gamescope添加这个参数:

1
--expose-wayland

这时,你只需要去修改微信的启动脚本,在前面添加gamescope即可

引用的文档和页面

Niri GitHub 仓库


kznleaf - 无限平铺窗口管理器——niri在 ArchLinux 上的安装与配置
woioeow/hyprland-dotfiles GitHub仓库
Archlinux Forums - How to set up Polkit to allow Dolphin to mount different Partitions?
ArchWiki - polkit
ArchWiki - XDG MIME Applications
Swaylock GitHub 仓库
Swaylock 参数解释 GitHub 仓库


Niri桌面在ArchLinux上的使用
http://blog.coolenoch.ink/2025/10/13/Linux/26-Niri桌面在ArchLinux上的使用-251013/
作者
CoolestEnoch
发布于
2025年10月13日
许可协议