Configuration
deltoids reads $XDG_CONFIG_HOME/deltoids/config.toml, falling back to
~/.config/deltoids/config.toml.
Theme
The [theme] section selects the light or dark palette and the syntax
highlighting theme. The pager and deltoids tui both use it.
[theme]
# "light" | "dark" | "auto" (default: auto, detected from the terminal).
mode = "auto"
# Syntax highlighting theme by name. Bundled themes include "TokyoNight",
# "Monokai Extended", "GitHub", "Nord", and "Dracula".
syntax_theme = "TokyoNight"
When syntax_theme is not set, deltoids uses Monokai Extended on dark
and GitHub on light.
In deltoids tui, press t to switch the syntax theme for the
session. The picker starts from the theme set here.
You can also override single colors of the interface, such as diff
backgrounds, borders, and status letters, with hex values in the same
[theme] section.
Custom commands
Bind a key in deltoids tui to a shell command that runs against the
selected file. Each [[commands]] entry maps one key to a command.
{{filename}} expands to the selected file’s absolute path, shell-quoted
so paths with spaces work.
# Background (default): dispatches elsewhere and returns immediately.
# The TUI never touches the terminal, so there is no flicker.
[[commands]]
key = "e"
command = "dev tmux edit {{filename}}"
description = "edit file in a tmux pane"
# Subprocess: takes over the terminal for an inline editor. The TUI
# suspends, hands the terminal to the child, then restores and repaints.
[[commands]]
key = "E"
command = "nvim {{filename}}"
subprocess = true
description = "edit file inline in neovim"
command is a shell line (run via sh -c), not an argv. Custom keys
work against the current selection.
Custom keys cannot override these built-in keys:
q,?,t,<,>,\,f, andF, everywhere.h,l,r,i, andEnterin the diff.Space,a, anddin the Files panel of the working tree.
A custom key can shadow any other key. Press ? in the TUI to see the
configured bindings in the help popup.
Language servers
Code navigation asks a language server for
definitions and callers. deltoids looks for these servers on PATH:
| Language | Name in [lsp.<name>] | Server |
|---|---|---|
| Rust | rust | rust-analyzer |
| Go | go | gopls |
| TypeScript, TSX, JavaScript | typescript, tsx, javascript | typescript-language-server --stdio |
| Python | python | pyright-langserver --stdio |
| C, C++ | c, cpp | clangd |
| Ruby | ruby | ruby-lsp |
| Lua | lua | lua-language-server |
| Bash | bash | bash-language-server start |
| Java | java | jdtls |
| Kotlin | kotlin | kotlin-language-server |
deltoids starts rust-analyzer with its own target directory
(target/rust-analyzer) and without check on save, so it never holds
up cargo build or cargo test.
An [lsp.<name>] table replaces a server or turns it off. The other
languages deltoids understands (css, hcl, json, markdown,
sql, toml, yaml) can get a server the same way:
[lsp.python]
command = ["basedpyright-langserver", "--stdio"]
[lsp.go]
enabled = false