niri 和 Hyprland 配置(DMS)

适用读者:已在实体机上安装 niri 或 Hyprland 的读者。WSL 用户跳过此篇(WSL 没有独立的 Wayland 显示服务器)。


前言:窗口管理器 ≠ 桌面环境

安装完 niri 或 Hyprland 后,你会发现它们只是”窗口管理器”——负责排列、移动窗口。一个完整可用的桌面还需要:

  • 状态栏(显示时间、网络、音量、电量)
  • 应用启动器(搜索和打开应用)
  • 通知系统(消息弹窗)
  • 锁屏程序
  • 壁纸管理
  • 屏幕截图工具
  • 剪贴板管理

把这些一个个手动安装配置,需要几天时间。DMS(Dank Material Shell) 是一个一站式的桌面 Shell,设计目标就是让 niri 和 Hyprland 开箱即用,界面遵循 Material Design 3 风格,外观现代、功能完整。


一、DMS 简介

DMS 全称 DankMaterialShell,是基于 Quickshell(一个 QML 驱动的 Shell 框架)和 Go 构建的桌面 Shell。它能替代以下独立工具:

替代的工具 DMS 对应功能
Waybar TopBar 状态栏
Swaylock / Hyprlock 锁屏
Mako / Dunst 通知系统
Fuzzel / Rofi 应用启动器(Spotlight)
Swww / Swaybg 壁纸管理
cliphist 剪贴板历史
wl-clipboard Wayland 剪贴板工具

此外,DMS 还提供:

  • 基于壁纸自动生成配色方案(matugen 驱动)
  • CPU / RAM / GPU 监控(dgop 驱动)
  • 工作区切换、媒体播放控制、系统托盘等

二、前置条件确认

在安装 DMS 之前,请确认以下软件已经安装:

1
2
3
4
5
6
7
8
9
# 确认 niri 或 hyprland 已安装
which niri
which hyprland

# 确认 kitty 已安装(DMS 默认终端)
which kitty

# 确认 neovim 已安装
which nvim

如果缺少,回到第三篇用 yay 安装。


三、安装 DMS

方式 A:通过官方安装脚本(推荐)

DMS 提供了一个交互式安装脚本,会自动处理所有依赖:

1
curl -fsSL https://install.danklinux.com | sh

脚本会:

  1. 检测你的发行版(Arch Linux)
  2. 从官方源安装 dms-shell
  3. 从 AUR 编译安装 quickshellmatugendgop
  4. 引导你选择合成器(niri 或 Hyprland)

方式 B:手动安装

如果不信任脚本或网络受限,可以手动安装:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 安装 dms-shell(Arch 官方 extra 源,无需编译)
sudo pacman -S dms-shell

# 安装 niri 或 hyprland 的 DMS 集成包(二选一)
sudo pacman -S dms-shell-niri # niri 用户
sudo pacman -S dms-shell-hyprland # Hyprland 用户

# 安装 Quickshell(DMS 的核心 QML 框架,AUR)
yay -S quickshell

# 安装 matugen(壁纸自动配色,可选但推荐)
yay -S matugen

# 安装 dgop(系统资源监控,可选)
yay -S dgop

安装辅助工具

1
2
3
4
5
6
7
# 剪贴板管理
sudo pacman -S cliphist wl-clipboard

# 截图工具
sudo pacman -S grim slurp # niri 用户
# hyprland 用户可用 hyprshot:
yay -S hyprshot

四、运行 dms setup

DMS 安装完成后,运行配置向导。这个命令会自动修改你的合成器配置文件,加入 DMS 的快捷键和自启动项:

1
dms setup

setup 向导会询问你:

  1. 选择合成器:niri 或 Hyprland(根据你安装的选)
  2. 选择终端:Kitty(推荐)、Ghostty 或 Alacritty
  3. 是否备份现有配置:推荐选 Yes,setup 会在修改前备份原文件

setup 完成后,它实际做了什么?

  • ~/.config/niri/config.kdl(或 ~/.config/hypr/hyprland.conf)追加了 DMS 自启动配置和快捷键绑定
  • 创建了 ~/.config/dms/ 目录,放入 DMS 的用户配置文件
  • 设置了 DMS 作为状态栏、通知、锁屏的默认程序

五、niri 配置详解

niri 的配置文件格式是 KDL(Kubernetes Document Language 的变体,和 JSON/YAML 并列的配置语言),位于 ~/.config/niri/config.kdl

dms setup 之后,你的 config.kdl 会包含以下关键内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// 开机自启动 DMS Shell
spawn-at-startup "dms" "run"

// 快捷键(Super = Win 键)
binds {
Super+Return { spawn "kitty"; }
Super+Space { spawn "dms" "ipc" "call" "spotlight" "toggle"; } // 应用启动器
Super+L { spawn "dms" "ipc" "call" "lock"; } // 锁屏
Super+Q { close-window; }
// ... 更多快捷键由 dms setup 生成
}

// 输出配置(显示器)
output "eDP-1" {
scale 1.5 // HiDPI 缩放,根据你的屏幕调整
}

niri 的核心概念:滚动式工作区

