組み込み
Settings (v0.2.2)
単一インスタンス制約
同一の config.toml に対して同時に開ける Settings は 1 プロセスのみです。 同じ設定ファイルのパスを指定して二重起動した場合,後から起動したプロセスは即座に終了します。設定ファイルのパスが異なれば,複数のウィンドウを同時に開けます。
既定の config.toml パス
引数を省略して起動した場合に読み込まれる既定パスは,プラットフォームと同梱形態によって異なります。
| OS / 形態 | 既定パス |
|---|---|
macOS(.app 同梱) | Contents/Resources/config.toml(バンドル内リソース) |
| Windows | Settings.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 変数で指定します。スキーマパスの優先順位など,ビルド時の指定方法の詳細はビルドを参照してください。