拓冰建站拓冰建站
首页 / 资讯中心 / 正文

Arch Linux 上搭建 niri + dms 现代平铺桌面环境完整指南

之前折腾 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 的终端模拟器。Shellbash或zsh根据你的喜好。重要原则Arch Linux 是滚动更新系统软件包版本随时在变。本文的命令和配置思路是通用的但具体的包名或细微配置可能在将来发生变化。如果遇到问题请第一时间查阅 Arch Wiki 和相应软件的官方文档。3. 安装核心组件从 AUR 助手到图形驱动Arch 的官方仓库pacman可能没有我们需要的所有最新软件特别是像 niri 和 dms 这类较新的项目。因此我们需要先安装一个 AUR (Arch User Repository) 助手来方便地从社区仓库安装软件。3.1 安装 AUR 助手yayyay是目前最流行的 AUR 助手之一。安装它需要先安装必要的编译工具。更新系统并安装基础开发工具sudo pacman -Syu # 更新整个系统 sudo pacman -S --needed base-devel gitbase-devel包含了gcc,make等编译软件必需的包。克隆并安装 yaygit clone https://aur.archlinux.org/yay.git cd yay makepkg -si这条命令会下载 yay 的 PKGBUILD 文件自动解决依赖、编译并安装。过程中可能需要你确认安装一些依赖包按回车接受默认选项即可。验证安装yay --version能输出版本信息即表示安装成功。3.2 安装图形驱动与 Wayland 基础你的显卡决定了需要安装的驱动。请根据你的硬件选择Intel 集成显卡sudo pacman -S mesa vulkan-intelAMD 显卡sudo pacman -S mesa vulkan-radeonNVIDIA 显卡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-wlrwaylandWayland 显示服务器协议。wayland-protocols扩展协议。xdg-desktop-portal及其后端为 Flatpak 等应用提供屏幕共享、文件选择等桌面集成功能。3.3 安装 niri 窗口管理器现在通过 yay 从 AUR 安装 niriyay -S niriyay 会列出需要安装的包以及可选的依赖。通常直接按回车使用默认选项即可。它会自动处理 AUR 中的构建和安装。3.4 安装 dms 显示管理器同样使用 yay 安装 dmsyay -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 “1920x108060Hz” # 设置你的显示器分辨率和刷新率 position [0, 0] # 显示器位置多显示器时有用 [spawn-at-startup] # 开机自启动的程序 startup [ “waybar”, # 启动状态栏 “mako”, # 启动通知守护进程 “swaybg -i ~/Pictures/wallpaper.jpg”, # 设置壁纸请确保图片路径存在 ] [keybindings] # 定义快捷键。MOD 键默认为 Super (Windows 键) MOD “Super” # 启动终端 (foot) “MODReturn” “spawn foot” # 启动应用启动器 (wofi) “MODd” “spawn wofi --show drun” # 关闭窗口 “MODShiftq” “close-window” # 切换窗口焦点 (方向键) “MODh” “focus-left” “MODj” “focus-down” “MODk” “focus-up” “MODl” “focus-right” # 移动窗口 (方向键 Shift) “MODShifth” “move-left” “MODShiftj” “move-down” “MODShiftk” “move-up” “MODShiftl” “move-right” # 切换平铺布局 (可选) “MODspace” “toggle-tiling-layout” # 退出 niri (回到登录界面或 tty) “MODShifte” “exit” [layout] # 布局设置这里使用默认的动态平铺策略 gap 10 # 窗口之间的间隙像素配置解释与注意事项[input]设置键盘。如果你使用非美式键盘务必修改xkb_layout。[output]这是最容易出错的地方。name必须是你显示器的实际名称。在配置好并启动 niri 后你可以在终端里运行wlr-randr来查看所有连接的显示器及其名称、支持的模式。[spawn-at-startup]定义了 niri 启动后自动运行的程序。我们启动了状态栏、通知和壁纸。请确保~/Pictures/wallpaper.jpg这个图片文件存在或者修改为你的壁纸路径。[keybindings]定义了所有快捷键。MOD键通常绑定到Super(Windows 键)。你可以根据习惯修改。例如MODReturn启动终端。[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\nttsmall{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] Nameniri CommentDynamic tiling Wayland compositor Execniri TypeApplication这个文件告诉显示管理器存在一个名为 “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. 按CtrlAltF2(或 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 无法启动卡在 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,position。position数组[x, y]定义了显示器的相对位置。窗口规则你可以为特定应用设置规则例如让某个应用始终浮动、出现在特定工作区等。这需要查阅 niri 的官方文档来了解具体的配置语法。动画与视觉效果niri 支持简单的动画配置如窗口打开、关闭、焦点切换的动画效果。可以在配置文件中寻找[animations]部分进行配置。快捷键扩展将常用操作绑定到快捷键如截屏、调节音量亮度、启动特定程序等。例如“MODPrint” “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_WAYLAND1。输入法对于中文用户fcitx5是很好的选择。sudo pacman -S fcitx5 fcitx5-chinese-addons fcitx5-gtk fcitx5-qt然后在环境变量文件如~/.pam_environment或~/.xprofile中添加GTK_IM_MODULEfcitx QT_IM_MODULEfcitx XMODIFIERSimfcitx屏幕录制与截图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 桌面系统的工作原理有更深刻的理解。从今天起你的桌面不再是一个黑盒而是一个可以随意打磨和改造的工具。
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门