a beautiful and fast tui written in rust
cargo install dott-tuicargo build --release
sudo cp target/release/dott /usr/local/bin/cargo install dott-tui --forceSimply run:
~/.cargo/bin/dott-tuiTo use a custom configuration file:
~/.cargo/bin/dott-tui -C /path/to/config.toml
# or
~/.cargo/bin/dott-tui --config /path/to/config.tomlThe TUI features:
- Highlighted selection: Selected menu items are highlighted with a cyan background
- Keyboard navigation: Use arrow keys or vim-style
j/kto navigate - Quick actions: Press Enter to execute the selected menu item
- Reload Config: Press
uto reload the config without restarting the app - Custom Configuration: Use
-Cflag to specify an alternative config file location - Customizable Layout: Configure the order and appearance of modules
- Multiple Entry Groups: Organize commands into separate groups
The config file is located at ~/.config/dott/config.toml by default. You can use a different config file by running dott-tui with the -C flag. You can customize:
- Structure: Define the order of modules (logo, entries, clock, colors, help, break)
- Logo: Choose between default, custom ASCII art, or image (Kitty protocol). Can be set via top-level
logo_typeor directly instructure.build(e.g.,"logo:default","logo:custom","logo:image") - Entries: Terminal commands with name, command, and arguments
- Multiple Entry Groups: Create separate entry groups (entries, entries2, entries3, etc.)
- Custom Modules: Terminal colors, clock, help text, and configurable breaks (must be declared to use)
- Creative Modules: System info, uptime, memory usage, disk usage, and quotes (must be declared to use)
- Break Lines: Configure how many empty lines each break adds (default: 2)
Default configuration:
logo_type = "default"
[structure]
position = "center"
[[structure.build]]
module = "logo"
[[structure.build]]
module = "entries"
[[structure.build]]
module = "colors"
[[structure.build]]
module = "clock"
[[structure.build]]
module = "selected"
[[structure.build]]
module = "help"
[[entries]]
name = "View Dotfiles"
command = "yazi"
args = ["~/.config"]
[[entries]]
name = "Edit Neovim Config"
command = "nvim"
args = ["~/.config/nvim/init.lua"]
[[entries]]
name = "Edit Shell Config"
command = "nvim"
args = ["~/.bashrc"]
[[entries]]
name = "System Monitor"
command = "btop"
args = []
[[entries]]
name = "Git Status"
command = "lazygit"
args = []
[[entries]]
name = "Configure Dott"
command = "nvim"
args = ["~/.config/dott/config.toml"]
[[entries]]
name = "Quit"
command = ""
args = []
[custom]
[custom.terminal_colors]
shape = "circles"
[custom.clock]
[custom.selected]
[custom.break]
lines = 2- Rust 1.70+ (for building)
- A terminal with ANSI color support
- yazi (optional, for file manager)
- neovim (optional, for config editing)