Configuration
Configuration
Walker is configured through ~/.config/walker/config.toml. This guide covers all available configuration options.
Configuration File Location
- Default:
~/.config/walker/config.toml - Created automatically on first run
- Reference:
resources/config.tomlin the Walker repository
General Settings
Window Behavior
force_keyboard_focus = false # Force keyboard focus to stay in Walker
close_when_open = true # Close if invoked while already open
click_to_close = true # Close when clicking outside content area
selection_wrap = false # Wrap list navigation at top/bottom
disable_mouse = false # Disable mouse on input and list
debug = false # Enable debug output
Search Settings
global_argument_delimiter = "#" # Delimiter for passing arguments
# Example: firefox#https://example.com
# Part after # is passed as argument
exact_search_prefix = "'" # Prefix to disable fuzzy search
# Example: 'firefox will match exactly
Theme
theme = "default" # Theme name to use
# Must exist in ~/.config/walker/themes/
Shell Integration
Configure layer-shell anchoring (Wayland):
[shell]
anchor_top = true
anchor_bottom = true
anchor_left = true
anchor_right = true
Placeholders
Customize placeholder text for input field and empty results:
[placeholders]
# Default placeholder for all providers
"default" = { input = "Search", list = "No Results" }
# Provider-specific placeholders
"desktopapplications" = { input = "Launch App", list = "No Applications" }
"files" = { input = "Browse Files", list = "No Files Found" }
"calc" = { input = "Calculate", list = "Enter Expression" }
"runner" = { input = "Run Command", list = "No Commands" }
"websearch" = { input = "Search Web", list = "" }
"clipboard" = { input = "Clipboard", list = "Clipboard Empty" }
"symbols" = { input = "Symbol", list = "No Symbols" }
"todo" = { input = "Todo", list = "No Todos" }
# For custom menus
"menus:mymenu" = { input = "My Menu", list = "No Items" }
Keybindings
Define global keybindings. See Keybindings for details.
[keybinds]
close = ["Escape"]
next = ["Down"]
previous = ["Up"]
toggle_exact = ["ctrl e"] # Toggle exact search mode
resume_last_query = ["ctrl r"] # Resume last query (service mode)
quick_activate = ["F1", "F2", "F3", "F4"] # Quick activation keys
Valid modifier keys: ctrl, alt, shift, super
For key values, see GDK key values.
Example: ctrl semicolon maps to GDK_KEY_semicolon.
Providers Configuration
Default Providers
[providers]
# Providers queried by default (when no prefix used)
default = [
"desktopapplications",
"calc",
"runner",
"menus",
"websearch",
]
# Providers shown when search is empty
empty = ["desktopapplications"]
# Global max results (can be overridden per provider)
max_results = 50
Provider Sets
Create custom sets of providers that can be launched together:
[providers.sets]
# Example: custom launcher set
[providers.sets.mylauncher]
default = ["desktopapplications", "runner", "calc"]
empty = ["desktopapplications"]
# Example: file management set
[providers.sets.files]
default = ["files", "runner"]
empty = ["files"]
# Launch with: walker -s mylauncher
Max Results Per Provider
[providers.max_results_provider]
desktopapplications = 20
files = 30
runner = 50
websearch = 10
Provider Prefixes
Define prefixes to quickly access specific providers:
[[providers.prefixes]]
prefix = ";"
provider = "providerlist" # Provider switcher
[[providers.prefixes]]
prefix = ">"
provider = "runner" # Command runner
[[providers.prefixes]]
prefix = "/"
provider = "files" # File browser
[[providers.prefixes]]
prefix = "."
provider = "symbols" # Symbol picker
[[providers.prefixes]]
prefix = "!"
provider = "todo" # Todo list
[[providers.prefixes]]
prefix = "="
provider = "calc" # Calculator
[[providers.prefixes]]
prefix = "@"
provider = "websearch" # Web search
[[providers.prefixes]]
prefix = ":"
provider = "clipboard" # Clipboard history
# Custom menu prefix
[[providers.prefixes]]
prefix = "+"
provider = "menus:mymenu" # Your custom menu
Provider-Specific Configuration
Clipboard
[providers.clipboard]
time_format = "%d.%m. - %H:%M" # strftime format for timestamps
Provider Actions
Define actions available for each provider. Actions determine what happens when you interact with items.
[providers.actions]
# Fallback actions for providers without specific actions
fallback = [
{ action = "menus:open", label = "open", after = "Nothing" },
{ action = "erase_history", label = "clear hist", bind = "ctrl h", after = "AsyncReload" },
]
# Dmenu mode actions
dmenu = [
{ action = "select", default = true, bind = "Return" }
]
# Provider list
providerlist = [
{ action = "activate", default = true, bind = "Return", after = "ClearReload" },
]
# Bluetooth
bluetooth = [
{ action = "find", global = true, bind = "ctrl f", after = "AsyncClearReload" },
{ action = "trust", bind = "ctrl t", after = "AsyncReload" },
{ action = "untrust", bind = "ctrl u", after = "AsyncReload" },
{ action = "pair", bind = "Return", after = "AsyncReload" },
{ action = "remove", bind = "ctrl d", after = "AsyncReload" },
{ action = "connect", bind = "Return", after = "AsyncReload" },
{ action = "disconnect", bind = "Return", after = "AsyncReload" },
]
# Arch Linux packages
archlinuxpkgs = [
{ action = "install", bind = "Return", default = true },
{ action = "remove", bind = "Return" },
]
# Calculator
calc = [
{ action = "copy", default = true, bind = "Return" },
{ action = "delete", bind = "ctrl d", after = "AsyncReload" },
{ action = "save", bind = "ctrl s", after = "AsyncClearReload" },
]
# Web search
websearch = [
{ action = "search", default = true, bind = "Return" }
]
# Desktop applications
desktopapplications = [
{ action = "start", default = true, bind = "Return" },
{ action = "start:keep", label = "open+next", bind = "shift Return", after = "KeepOpen" },
{ action = "pin", bind = "ctrl p", after = "AsyncReload" },
{ action = "unpin", bind = "ctrl p", after = "AsyncReload" },
{ action = "pinup", bind = "ctrl n", after = "AsyncReload" },
{ action = "pindown", bind = "ctrl m", after = "AsyncReload" },
]
# File browser
files = [
{ action = "open", default = true, bind = "Return" },
{ action = "opendir", label = "open dir", bind = "ctrl Return" },
{ action = "copypath", label = "copy path", bind = "ctrl shift c" },
{ action = "copyfile", label = "copy file", bind = "ctrl c" },
]
# Todo list
todo = [
{ action = "save", default = true, bind = "Return", after = "ClearReload" },
{ action = "delete", bind = "ctrl d", after = "ClearReload" },
{ action = "active", bind = "Return", after = "ClearReload" },
{ action = "inactive", bind = "Return", after = "ClearReload" },
{ action = "done", bind = "ctrl f", after = "ClearReload" },
{ action = "clear", bind = "ctrl x", after = "ClearReload", global = true },
]
# Command runner
runner = [
{ action = "run", default = true, bind = "Return" },
{ action = "runterminal", label = "run in terminal", bind = "shift Return" },
]
# Symbols
symbols = [
{ action = "run_cmd", label = "select", default = true, bind = "Return" },
]
# Unicode
unicode = [
{ action = "run_cmd", label = "select", default = true, bind = "Return" },
]
# Clipboard
clipboard = [
{ action = "copy", default = true, bind = "Return" },
{ action = "remove", bind = "ctrl d", after = "ClearReload" },
{ action = "remove_all", global = true, label = "clear", bind = "ctrl shift d", after = "ClearReload" },
{ action = "toggle_images", global = true, label = "toggle images", bind = "ctrl i", after = "ClearReload" },
{ action = "edit", bind = "ctrl o" },
]
Action Properties
action- The action name (provider-specific)label- Display label for the action (optional)bind- Keybinding to trigger the actiondefault- Default action when pressing Enter (optional)global- Action available regardless of selection (optional)after- What happens after action execution:Nothing- Walker stays open, no reloadClose- Walker closesKeepOpen- Walker stays openReload- Reload resultsClearReload- Clear query and reloadAsyncReload- Reload asynchronouslyAsyncClearReload- Clear and reload asynchronously
Example Configurations
Minimal Configuration
theme = "default"
[providers]
default = ["desktopapplications", "runner"]
empty = ["desktopapplications"]
[keybinds]
close = ["Escape"]
next = ["Down"]
previous = ["Up"]
Power User Configuration
force_keyboard_focus = true
close_when_open = true
click_to_close = true
selection_wrap = true
exact_search_prefix = "'"
theme = "custom"
debug = false
[shell]
anchor_top = true
anchor_bottom = false
anchor_left = true
anchor_right = true
[placeholders]
"default" = { input = ">>", list = "∅" }
"desktopapplications" = { input = ">> Launch", list = "No apps" }
"files" = { input = ">> Browse", list = "No files" }
[keybinds]
close = ["Escape", "ctrl q"]
next = ["Down", "ctrl j"]
previous = ["Up", "ctrl k"]
toggle_exact = ["ctrl e"]
resume_last_query = ["ctrl r"]
quick_activate = ["F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8"]
[providers]
default = [
"desktopapplications",
"calc",
"runner",
"files",
"websearch",
"clipboard",
]
empty = ["desktopapplications", "clipboard"]
max_results = 100
[providers.max_results_provider]
desktopapplications = 30
files = 50
runner = 50
[[providers.prefixes]]
prefix = ";"
provider = "providerlist"
[[providers.prefixes]]
prefix = ">"
provider = "runner"
[[providers.prefixes]]
prefix = "/"
provider = "files"
[[providers.prefixes]]
prefix = "="
provider = "calc"
[[providers.prefixes]]
prefix = ":"
provider = "clipboard"
Validation
After editing the configuration, test it:
# Check for syntax errors
walker --debug
# Or just launch normally
walker
Walker will report any configuration errors on startup.
Next Steps
- Keybindings - Detailed keybinding reference
- Provider Actions - Complete action reference
- Theming - Customize Walker's appearance
- Providers - Learn about all providers