Dank Material Shell安装
Debian安装Dank Material Shell的折腾记录
1. 效果图:

2. Niri 和 Dank Material Shell
2.1 Niri
Niri 是一款创新的 可滚动平铺式 Wayland 合成器(scrollable-tiling Wayland compositor),采用 Rust 语言编写,自 2023 年发布以来迅速获得了大量关注,GitHub 星标数已超过 17,000,超越了 Sway 并正在追赶 Hyprland 。
Niri 最大的特色是其水平无限滚动的工作空间:
- 列式布局:窗口以列(column)的形式水平排列,每列可包含多个垂直堆叠的窗口
- 无限滚动:工作空间不是固定大小的桌面,而是一条无限延伸的水平带。当打开新窗口时,现有窗口不会被压缩,而是向左右滚动展示
- 动态工作空间:工作空间按需动态创建和销毁,空工作空间会自动清理,始终保持整洁
这种设计灵感来源于 GNOME 的 PaperWM 扩展,但 Niri 作为独立的 Wayland 合成器,解决了 PaperWM 在多显示器隔离方面的局限性
| 特性 | 说明 |
|---|---|
| 多显示器支持 | 每个显示器拥有独立的工作空间,窗口不会溢出到相邻显示器,支持混合 DPI 和分数缩放 |
| 标签页功能 | 同一列中的窗口可作为标签页切换,节省水平空间 |
| 概览模式 (Overview) | 按 Super+O 可缩放查看所有窗口和工作空间,支持键盘导航 |
| 浮动窗口 | 支持将窗口切换为浮动模式,自动处理对话框等子窗口 |
| 内置截图工具 | 集成截图 UI,支持区域选择和窗口录制 |
| 实时重载配置 | 修改 config.kdl 后无需重启会话即可生效 |
| XWayland 支持 | 通过 xwayland-satellite 运行 X11 应用(从 25.08 版本开始集成) |
| 视觉效果 | 支持渐变边框(Oklab/Oklch 色彩空间)、圆角、模糊和自定义动画着色器 |
2.2 Dank Material Shell
Dank Material Shell(简称 DMS)是一个为 Wayland 合成器打造的现代桌面 Shell,采用 Quickshell(QtQuick/QML 前端框架)和 Go(后端)构建,旨在提供类似 GNOME Shell 或 KDE Plasma 的完整桌面体验,但专为平铺式窗口管理器优化 。
DMS 解决了平铺式窗口管理器(如 Niri、Hyprland、Sway)“开箱即用”能力不足的问题。传统平铺 WM 通常只提供窗口管理功能,用户需要自行配置状态栏、启动器、系统托盘、通知中心等组件。DMS 将这些全部打包,提供一站式桌面环境,同时保留平铺 WM 的高效特性 。
DMS 采用客户端-服务器架构 :
- 后端(dms):Go 编写的核心,管理 D-Bus 接口(NetworkManager、蓝牙、CUPS 打印机等)、Wayland 协议(如
wlr-gamma-control用于夜间模式),并通过 Unix Socket 暴露 JSON API - 前端(Quickshell):QML 编写的 UI,负责小部件、模态框和用户体验
- 可选组件:
dgop:系统遥测服务,为资源监控小部件提供数据dsearch:极速文件系统搜索引擎dankinstall:自动化安装和管理工具
DMS 支持的渲染器:
| 合成器 | 支持程度 |
|---|---|
| Niri | 完全支持(推荐),包括工作区切换、概览集成、显示器关闭等 |
| Hyprland | 完全支持,提供专门的 Home Manager 模块 |
| Sway / dwl (MangoWC) | 支持,但部分功能受限(如无工作区切换器集成) |
| 其他 | 基础功能可用,但缺少合成器特定集成 |
3. 安装教程
这里为了方便,我们不手动配置Niri,转而使用DMS
DMS 支持 Arch,Fedora,Debian 这几个Linux发行版以及其衍生版本 (所以理论上Kali Linux也能装)
3.1 安装基准系统
这里我们使用Debian 13.4.0 KDE
Debian 13.4.0 Live KDE: 下载链接
- 选择 Live System (amd64)

- 点击 Install Debian

- 选择 简体中文

- 时区选择 上海

- 键盘布局 默认

- 磁盘选择 抹除磁盘 (后面看情况会出双系统的教程)

- 设置用户名与密码

- 点击 安装

- 等待安装完毕

- 点击 完成

3.2 安装 Niri 和 Dank Material Shell
- 打开 Kconsole 并挂好 终端代理
这里虚拟机难用,用SSH在我外面的终端上操作

- 更新一下 apt 软件源
这里的话,等一下安装DMS时它会添加外部镜像源,也需要挂代理,所以不换国内源了
sudo apt update- 使用官方安装命令进行安装
curl -fsSL https://install.danklinux.com | sh
这里直接 Enter 继续

这里 WM 选第一个

Terminal 的话按自己偏好选就行,这里我选Kitty

这里的话 Enter 继续

输入你的密码然后回车开始安装

等待脚本执行

