No description
Find a file
joe 0efa58d830 docs: AGENTS.md, INSTALL.md, README.md を追加
- AGENTS.md: 開発者向け指示ファイル(構成、CLI、注意点)
- INSTALL.md: インストール手順(システムインストール/ポータブル/ソース)、依存、動作確認、トラブルシューティング
- README.md: ユーザー向けドキュメント(基本使い方、具体例、コマンド一覧、フォーマット解説、応用テクニック、FAQ)
2026-04-25 17:43:26 +09:00
AGENTS.md docs: AGENTS.md, INSTALL.md, README.md を追加 2026-04-25 17:43:26 +09:00
INSTALL.md docs: AGENTS.md, INSTALL.md, README.md を追加 2026-04-25 17:43:26 +09:00
mate-panel-backup.py feat: export に --dry-run と stdout 出力を追加 2026-04-25 15:28:16 +09:00
README.md docs: AGENTS.md, INSTALL.md, README.md を追加 2026-04-25 17:43:26 +09:00

mate-panel-backup

MATE デスクトップの panel 設定を簡単にバックアップ・復元できるツールです。

パネルのレイアウト、アプレットの配置、ランチャー、ドロワーなど、すべての panel 設定を JSON/YAML/dconf フォーマットで保存・リストアできます。


特徴

  • 単一ファイル: 依存パッケージなしPython 標準ライブラリのみ)。dconf-cli が入っていればすぐに使えます。
  • 3つのフォーマット: JSON推奨, YAML, dconf 形式から選べます。
  • 自動バックアップ: backup コマンドで日時付きファイルが自動作成されます。
  • 差分表示: バックアップと現在設定の差分を一目で確認できます。
  • 安全な復元: restore コマンドは常にドライラン(変更プレビュー)を実行してから確認を取ります。
  • gsettings 対応: オプションでアプレット固有の設定も同時にバックアップできます。

インストール

クイックインストール

sudo install -m755 mate-panel-backup.py /usr/local/bin/mate-panel-backup

詳しくは INSTALL.md を参照してください。

前提条件

  • Python 3.10 以上match/case 文を使用)
  • dconf-clidconf dump/load/reset コマンドを含む)

基本の使い方

1. バックアップを作成する

最もシンプルな方法です。日時付きファイルが ~/.config/mate-panel-backups/ に自動保存されます。

mate-panel-backup backup

実行例:

バックアップ作成中... (mate-panel-backup-20260425_143022.json)
mate-panel の設定をエクスポート中...
  ソース: /org/mate/panel/
  フォーマット: json
  出力先: /home/user/.config/mate-panel-backups/mate-panel-backup-20260425_143022.json
  セット数: 127
  アプレット数: 5
  オブジェクト数: 8
  トゥーレベル数: 2
エクスポート完了!

2. バックアップファイルを確認する

mate-panel-backup list-backups

実行例:

バックアップ一覧 (/home/user/.config/mate-panel-backups):
----------------------------------------------------------------------
  mate-panel-backup-20260425_143022.json           12.3 KB  アプレット:5 オブジェクト:8
  mate-panel-backup-20260420_091500.json            8.7 KB  アプレット:3 オブジェクト:5
----------------------------------------------------------------------
合計: 2 件

3. 設定を復元する

mate-panel-backup restore ~/mate-panel-backup-20260425_143022.json

実行例:

⚠ 復元を開始します
  ソース: /home/user/mate-panel-backup-20260425_143022.json
  この操作は現在のパネル設定を上書きします

--- ドライラン ---
  ドライラン: 127 セット適用予定(変更なし)
ドライラン完了!

復元しますか?[y/N]: y

  127 セットを適用しました
インポート完了mate-panel を再起動してください。

注意: restore コマンドは常にまずドライランを実行し、その後で確認プロンプトを表示します。安全のため y または yes と明示的に入力しないと実行されません。

4. 現在設定との差分を確認する

mate-panel-backup diff ~/mate-panel-backup-20260425_143022.json

実行例:

差分レポート: mate-panel-backup-20260425_143022.json
============================================================
  追加された設定: 2
  削除された設定: 0
  変更された設定: 3
  同一の設定:     122

【追加】バックアップに存在しない新しい設定
  + objects/9/applet-iid: 'application://firefox.desktop'

【変更】値が変更された設定表示上限20件
  ~ toplevels/bottom/size
    旧: 48
    新: 36

コマンド一覧

コマンド 説明
backup バックアップを作成(日時付き) mate-panel-backup backup
export [FILE] 設定をエクスポート mate-panel-backup export backup.json
import FILE 設定をインポート mate-panel-backup import backup.json
list-backups バックアップ一覧を表示 mate-panel-backup list-backups
diff FILE 現在設定との差分を表示 mate-panel-backup diff backup.json
restore FILE 対話形式で復元(ドライラン付き) mate-panel-backup restore backup.json
info パネル設定の概要を表示 mate-panel-backup info

フォーマットの詳細

JSON推奨

最も推奨されるフォーマットです。メタデータ(作成日時、ホスト名、アプレット数など)を含みます。

# JSON でエクスポート
mate-panel-backup export backup.json

# YAML でエクスポート
mate-panel-backup export --format yaml backup.yaml

JSON ファイルの構造:

