Configuration Reference
grüt is configured via a TOML file. Every option has a sensible default — you only need to set the values you want to change.
Config File Location
grüt looks for its config file at:
- Linux / macOS:
~/.config/grut/config.toml - Windows:
%APPDATA%\grut\config.toml
If the file does not exist, grüt uses built-in defaults. You can create the
file manually or run grut --init-config to generate one with
all defaults.
[general]
Top-level application settings.
[general]
keybinding_scheme = "default" # "default" | "vim" | "classic"
default_layout = "explorer" # "explorer" | "git" | "review" | "agent" | "full"
auto_save_session = true # restore last session on startup
show_first_run_help = true # show help overlay on first launch [file_tree]
Controls the file explorer panel.
[file_tree]
show_hidden = false # show dotfiles and hidden directories
icon_mode = "auto" # "nerd" | "ascii" | "auto" (detect Nerd Font)
sort_directories_first = true # directories before files in the tree
git_status_markers = true # show ●/✗/? markers next to files
max_depth = 0 # max tree depth (0 = unlimited) [preview]
Controls the file preview panel.
[preview]
enabled = true
width = 50 # percentage of available width (20–80)
syntax_highlighting = true
max_file_size = "1MB" # skip preview for files larger than this
line_numbers = true
word_wrap = false [git]
Git integration settings.
[git]
refresh_method = "fsnotify" # "fsnotify" | "poll"
default_branch = "main" # fallback when origin/HEAD is unavailable
worktree_first = false # prefer worktrees over branches
worktree_merge_method = "merge" # "merge" | "rebase" | "squash"
auto_fetch_interval = "5m" # auto-fetch period (0 = disabled)
show_commit_graph = true # show graph lines in log view
max_log_entries = 500 # max commits loaded in log view
sign_commits = false # GPG/SSH sign commits [terminal]
Embedded terminal settings.
[terminal]
shell = "" # shell binary (empty = system default)
scrollback = 10000 # scrollback buffer lines
render_fps = 30 # terminal render frames per second
prefix_key = "ctrl+a" # prefix key for terminal commands [ai]
AI integration and context builder settings.
[ai]
auto_install_deps = true # auto-install AI tool dependencies
context_mode = "selection" # "selection" | "git-diff" | "full-tree"
token_model = "gpt-4" # model used for token counting [theme]
Theme selection. Use a built-in name or a path to a custom theme file.
[theme]
name = "default" # "default" | "catppuccin" | "tokyonight" | "gruvbox"
# or an absolute/relative path to a .toml theme file [session]
Session persistence settings.
[session]
enabled = true
max_age = "30d" # auto-delete sessions older than this [bookmarks]
Pinned directories for quick navigation.
[bookmarks]
paths = [
"~/projects",
"~/dotfiles",
]
show_in_sidebar = true # display bookmarks in the file tree sidebar [logging]
Diagnostic logging.
[logging]
level = "warn" # "debug" | "info" | "warn" | "error"
file = "" # log file path (empty = stderr) Full Example
A complete config with every section:
# grüt configuration
# ~/.config/grut/config.toml
[general]
keybinding_scheme = "vim"
default_layout = "git"
auto_save_session = true
show_first_run_help = false
[file_tree]
show_hidden = true
icon_mode = "nerd"
sort_directories_first = true
git_status_markers = true
max_depth = 0
[preview]
enabled = true
width = 50
syntax_highlighting = true
max_file_size = "2MB"
line_numbers = true
word_wrap = false
[git]
refresh_method = "fsnotify"
default_branch = "main"
worktree_first = false
worktree_merge_method = "merge"
auto_fetch_interval = "5m"
show_commit_graph = true
max_log_entries = 1000
sign_commits = true
[terminal]
shell = "/bin/zsh"
scrollback = 10000
render_fps = 30
prefix_key = "ctrl+a"
[ai]
auto_install_deps = true
context_mode = "selection"
token_model = "gpt-4"
[theme]
name = "catppuccin"
[session]
enabled = true
max_age = "30d"
[bookmarks]
paths = [
"~/projects",
"~/dotfiles",
]
show_in_sidebar = true
[logging]
level = "warn"
file = ""