Use this file to discover all available pages before exploring further.
Druk’s configuration is split into two layers — a user-level file that holds every setting, and an optional per-project file that overrides only what that project needs. Changes in either file take effect immediately without restarting the editor, and any unknown or invalid value falls back to a safe default so a hand-edited config can never break startup.
~/.config/druk/config.jsonAlso respects $XDG_CONFIG_HOME/druk/config.json when XDG_CONFIG_HOME is set. Holds every setting and is rewritten whole when you change something.
Project config
<project>/.druk/settings.jsonLives beside your project, the way .vscode/ does. Only needs the keys you want to override — everything else falls through to your user config.
On the settings page, ← and → step through discrete values (toggling a boolean, cycling through the possible string options), while Enter opens a filterable list of every available value for that setting — the recommended way to pick a theme without pressing an arrow key 26 times.Every change applies immediately and is persisted to the appropriate config file.
When Druk resolves your configuration, it starts with your user settings and applies project overrides on top, key by key. A key the project file omits keeps your user value. Clearing a project override in the settings page removes the key entirely from .druk/settings.json, which restores your user value immediately — no restart required.
Object-valued settings — formatters and lspServers — are replaced whole by the project file rather than merged entry by entry. A project that sets formatters replaces your entire user-level formatter map for that project.
Every field goes through a validator before it is accepted. An unknown key is silently skipped; a value that fails its validator falls back to the default. This means a hand-edited config with a typo or an outdated field name never prevents Druk from starting.
The project settings file only needs the keys you are overriding. You do not need to include every setting — keys you omit inherit their value from your user config.
Enable vim modal editing (normal / insert / visual).
tabSize
2
Columns per indent level for space indentation. Accepts an integer from 1 to 16.
sidebarWidth
"auto"
Columns the file tree occupies. "auto" uses a quarter of the terminal width (clamped to 30–60). Resizing with [ / ] or by dragging the divider pins an explicit number.
In the project file above, only tabSize, trimOnSave, and formatters are overridden. Every other setting — theme, vim, lsp, and so on — keeps its value from the user config.