Skip to content

Configuration

Runx reads ~/Library/Application Support/runx/config.toml. The file is created on first launch, validated on load, and reloaded when you open Runx after the file changes.

debug_log = true enables diagnostic file logging after restart. Launcher startup rotates debug.log to debug.log.old, and a default launch may create an empty debug.log for fatal-error persistence even when diagnostic logging is disabled. RUNX_LOG enables file logging and accepts tracing EnvFilter directives such as RUNX_LOG=runx=debug,wry=warn; invalid values fall back to runx=info. RUST_LOG is not used. Settings app startup does not rotate or write the launcher log, and settings failures are only visible when stderr is visible.

Top-level options

Root configuration object deserialized from config.toml.

OptionTypeDefaultDescription
debug_logbooleanfalseEnable diagnostic file logging to debug.log. Changes require restarting Runx. Fatal launcher errors and panics may still create debug.log even when this is false.

[hotkey]

User-facing global hotkey configuration.

OptionTypeDefaultDescription
shortcutshortcut string such as Option+Space or Cmd+KeyK"Option+Space"Global shortcut that opens the launcher, or empty to disable.
quick_switchstring"Option+Tab"Global shortcut that activates quick-switch mode, or empty to disable.

[window]

Launcher window behavior and geometry.

OptionTypeDefaultDescription
width_fractionnumber0.4Fraction of the chosen display's logical width used before optional width clamps.
visible_rowsinteger5Target number of result rows kept visible before optional height clamps.
min_widthnumber-Minimum launcher width in logical pixels.
max_widthnumber-Maximum launcher width in logical pixels.
min_heightnumber-Minimum launcher height in logical pixels.
max_heightnumber-Maximum launcher height in logical pixels.
hide_when_inactivebooleantrueHide the launcher automatically when it becomes inactive.
always_on_topbooleantrueKeep the launcher above normal windows while it is visible.
show_onone of: primary, cursor"cursor"Choose which display Runx appears on when it opens.
scalenumber1Multiplier applied to UI typography and spacing tokens.
show_animationbooleantruePlay the macOS zoom animation when showing or hiding the launcher window.

[[display_overrides]]

Per-display overrides for window sizing and scale.

OptionTypeDefaultDescription
built_inboolean-Match built-in or external displays.
vendorinteger-Match the monitor vendor id reported by macOS.
modelinteger-Match the monitor model id reported by macOS.
serialinteger-Match the monitor serial number reported by macOS.
width_fractionnumber-Override window.width_fraction for matching displays.
visible_rowsinteger-Override window.visible_rows for matching displays.
min_widthnumber-Override window.min_width for matching displays.
max_widthnumber-Override window.max_width for matching displays.
min_heightnumber-Override window.min_height for matching displays.
max_heightnumber-Override window.max_height for matching displays.
scalenumber-Override window.scale for matching displays.

[providers]

Provider-specific runtime behavior.

OptionTypeDefaultDescription
disabledarray of provider names (windows, apps, settings, plugins)[]Providers that should not run.

[providers.windows]

Settings for the macOS windows provider.

OptionTypeDefaultDescription
include_other_desktopsbooleanfalseInclude windows from other macOS desktops/spaces in search results. Requires Screen Recording permission.
show_on_empty_querybooleantrueShow open windows before the query is non-empty.

[providers.apps]

Settings for installed application search ranking.

OptionTypeDefaultDescription
exact_name_boostinteger200Score added when a query exactly matches an installed app name.
prefix_name_boostinteger100Score added when a query is a prefix of an installed app name.
additional_directoriesarray of string[]Extra directories to scan for .app bundles in addition to the standard app roots.

[ranking]

Ranking and truncation rules for the merged result list.

OptionTypeDefaultDescription
tie_thresholdinteger120Maximum raw-score gap that still counts as a tie between providers.
provider_orderarray of provider names (windows, apps, settings, plugins)["windows", "apps", "settings"]Tie-break priority when multiple providers return similarly scored items.
result_limitinteger24Maximum number of rows shown in the launcher.

[ranking.provider_score_boosts]

