Arch Linux 上搭建 niri + dms 现代平铺桌面环境完整指南
2026/8/18 21:13:12 网站建设 项目流程

之前折腾 Arch Linux 时,总想找一个既现代又简洁的桌面环境,但 GNOME、KDE 这些“全家桶”总感觉不够轻量,而 i3、Sway 这类平铺式窗口管理器对新手来说配置门槛又太高。直到遇到了niridms这套组合,才算是找到了一个平衡点:既有平铺窗口管理器的效率和美观,又通过一个友好的显示管理器(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 环境兼容良好。

这套组合的优势在于

  1. 极简与高效:摒弃了传统桌面环境(如 GNOME)的冗余组件,只保留核心的窗口管理和显示服务,系统资源占用极低。
  2. 现代技术栈:基于 Wayland,避免了 X11 的一些历史遗留问题,如屏幕撕裂、安全模型等。
  3. 高度可定制:从外观主题、快捷键到窗口规则,几乎所有东西都可以通过配置文件调整。
  4. 学习曲线平缓:niri 的动态平铺减少了初期配置负担,dms 提供了熟悉的登录界面,降低了从传统桌面过渡的心理门槛。

接下来,我们就从准备环境开始。

2. 环境准备与版本说明

在开始安装前,请确保你有一个已经安装好的 Arch Linux 基础系统。本文假设你已经完成了 Arch 的基本安装(包括分区、挂载、pacstrapchroot、设置 root 密码、创建用户等步骤),并且能够以普通用户身份登录到命令行终端。

如果你的 Arch 还没安装,请先参考 Arch Wiki 的官方安装指南完成基础系统安装。本文重点在于基础系统之上的桌面环境搭建。

关键版本说明(截至撰写时)

  • 操作系统:Arch Linux (滚动更新版本)
  • 内核linux包(通常是最新的稳定版内核)
  • 显示服务器:Wayland (我们将使用wayland及相关组件)
  • 窗口管理器:niri (版本随 AUR 更新)
  • 显示管理器:dms (版本随 AUR 更新)
  • 终端:我们选择foot,这是一个快速、轻量且支持 Wayland 的终端模拟器。
  • Shellbashzsh,根据你的喜好。

重要原则:Arch Linux 是滚动更新系统,软件包版本随时在变。本文的命令和配置思路是通用的,但具体的包名或细微配置可能在将来发生变化。如果遇到问题,请第一时间查阅 Arch Wiki 和相应软件的官方文档。

3. 安装核心组件:从 AUR 助手到图形驱动

Arch 的官方仓库(pacman)可能没有我们需要的所有最新软件,特别是像 niri 和 dms 这类较新的项目。因此,我们需要先安装一个 AUR (Arch User Repository) 助手来方便地从社区仓库安装软件。

3.1 安装 AUR 助手:yay

yay是目前最流行的 AUR 助手之一。安装它需要先安装必要的编译工具。

  1. 更新系统并安装基础开发工具

    sudo pacman -Syu # 更新整个系统 sudo pacman -S --needed base-devel git

    base-devel包含了gcc,make等编译软件必需的包。

  2. 克隆并安装 yay

    git clone https://aur.archlinux.org/yay.git cd yay makepkg -si

    这条命令会下载 yay 的 PKGBUILD 文件,自动解决依赖、编译并安装。过程中可能需要你确认安装一些依赖包,按回车接受默认选项即可。

  3. 验证安装

    yay --version

    能输出版本信息即表示安装成功。

3.2 安装图形驱动与 Wayland 基础

你的显卡决定了需要安装的驱动。请根据你的硬件选择:

  • Intel 集成显卡
    sudo pacman -S mesa vulkan-intel
  • AMD 显卡
    sudo pacman -S mesa vulkan-radeon
  • NVIDIA 显卡
    sudo pacman -S nvidia nvidia-utils # 对于较新的显卡,可能需要 `nvidia-open` 驱动 # sudo pacman -S nvidia-open nvidia-utils
    注意:NVIDIA 对 Wayland 的支持在逐步完善,但可能仍会遇到一些问题。如果使用 NVIDIA,请确保内核版本与驱动版本匹配。

接下来安装 Wayland 相关的核心包:

sudo pacman -S wayland wayland-protocols xdg-desktop-portal xdg-desktop-portal-wlr
  • wayland:Wayland 显示服务器协议。
  • wayland-protocols:扩展协议。
  • xdg-desktop-portal及其后端:为 Flatpak 等应用提供屏幕共享、文件选择等桌面集成功能。

3.3 安装 niri 窗口管理器

现在通过 yay 从 AUR 安装 niri:

yay -S niri

yay 会列出需要安装的包以及可选的依赖。通常直接按回车使用默认选项即可。它会自动处理 AUR 中的构建和安装。

3.4 安装 dms 显示管理器

同样使用 yay 安装 dms:

yay -S dms

安装过程中,yay 可能会提示你选择一些可选的依赖,比如 GTK 主题引擎。你可以根据喜好选择,或者直接按回车跳过。

3.5 安装其他必要组件

一个可用的桌面环境还需要一些基础工具:

  • 终端模拟器foot
  • 状态栏waybar(一个流行的 Wayland 兼容状态栏)
  • 应用启动器wofi(一个类似于 Rofi 的 Wayland 应用启动器)
  • 屏幕锁定swaylock(虽然来自 Sway 项目,但兼容性好)
  • 通知守护进程makodunst
  • 背景设置swaybgmpvpaper(用于播放视频背景)

使用 pacman 安装它们:

sudo pacman -S foot waybar wofi swaylock mako swaybg

4. 配置 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. 首次启动与基础验证

完成所有配置后,是时候重启并进入我们的新桌面了。

  1. 重启系统
    sudo reboot
  2. 登录:系统启动后,你应该会看到 dms 的登录界面。输入你的用户名和密码。
  3. 选择会话:在登录界面,通常有一个会话选择按钮(可能是一个齿轮或单词“Session”)。点击它,并从列表中选择“niri”,然后登录。
  4. 进入桌面:如果一切配置正确,你将看到你设置的壁纸、顶部的 Waybar 状态栏,以及一个空白的桌面。
  5. 测试快捷键
    • 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]namemode。运行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 中手动运行waybarwofi --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-editornetwork-manager-applet进行图形化配置。
