設定を Git で管理する
NoteDeck の設定は、アプリデータフォルダの中の config/ にまとまっています。この 1 つのフォルダが「持ち運ぶ単位」で、Git で管理することを前提に作ってあります。dotfiles と同じ扱いです。
config/ の外にあるもの(ノートのキャッシュ、AI の会話、ウィンドウの位置、同意や鍵の有無)は持ち運ぶものではありません。何がどこにあるかは設定ファイルにあります。
公開はしないでください
config/ には、どのアカウントをどのカラムで見ているか(user@host)、外部サービスの URL、実行されるコード(プラグイン / ウィジェット / スキル)、AI やプラグインに許可している操作が入っています。API キーやアクセストークンは入っていませんが、公開リポジトリに置くための形ではありません。プライベートリポジトリに入れてください。
前提
git pullや外部エディタでの編集は、アプリと常駐の AI を終了してから。 アプリは設定ファイルの外部変更を見張っていません。開いたまま書き換えると、次の操作でアプリ側の写しが上書きして変更が消えます。常駐の AI(notemaid)が動いていればai.json5を書き戻すことがあるので、それも止めます。pullは自分で打つ操作なので、この順番さえ守れば困りません。- 再保存するとコメントは消えます。 設定ファイルは JSON5 なのでコメントを書けますが、アプリが保存し直すとコメントは残りません。
- 書き込みは決定的です。 同じ内容なら同じバイト列になり、起動しただけ・読んだだけではファイルを書き直しません。「触っていないのに差分が出る」ことはありません。
はじめる
cd ~/.local/share/com.notedeck.desktop/config # macOS / Windows の場所は「設定ファイル」を参照
git init
git add .
git commit -m "NoteDeck の設定".gitignore は NoteDeck が(無ければ)置きます。config/ の中は設定だけなので、除外するのは書き込み途中の一時ファイルだけです。
別の PC で使う
- 新しい PC で NoteDeck を一度起動して終了します(アプリデータフォルダができます)。
config/の中身を消して、そこにリポジトリを clone します(または clone したフォルダをconfigという名前で置きます)。- NoteDeck を起動し、同じアカウントでログインします。
カラムは user@host でアカウントを指しているので、ログインした時点でその PC のアカウントに結び直されます。まだログインしていないアカウントのカラムは「アカウント未接続」として残り、ログインすると繋がります。ファイルにはこの PC 固有の値を書かないので、2 台で同じリポジトリを使っても差分が往復しません。
外部サービスへの接続(AI のプロバイダーなど)は定義だけが持ち運ばれます。API キーと「AI に見せる / 外部アプリに見せる」の同意はその PC の状態なので、使おうとした時に設定画面が求めます。
dotfiles マネージャ
- chezmoi のようにファイルをコピーして配置するものはそのまま使えます。
- GNU stow のようにファイル単位でシンボリックリンクを張るものも使えます。NoteDeck はリンクを設定として読み、保存はリンクの向き先に書きます(リンクを実体に置き換えません)。
同期ソフト(Dropbox など)について
config/ を同期フォルダに置いてシンボリックリンクで戻すこともできますが、NoteDeck はこの使い方を保証しません。Git と違って書き戻しがアプリを開いている最中に届くため、次の制限があります。
- 書く PC は 1 台ずつ。 2 台で同時に NoteDeck を開くと後から書いた方が勝ち、同期ソフトが作った「競合コピー」は同じ id のファイルが 2 つになるので、NoteDeck は後に並ぶ方を読み飛ばしてトーストで知らせます。どちらを残すか決めて、もう一方を消してください。
- 向こうの PC で書いた内容は、こちらの NoteDeck を起動し直すまで反映されません。 開いている間に届いた変更は、次の操作で上書きされることがあります。
data/(AI の会話とメモ)は同期フォルダに向けないでください。 他の人の投稿本文(フォロワー限定や DM を含む)、未投稿の下書き、AI があなたについて覚えたことが入っています。例外としてdata/memos/だけなら Obsidian の vault として同期する使い方があり得ますが、同じ注意が当てはまります。state/cache/notecli.dbは同期しないでください。 この PC の状態とキャッシュです。notecli.dbは SQLite で、書き込み途中を同期すると壊れます。
複数の PC で設定を揃えたいなら、上の Git の手順を使ってください。
古いバージョンから更新したとき
以前は設定が notedeck/ というフォルダにありました。更新後の最初の起動で、NoteDeck が config/ data/ state/ cache/ に分けます。移す前の内容はアプリデータフォルダの backups/pre-layout-<日時>/ に写しておきます(しばらくすると消えます)。
notedeck/ 自体をシンボリックリンクにして同期していた場合、NoteDeck は中身を引き抜きません(同期先から消えて、古いバージョンのまま使っている別の PC の設定まで消えるため)。起動時にその旨のお知らせが出るので、同期先の中を config と data に分けてから、config/ と data/ へのリンクを張り直して再起動してください。