Quickshell 是 KDE Plasma 桌面环境的一个脚本插件,旨在提供一种简洁、即时的方式来定制桌面行为。它使用 JavaScript/QtScript 语法,让用户可以在不编写完整的 KDE 桌面插件的前提下,直接在面板或全局范围内声明快捷键、窗口规则、窗口布局等。
1. 背景与定位
KDE Plasma 本身提供了丰富的配置选项,但很多高级功能仍需通过 KDE 框架的 C++/QML 插件实现。对于普通用户而言,编写、编译插件门槛较高。Quickshell 把这些需求抽象为脚本层面,用户只需编辑一段代码并保存,即可即时生效。
2. 主要特性
- 即时生效:保存脚本后自动重新加载,无需重启 Plasma。
- 全局或局部作用域:可以在整个桌面、特定屏幕、特定活动(activities)下生效。
- 丰富的 API:提供
panel, shortcut, window, global 等对象,支持查询窗口、修改属性、发送 DBus 信号等。 - 兼容性:基于 Qt5/Qt6,随 Plasma 5.27+ 默认包含,无需额外依赖。
- 安全沙箱:脚本在受限的 QJSEngine 中运行,防止恶意代码破坏系统。
3. 安装方式
3.1 通过系统包管理器
在基于 Debian/Ubuntu 的发行版上:
1
| sudo apt install plasma7-quickshell
|
在 Arch Linux:
1
| sudo pacman -S quickshell
|
3.2 手动编译(适用于最新开发版)
1
2
3
4
5
6
| git clone https://invent.kde.org/plasma/quickshell.git
cd quickshell
mkdir build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/usr
make -j$(nproc)
sudo make install
|
4. 基本用法示例
4.1 快捷键打开终端
1
2
3
4
| shortcut("Meta+Return", () => {
// 调用系统默认终端
callDBus("org.kde.kglobalaccel", "/Component", "org.kde.kglobalaccel.Component", "triggerShortcut", "terminal")
})
|
4.2 动态面板颜色
1
2
3
4
5
| panel.on("paint", (p) => {
const hour = new Date().getHours()
if (hour >= 18) p.setBackgroundColor("#222222")
else p.setBackgroundColor("#ffffff")
})
|
4.3 自动将新打开的窗口移动到特定虚拟桌面
1
2
3
| window.on("added", (w) => {
if (w.isDialog()) w.moveToDesktop(3)
})
|
5. 高级技巧
- 使用外部配置文件:通过
loadFile("$HOME/.config/quickshell/custom.js") 引入用户自定义库。 - 结合 KWin 脚本:Quickshell 能调用 KWin 的脚本 API,实现窗口平铺、动画等高级效果。
- 调试:在控制台输入
quickshell --debug 可以看到脚本的错误日志,帮助快速定位问题。
6. 常见问题
- 脚本报错不生效:检查日志文件
~/.local/share/quickshell/quickshell.log,确保语法符合 ECMAScript 2021 标准。 - 快捷键冲突:使用
listShortcuts() 查看现有快捷键,必要时在系统设置中解除冲突。 - 脚本不加载:确认文件路径在
~/.config/quickshell/ 下,并且文件名以 .js 结尾。
7. 结语
Quickshell 为 KDE 用户打开了“一行代码即装饰桌面”的可能性。无论是想为面板添加动态颜色,还是编写复杂的窗口管理逻辑,都可以在几分钟内完成。建议先从官方示例脚本入手,逐步扩展自己的需求。期待看到社区大家用 Quickshell 打造出更多创意十足的桌面体验!