Per-provider additive score boosts. Use provider names as keys. Omitted providers behave as if their boost were 0.

OptionTypeDefaultDescription
Provider keyinteger0 when omittedwindows, apps, settings, plugins

[[ranking.score_rules]]

One additive ranking rule matched against a result row.

OptionTypeDefaultDescription
providersarray of provider names (windows, apps, settings, plugins)-Restrict the rule to specific providers. Empty means all providers.
fieldone of: title, subtitle, badge, id-Result field matched against pattern.
matchone of: exact, prefix, contains-Text-matching mode used for pattern.
patternstring-Needle matched against the selected field.
boostinteger-Additive score applied when the rule matches.

[timing]

Debounce timings for the search pipeline.

OptionTypeDefaultDescription
search_debounce_msinteger24Delay before a changed query starts a new search generation.
quick_switch_show_delay_msinteger90Delay before the quick-switch window appears after activation.

[plugins]

Plugin discovery and subprocess lookup configuration.

OptionTypeDefaultDescription
directoriesarray of string[]Extra directories that should be scanned for .lua plugins.
search_pathsarray of string[]Extra PATH entries exposed to plugin subprocess helpers.

[[plugins.install]]

A single managed plugin to clone and keep up to date.

OptionTypeDefaultDescription
sourcestring-Git clone URL or local path.
namestring-Override the directory name (defaults to last path segment of source).
refstring-Pin to a specific Git tag. Mutually exclusive with branch.
branchstring-Track a branch. Mutually exclusive with ref.

[plugin.<id>]

Per-plugin configuration lives under [plugin.<id>]. Runx passes the full table to the plugin runtime as runx.plugin_config, except for the reserved commands subtable.

OptionTypeDefaultDescription
commandstable-Reserved for command routing. See [plugin.<id>.commands].
<your keys>TOML values-Arbitrary plugin-specific settings. These are available inside the plugin through runx.plugin_config.

[plugin.<id>.commands]

Command routing maps a typed prefix to a named Lua search handler. A route matches when the query is exactly the command or starts with the command followed by a space. Once a plugin has any configured commands, Runx stops calling its generic search(query) function for unrelated queries. Routed plugins are routed-only.

OptionTypeDefaultDescription
<command>string key-Command prefix typed into Runx, for example pass or emoji.
valuestring-Name of the exported Lua handler to call, for example search_type_password.

[ui]

Theme tokens injected into the embedded HTML/CSS UI templates.

OptionTypeDefaultDescription
show_headerbooleantrueShow the small header label at the top of the launcher.
cycle_selectionbooleanfalseWrap selection movement from end to start with arrows and Ctrl-N/Ctrl-P.
colorschemestring (system, builtin_light, builtin_dark, or a custom name matching a file in colorschemes/)"system"Selected UI colorscheme: system, a built-in name, or a custom scheme name.
font_familystring"\"SF Pro Display\", \"Avenir Next\", \"Helvetica Neue\", sans-serif"CSS font-family stack used by the launcher UI.

[ui.canvas]

Canvas tokens injected into the embedded UI theme.

OptionTypeDefaultDescription
showbooleantrueShow the outer launcher panel behind the input and results.
radiusinteger24Corner radius of the outer launcher panel.
background_opacitynumber0.97Opacity of the panel fill behind the launcher contents.
chrome_opacitynumber1Opacity of the panel border and shadow.

[ui.entries]

Entry background tokens injected into the embedded UI theme.

OptionTypeDefaultDescription
opacitynumber1Opacity multiplier applied to result-row background surfaces.
show_hoverbooleantrueShow a hover highlight when the mouse is over a result row.
transition_msinteger0Duration of selection/hover transitions in milliseconds (0 = instant).

[ui.shortcuts]

Keyboard shortcuts handled inside the launcher UI.

OptionTypeDefaultDescription
focus_windowshortcut string such as Enter or Option+Enter, or none"Enter"Shortcut for activating the selected window.
activate_all_windowsshortcut string such as Enter or Option+Enter, or none"Option+Enter"Shortcut for activating the selected app and bringing all its windows forward.

