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

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

The Settings demo on macOS, displaying checkboxes and toggles in English with a dark appearance

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 provideHow to describe it in Settings
Names and connection detailsChoose single-line text, multiline text, file paths, or masked input
Feature switchesUse checkboxes or toggles
A set of choicesDefine options for a dropdown or segmented control
Numeric adjustmentsGive sliders or numeric inputs a range and step size
Lists of configurable entriesArrange providers or similar entries as subsections
Guidance for invalid inputDefine validation rules and messages

See the widget reference for the available controls and examples.

How it works with your app ​

  1. Describe the interface in schema.toml.
  2. Build Settings with that schema embedded and bundle it with your app.
  3. Launch it from your app, passing the path of the config.toml to edit.
  4. 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 doWhat to get
Try the interface and controlsThe Settings demo from GitHub Releases, using a sample schema and configuration
Check a schemasettings-schema-checker, which checks a supplied schema without starting the GUI
Bundle Settings with your appBuild 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 learnRead
Create and open a minimal settings windowGetting started
Launch Settings from your appEmbedding
Build for different platforms or build the demoBuilding
Look up schema fields and input controlsSchema / Widgets
Configure validation, language, and appearanceValidation / Localization / Theming
Move old configuration keys to a new layoutMigration