Matugen の配色生成とアプリ反映

このページの目次

Matugen は画像や色からパレットを作り、テンプレートへ埋め込む。起動済みアプリの色が変わるかは、そのアプリの読み込み方法にも依存する。生成と反映を分けて調べる。

4.1.0 で確認した例を独立ディレクトリで試し、正式テーマへ接続するのは後にする。

四つの段階

段階生成物問題の例
入力画像、色、明暗画像なし、モード不一致
パレットprimary、surface など役割や方式の選択
テンプレートアプリ専用設定構文やパス
反映実行中の読み込みファイルは新しく状態は古い

surface と on_surface は背景と前景の組、primary は強調に使う。単色の好みだけで選ばず、選択、警告、無効状態も確認する。

隔離した生成例

新しい matugen-lab などへ移動し、ghostty.template を保存する。

background = {{colors.surface.default.hex}}
foreground = {{colors.on_surface.default.hex}}
cursor-color = {{colors.primary.default.hex}}

同じ場所の config.toml:

[config]

[templates.terminal]
input_path = "ghostty.template"
output_path = "generated.theme"

その場所から明示設定で実行する。

matugen -c ./config.toml color hex '#6750a4'

出力を見る。

cat generated.theme

実色が三つあり、未展開の記号がないことを確認する。4.1.0 の hex は既に # を含むため、追加すると ## になる。更新後も一時出力で形式を確認する。Matugen

画像を使う場合は実ファイルを置いて matugen -c ./config.toml image ./wallpaper.png とする。明暗は --mode light / dark で指定できる。

アプリごとの構文

Waybar 用 GTK CSS の例:

@define-color main-bg {{colors.surface.default.hex}};
@define-color main-fg {{colors.on_surface.default.hex}};
@define-color accent {{colors.primary.default.hex}};

Ghostty は key/value、Zellij は KDL である。まず静的設定を動かし、同じ構造を生成する。入出力パス、書き込み可能な場所、対象の検証器を確認してから正式パスへ反映する。

hook と再読み込み

最初は post_hook なしで生成を確認する。hook はアプリへの通知であり、出力検査の代わりではない。

Ghostty はテーマと検証・再読み込み、Waybar は独立設定と指定インスタンス、GTK は CSS と新規窓、Zellij は KDL と新旧セッション、外殻は公開テーマ API をそれぞれ確認する。

SIGUSR2 を全アプリへ一般化しない。旧 OSC 一括送信は独自コードで、対象選択や復用器の転送条件がある。公式に対応した反映方法を優先する。

現在の Caelestia 連携

外殻が壁紙、明暗、方式を選び、caelestia-sync-app-theme が名前を Matugen へ変換する。壁紙状態を読み、ファイルロックで並行生成を制限する。

アプリ用出力には Ghostty、Zellij、GTK、KDE、Fuzzel、Fcitx5 がある。外殻自身のテーマ状態は ii 時代のファイルではない。同じ入力でも役割の対応が異なれば色は一致しない。

一部だけ変わらないとき

入力、モード、実際の config を確認し、独立生成の終了状態と内容を見る。正式ファイルの場所・時刻とアプリの読み込み先を比較し、再読み込みを単独実行する。

新しい窓だけ正しければ実行中反映、両方誤るなら生成とテーマ指定を調べる。復旧は保存済みテーマと設定を戻してから再読み込みする。複数アプリの生成は全体トランザクションではなく、部分反映も確認が必要である。