[ui.font_sizes]

Font-size tokens injected into the embedded UI theme.

OptionTypeDefaultDescription
labelinteger10Size of small labels and helper text.
inputinteger30Search input text size.
titleinteger16Primary result title text size.
subtitleinteger12Secondary result subtitle text size.
badgeinteger11Badge text size.
acceleratorinteger12Accelerator chip text size.
config_error_titleinteger24Config-error title text size.
config_error_bodyinteger15Config-error body text size.

[ui.layout]

Layout tokens injected into the embedded UI theme.

OptionTypeDefaultDescription
section_gapinteger14Gap between top-level shell sections such as input and results.
input_padding_yinteger14Vertical padding inside the search input.
input_padding_xinteger18Horizontal padding inside the search input.
input_radiusinteger18Corner radius of the search input.
list_gapinteger8Vertical gap between visible result rows.
entry_padding_yinteger13Vertical padding inside each result row.
entry_padding_xinteger14Horizontal padding inside each result row.
entry_gapinteger14Gap between columns inside each result row.
row_radiusinteger18Corner radius of result rows.
badge_sizeinteger46Size of badge containers.
badge_radiusinteger14Corner radius of badge containers.
icon_sizeinteger46Size of icon images inside icon badges.

colorschemes/<name>.toml

Custom colorschemes live as individual .toml files in the colorschemes/ directory next to config.toml. The file name (minus .toml) becomes the scheme name. Runx always knows about builtin_light, builtin_dark, and those built-in schemes are read-only. Custom schemes can use any other name and are selected through [ui].colorscheme. Set base to inherit from a built-in palette and make the other tokens optional; without base, every color token must be set. Most users only need accent, canvas_bg, panel, text, and muted; the remaining keys are lower-level UI tokens for precise theme work.

OptionTypeDescription
baseone of: builtin_light, builtin_darkBase palette inherited by a custom scheme. Without base, custom schemes must define every color token.
accentstringPrimary highlight color. In custom schemes, this also derives hover, selected-row, badge, and chip highlight surfaces unless those advanced tokens are set.
panelstringPanel surface color used by the built-in palette.
textstringPrimary foreground text color.
mutedstringSecondary or de-emphasized foreground text color.
canvas_bgstringBackground fill for the outer launcher canvas.
canvas_shadowstringShadow for the outer launcher canvas.
canvas_borderstringBorder color for the outer launcher canvas.
label_strongstringStronger label color used for prominent small text.
input_bgstringBackground of the search input field.
input_borderstringBorder color of the search input field.
input_shadowstringShadow of the search input field.
placeholderstringPlaceholder text color in the search input.
scrollbarstringScrollbar thumb color inside the results list.
item_bgstringDefault result-row background.
item_hoverstringResult-row background on hover.
item_selected_bgstringBackground of the currently selected result row.
item_selected_shadowstringShadow of the currently selected result row.
badge_bgstringBackground of text badges.
badge_borderstringBorder color of text badges.
badge_textstringForeground text color of text badges.
badge_icon_bgstringBackground behind icon badges.
chip_textstringForeground color of accelerator chips.
chip_bgstringBackground color of accelerator chips.
chip_borderstringBorder color of accelerator chips.
config_error_bgstringBackground of the dedicated config-error panel.
config_error_borderstringBorder color of the config-error panel.
config_error_shadowstringShadow of the config-error panel.
config_error_titlestringTitle color used in the config-error view.
config_error_copystringBody text color used in the config-error view.
canvas_hidden_input_bgstringInput background when the outer canvas is disabled.
canvas_hidden_input_borderstringInput border when the outer canvas is disabled.
canvas_hidden_input_shadowstringInput shadow when the outer canvas is disabled.
canvas_hidden_item_bgstringResult-row background when the outer canvas is disabled.
canvas_hidden_item_hoverstringResult-row hover background when the outer canvas is disabled.
canvas_hidden_item_selected_bgstringSelected result-row background when the outer canvas is disabled.
canvas_hidden_config_error_bgstringConfig-error panel background when the outer canvas is disabled.