万物起源#
看到同学的 Arch+Niri 组合,哇好流畅好好玩好想要。那还说啥了,整一个玩玩。
简单开始#
1. 安装 Niri#
- Niri快速安装入门 - Niri 对于Ubuntu 25.10及以上,niri已经原生支持了,不需要额外过多配置,添加ppa源即可搭配DankMaterialShell安装,获得几近开箱即用的效果
sudo add-apt-repository ppa:avengemedia/danklinux
sudo add-apt-repository ppa:avengemedia/dms
sudo apt install niri dms
- DMS 源码:
/usr/share/quickshell/dms,DMS 二进制:/usr/bin/dms
2. 直接启动#
由于没有 nvidia 显卡作祟,这边可以直接启动 niri ,不会卡黑屏tty 注销并在 session 选择器中选择 niri 就可以打开了
开始这里会提示 warning 缺少一个电源相关的控制包,我这已经安装过了其他控制电源的软件,所以可以直接忽略
一些简要配置#
1. alacritty 配置#
安装时自动安装了一个 alacritty,采用 rust 语言编写
alacritty 0.16.1 原生支持关闭标题栏:[window] decorations,取值 Full / None / Transparent(macOS)/ Buttonless(macOS)。
新建了 ~/.config/alacritty/alacritty.toml:
# Alacritty 用户配置
# niri 不提供服务端装饰,默认 Full 时 alacritty 会自绘 CSD 标题栏/边框。
# 设为 None 即完全去掉标题栏和边框(移动/缩放交给 niri 的窗口操作键)。
[window]
decorations = "None"
# 启用 DMS 生成的 dank 主题
[general]
import = ["~/.config/alacritty/dank-theme.toml"]
顺带修好的问题:~/.config/alacritty/dank-theme.toml(DMS 用 matugen 生成的配色)原本没有被任何地方 import,运行时 import=[]、配色仍是默认 #181818。加入 import 后即生效。
移动/缩放说明:去掉 CSD 后不受影响,用 niri 的窗口操作键(Mod+左键拖移动、Mod+右键拖缩放)。
2. fcitx5 + rime 输入法#
- fcitx5 对 wayland 支持更好,所以选用fcitx,由于之前用过了 ibus 的 rime,所以这里先做备份+卸载处理
# 备份
tar -zcvf /destination/directory /need/to/tar/dir
# 卸载
sudo apt remove ibus
killall ibus-daemon # 确保进程终止
- 接下来安装新的 fcitx5
sudo apt install fcitx5 fcitx5-rime
# material design color 的皮肤,不是很好看后面再修吧先凑合
sudo apt install fcitx5-material-color
启用明月拼音简体,在 dms-settings 中直接关掉输入法切换快捷键,使用 fcitx5 内置的切换功能实现语言切换
输入法缺少一个跟随 niri 启动而启动的功能,在
~/.config/niri/config.kdl末尾添加一行
// fcitx5 auto start
spawn-at-startup "fcitx5" "-d"
- dms 默认对 fcitx5 写入了一个 material design 的主题
- 这里直接在 fcitx5 settings 中的 Addons -> Classic User Interface 直接修改 theme (dark theme) = dms 即可
- rime 输入法配置在
~/.local/share/fcitx5/rime/default.custom.yaml
- 修改一下候选词个数
# ~/.local/share/fcitx5/rime/default.custom.yaml
patch:
# 每页候选词个数
menu/page_size: 9
ascii_composer/switch_key/Shift_L: commit_code # rime 内按 Shift 切中/英
ascii_composer/switch_key/Shift_R: commit_code
schema_list:
- schema: luna_pinyin_simp
- schema: luna_pinyin
- 修改一下中英文切换的问题
# ~/.config/fcitx5/config
[Hotkey/TriggerKeys]
0=Super+space # 保留:Super+空格 切换输入法(rime ↔ 无输入法纯英文)
[Hotkey/AltTriggerKeys]
# 删掉了原来的 0=Shift_L —— 这就是「按 Shift 切到英文回不来」的元凶:
# fcitx5 把单独的 Shift 当成了全局切换键,和 rime 自己的 Shift 打架
[Hotkey/EnumerateGroupForwardKeys]
# 删掉了原来的 0=Super+space —— 它和 TriggerKeys 抢同一个键(且只有一个分组)
3. 一些琐碎的配置#
DMS 锁屏建立在 Quickshell 的
WlSessionLock(ext-session-lock-v1 协议) 之上,认证走 PAM,可以作为可用的锁屏界面,无需安装其他锁屏程序dms 默认锁屏配置是
swaylock但是并不会默认安装,所以这里需要手动修改一下快捷键里的配置
- 在 dms-settings 中找到
keyboard shortcut调整其中的super+alt+L功能改为 dms 选项下的Lockscreen即可
休眠分为插电和电池,属于两页,需要在顶部切换设置
他自动安装了一个轻量化启动器 fuzzle,我还是喜欢 dms 自带的启动器,统一风格,在 dms-settings UI 中修改即可
启动 niri 的时候系统会默认打开一个快捷键提示,看多了就会了不需要了
- 关闭启动提示是在
~/.config/niri/config.kdl配置文件中,找到hotkey-overlay将skip-at-startup前面的注释符号取消即可!Super+Shift+/快捷键仍可随时呼出
- 边框颜色一直是默认的蓝色,这里给他在
~/.config/niri/config.kdl的 DMS include 区末尾加了一行(第 645 行附近): 让边框颜色跟随主题色
include "dms/colors.kdl"
4. 好用的插件#
- 添加一个 emoji 搜索器 dms-emoji-launcher 🔗
- 在启动器中输入
:e开始搜索 emoji
dms plugins install emojiLauncher
- 电源tlp配套插件 tlpPowerProfile
5. 电源管理#
保持原有 tlp 电源管理软件不变,为 dms 安装插件以及配置插件
- 安装 Performance 档需要的 helper
sudo install -m 0755 \
~/.config/DankMaterialShell/plugins/tlpPowerProfile/helper/tlp-power-profile-helper \
/usr/local/bin/
不装的话,点 ⚡ 会报找不到命令。
- 配置 TLP,让 bat/ac 真正切 quiet/balanced
# sudo nano /etc/tlp.d/99-asus.conf
PLATFORM_PROFILE_ON_AC=balanced
PLATFORM_PROFILE_ON_BAT=quiet
CPU_ENERGY_PERF_POLICY_ON_AC=balance_performance
CPU_ENERGY_PERF_POLICY_ON_BAT=power
CPU_BOOST_ON_AC=1
CPU_BOOST_ON_BAT=0
START_CHARGE_THRESH_BAT0=0
STOP_CHARGE_THRESH_BAT0=80
sudo tlp start
- PLATFORM_PROFILE_ON_* 是给 tlp ac / tlp bat 用的,不配的话点按钮只会改 CPU EPP,不会改 ASUS 的 quiet/balanced。
- STOP_CHARGE_THRESH_BAT0=80 是充电上限;不想要就删掉这一行。
- ASUS 只支持 stop 阈值,start 会被忽略。
- 配置免密(不然每次点都弹密码)
你已经在 sudo 组里,直接用 polkit,不需要重新登录:
# sudo nano /etc/polkit-1/rules.d/49-tlp-power-profile.rules
polkit.addRule(function(action, subject) {
if (action.id !== "org.freedesktop.policykit.exec") return;
var p = action.lookup("program");
if ((p === "tlp" || p === "/usr/sbin/tlp" || p === "/usr/bin/tlp" ||
p === "tlp-power-profile-helper" || p === "/usr/local/bin/tlp-power-profile-helper") &&
subject.isInGroup("sudo")) {
return polkit.Result.YES;
}
});
测试一下,应该直接打印 TLP version 1.8.0,不弹密码:
pkexec tlp --version
不想免密的话,第 3 步可以跳过,只是每次点击要输密码。
备选:不想用 polkit,就在 /etc/sudoers.d/ 里给 %sudo 加 /usr/sbin/tlp 和 /usr/local/bin/tlp-power-profile-helper 的 NOPASSWD,然后把插件设置里的 Privilege mode 改成 sudo -n。
- 开始用
在 DankBar 上点电池 widget: 即可在此处切换不同电源状态
点任意一个后,TLP 进入 manual mode 手动模式,之后插拔电源不会再自动改,直到重启或你执行 sudo tlp start。
- 验证
cat /sys/firmware/acpi/platform_profile
tlp-stat -s | grep -E 'Mode|Power source'
- 点 🍃 后:quiet,Mode = BAT (manual)
- 点 ⚖️ 后:balanced,Mode = AC (manual)
- 点 ⚡ 后:performance
- 想回自动:sudo tlp start(会清掉 manual)
[!TIP]
- 充电阈值滑块可以拖,但 ASUS 只认 stop;start 无效。持久上限就是上面 TLP 配置里的 80。
- 插件显示的档位图标 = 你上次点的档位,手动模式下是准确的。
- 如果 ⚡ 还是失败,检查 /usr/local/bin/tlp-power-profile-helper 是否存在且可执行。
