ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

从零搭建Arch Linux平铺式Wayland桌面:Niri与DMS实战指南

从零搭建Arch Linux平铺式Wayland桌面:Niri与DMS实战指南 如果你在寻找一个“能跑就行”的Linux桌面Ubuntu、Fedora甚至Deepin都是不错的选择。但如果你和我一样在某个深夜被Arch Wiki上那句“简单、轻量、符合KISS原则”所吸引同时又对市面上那些“大而全”的桌面环境感到审美疲劳和性能臃肿那么亲手从零搭建一个由Niri一个平铺式Wayland合成器和DMS一个极简显示管理器驱动的Arch Linux桌面可能就是你一直在找的答案。这不仅仅是一次安装更像是一次对Linux桌面本质的探索。整个过程会让你清晰地看到一个现代、流畅、美观的桌面环境其底层究竟由哪些核心组件构成内核、驱动、显示服务器Wayland/X11、显示管理器、窗口合成器、状态栏、应用启动器……我们将亲手挑选并组装每一个部件。本文的目标非常明确面向有一定Linux基础比如知道ls,cd,sudo是什么但从未独立安装过Arch且对Wayland和窗口管理器感到好奇的“准新手”。我将以5个月前的自己为视角记录从Arch基础安装到Niri桌面完美运行的每一个步骤、每一个坑、以及每一个“原来如此”的时刻。这不是一份冷冰冰的官方文档翻译而是一份带有温度、判断和实操细节的“生存指南”。读完本文你将获得一个可运行的、极简且现代的ArchNiriDMS桌面系统。对Linux图形栈尤其是Wayland组件关系的深刻理解。绕过常见陷阱的实用技巧比如网络配置、显卡驱动、中文输入法、字体渲染。一套可复用的“调校”方法论让你能根据自己的喜好定制桌面。我们开始吧。1. 为什么是 Arch Niri DMS理解我们的技术选型在动手之前我们必须清楚自己为什么要选择这套组合而不是直接安装一个现成的发行版。这决定了后续遇到问题时我们的排查思路和解决方向。Arch Linux它不是一个“产品”而是一个“平台”。它的核心魅力在于滚动更新和极简主义。你得到的只是一个最基础的系统然后通过包管理器pacman和AUR用户软件仓库亲手搭建一切。这带来了无与伦比的透明度和控制力但同时也意味着你需要对系统的组成部分有基本认知。选择Arch就是选择学习和理解。Niri这是一个非常新的、基于Wayland的动态平铺式合成器。它不像KDE Plasma或GNOME那样提供完整的桌面环境DE而只负责一件事以高效、美观的方式管理和绘制应用程序窗口。它的特点是Wayland原生更现代、更安全、性能更好避免了X11的一些历史包袱。平铺式管理窗口自动排列最大化利用屏幕空间特别适合编程和文字工作。配置简单其配置文件是易于阅读和编写的TOML格式逻辑清晰。美观的动画提供了流畅的窗口打开、关闭、移动动画这在轻量级平铺管理器里很难得。DMS (Dynamic Display Manager)这是一个极简的显示管理器登录管理器。它的作用就是在系统启动后提供一个图形化的登录界面验证你的用户身份然后启动你指定的桌面会话对我们来说就是Niri。相比GDM、SDDM等“重量级”选手DMS非常轻量启动快且与Wayland兼容性好。核心组件关系图硬件启动 - Linux内核 - Systemd - 显示服务器 (Wayland) - DMS (显示管理器) | v 用户登录验证 | v 启动用户会话 | v Niri (窗口合成器) 启动 | v 状态栏、启动器、壁纸等组件加载选择这套组合我们追求的是极致的性能控制、现代的技术栈、简洁的美学以及最重要的——对整个图形栈的完全理解。它不适合追求“开箱即用”的用户但绝对是Linux桌面爱好者的一次绝佳修炼。2. 环境准备安装介质与启动盘制作在触碰Arch安装程序之前准备工作必须万无一失。2.1 硬件与网络要求一台x86_64架构的电脑实体机或虚拟机均可。虚拟机如VMware Workstation Pro VirtualBox对新手更友好便于截图和回滚。实体机体验更完整。稳定的互联网连接Arch安装过程需要在线下载大量包必须联网。确保你的环境可以通过有线推荐或无线网络连接互联网。一个至少8GB的U盘用于制作安装介质。至少30GB的硬盘空间建议分配40GB以上给系统和日后安装软件留足空间。2.2 下载Arch Linux镜像访问Arch Linux官方镜像站例如https://archlinux.org/download/下载最新的ISO文件。文件命名通常为archlinux-xxxx.xx.xx-x86_64.iso。2.3 制作可启动U盘以Linux/macOS为例警告此操作将清空U盘所有数据请提前备份。# 1. 插入U盘使用 lsblk 命令查看U盘设备名例如 /dev/sdb 注意不是 /dev/sdb1 lsblk # 2. 假设U盘设备是 /dev/sdb使用 dd 命令写入镜像 # 请务必确认设备名写错可能导致硬盘数据丢失 sudo dd if./archlinux-xxxx.xx.xx-x86_64.iso of/dev/sdb bs4M statusprogress oflagsyncdd命令没有进度条statusprogress和bs4M能一定程度上改善体验。写入完成后安全弹出U盘。Windows用户可以使用 Rufus 或 Ventoy 等工具制作启动盘。Rufus选择“DD模式”写入即可。3. 基础Arch系统安装从U盘到硬盘这是整个过程中最需要耐心的一步。请跟随步骤并理解每一步在做什么。3.1 启动并连接网络将制作好的U盘插入电脑从U盘启动。你会进入一个命令行界面的Live环境。验证启动模式ls /sys/firmware/efi/efivars。如果目录存在且能列出文件说明是UEFI模式启动现代电脑基本都是否则是传统BIOS模式。本文以UEFI模式为准。连接网络有线网络通常已经自动连接并获取了IP地址。用ping archlinux.org测试。无线网络使用iwctl工具连接。iwctl # 进入交互式命令行 device list # 列出无线设备记下名称如 wlan0 station device scan # 扫描网络例如 station wlan0 scan station device get-networks # 列出扫描到的网络 station device connect SSID # 连接网络如有密码会提示输入 exit # 退出 iwctl ping archlinux.org # 再次测试网络3.2 更新系统时钟与分区硬盘更新系统时钟timedatectl set-ntp true分区使用fdisk或cfdisk更友好对目标硬盘进行分区。以下是一个典型的UEFIGPT分区方案示例假设目标硬盘是/dev/nvme0n1EFI系统分区/dev/nvme0n1p1 大小 512M 类型EFI System。根分区/dev/nvme0n1p2 大小 剩余所有空间 类型Linux filesystem。 如果你需要Swap分区可以单独划分例如4G。但现代系统内存足够大也可以使用Swap文件更灵活。格式化分区mkfs.fat -F32 /dev/nvme0n1p1 # 格式化EFI分区为FAT32 mkfs.ext4 /dev/nvme0n1p2 # 格式化根分区为ext4 # 如果需要Swap分区mkswap /dev/nvme0n1p3 swapon /dev/nvme0n1p3挂载分区mount /dev/nvme0n1p2 /mnt # 挂载根分区 mkdir -p /mnt/boot/efi # 创建EFI挂载点 mount /dev/nvme0n1p1 /mnt/boot/efi # 挂载EFI分区3.3 安装基本系统包使用pacstrap脚本安装最基本的Arch系统到/mnt。pacstrap /mnt base base-devel linux linux-firmware vim sudo networkmanagerbase最核心的系统包。base-devel编译软件所需的工具链后续从AUR安装软件需要。linux内核。linux-firmware硬件固件。vim文本编辑器你可以选nano。sudo权限管理。networkmanager网络管理工具比systemd-networkd对桌面用户更友好。3.4 生成fstab与Chroot进入新系统生成文件系统表genfstab -U /mnt /mnt/etc/fstab。建议用cat /mnt/etc/fstab检查一下。Chrootarch-chroot /mnt。现在你的操作环境已经切换到新安装的系统了。3.5 在新系统中进行基本配置# 1. 设置时区与本地时间 ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime hwclock --systohc # 2. 本地化设置语言与字符集 vim /etc/locale.gen # 取消注释 en_US.UTF-8 UTF-8 和 zh_CN.UTF-8 UTF-8或其他你需要的 locale-gen echo LANGen_US.UTF-8 /etc/locale.conf # 建议系统语言用英文避免终端乱码 # 3. 设置主机名 echo myarch /etc/hostname # 编辑 /etc/hosts 文件添加以下行 vim /etc/hosts # 127.0.0.1 localhost # ::1 localhost # 127.0.1.1 myarch.localdomain myarch # 4. 设置Root密码 passwd # 5. 安装引导程序GR2为例针对UEFI pacman -S grub efibootmgr grub-install --targetx86_64-efi --efi-directory/boot/efi --bootloader-idGRUB grub-mkconfig -o /boot/grub/grub.cfg # 6. 创建一个普通用户并赋予sudo权限 useradd -m -G wheel -s /bin/bash yourusername passwd yourusername # 编辑sudoers文件为wheel组赋予权限 EDITORvim visudo # 找到 # %wheel ALL(ALL:ALL) ALL 这一行取消注释删除开头的#3.6 完成安装退出chroot环境exit卸载分区umount -R /mnt重启reboot重启后拔出U盘从硬盘启动。你应该能看到GRUB引导菜单并成功进入全新的Arch Linux命令行登录界面。用你刚创建的用户名和密码登录。至此一个最基础的、无图形界面的Arch Linux系统已经安装完毕。真正的“桌面之旅”现在才开始。4. 图形栈基石安装显卡驱动与Wayland没有正确的显卡驱动图形界面要么无法启动要么性能极差。4.1 确定并安装显卡驱动首先确定你的显卡型号lspci | grep -e VGA -e 3DIntel 集成显卡sudo pacman -S mesa vulkan-intel intel-media-driver libva-intel-driverAMD 显卡sudo pacman -S mesa vulkan-radeon libva-mesa-driverNVIDIA 显卡情况复杂如果你使用的是较新的显卡RTX 20/30/40系列需要安装开源驱动性能可能不如闭源但Wayland兼容性更好或闭源驱动。开源驱动sudo pacman -S mesa vulkan-radeon(实际上AMD驱动包)不对NVIDIA开源是nouveau但Wayland下不推荐。对于NVIDIA通常直接安装闭源驱动。闭源驱动推荐sudo pacman -S nvidia nvidia-utils nvidia-settings # 对于较新内核可能还需要 nvidia-dkms重要NVIDIA闭源驱动在Wayland下的体验仍在不断改善请务必查阅 Arch Wiki NVIDIA 获取最新配置。4.2 安装Wayland及相关组件Wayland是现代图形界面的基石Niri依赖它。sudo pacman -S wayland wayland-protocols xorg-xwaylandwaylandWayland协议实现。wayland-protocols扩展协议。xorg-xwaylandXWayland兼容层让仅支持X11的老程序能在Wayland下运行。5. 核心登场安装并配置DMS显示管理器DMS将为我们提供图形登录界面。5.1 安装DMSDMS在AURArch用户仓库中我们需要先用yay这个AUR助手来安装它。首先安装yay# 安装 git 和 base-devel如果之前没装全 sudo pacman -S --needed git base-devel # 克隆 yay 仓库并编译安装 git clone https://aur.archlinux.org/yay.git cd yay makepkg -si cd .. rm -rf yay现在用yay安装DMSyay -S dms5.2 配置DMSDMS的配置文件位于/etc/dms/config.toml。我们需要创建并编辑它。sudo vim /etc/dms/config.toml将以下基础配置写入文件你可以根据注释调整# /etc/dms/config.toml [general] # 登录后要启动的会话命令这里我们先写一个测试命令 session_cmd echo Session started sleep 5 [display] # 输出名称通常留空自动检测 output # 分辨率留空使用默认 resolution [theme] # 主题路径DMS自带一些简单主题 path /usr/share/dms/themes/default这个配置目前只是用来测试DMS能否正常运行。我们真正的会话命令启动Niri将在后面配置。5.3 启用DMS服务并测试让DMS在系统启动时自动运行sudo systemctl enable dms.service现在重启系统sudo reboot。如果一切顺利你应该会看到一个非常简约的DMS登录界面。输入用户名和密码它会执行我们设置的session_cmd打印一句话并等待5秒然后可能返回登录界面或黑屏。这说明DMS工作正常。如果卡在命令行按CtrlAltF2切换到另一个TTY登录后检查服务状态sudo systemctl status dms.service查看日志journalctl -u dms.service -b。常见问题是显卡驱动或Wayland环境问题。6. 主角驾到安装与初体验Niri合成器Niri是我们桌面的“大脑”负责窗口管理和绘制。6.1 安装NiriNiri同样在AUR中。yay -S niri6.2 首次运行Niri不通过DMS在配置DMS启动Niri之前我们先在当前的TTY命令行界面里手动测试一下Niri是否能独立运行。这有助于隔离问题。按CtrlAltF2或F3/F4切换到一个未使用的TTY登录你的普通用户。运行Niri# 在普通用户下执行 niri如果成功你会看到屏幕清空然后出现一个带有网格背景的空白界面Niri的默认状态。这说明Wayland合成器本身运行正常。此时你无法操作因为还没有启动任何客户端程序。按Mod默认是Super键即Windows键 ShiftQ可以退出Niri回到命令行。ModEnter打开终端需要你预先设置默认可能没绑定。ModShiftE退出Niri。如果Niri启动失败通常会打印错误信息。常见问题包括权限问题确保你在video和input用户组sudo usermod -aG video,input yourusername然后重新登录。Wayland环境问题确保XDG_RUNTIME_DIR环境变量已设置通常登录后自动设置。可以echo $XDG_RUNTIME_DIR查看。6.3 创建Niri的配置文件Niri的配置文件位于~/.config/niri/config.toml。它默认不存在我们需要创建它并进行最基础的配置至少绑定一个终端快捷键。mkdir -p ~/.config/niri vim ~/.config/niri/config.toml输入以下最小配置# ~/.config/niri/config.toml [input] # 设置Mod键为Super键Windows键 mod-key Super [keybindings] # 打开终端我们使用foot一个快速的Wayland原生终端 Mod-Return spawn [ \foot\ ] # 退出Niri Mod-Shift-q quit # 关闭聚焦的窗口 Mod-Shift-c close-window [layout] # 初始布局column是列布局 default-column-width 800 gap 10这个配置做了三件事将Super键设为修饰键Mod。绑定ModEnter打开foot终端。绑定ModShiftQ退出NiriModShiftC关闭窗口。现在再次手动运行niri。进入Niri后按SuperEnter应该能弹出foot终端窗口。恭喜你的平铺式Wayland桌面已经可以运行基本程序了。7. 串联一切配置DMS自动启动Niri会话现在我们需要告诉DMS登录成功后不要执行那个测试命令而是启动一个完整的Niri桌面会话。7.1 创建桌面会话文件Linux的桌面会话由.desktop文件定义。我们需要为Niri创建一个。sudo vim /usr/share/wayland-sessions/niri.desktop写入以下内容[Desktop Entry] NameNiri CommentDynamic tiling Wayland compositor Execdbus-run-session niri TypeApplication DesktopNamesniri关键点是Execdbus-run-session niri。dbus-run-session会为这个会话启动一个D-Bus总线许多桌面应用如网络管理器小程序、蓝牙需要它才能正常工作。7.2 更新DMS配置现在修改DMS的配置指向我们刚创建的会话。sudo vim /etc/dms/config.toml将session_cmd一行修改为session_cmd dbus-run-session niri # 或者如果你想使用系统级的D-Bus不推荐可能权限不对可以尝试 # session_cmd niri保存并退出。7.3 安装基础桌面组件一个可用的桌面还需要一些基本软件终端foot我们已在配置中使用应用启动器wofi或bemenu状态栏waybar功能强大可定制性高通知守护进程mako或dunst屏幕截图工具grimslurpwl-clipboard壁纸设置swaybg一次性安装它们sudo pacman -S foot wofi waybar mako grim slurp wl-clipboard swaybg7.4 完善Niri配置以集成这些组件再次编辑Niri的配置文件添加自动启动这些组件的能力。vim ~/.config/niri/config.toml在文件末尾添加以下内容请根据你的喜好调整# ~/.config/niri/config.toml (续) # 设置壁纸 startup [ # 设置壁纸图片路径请自行修改 { spawn [ swaybg, -i, /path/to/your/wallpaper.jpg, -m, fill ] }, # 启动状态栏 { spawn [ waybar ] }, # 启动通知守护进程 { spawn [ mako ] }, ] [keybindings] # 补充更多快捷键绑定 Mod-d spawn [ \wofi\, \--show\, \run\ ] # 应用启动器 Mod-p spawn [ \grim\, \-g\, \$(slurp)\, \-\ ] | wl-copy # 区域截图到剪贴板 Mod-Shift-p spawn [ \grim\, \-\ ] | wl-copy # 全屏截图到剪贴板 # 你可以继续添加更多绑定如音量、亮度控制等现在重启系统或重新启动DMS服务sudo systemctl restart dms。回到图形登录界面选择Niri会话如果DMS支持选择的话有些极简DM可能直接启动默认会话登录。如果一切配置正确你将看到漂亮的壁纸。屏幕顶部或底部出现waybar状态栏显示时间、网络、电量等。按SuperD可以调出wofi启动器搜索并启动程序。按SuperEnter打开foot终端。按SuperP可以进行区域截图。一个功能完整的、极简的、平铺式的Arch Linux桌面环境就此诞生。8. 桌面环境精调字体、输入法与常用软件基础桌面有了但要舒适地使用还需要进行一系列“精调”。8.1 安装中文字体与美化默认字体可能不支持中文或渲染不佳。sudo pacman -S noto-fonts noto-fonts-cjk noto-fonts-emoji ttf-dejavu # noto-fonts-cjk 包含了思源黑体/宋体的中日韩版本显示中文足够你可以创建字体配置文件~/.config/fontconfig/fonts.conf来微调渲染参数但非必需。8.2 安装中文输入法Fcitx5Wayland下的中文输入法Fcitx5是主流选择。sudo pacman -S fcitx5 fcitx5-chinese-addons fcitx5-gtk fcitx5-qt fcitx5-configtool配置环境变量编辑~/.pam_environment文件如果不存在则创建vim ~/.pam_environment加入以下内容GTK_IM_MODULE DEFAULTfcitx QT_IM_MODULE DEFAULTfcitx XMODIFIERS DEFAULT\imfcitx SDL_IM_MODULE DEFAULTfcitx GLFW_IM_MODULE DEFAULTibus关键一步在Niri的启动命令中注入Fcitx5。修改~/.config/niri/config.toml中的startup部分startup [ # ... 其他启动项 { spawn [ fcitx5, -d ] }, # 启动Fcitx5守护进程 ]重启Niri会话或注销再登录。在终端输入fcitx5-configtool可以图形化配置输入法添加“Pinyin”输入引擎。通常按CtrlSpace切换中英文。8.3 安装常用软件通过pacman和yay安装你需要的软件。# 浏览器 sudo pacman -S firefox # 文件管理器 sudo pacman -S nemo # 文本编辑器 (VS Code via AUR) yay -S visual-studio-code-bin # 音乐播放器 sudo pacman -S mpv # 办公套件 sudo pacman -S libreoffice-fresh8.4 配置WaybarWaybar的配置文件在~/.config/waybar/config和~/.config/waybar/style.css。你可以从默认配置开始修改。一个简单的config示例如下// ~/.config/waybar/config { layer: top, position: top, height: 30, modules-left: [custom/launcher, wlr/workspaces], modules-center: [clock], modules-right: [pulseaudio, network, battery, tray], clock: { format: {:%Y-%m-%d %H:%M} } }通过修改这些配置你可以让状态栏显示你需要的信息。9. 常见问题与排查思路在搭建过程中你几乎一定会遇到问题。以下是典型问题的排查路径。问题现象可能原因排查方式解决方案系统启动后黑屏只有光标或直接回到登录界面1. 显卡驱动未正确安装或加载。2. Wayland合成器Niri启动失败。3. DMS会话配置错误。1. 按CtrlAltF2切到TTY登录。2. 检查journalctl -u dms.service -b日志。3. 手动运行niri看报错。1. 根据显卡型号重装驱动更新内核linux包。2. 检查Niri配置语法确保~/.config/niri/config.toml无误。3. 检查/usr/share/wayland-sessions/niri.desktop文件是否存在且Exec路径正确。Niri能启动但键盘鼠标无响应用户未加入input组或权限问题。groups命令查看当前用户所在组。sudo usermod -aG input yourusername注销并重新登录。无法连接WiFiNetworkManager未运行或未配置。1.systemctl status NetworkManager。2. 在TTY下使用nmtui文本UI或nmcli配置网络。sudo systemctl enable --now NetworkManager。在Niri中可安装nm-applet并加入startup。中文显示为方块未安装中文字体。在终端用fc-list :langzh查看已安装的中文字体。安装noto-fonts-cjk等中文字体包。Fcitx5输入法不生效1. 环境变量未正确设置。2. Fcitx5未启动。3. 未在Niri启动项中启动。1.echo $GTK_IM_MODULE等检查变量。2. ps auxgrep fcitx5检查进程。br3. 检查Niri配置的startup。Waybar不显示或样式错乱配置文件路径错误或语法错误。1. 检查~/.config/waybar/下是否有config和style.css。2. 运行waybar -c ~/.config/waybar/config看输出。1. 确保配置文件是有效的JSON。2. 参考Waybar官方Wiki或社区配置。截图快捷键无效1.grim/slurp未安装。2. 快捷键绑定错误。1. 确认软件已安装。2. 在终端手动运行grim -g “$(slurp)“ -wl-copy测试。通用排查命令journalctl -u dms.service -b查看DMS本次启动的日志。journalctl -b -p 3查看本次启动的所有错误级别及以上的日志。niri --version检查Niri版本。ls -la ~/.config/niri/检查配置文件权限。echo $XDG_SESSION_TYPE确认当前会话类型是否为wayland。10. 最佳实践与进阶调校指南系统跑起来只是开始让它更贴合你的习惯才真正体现Arch的精髓。10.1 配置管理版本化将你的~/.config/niri/~/.config/waybar/等配置文件目录用Git管理起来上传到GitHub或Gitee。这样重装系统或更换电脑时可以快速恢复。10.2 性能与资源监控安装htop或btop来监控系统资源。使用nvidia-smiNVIDIA或radeontopAMD监控显卡状态。Niri本身非常轻量如果感觉卡顿首先排查是否是某个特定应用特别是XWayland应用导致的。10.3 混成器效果Niri内置了一些动画效果你可以在配置文件的[animations]部分调整。例如[animations] # 启用动画 enable true # 窗口打开/关闭动画时长毫秒 window-open-duration 300 window-close-duration 30010.4 多显示器支持在Niri配置中可以配置多显示器。你需要知道显示器的输出名称如HDMI-A-1,DP-1使用wlr-randr命令可以列出。[output.HDMI-A-1] scale 1.0 mode 1920x108060Hz position 0,0 [output.DP-1] scale 1.5 # HiDPI缩放 mode 2560x1440144Hz position 1920,0 # 放在HDMI显示器的右边10.5 备份与恢复定期备份你的用户配置文件~/.config/和已安装软件列表。# 生成已显式安装的软件包列表 pacman -Qqe pkglist.txt # 备份配置文件示例 tar -czf config_backup.tar.gz ~/.config/niri ~/.config/waybar ~/.config/foot新系统安装后可以通过yay -S - pkglist.txt来批量安装软件并解压配置文件。从Live USB启动到看到一个完全由自己搭建的、响应迅速、布局合理的平铺式桌面这个过程带来的成就感远超直接使用一个现成的发行版。你不仅得到了一个高度定制化的桌面环境更重要的是你清晰地理解了Linux内核、驱动、显示服务器、显示管理器、窗口合成器、状态栏、启动器等组件是如何各司其职、协同工作的。这套ArchNiriDMS的组合是一个完美的学习平台和生产力起点。它轻量、现代且完全在你的掌控之中。接下来你可以继续探索更深入的Niri配置自定义键位、布局规则、窗口规则。美化Waybar编写CSS添加更多模块天气、股票、系统监控。探索其他Wayland原生应用如swaylock锁屏、swayidle休眠管理。配置脚本自动化用脚本管理多显示器配置、夜间模式切换等。遇到问题不要慌Arch Wiki、Niri的GitHub Issues页面以及相关的社区论坛是你最好的朋友。记住每一个问题的解决都是你对Linux系统理解加深的一步。现在你的桌面已经就绪是时候用它去创造点什么了。建议将你的配置备份好这篇指南也可以收藏起来以备不时之需。
返回列表