出现这个界面就说明安装成功了,此时我们注销并重新登录,记得登录时在SDDM的会话那里把 KDE Wayland 改为 Niri
3.3 安装 DankGreeter
现在我们已经安装好了DMS,但是我们的窗口管理器还是 KDE 默认的 SDDM , 风格不统一,所以我们安装 Dank 官方的 DankGreeter
3.3.1 安装命令
- 使用 dms-cli 安装:
dms greeter install- Arch Linux (AUR)
paru -S greetd-dms-greeter-git# Or with yayyay -S greetd-dms-greeter-git- Fedora
sudo dnf copr enable avengemedia/danklinuxsudo dnf install dms-greeter- Debian
sudo apt install dms-greeter3.3.2 初始化 DankGreeter
dms greeter enable3.3.3 同步主题
dms greeter sync这里可能会提示是否将当前用户加入用户组,选择是并且输入账号密码就行
3.3.4 效果展示

4. 系统优化
4.1 安装 Nerd Font
我用的是FiraCode Nerd Font Regular,下载链接
Nerd Font:FireCode
4.2 设置Kitty Terminal
配置文件路径:
~/.config/kitty/kitty.conf
4.2.1 设置Font
# Font Confgurationfont_size 12.0font_family FiraCode Nerd Font4.2.2 设置默认Shell
# Default Shellshell /bin/zsh4.2.3 设置半透明
# Window Configurationbackground_opacity 0.94.3 添加 Emoji 选择器
4.3.1 安装依赖
sudo apt install wofi wl-clipboard jq curl| 软件包 | 备注 |
|---|---|
| wofi | Emoji选择器 |
| wl-clipboard | 剪切板支持 |
| jq | json支持 |
| curl | 这个不用说了 |
4.3.2 编写启动脚本
sudo nano /usr/bin/wofi-emoji- 内容
#!/bin/bash
DATA_DIR="$HOME/.local/share"EMOJI_FILE="$DATA_DIR/emojis.json"FAVORITES_FILE="$DATA_DIR/emoji-favorites.txt"
# 下载数据[ ! -f "$EMOJI_FILE" ] && curl -sL \ https://raw.githubusercontent.com/muan/emojilib/main/dist/emoji-en-US.json \ -o "$EMOJI_FILE"
# 加载收藏favorites=""[ -f "$FAVORITES_FILE" ] && favorites=$(cat "$FAVORITES_FILE" | sed 's/^/⭐ /')
# 构建列表list="$favorites$(jq -r 'to_entries | .[] | .key + " " + (.value | join(" "))' "$EMOJI_FILE")"
# 选择selected=$(echo "$list" | wofi --dmenu \ --prompt "Emoji (copied):" \ --width 700 \ --height 500 \ --insensitive \ --cache-file /dev/null | sed 's/^⭐ //')
# 复制到剪贴板if [ -n "$selected" ]; then emoji=$(echo "$selected" | awk '{print $1}')
# 复制到剪贴板 echo -n "$emoji" | wl-copy
# 添加到收藏 [ -f "$FAVORITES_FILE" ] && grep -v "^$emoji$" "$FAVORITES_FILE" > "$FAVORITES_FILE.tmp" || true echo "$emoji" > "$FAVORITES_FILE" [ -f "$FAVORITES_FILE.tmp" ] && head -19 "$FAVORITES_FILE.tmp" >> "$FAVORITES_FILE" rm -f "$FAVORITES_FILE.tmp"fi- 赋予执行权限
sudo chmod +x /usr/bin/wofi-emoji4.3.3 编写CSS样式
window { margin: 5px; border: 2px solid #7aa2f7; border-radius: 10px; background-color: #1a1b26; font-family: "Noto Color Emoji", "JetBrains Mono";}
#input { margin: 10px; padding: 10px; border-radius: 5px; border: none; background-color: #24283b; color: #a9b1d6;}
#inner-box { margin: 10px;}
#entry { padding: 8px; border-radius: 5px;}
#entry:selected { background-color: #7aa2f7; color: #1a1b26;}
#text { color: #c0caf5;}4.3.4 绑定 Niri 快捷键
nano .config/niri/dms/binds.kdl- 添加:
// +++ Emoji-Seletor +++binds { Mod+E hotkey-overlay-title="Open Emoji" { spawn "wofi-emoji"; }}使用 Mod-E 打开 Emoji 选择器
4.3.5 效果例图

4.4 安装 fastfeach
4.4.1 安装依赖
sudo apt install fastfetch4.4.2 下载美化包
- 下载
wget https://github.com/sqlsec/fastfetch/releases/download/v0.1/fastfetch-for-Linux.zip- 备份原配置
mv $HOME/.config/fastfetch $HOME/.config/fastfetch.bak- 写入新配置
cd .configwget https://github.com/sqlsec/fastfetch/releases/download/v0.1/fastfetch-for-Linux.zipunzip fastfetch-for-Linux.zip && rm fastfetch-for-Linux.zip不同的
.jsonc就是不同的预设方案,如果启用的话,将其重命名为config.jsonc即可切换为默认的预设方案
4.4.3 我的配置
- 新建配置文件夹
mkdir ~/.config/fastfetch- 复制文件夹
cd ./fastfetch-for-linux/fastfetch
cp -r ./anime ~/.config/fastfetch- 写入新配置
nano ./fastfetch-for-linux/fastfetch/config.jsonc{ "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", "logo": { "type": "kitty", "source": "~/.config/fastfetch/anime/cat-1.jpg", "height": 18, }, "display": { "separator": " : " }, "modules": [ { "type": "custom", "format": "┌────────────────────────────────────────────────────────┐" }, { "type": "title", "key": " " }, { "type": "custom", "format": "└────────────────────────────────────────────────────────┘" }, { "type": "os", "key": " OS", "keyColor": "red" }, { "type": "kernel", "key": " Kernel", "keyColor": "red" }, { "type": "wm", "key": " WM", "format": "{2}", "keyColor": "yellow" }, { "type": "shell", "format": "{1} {4}", "key": " Shell", "keyColor": "blue" }, { "type": "memory", "key": " Memory", "keyColor": "blue" }, { "type": "uptime", "key": " Uptime ", "keyColor": "red" }, { "type": "host", "key": " Machine", "format": "{name}{?vendor} ({vendor}){?}", "keyColor": "red" }, "break", { "type": "colors", "paddingLeft": 2, "symbol": "circle" }, "break"
]}4.5 解决屏幕共享失败问题
系统安装完成后,我用飞书开会议时共享屏幕失败了,这里找到了一种解决方法:
https://forum.archlinuxcn.org/t/topic/15155
- 安装
xdg-desktop-portal-hyprland
apt install xdg-desktop-portal-hyprland- 修改
/usr/share/xdg-desktop-portal/niri-portals.conf的内容
[preferred]default=hyprland;gtk;org.freedesktop.impl.portal.Access=gtk;org.freedesktop.impl.portal.Notification=gtk;org.freedesktop.impl.portal.Secret=gnome-keyring;- 重启系统
5. 其余设置
5.1 系统样式设置
5.1.1 DankBar
Super+,打开DMS Settings- 进入 Dank Bar >> 设置
- 修改 位置 为 左

5.1.2 设置系统主题色
Super+,打开DMS Settings- 进入 主题与配色
- 修改 主题色 为 黄色

5.1.3 Window Gap
Super+,打开DMS Settings- 进入 主题与配色
- 在 niri布局覆盖 打开 覆盖间隙 并修改 窗口间隙 为
28px

5.2 软件的安装和修改
5.2.1 在 Chrome 里添加带代理的启动选项
- 修改
.local/share/applications/google-chrome.desktop
sudo nano .local/share/applications/google-chrome.desktop- 内容
[Desktop Entry]Actions=new-window;new-private-window;new-window-with-proxy;Categories=Network;WebBrowser;Comment=访问互联网Exec=/usr/bin/google-chrome-stable --ozone-platform=x11 %uGenericName[zh_CN]=网页浏览器GenericName=Web BrowserIcon=google-chromeMimeType=application/pdf;application/rdf+xml;application/rss+xml;application/xhtml+xml;application/xhtml_xml;application/xml;image/gif;image/jpeg;image/png;image/webp;text/html;text/xml;x-scheme-handler/http;x-scheme-handler/https;x-scheme-handler/google-chrome;Name=Google ChromeNoDisplay=falsePath=PrefersNonDefaultGPU=falseStartupNotify=trueTerminal=falseTerminalOptions=Type=ApplicationVersion=1.0X-KDE-SubstituteUID=falseX-KDE-Username=
[Desktop Action new-private-window]Exec=/usr/bin/google-chrome-stable --incognito --ozone-platform=x11Name[zh_CN]=新建隐身窗口Name=New Incognito Window
[Desktop Action new-window]Exec=/usr/bin/google-chrome-stable --ozone-platform=x11Name[zh_CN]=新建窗口Name=New Window
[Desktop Action new-window-with-proxy]Exec=/usr/bin/google-chrome-stable --ozone-platform=x11 --proxy-server="socks5://127.0.0.1:7897" %uName[zh_CN]=新建带代理的窗口Name=New Window With Proxy5.2.2 安装AppImage
这里以yakit为例
-
去官网下载最新的 AppImage 文件
-
解包 AppImage 文件
./Yakit.AppImage --appimage-extract这样会得到
squashfs-root文件夹,将它重命名为app
mv squashfs-root app- 新建
Yakit.desktop文件
nano .local/share/applications/Yakit.desktop- 写入以下内容
[Desktop Entry]Name=YakitExec="/home/tuf3i/UserApps/yakit/app/yakit" --on-sandbox # 改为可执行文件的具体路径Terminal=falseIcon=/home/tuf3i/UserApps/yakit/app/yakit.png # 改为图标的具体路径Type=ApplicationStartupWMClass=YakitX-AppImage-Version=1.4.6-403Comment=Yakit is for yaklang.io Electron GUI EntryCategories=Utility;6. 结尾
没有了喵,谢谢阅读

文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!