10 分钟掌握 dms 命令行:从一条命令到 DMS IPC 通信的完整实战
【免费下载链接】DankMaterialShellDesktop shell for wayland compositors built with Quickshell & GO, optimized for niri, hyprland, sway, MangoWC, labwc, and MiracleWM.项目地址: https://gitcode.com/gh_mirrors/da/DankMaterialShell
DMS(DankMaterialShell)是给 niri、hyprland、sway 这类 Wayland 合成器用的桌面外壳,随它一起的 dms 命令行能让你在终端里调亮度、换壁纸、截图、发通知;再配合 DMS IPC 通信,你自己的脚本和快捷键一行命令就能唤起桌面启动器。
想在入夜时自动调低亮度、开启夜灯,下载完成时弹一条通知?手写一堆 wl-* 和背光脚本很烦,dms 把这些都收进了一条命令里。
30 秒跑通第一条 dms 命令
装好 DMS 后终端里就有 dms。先确认它在不在:
dms version看到类似dms v0.6.2的输出,说明命令行可用,顺便知道了版本号。之后所有功能都是dms <子命令> <参数>,忘了用法就加--help。
一条命令搞定屏幕亮度与夜灯
先看看有哪些亮度设备,设备名就是 set 的第一个参数:
dms brightness list dms brightness set intel_backlight 40前者列出背光设备,后者把指定设备调到 40%;外接显示器走 DDC 控制,加--ddc参数即可。夜灯走 IPC 更省事:dms ipc call night schedule 20:00 06:00让它 8 点开、6 点关,不用再自己写定时任务。
一键换壁纸、生成主题
dms ipc call wallpaper set ~/Pictures/wall.jpg dms matugen generate第一条直接换壁纸,支持分屏时给指定显示器设不同图(wallpaper setFor DP-2 <路径>)。第二条从当前壁纸提取配色,生成一整套桌面主题并应用。深浅色模式用dms ipc call theme toggle切换。
截图与剪贴板:几条 dms 命令的事
dms screenshot region dms clipboard copy "要复制的内容"region拉框区域截图并自动保存,full全屏、window单窗口同理。剪贴板复制不依赖任何后台;看最近复制过什么,跑dms clipboard history(需要 DMS 后端在运行);dms cl watch cat则把每次剪贴板变化实时打到终端,调试脚本很顺手。
让快捷键和脚本唤起桌面界面
这是 DMS IPC 通信最有价值的地方:任何程序都能用同一套语法跟桌面喊话。以 niri 配置为例:
binds { Mod+Space { spawn "qs" "-c" "dms" "ipc" "call" "spotlight" "toggle"; } }Super+Space 唤起应用启动器。Hyprland 里写成bind = SUPER, Space, exec, dms ipc call spotlight toggle也一样。dms keybinds list能查当前合成器已注册的所有绑定。
DMS IPC 通信机制一句话说清
IPC(进程间通信,说白了就是两个程序互相喊话)在这里指:运行中的 dms 后端进程在 Unix 套接字$XDG_RUNTIME_DIR/danklinux.sock上监听,你的程序统一调用dms ipc call <目标> <函数> [参数],返回一行纯文本——成功信息、状态或错误。
不用背函数表,桌面运行时跑dms ipc list就能看到当前所有可调用的目标和函数,完整清单见仓库里的 docs/IPC.md。常用几个:audio setvolume 50调音量、mpris playPause切播放、lock isLocked查是否锁屏、defaultApp browser打开默认浏览器。
端到端实战:自动夜间桌面小脚本
存成~/bin/night.sh,挂进 cron 或绑个快捷键:
#!/bin/bash hour=$(date +%H) [ "$hour" -ge 20 ] || [ "$hour" -lt 6 ] || exit 0 dms ipc call night enable dms brightness set intel_backlight 30 dms notify "夜间模式" "已开启夜灯,亮度 30%"逐行看:取当前小时;不在 20 点到 6 点之间就退出;通过 IPC 开启夜灯;把背光降到 30%(设备名换成你brightness list查到的);最后发一条 DMS 桌面通知确认结果。中间三行全是 dms 命令,没有手写任何系统路径。
踩坑速查:dms 常见问题 5 条
- 症状:
dms ipc call ...连不上 →原因:DMS 外壳没在运行,后端没监听 →解决:dms doctor一键体检并修复环境 - 症状:
dms brightness set找不到设备 →原因:外接显示器走 DDC,默认不列 →解决:dms brightness set DP-1 60 --ddc - 症状:
dms clipboard history提示需要服务端 →原因:dms 后端服务未启动 →解决:systemctl --user status dms.service查看并重启服务 - 症状:快捷键绑了按了没反应 →原因:合成器配置里调的还是旧命令 →解决:改成
dms ipc call spotlight toggle并重载配置 - 症状:不知道某函数参数长什么样 →原因:离线文档可能落后于版本 →解决:桌面运行时跑
dms ipc list拿实时清单
dms 命令行和 DMS IPC 通信是同一套能力的两个入口:你在终端能做的,快捷键和脚本也能做,还省去了手写系统命令。卡住了先跑dms doctor,更多命令参考 docs/IPC.md;发现 bug 或想要新功能,直接到项目 issue 列表提交即可。
【免费下载链接】DankMaterialShellDesktop shell for wayland compositors built with Quickshell & GO, optimized for niri, hyprland, sway, MangoWC, labwc, and MiracleWM.项目地址: https://gitcode.com/gh_mirrors/da/DankMaterialShell
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考