- Python 100%
- AGENTS.md: 開発者向け指示ファイル(構成、CLI、注意点) - INSTALL.md: インストール手順(システムインストール/ポータブル/ソース)、依存、動作確認、トラブルシューティング - README.md: ユーザー向けドキュメント(基本使い方、具体例、コマンド一覧、フォーマット解説、応用テクニック、FAQ) |
||
|---|---|---|
| AGENTS.md | ||
| INSTALL.md | ||
| mate-panel-backup.py | ||
| README.md | ||
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-cli(
dconf 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. バックアップファイルのフォーマットを自動判定してほしい
import と restore コマンドは拡張子から自動的にフォーマットを判定します:
| 拡張子 | フォーマット |
|---|---|
.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など - 外部コマンド:
dconf(dconf-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 対応オプション追加