之前折腾 Arch Linux 时,总想找一个既现代又简洁的桌面环境,但 GNOME、KDE 这些“全家桶”总感觉不够轻量,而 i3、Sway 这类平铺式窗口管理器对新手来说配置门槛又太高。直到遇到了niri和dms这套组合,才算是找到了一个平衡点:既有平铺窗口管理器的效率和美观,又通过一个友好的显示管理器(dms)简化了登录和会话管理,让整个体验更接近传统桌面。
本文就是一份基于我近期折腾经验的完整复盘笔记。我会从零开始,手把手带你完成在 Arch Linux 上安装、配置并调校出一个以niri为窗口管理器、dms为显示管理器的完整桌面环境。无论你是刚接触 Linux 几个月的新手,还是想尝试新工具的进阶用户,都能跟着步骤一步步搭建起来,最终获得一个高效、美观且可深度定制的个人工作空间。
1. 背景与核心概念:为什么是 Arch + niri + dms?
在开始动手之前,我们先理清几个核心概念,明白我们为什么要选择这套组合,而不是直接安装一个现成的桌面环境。
Arch Linux以其滚动更新、高度可定制和“DIY”哲学闻名。它不预装任何桌面环境,给你一张几乎空白的画布,让你可以自由选择每一个组件。这既是它的魅力所在,也是对新手最大的挑战。但通过清晰的步骤,这个过程完全可以被掌握。
niri是一个用 Rust 编写的、动态平铺式窗口管理器。它不像 i3 或 Sway 那样需要你手动编辑复杂的配置文件来定义布局,而是采用了一种“动态”策略,根据窗口打开的顺序和屏幕空间自动排列。它的配置使用 TOML 格式,结构清晰,并且原生支持 Wayland 显示协议,这意味着更好的安全性、性能和现代特性支持。
dms是一个极简、美观的显示管理器(Display Manager)。显示管理器负责图形化登录界面,让你可以选择用户、输入密码并启动桌面会话。相比 systemd-logind 直接启动或使用 startx 命令,dms 提供了一个更友好、更现代的登录体验,并且与 Wayland 环境兼容良好。
这套组合的优势在于:
- 极简与高效:摒弃了传统桌面环境(如 GNOME)的冗余组件,只保留核心的窗口管理和显示服务,系统资源占用极低。
- 现代技术栈:基于 Wayland,避免了 X11 的一些历史遗留问题,如屏幕撕裂、安全模型等。
- 高度可定制:从外观主题、快捷键到窗口规则,几乎所有东西都可以通过配置文件调整。
- 学习曲线平缓:niri 的动态平铺减少了初期配置负担,dms 提供了熟悉的登录界面,降低了从传统桌面过渡的心理门槛。
接下来,我们就从准备环境开始。
2. 环境准备与版本说明
在开始安装前,请确保你有一个已经安装好的 Arch Linux 基础系统。本文假设你已经完成了 Arch 的基本安装(包括分区、挂载、pacstrap、chroot、设置 root 密码、创建用户等步骤),并且能够以普通用户身份登录到命令行终端。
如果你的 Arch 还没安装,请先参考 Arch Wiki 的官方安装指南完成基础系统安装。本文重点在于基础系统之上的桌面环境搭建。
关键版本说明(截至撰写时):
- 操作系统:Arch Linux (滚动更新版本)
- 内核:
linux包(通常是最新的稳定版内核) - 显示服务器:Wayland (我们将使用
wayland及相关组件) - 窗口管理器:niri (版本随 AUR 更新)
- 显示管理器:dms (版本随 AUR 更新)
- 终端:我们选择
foot,这是一个快速、轻量且支持 Wayland 的终端模拟器。 - Shell:
bash或zsh,根据你的喜好。
重要原则:Arch Linux 是滚动更新系统,软件包版本随时在变。本文的命令和配置思路是通用的,但具体的包名或细微配置可能在将来发生变化。如果遇到问题,请第一时间查阅 Arch Wiki 和相应软件的官方文档。
3. 安装核心组件:从 AUR 助手到图形驱动
Arch 的官方仓库(pacman)可能没有我们需要的所有最新软件,特别是像 niri 和 dms 这类较新的项目。因此,我们需要先安装一个 AUR (Arch User Repository) 助手来方便地从社区仓库安装软件。
3.1 安装 AUR 助手:yay
yay是目前最流行的 AUR 助手之一。安装它需要先安装必要的编译工具。
更新系统并安装基础开发工具:
sudo pacman -Syu # 更新整个系统 sudo pacman -S --needed base-devel gitbase-devel包含了gcc,make等编译软件必需的包。克隆并安装 yay:
git clone https://aur.archlinux.org/yay.git cd yay makepkg -si这条命令会下载 yay 的 PKGBUILD 文件,自动解决依赖、编译并安装。过程中可能需要你确认安装一些依赖包,按回车接受默认选项即可。
验证安装:
yay --version能输出版本信息即表示安装成功。
3.2 安装图形驱动与 Wayland 基础
你的显卡决定了需要安装的驱动。请根据你的硬件选择:
- Intel 集成显卡:
sudo pacman -S mesa vulkan-intel - AMD 显卡:
sudo pacman -S mesa vulkan-radeon - NVIDIA 显卡:
注意:NVIDIA 对 Wayland 的支持在逐步完善,但可能仍会遇到一些问题。如果使用 NVIDIA,请确保内核版本与驱动版本匹配。sudo pacman -S nvidia nvidia-utils # 对于较新的显卡,可能需要 `nvidia-open` 驱动 # sudo pacman -S nvidia-open nvidia-utils
接下来安装 Wayland 相关的核心包:
sudo pacman -S wayland wayland-protocols xdg-desktop-portal xdg-desktop-portal-wlrwayland:Wayland 显示服务器协议。wayland-protocols:扩展协议。xdg-desktop-portal及其后端:为 Flatpak 等应用提供屏幕共享、文件选择等桌面集成功能。
3.3 安装 niri 窗口管理器
现在通过 yay 从 AUR 安装 niri:
yay -S niriyay 会列出需要安装的包以及可选的依赖。通常直接按回车使用默认选项即可。它会自动处理 AUR 中的构建和安装。
3.4 安装 dms 显示管理器
同样使用 yay 安装 dms:
yay -S dms安装过程中,yay 可能会提示你选择一些可选的依赖,比如 GTK 主题引擎。你可以根据喜好选择,或者直接按回车跳过。
3.5 安装其他必要组件
一个可用的桌面环境还需要一些基础工具:
- 终端模拟器:
foot - 状态栏:
waybar(一个流行的 Wayland 兼容状态栏) - 应用启动器:
wofi(一个类似于 Rofi 的 Wayland 应用启动器) - 屏幕锁定:
swaylock(虽然来自 Sway 项目,但兼容性好) - 通知守护进程:
mako或dunst - 背景设置:
swaybg或mpvpaper(用于播放视频背景)
使用 pacman 安装它们:
sudo pacman -S foot waybar wofi swaylock mako swaybg4. 配置 niri:打造你的平铺桌面
安装完成后,niri 会生成一个默认的配置文件。我们需要创建并编辑这个文件来自定义行为。
4.1 创建配置文件目录与文件
niri 的配置文件位于~/.config/niri/config.toml。如果目录不存在,请创建:
mkdir -p ~/.config/niri然后,你可以直接从 niri 包中复制一份默认配置作为起点,或者从一个空文件开始。这里我们创建一个基础配置:
nano ~/.config/niri/config.toml将以下基础配置内容粘贴进去。这是一个功能性的最小配置,包含了关键部分:
# ~/.config/niri/config.toml [input] # 键盘布局,根据你的需要设置,例如 “us” 或 “de” xkb_layout = “us” [output] # 设置显示器,这里假设你只有一个名为 “eDP-1” 的显示器(笔记本常见) # 你可以通过命令 `wlr-randr` 来查看你的实际输出名称 [[output]] name = “eDP-1” mode = “1920x1080@60Hz” # 设置你的显示器分辨率和刷新率 position = [0, 0] # 显示器位置,多显示器时有用 [spawn-at-startup] # 开机自启动的程序 startup = [ “waybar”, # 启动状态栏 “mako”, # 启动通知守护进程 “swaybg -i ~/Pictures/wallpaper.jpg”, # 设置壁纸,请确保图片路径存在 ] [keybindings] # 定义快捷键。MOD 键默认为 Super (Windows 键) MOD = “Super” # 启动终端 (foot) “MOD+Return” = “spawn foot” # 启动应用启动器 (wofi) “MOD+d” = “spawn wofi --show drun” # 关闭窗口 “MOD+Shift+q” = “close-window” # 切换窗口焦点 (方向键) “MOD+h” = “focus-left” “MOD+j” = “focus-down” “MOD+k” = “focus-up” “MOD+l” = “focus-right” # 移动窗口 (方向键 + Shift) “MOD+Shift+h” = “move-left” “MOD+Shift+j” = “move-down” “MOD+Shift+k” = “move-up” “MOD+Shift+l” = “move-right” # 切换平铺布局 (可选) “MOD+space” = “toggle-tiling-layout” # 退出 niri (回到登录界面或 tty) “MOD+Shift+e” = “exit” [layout] # 布局设置,这里使用默认的动态平铺策略 gap = 10 # 窗口之间的间隙(像素)配置解释与注意事项:
[input]:设置键盘。如果你使用非美式键盘,务必修改xkb_layout。[output]:这是最容易出错的地方。name必须是你显示器的实际名称。在配置好并启动 niri 后,你可以在终端里运行wlr-randr来查看所有连接的显示器及其名称、支持的模式。[spawn-at-startup]:定义了 niri 启动后自动运行的程序。我们启动了状态栏、通知和壁纸。请确保~/Pictures/wallpaper.jpg这个图片文件存在,或者修改为你的壁纸路径。[keybindings]:定义了所有快捷键。MOD键通常绑定到Super(Windows 键)。你可以根据习惯修改。例如,MOD+Return启动终端。[layout]:定义了窗口布局的外观,如间隙大小。
4.2 配置 Waybar 状态栏
Waybar 的配置文件在~/.config/waybar/config。我们先创建一个简单的配置:
mkdir -p ~/.config/waybar nano ~/.config/waybar/config粘贴以下内容:
// ~/.config/waybar/config { “layer”: “top”, “position”: “top”, “height”: 30, “modules-left”: [“sway/workspaces”, “sway/mode”], “modules-center”: [“clock”], “modules-right”: [“pulseaudio”, “network”, “battery”, “tray”], “clock”: { “format”: “{:%Y-%m-%d %H:%M}”, “tooltip-format”: “<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>” }, “pulseaudio”: { “format”: “{volume}% {icon}”, “format-bluetooth”: “{volume}% {icon}”, “format-muted”: “”, “format-icons”: { “headphones”: “”, “handsfree”: “”, “headset”: “”, “phone”: “”, “portable”: “”, “car”: “”, “default”: [“”, “”] }, “scroll-step”: 5, “on-click”: “pavucontrol” // 点击打开音量控制面板 } }同时,创建一个样式文件~/.config/waybar/style.css来美化(可选,但推荐):
nano ~/.config/waybar/style.css/* ~/.config/waybar/style.css */ * { border: none; border-radius: 0; font-family: “Noto Sans”, “Font Awesome 5 Free”; font-size: 14px; min-height: 0; } window#waybar { background: rgba(40, 40, 40, 0.9); color: #ffffff; } #workspaces button { padding: 0 10px; background: transparent; color: #ffffff; } #workspaces button.focused { background: #64727d; } #clock, #battery, #pulseaudio, #network { padding: 0 10px; margin: 0 5px; }4.3 配置 wofi 应用启动器
wofi 的配置相对简单,创建一个基础配置即可:
nano ~/.config/wofi/config// ~/.config/wofi/config { width = 600; lines = 10; show = drun; prompt = “Search…”; }样式文件~/.config/wofi/style.css可以让你自定义外观,这里给一个简单示例:
/* ~/.config/wofi/style.css */ window { margin: 0px; border: 2px solid #444444; background-color: #2e3440; } #input { margin: 5px; border: none; color: #eceff4; background-color: #434c5e; } #inner-box { margin: 5px; border: none; background-color: #2e3440; } #outer-box { margin: 5px; border: none; background-color: #2e3440; } #scroll { margin: 0px; border: none; } #text { margin: 5px; border: none; color: #eceff4; } #entry:selected { background-color: #5e81ac; }5. 配置并启用 dms 显示管理器
dms 负责图形化登录。我们需要告诉系统,默认的图形会话(session)是我们的 niri。
5.1 创建桌面会话文件
系统需要知道如何启动 niri。创建一个桌面会话文件:
sudo nano /usr/share/wayland-sessions/niri.desktop添加以下内容:
[Desktop Entry] Name=niri Comment=Dynamic tiling Wayland compositor Exec=niri Type=Application这个文件告诉显示管理器,存在一个名为 “niri” 的会话,启动命令是niri。
5.2 启用 dms 服务
现在启用 dms 服务,使其在系统启动时自动运行:
sudo systemctl enable dms.service注意:启用显示管理器后,系统将尝试在启动时直接进入图形登录界面,而不是命令行(tty)。如果你想暂时禁用它,可以使用sudo systemctl disable dms.service。
5.3 设置默认会话(可选)
dms 通常会自动列出/usr/share/wayland-sessions/下的所有可用会话。在登录时,你可以从列表中选择 “niri”。如果你想将 niri 设置为默认会话,可以编辑 dms 的配置文件。但更简单的做法是,在登录时直接选择即可。
6. 首次启动与基础验证
完成所有配置后,是时候重启并进入我们的新桌面了。
- 重启系统:
sudo reboot - 登录:系统启动后,你应该会看到 dms 的登录界面。输入你的用户名和密码。
- 选择会话:在登录界面,通常有一个会话选择按钮(可能是一个齿轮或单词“Session”)。点击它,并从列表中选择“niri”,然后登录。
- 进入桌面:如果一切配置正确,你将看到你设置的壁纸、顶部的 Waybar 状态栏,以及一个空白的桌面。
- 测试快捷键:
Super + Enter:应该弹出 foot 终端。Super + d:应该弹出 wofi 应用启动器,你可以搜索并启动已安装的程序(例如,尝试搜索 “firefox”)。- 在终端中打开一个图形程序(如
firefox),观察 niri 是如何自动平铺窗口的。 - 使用
Super + h/j/k/l来切换焦点,Super + Shift + h/j/k/l来移动窗口。
7. 常见问题与排查思路
第一次配置很少能一帆风顺。下面是一些常见问题及其解决方法。
| 问题现象 | 可能原因 | 排查与解决思路 |
|---|---|---|
| 启动后黑屏,只有光标或直接退回登录界面 | 1. 显卡驱动问题。 2. niri 配置错误(特别是 [output]部分)。3. Wayland 组件缺失。 | 1. 按Ctrl+Alt+F2(或 F3/F4) 切换到另一个 TTY 登录。2. 检查显卡驱动是否安装正确 ( lspci -k | grep -A 2 -E “(VGA|3D)”)。3. 仔细检查 ~/.config/niri/config.toml中[output]的name和mode。运行wlr-randr查看正确信息。4. 尝试在 TTY 中手动运行 niri,观察终端输出的错误信息。 |
| 键盘快捷键全部失效 | 1. 键盘布局配置错误。 2. MOD键被系统或其他软件占用。 | 1. 检查config.toml中[input]部分的xkb_layout。2. 尝试更换 MOD键,例如MOD = “Alt”。 |
| Waybar 或 wofi 没有启动 | 1. 命令路径错误。 2. 软件未安装。 3. 配置文件语法错误。 | 1. 在 niri 配置的startup中,确保命令名正确(如waybar,wofi)。2. 在 TTY 中手动运行 waybar或wofi --show drun,看是否有错误输出。3. 检查 Waybar 和 wofi 的配置文件 JSON/CS S 语法是否正确。 |
| 无法连接网络(在Waybar上无显示) | NetworkManager 未运行或未配置。 | 1. 安装 NetworkManager:sudo pacman -S networkmanager。2. 启用并启动服务: sudo systemctl enable --now NetworkManager。3. 在 Waybar 配置中, network模块可能依赖nm-tray或直接使用 NetworkManager。安装nm-connection-editor和network-manager-applet进行图形化配置。 |
| 没有声音 | PulseAudio 服务未运行或配置错误。 | 1. 安装pulseaudio和pulseaudio-alsa:sudo pacman -S pulseaudio pulseaudio-alsa。2. 安装图形化音量控制 pavucontrol:sudo pacman -S pavucontrol。3. 确保用户在有 audio组中:sudo usermod -aG audio $USER,然后注销重登。 |
| dms 无法启动,卡在 tty | 1. dms 服务未启用。 2. 缺少 Wayland 会话文件。 3. 与现有显示管理器冲突。 | 1. 确认服务已启用:sudo systemctl is-enabled dms.service。2. 确认 /usr/share/wayland-sessions/niri.desktop文件存在且内容正确。3. 如果你之前安装过 GDM、SDDM 等,确保它们被禁用: sudo systemctl disable gdm.service。 |
通用排查命令:
journalctl -xe -u dms:查看 dms 服务的详细日志。niri --version:确认 niri 是否安装。ls /usr/share/wayland-sessions/:查看有哪些可用的会话。- 在 TTY 中运行
niri:直接在前台运行 niri,所有错误信息都会打印在当前终端,这是最直接的调试方式。
8. 进阶调校与最佳实践
当基础桌面运行起来后,你可以开始深度定制,让它更符合你的工作流和审美。
8.1 niri 配置进阶
- 多显示器:在
[output]部分添加多个[[output]]块,分别设置name,mode,position。position数组[x, y]定义了显示器的相对位置。 - 窗口规则:你可以为特定应用设置规则,例如让某个应用始终浮动、出现在特定工作区等。这需要查阅 niri 的官方文档来了解具体的配置语法。
- 动画与视觉效果:niri 支持简单的动画配置,如窗口打开、关闭、焦点切换的动画效果。可以在配置文件中寻找
[animations]部分进行配置。 - 快捷键扩展:将常用操作绑定到快捷键,如截屏、调节音量亮度、启动特定程序等。例如:
“MOD+Print” = “spawn grim -g “$(slurp)” - | wl-copy” # 区域截屏到剪贴板 “XF86AudioRaiseVolume” = “spawn pactl set-sink-volume @DEFAULT_SINK@ +5%” # 音量加 “XF86AudioLowerVolume” = “spawn pactl set-sink-volume @DEFAULT_SINK@ -5%” # 音量减
8.2 状态栏 (Waybar) 定制
Waybar 模块非常丰富。你可以通过修改~/.config/waybar/config来添加、删除或定制模块。
- 添加 CPU/内存监控:在
modules-right数组中加入“cpu”,“memory”。 - 自定义样式:通过
~/.config/waybar/style.css文件,你可以完全控制 Waybar 的颜色、字体、间距等,实现与壁纸主题的完美搭配。 - 使用自定义脚本:Waybar 支持运行自定义脚本并显示其输出,这为你显示任何系统信息(如天气、股票、自定义指标)提供了可能。
8.3 软件生态与日常应用
- 文件管理器:推荐
thunar(轻量) 或nautilus(功能全)。sudo pacman -S thunar - 文本编辑器:除了终端里的
vim/nano,图形化编辑器可以选择gedit,kate或mousepad。sudo pacman -S gedit - 浏览器:
firefox和chromium都有良好的 Wayland 支持。安装时可能需要一些额外环境变量来启用 Wayland 后端,例如在启动命令前加MOZ_ENABLE_WAYLAND=1。 - 输入法:对于中文用户,
fcitx5是很好的选择。
然后在环境变量文件(如sudo pacman -S fcitx5 fcitx5-chinese-addons fcitx5-gtk fcitx5-qt~/.pam_environment或~/.xprofile)中添加:GTK_IM_MODULE=fcitx QT_IM_MODULE=fcitx XMODIFIERS=@im=fcitx - 屏幕录制与截图:
grim(截图)、slurp(选择区域)、wf-recorder(录屏) 是 Wayland 下的常用工具组合。
8.4 维护与备份
- 配置文件备份:你的桌面体验完全由
~/.config/下的几个目录决定(niri,waybar,wofi等)。定期备份这个目录是明智的。你可以使用 git 来管理你的 dotfiles。 - 系统更新:定期使用
sudo pacman -Syu和yay -Syu更新系统及 AUR 包。更新后如果遇到问题,首先检查相关软件的 GitHub 页面或 Arch Wiki 是否有配置变更说明。 - 社区支持:遇到复杂问题时,Arch Wiki、相应项目的 GitHub Issues 页面以及 Reddit 的 r/archlinux 板块都是极佳的求助场所。提问时,请提供详细的错误信息、你的配置片段以及已尝试的排查步骤。
通过以上步骤,你应该已经拥有了一个完全由自己配置的、简洁高效的 Arch Linux 桌面环境。这套组合的核心优势在于“知其然也知其所以然”,每一个组件都是你亲手挑选和配置的,这不仅能带来极大的成就感,也能让你对 Linux 桌面系统的工作原理有更深刻的理解。从今天起,你的桌面不再是一个黑盒,而是一个可以随意打磨和改造的工具。