没有声音PulseAudio 服务未运行或配置错误。1. 安装pulseaudiopulseaudio-alsa:sudo pacman -S pulseaudio pulseaudio-alsa
2. 安装图形化音量控制pavucontrol:sudo pacman -S pavucontrol
3. 确保用户在有audio组中:sudo usermod -aG audio $USER,然后注销重登。
dms 无法启动,卡在 tty1. 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,positionposition数组[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,katemousepad
    sudo pacman -S gedit
  • 浏览器firefoxchromium都有良好的 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 -Syuyay -Syu更新系统及 AUR 包。更新后如果遇到问题,首先检查相关软件的 GitHub 页面或 Arch Wiki 是否有配置变更说明。
  • 社区支持:遇到复杂问题时,Arch Wiki、相应项目的 GitHub Issues 页面以及 Reddit 的 r/archlinux 板块都是极佳的求助场所。提问时,请提供详细的错误信息、你的配置片段以及已尝试的排查步骤。

通过以上步骤,你应该已经拥有了一个完全由自己配置的、简洁高效的 Arch Linux 桌面环境。这套组合的核心优势在于“知其然也知其所以然”,每一个组件都是你亲手挑选和配置的,这不仅能带来极大的成就感,也能让你对 Linux 桌面系统的工作原理有更深刻的理解。从今天起,你的桌面不再是一个黑盒,而是一个可以随意打磨和改造的工具。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询