Skip to content

commended/dott

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

149 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

dott

License: MIT GitHub Repo stars Crates.io Version

a beautiful and fast tui written in rust

Showcase

alt text alt text

Installation

cargo install dott-tui

From Source

cargo build --release
sudo cp target/release/dott /usr/local/bin/

Updating

cargo install dott-tui --force

Usage

Simply run:

~/.cargo/bin/dott-tui

To use a custom configuration file:

~/.cargo/bin/dott-tui -C /path/to/config.toml
# or
~/.cargo/bin/dott-tui --config /path/to/config.toml

The TUI features:

  • Highlighted selection: Selected menu items are highlighted with a cyan background
  • Keyboard navigation: Use arrow keys or vim-style j/k to navigate
  • Quick actions: Press Enter to execute the selected menu item
  • Reload Config: Press u to reload the config without restarting the app
  • Custom Configuration: Use -C flag to specify an alternative config file location
  • Customizable Layout: Configure the order and appearance of modules
  • Multiple Entry Groups: Organize commands into separate groups

Configuration

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_type or directly in structure.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

Requirements

  • Rust 1.70+ (for building)
  • A terminal with ANSI color support
  • yazi (optional, for file manager)
  • neovim (optional, for config editing)

About

beautifully smooth terminal menu written in rust

Resources

License

Stars

Watchers

Forks

Contributors 2

  •  
  •  

Languages