Pixiv - Ashima
363 字
2 分钟
配置Niri自动切换显示配置
前言
寒假回家后由于家里有两台显示器,刷新率又不同
- 学校使用 1 * 15.6英寸显示器/260Hz/2K
- 在家使用 2 * 27英寸显示器/240Hz/2K
于是需要两个不同的显示配置,希望能自动切换
思路
- 在 niri 启动项加入一个检查脚本 或 使用 systemd 配置脚本和niri一起启动
- 脚本中调用niri IPC检测显示器数量:
niri msg outputs中有无多出的DP-3输出 - 如果有并且和当前的配置文件不一致,则重新链接
操作
准备好需要切换的配置文件,我有两份
- ~/.config/niri/config-home.kdl
- ~/.config/niri/config-dorm.kdl
创建一个脚本并chmod +x niri-config.sh
#!/usr/bin/env bash
TARGET="$HOME/.config/niri/config.kdl"CONFIG="$HOME/.config/niri/config-home.kdl"
# 通过检测是否有DP-3输出判断环境if niri msg outputs | grep -q "DP-3"; then # home CONFIG="$HOME/.config/niri/config-home.kdl"else # dorm CONFIG="$HOME/.config/niri/config-dorm.kdl"fi
# 只有在需要时才替换if [ ! -L "$TARGET" ] || [ "$(readlink "$TARGET")" != "$CONFIG" ]; then echo "配置文件已加载 $CONFIG" ln -sf "$CONFIG" "$TARGET"else echo "目标文件与源文件相同,无需替换"fi自动配置(方式一)
在config-home.kdl和config-dorm.kdl中添加启动项spawn-at-startup "~/.config/niri/bin/niri-config.sh"
自动配置(方式二)
使用systemd配置脚本作为niri.service的一部分
# custom
[Unit]Description=Automatically switch niri configPartOf=graphical-session.targetAfter=graphical-session.targetConditionPathExists=%h/.config/niri
[Service]Type=oneshotExecStart=%h/.config/niri/bin/niri-config.sh
[Install]WantedBy=niri.service启用对应服务
systemctl --user enable --now niri-config.serviceTip
使用自动配置方式一: 第一次必须手动直接运行脚本 或 手动链接一次ln -sf config-home.kdl config.kdl
文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!
最后更新于 2026-03-13,距今已过 40 天
部分内容可能已过时