Quickshell と Caelestia の部品、サービス、変更管理
このページの目次
Quickshell は QML のデスクトップ部品を動かす環境である。Caelestia と ii はその上の完全な外殻で、それぞれ設定形式やパスが異なる。
現在例は Caelestia Shell v2.4.0。最初に独立した小部品を作り、その後で外殻の構造を見る。
独立した時計
Quickshell、QtQuick、対応 Wayland セッションで、~/.config/quickshell/doc-clock/shell.qml を作る。
import Quickshell
import QtQuick
PanelWindow {
anchors {
top: true
left: true
}
implicitWidth: 240
implicitHeight: 48
exclusiveZone: 0
color: "#1e2530"
SystemClock {
id: clock
precision: SystemClock.Seconds
}
Text {
anchors.centerIn: parent
text: Qt.formatDateTime(clock.date, "hh:mm:ss")
color: "#f1f4f8"
font.pixelSize: 22
}
}
グラフィカル端末から起動する。
左上に表示される。exclusiveZone が 0 なのでタイル領域を予約せず、既存 UI に重なる場合がある。操作を妨げない場所で試し、起動端末の Ctrl+C で終了する。Quickshell 入門
clock.date の変化で text の式が再評価される。文字ウィジェットを手動更新するループは不要である。
システムサービスへの拡張
音声、ネットワーク、再生状態はサービスが取得し、モジュールが描画し、操作をサービスへ返す。
| 変更 | 最初に見るもの |
|---|---|
| 字体、余白、場所 | 外観設定と部品 |
| 音声出力切り替え | サービス API と呼び出し |
| 値が更新されない | 接続、購読、システム状態 |
| 部品が出ない | 有効条件と出力選択 |
音量だから defaultSink.volume と推測しない。素の API と外殻ラッパーは異なり、既定デバイスがまだない場合もある。実際の型と版を調べる。
Caelestia の設定層
shell.json は外観、アプリ、空閑、画面などの公開設定。quickshell/caelestia はモジュール、サービス、資源、コンパイル済み拡張。上流ソースと差分は実装変更の来歴を保持する。
公開設定で表せるならそれを優先する。パッケージ配置ファイルへの直接変更は更新で消える場合がある。上流の導入・変更説明
ローカルの多画面制限、縦画面ロック、壁紙サイズ調整は、この机の条件に対する適合である。
起動とログ
qs -c caelestia -n は同名の重複起動を避ける。ユーザーサービスで管理している場合は別経路から起動しない。例のサービス名で確認する。
導入方法によって名前は異なる。import エラーは実行環境や拡張パス、不明プロパティは版、操作だけ失敗する場合は IPC の対象インスタンスを調べる。
更新時に来歴を残す
上流版、コミット、ローカル diff、ユーザー設定を保存して更新する。起動、バー、通知、ロック、画面選択を確かめてからテーマ hook を見る。
現在の Matugen 連携は追加スクリプトで、以前の ii colors.json 経路ではない。配色経路とセッション寿命を参照する。