Getting Started
Settings (v0.2.2)
A standalone settings window for applications that use TOML configuration files. It runs as a separate process from the main app and is responsible only for reading and writing the configuration file.
Overview
- Schema-driven — the settings UI is generated from a hand-written
schema.toml - 16 languages — supports both built-in UI strings and localization tables within the schema
- Light / Dark — follows the OS or can be forced; the color palette can be overridden in the schema
- Runtime validation — supports field validation via CEL expressions (since v0.2)
- External change detection — watches the config file for changes and shows a dialog on conflict
- Cross-platform — runs on macOS, Windows, and Linux
Screenshots
| Light | Dark | |
|---|---|---|
| macOS | ![]() | ![]() |
| Windows | ![]() | ![]() |
| Linux | ![]() | ![]() |
Quick Start
1. Write a schema.toml
toml
icon_style = "rounded"
theme = "os"
lang = "os"
[[tabs]]
id = "general"
label = { en = "General", ja = "一般" }
icon = "settings"
[[tabs.fields]]
key = "server.host"
label = { en = "Host", ja = "ホスト" }
type = "string"
widget = "text_input"
[[tabs.fields]]
key = "server.port"
label = { en = "Port", ja = "ポート" }
type = "number"
widget = "drag_value"
min = 1
max = 655352. Build it
bash
cd repos/settings
make binary
# Or to point at a specific schema:
make SCHEMA=/path/to/schema.toml binary3. Launch it from the parent app
rust
std::process::Command::new("path/to/settings")
.arg("/path/to/config.toml")
.spawn()?;Pass the path to config.toml as an argument. See Embedding for the default path used when it is omitted.





