Skip to content
Copied!
published on 2026-06-08

組み込み

Settings (v0.2.2)

単一インスタンス制約

同一の config.toml に対して同時に開ける Settings は 1 プロセスのみです。 同じ設定ファイルのパスを指定して二重起動した場合,後から起動したプロセスは即座に終了します。設定ファイルのパスが異なれば,複数のウィンドウを同時に開けます。

既定の config.toml パス

引数を省略して起動した場合に読み込まれる既定パスは,プラットフォームと同梱形態によって異なります。

OS / 形態既定パス
macOS(.app 同梱)Contents/Resources/config.toml(バンドル内リソース)
WindowsSettings.exe と同じディレクトリの config.toml
Linux実行バイナリと同じディレクトリの config.toml

macOS .app への同梱

MyApp.app/Contents/MacOS/
├── MyApp
└── settings    # または Settings(バンドル名に合わせる)
rust
let settings = std::env::current_exe()?.parent().unwrap().join("settings");
std::process::Command::new(settings).arg(config_path).spawn()?;

Windows

実行ファイルと Settings.exe を同じディレクトリに配置し,インストーラーで両方を配置します。同梱する場合は,Settings.exe の隣に置いた config.toml が引数省略時の既定として使われます。

Linux

バイナリと同じディレクトリに置いた config.toml が,引数省略時の既定として使われます。

Cargo workspace への組み込み

toml
[workspace]
members = [".", "settings-schema", "settings"]  # 構成は親アプリに合わせる

settings は Git submodule または path 依存として取り込みます。スキーマは親リポジトリ側で管理し,ビルド時に環境変数 SETTINGS_SCHEMA,または Makefile の SCHEMA 変数で指定します。スキーマパスの優先順位など,ビルド時の指定方法の詳細はビルドを参照してください。