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
    }
}

グラフィカル端末から起動する。

qs -c doc-clock

左上に表示される。exclusiveZone が 0 なのでタイル領域を予約せず、既存 UI に重なる場合がある。操作を妨げない場所で試し、起動端末の Ctrl+C で終了する。Quickshell 入門

clock.date の変化で text の式が再評価される。文字ウィジェットを手動更新するループは不要である。

システムサービスへの拡張

音声、ネットワーク、再生状態はサービスが取得し、モジュールが描画し、操作をサービスへ返す。

変更最初に見るもの
字体、余白、場所外観設定と部品
音声出力切り替えサービス API と呼び出し
値が更新されない接続、購読、システム状態
部品が出ない有効条件と出力選択

音量だから defaultSink.volume と推測しない。素の API と外殻ラッパーは異なり、既定デバイスがまだない場合もある。実際の型と版を調べる。

Caelestia の設定層

shell.json は外観、アプリ、空閑、画面などの公開設定。quickshell/caelestia はモジュール、サービス、資源、コンパイル済み拡張。上流ソースと差分は実装変更の来歴を保持する。

公開設定で表せるならそれを優先する。パッケージ配置ファイルへの直接変更は更新で消える場合がある。上流の導入・変更説明

ローカルの多画面制限、縦画面ロック、壁紙サイズ調整は、この机の条件に対する適合である。

起動とログ

qs -c caelestia -n は同名の重複起動を避ける。ユーザーサービスで管理している場合は別経路から起動しない。例のサービス名で確認する。

systemctl --user status caelestia-shell.service
journalctl --user -u caelestia-shell.service -b -n 80 --no-pager

導入方法によって名前は異なる。import エラーは実行環境や拡張パス、不明プロパティは版、操作だけ失敗する場合は IPC の対象インスタンスを調べる。

更新時に来歴を残す

上流版、コミット、ローカル diff、ユーザー設定を保存して更新する。起動、バー、通知、ロック、画面選択を確かめてからテーマ hook を見る。

現在の Matugen 連携は追加スクリプトで、以前の ii colors.json 経路ではない。配色経路とセッション寿命を参照する。