Settings
Want people to change your app's settings with checkboxes and menus instead of editing a configuration file? Settings is a tool for app developers that builds a settings window from a TOML description.
Describe field names, input types, and choices in a schema, and Settings assembles the corresponding interface. It runs as a separate executable from your app and reads and writes the TOML file you specify.
Get the demo and checker / Get started with your own app
Figure 1: A settings window generated from the demo schema. Define tabs and fields with names, input controls, and descriptions appropriate for your app. This image is from the existing demo.
Turn a configuration file into an approachable interface
If your app stores settings in TOML, define controls for the corresponding keys. You can keep the existing configuration format.
| What you want to provide | How to describe it in Settings |
|---|---|
| Names and connection details | Choose single-line text, multiline text, file paths, or masked input |
| Feature switches | Use checkboxes or toggles |
| A set of choices | Define options for a dropdown or segmented control |
| Numeric adjustments | Give sliders or numeric inputs a range and step size |
| Lists of configurable entries | Arrange providers or similar entries as subsections |
| Guidance for invalid input | Define validation rules and messages |
See the widget reference for the available controls and examples.
How it works with your app
- Describe the interface in
schema.toml. - Build Settings with that schema embedded and bundle it with your app.
- Launch it from your app, passing the path of the
config.tomlto edit. - Settings saves changes made in the window to that configuration file.
The schema is selected at build time. The downloadable demo does not load an arbitrary schema to replace its interface. Build from source to create your own window.
Settings handles editing. Your app decides when to reload the saved configuration. See Getting started and Embedding in your app for examples.
Configure appearance and saving behavior
Settings includes light and dark appearances and built-in interface text in 16 languages. You can provide localized names and descriptions for your app's own fields and customize the color palette.
By default, macOS saves automatically, while Windows and Linux show an OK / Cancel / Apply bar. You can override this in the schema. Settings preserves TOML comments and formatting and detects external changes to the configuration file.
When you rename or reorganize configuration keys, declare migrations in the schema. Settings updates existing files to the new layout at launch. See Configuration migration.
Platforms and downloads
Settings supports macOS, Windows, and Linux and is released under the MIT license.
| What you want to do | What to get |
|---|---|
| Try the interface and controls | The Settings demo from GitHub Releases, using a sample schema and configuration |
| Check a schema | settings-schema-checker, which checks a supplied schema without starting the GUI |
| Bundle Settings with your app | Build the source with your own schema embedded |
The latest public release checked on October 29, 2026 was v0.2.6. These articles have been checked against the local v0.2.7 source. The screenshots come from the existing demo; they are not new captures of the newer version. Check the release page for downloads.
Where to go next
| What you want to learn | Read |
|---|---|
| Create and open a minimal settings window | Getting started |
| Launch Settings from your app | Embedding |
| Build for different platforms or build the demo | Building |
| Look up schema fields and input controls | Schema / Widgets |
| Configure validation, language, and appearance | Validation / Localization / Theming |
| Move old configuration keys to a new layout | Migration |
