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

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

LightDark
macOSmacOS Light (Japanese)macOS Dark (English)
WindowsWindows Light (German)Windows Dark (Japanese)
LinuxLinux Light (English)Linux Dark (German)

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    = 65535

2. Build it

bash
cd repos/settings
make binary
# Or to point at a specific schema:
make SCHEMA=/path/to/schema.toml binary

3. 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.