Quickshell 是什么
Linux 上做桌面部件的工具箱,官网 quickshell.org。状态栏、通知弹窗、锁屏、音量面板、壁纸切换器,这些东西用它来写。
它解决什么#
上一篇讲 Hyprland 时提过,那种窗口管理器只管窗口怎么摆,状态栏、通知、锁屏都要另外找程序拼。常见的拼法是 Waybar 加 mako 加 hyprlock,各是各的程序,各有各的配置格式,样式对不齐,之间也不通消息。
Quickshell 换一个思路:这些部件全都自己写,用同一种语言,跑在同一个进程里。状态栏上的音量图标和按音量键弹出的那个提示,可以共用一份状态。
用什么写#
QML,Qt 的界面语言。长这样:
import Quickshell
import QtQuick
PanelWindow {
anchors {
top: true
left: true
right: true
}
implicitHeight: 30
Text {
anchors.centerIn: parent
text: "hello world"
}
}
这段就是屏幕顶部一条 30 像素高的栏,中间写着一行字。anchors 指定贴哪几条边,贴住之后 Quickshell 会自动向窗口管理器申请这块空间,其他窗口不会被它盖住。
QML 是声明式的:你写界面长什么样、数据变了界面怎么跟着变,不用自己写"收到消息 → 找到那个控件 → 改它的文字"这种流程。
存盘就生效#
配置放在 ~/.config/quickshell/,每个子目录里有一个 shell.qml 就算一套配置。跑起来之后编辑文件,存盘界面立刻变,不用重启。改一个像素挪一下位置,改完扭头就能看见。
自带的接口#
写桌面部件要拿系统数据。Quickshell 内置了这些:
- PipeWire:音量、当前播放设备
- MPRIS:正在放什么歌,暂停下一首
- 系统托盘:那些图标
- PAM:验证密码,锁屏要用
- 蓝牙
- Hyprland 和 i3/Sway:当前工作区、窗口标题这类窗口管理器内部状态
官方只内置了 Hyprland 和 i3 两家的接口。用别的窗口管理器,得自己通过 socket 或者调命令去拿。
代价#
- 得会写代码。Waybar 改个配置文件就能用,Quickshell 是让你自己写一个状态栏出来
- 从空白开始。它是工具箱不是成品,装完什么都没有
- API 还在变。官方明说后续版本会有破坏性改动,升级时要照迁移指南改配置
现状#
LGPL 3 开源,主力开发者 outfoxxed。源码在 GitHub,文档在 quickshell.org/docs。Wayland 和 X11 都支持。
社区里有人把整套配置开源出来,可以直接拿来用或者当参考,GitHub 上搜 quickshell 能找到不少。