{
  "version": "1.0",
  "format": "json",
  "exported_at": "2026-04-25T14:30:22.123456",
  "hostname": "mycomputer",
  "metadata": {
    "dconf_prefix": "/org/mate/panel/",
    "applet_count": 5,
    "object_count": 8,
    "toplevel_count": 2
  },
  "settings": {
    "toplevels/bottom/size": 48,
    "toplevels/bottom/position": "bottom",
    "objects/1/applet-iid": "'application://firefox.desktop'",
    ...
  }
}

YAML

人間が読み書きしやすいフォーマットです。PyYAML に依存しない簡易実装のため、複雑な構造は扱えない場合があります。

mate-panel-backup export -f yaml backup.yaml
# または拡張子から自動判定
mate-panel-backup export backup.yaml

YAML ファイルの構造:

# mate-panel settings backup
# exported_at: 2026-04-25T14:30:22.123456
# hostname: mycomputer
---
[root]
  toplevels/bottom/size: 48
  toplevels/bottom/position: bottom

[objects/1]
  applet-iid: 'application://firefox.desktop'

dconf

生の dconf dump 形式です。他のシステムに直接インポートできます。

mate-panel-backup export --format dconf backup.dconf

応用テクニック

gsettings の設定も含める

アプレット固有の設定gsettingsもバックアップに含めたい場合は --gsettings フラグを使います。

mate-panel-backup export --gsettings full_backup.json

ドライランで変更内容を確認する

実際にファイルを書き出す前に、どのような設定が取得できるか確認したい場合は --dry-run を使います。

# エクスポートのドライラン
mate-panel-backup export --dry-run

# インポートのドライラン
mate-panel-backup import --dry-run backup.json

stdout に出力してパイプラインで使う

ファイルに書き出さずに標準出力に出力できます。他のコマンドと組み合わせて使えます。

# 内容を直接確認
mate-panel-backup export - | head -20

# gzip で圧縮して保存
mate-panel-backup export - | gzip > backup.json.gz

フォーマットを明示的に指定する

拡張子から自動判定されない場合や、意図しないフォーマットで読み込まれるのを避けたい場合は --format で明示します。

mate-panel-backup import --format json backup.json
mate-panel-backup import --format yaml backup.yaml

FAQ

Q. バックアップファイルが空です

dconf は MATE デスクトップセッション内でしか有効なデータを取得できません。以下の点を確認してください:

  • MATE デスクトップ上で実行しているか
  • dconf dump /org/mate/panel/ コマンドが実際にデータを返すか

VM や CI 環境では dconf が空になることがあります。

Q. Python のバージョンが古いと言われます

このツールは Python 3.10 以上が必要です(match/case 文を使用)。

# バージョン確認
python3 --version

# アップグレードDebian/Ubuntu の場合)
sudo apt install python3.10

Q. dconf コマンドが見つかりません

dconf-cli パッケージをインストールしてください。

# Debian/Ubuntu/Mint
sudo apt install dconf-cli

# Fedora/RHEL
sudo dnf install dconf-cli

# Arch Linux
sudo pacman -S dconf

Q. バックアップファイルの保存先はどこですか?

デフォルトは ~/.config/mate-panel-backups/ です。

# 内容を確認
ls -la ~/.config/mate-panel-backups/

Q. 特定のバックアップから復元したいが、まず変更内容を確認したい

restore コマンドは自動でドライランを実行するため、確認プロンプトが表示されます。また、diff コマンドで詳細な差分も確認できます。

# ドライラン付き復元(確認プロンプトが表示される)
mate-panel-backup restore backup.json

# 詳細な差分を確認
mate-panel-backup diff backup.json

Q. バックアップファイルのフォーマットを自動判定してほしい

importrestore コマンドは拡張子から自動的にフォーマットを判定します:

拡張子 フォーマット
.json JSON
.yaml, .yml YAML
その他 dconf

手動で指定する場合は --format フラグを使います。


アンインストール

# システムインストールの場合
sudo rm /usr/local/bin/mate-panel-backup

# バックアップファイルも削除する場合
rm -rf ~/.config/mate-panel-backups/

詳しくは INSTALL.md を参照してください。


開発者向け情報

ファイル構成

mate-panel-backup.py    # 単一ファイル962行
INSTALL.md              # インストール手順
README.md               # このファイル
AGENTS.md               # OpenCode/Claude 用指示ファイル

依存関係

  • Python 標準ライブラリのみ: argparse, json, subprocess, pathlib など
  • 外部コマンド: dconfdconf-cli パッケージに含まれる)
  • PyYAML は使用しない: 簡易 YAML パーサーを独自実装

コード構造

mate-panel-backup.py
├── dconf 操作ラッパー (dconf_dump, dconf_load, dconf_reset)
├── データ変換 (parse_dconf_dump, build_dconf_dump, JSON/YAML 変換)
├── メイン処理 (do_export, do_import, do_backup, do_restore)
├── ヘルパー (_count_applets, _count_objects, _count_toplevels)
└── CLI エントリポイント (main(), argparse)

バグ・既知の制限

  • info コマンド: CLI に定義されていますが、main() の match ブロックにハンドラがありません。実装追加が必要です。
  • YAML 簡易実装: 複雑な YAML 構造(ネストされたマップなど)は正しく処理できない場合があります。
  • MATE 以外での実行: MATE デスクトップセッション外では dconf dump が空になります。

ライセンス

このプロジェクトはMITライセンスの下で配布されます。


バージョン履歴

  • 2026-04-25: 初回リリースv1.0
    • JSON/YAML/dconf フォーマット対応
    • backup, export, import, list-backups, diff, restore, info コマンドを実装
    • gsettings 対応オプション追加