niri 没有传统的”多桌面”概念,窗口排列在一条无限延伸的水平轴上。用鼠标滚轮或触摸板横向滑动来浏览。每个”列”可以有多个垂直排列的窗口。

常用快捷键:

  • Super + Enter:打开终端(kitty)
  • Super + Space:打开 DMS 应用启动器
  • Super + ←/→:切换焦点到左/右列
  • Super + Shift + ←/→:将当前窗口移动到左/右
  • Super + Q:关闭当前窗口
  • Super + F:切换全屏

六、Hyprland 配置详解

6.1 配置文件格式

Hyprland 0.55 之后默认使用 Lua 配置(~/.config/hypr/hyprland.lua),旧的 hyprlang 格式(hyprland.conf)仍然支持,但官方建议迁移到 Lua。

如果你安装的是 Hyprland 0.54 或更早版本,配置文件是 hyprland.conf,语法不同。

dms setup 会根据你的 Hyprland 版本选择合适的格式写入配置。

6.2 dms setup 写入的核心配置

以 Lua 格式(0.55+)为例,setup 后的关键内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
-- 环境变量:让所有应用使用 Wayland 原生渲染
hl.env("GDK_BACKEND", "wayland,x11")
hl.env("QT_QPA_PLATFORM", "wayland;xcb")
hl.env("CLUTTER_BACKEND", "wayland")
hl.env("SDL_VIDEODRIVER", "wayland")

-- 开机自启动 DMS
hl.on("hyprland.start", function()
hl.exec_cmd("dms run")
hl.exec_cmd("dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP")
end)

-- 快捷键
hl.bind("SUPER RETURN", function() hl.exec_cmd("kitty") end)
hl.bind("SUPER SPACE", function() hl.exec_cmd("dms ipc call spotlight toggle") end)
hl.bind("SUPER L", function() hl.exec_cmd("dms ipc call lock") end)
hl.bind("SUPER Q", function() hl.dispatch("killactive") end)

旧格式(0.54 及以下,hyprlang):

1
2
3
4
5
6
7
8
9
10
11
12
13
# 环境变量
env = GDK_BACKEND,wayland,x11
env = QT_QPA_PLATFORM,wayland;xcb

# 开机自启
exec-once = dms run
exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP

# 快捷键
bind = SUPER, Return, exec, kitty
bind = SUPER, Space, exec, dms ipc call spotlight toggle
bind = SUPER, L, exec, dms ipc call lock
bind = SUPER, Q, killactive

6.3 Hyprland 的动态平铺

Hyprland 使用传统的多工作区模型(类似 i3),但支持丰富的动画效果。窗口可以在工作区之间移动,支持浮动模式。

常用快捷键(DMS 配置后):

  • Super + Enter:打开终端
  • Super + Space:DMS 应用启动器
  • Super + 1~9:切换工作区
  • Super + Shift + 1~9:将窗口移动到指定工作区
  • Super + Q:关闭窗口
  • Super + F:全屏
  • Super + V:浮动/平铺切换

七、启动桌面环境

niri

从 TTY 登录后执行:

1
niri-session

或者如果安装了显示管理器(如 GDM),在登录界面选择 “niri” 会话。

Hyprland

从 TTY 执行:

1
Hyprland

或通过显示管理器选择 “Hyprland” 会话。


八、DMS 常用命令

DMS 安装后提供了 dms CLI 工具:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 启动 DMS Shell
dms run

# 通过 IPC 控制 DMS
dms ipc call spotlight toggle # 打开/关闭应用启动器
dms ipc call lock # 立即锁屏
dms ipc call wallpaper set /path/to/image.jpg # 设置壁纸
dms ipc call audio setvolume 50 # 设置音量到 50%

# 截图
dms screenshot # 截图并复制到剪贴板
dms screenshot --region # 区域截图

# 亮度控制(需要 i2c-tools 或笔记本内置显示器)
dms brightness list # 列出显示器
dms brightness set 80 # 设置亮度到 80%

# 剪贴板历史
dms clipboard # 打开剪贴板历史选择器

# 诊断
dms doctor # 检查依赖和配置是否正常

九、调整和个性化

9.1 换壁纸并自动配色

DMS 的亮点功能之一:设置壁纸后,matugen 会自动提取颜色并重新主题化整个桌面(状态栏、终端、GTK 应用等):

1
dms ipc call wallpaper set ~/Pictures/my-wallpaper.jpg

9.2 查看所有可用快捷键

1
dms keybinds

9.3 更新 DMS

1
2
sudo pacman -Syu dms-shell    # 更新 dms-shell 本体
yay -Syu quickshell # 更新 quickshell

小结

这一篇完成了:

  1. 了解 DMS 的定位——一站式替代零散的桌面工具
  2. 通过安装脚本或手动安装 DMS 和依赖
  3. 运行 dms setup 自动配置合成器
  4. 了解 niri 和 Hyprland 各自的配置格式和核心概念
  5. 掌握 DMS 的日常使用命令

下一篇:中文环境配置和中文输入法,让你的 Arch Linux 完整支持中文显示和输入。