A self-contained, powerful bash enhancement framework with integrated tools and smart dependency management.
- 🚀 Enhanced Line Editing - ble.sh for readline replacement with syntax highlighting
- 🔍 Smart Completions - argc-completions for rich command completions
- 📦 Bundled Dependencies - Auto-installs GitHub tools, no manual setup needed
- 🎨 Starship Prompt - Beautiful cross-shell prompt (configurable)
- 🔧 Development Tools - Integrated mise, usage-cli, carapace support
- 📝 Command Hooks - Pre/post command execution hooks with bash-preexec
- ⚡ Performance - Lazy loading and optimized startup time
- 🛠️ Package Management - Built-in basher support for bash packages
- 🔄 Auto-Update - Keep everything up-to-date with
dash-update - 🏥 Health Checks - Comprehensive diagnostics with
dash-doctor
- bash >= 4.0
- git
- curl
- starship - Beautiful prompt
- fzf - Fuzzy finder
- zoxide - Smart directory jumper
- atuin - Shell history
- nvim - Text editor
- bat - Syntax-highlighted cat
- rg (ripgrep) - Fast grep
- fd - Fast find
- mise - Runtime manager
- usage - Command usage generator
- carapace - Multi-shell completer
# Clone dash to ~/.dash
git clone https://github.com/M4ikel79/dash ~/.dash
# Run setup
~/.dash/bin/dash-setup
# Reload your shell
source ~/.bashrcThe setup script will:
- ✅ Clone bundled libraries (ble.sh, bash-preexec, argc-completions, bash-it, basher)
- ✅ Check for external dependencies
- ✅ Configure your
~/.bashrc - ✅ Set up directory structure
- ✅ Create cache files
~/.dash/
├── bin/ # Executable scripts
│ ├── dash-setup # Initial setup
│ ├── dash-check # Dependency checker
│ ├── dash-update # Update manager
│ └── dash-doctor # Health diagnostics
├── lib/ # Bundled libraries (auto-installed)
│ ├── ble.sh/ # Enhanced readline
│ ├── bash-preexec/ # Command hooks
│ ├── argc-completions/ # Completions
│ ├── bash-it/ # Bash framework
│ └── basher/ # Package manager
├── config/ # Configuration files
│ ├── env # Environment variables
│ ├── bash_aliases # Aliases
│ ├── integrations.sh # Tool integrations
│ ├── hooks.sh # Command hooks
│ └── blerc # ble.sh configuration
├── functions/ # Custom functions
│ └── core.sh # Core utilities
├── completion/ # Custom completions
│ └── custom.sh # Completion definitions
├── cache/ # Runtime cache
│ ├── dash.log # Logs
│ ├── .versions # Version tracking
│ └── .installed # Installation state
├── loader.sh # Main entry point
└── README.md # This file
dash uses a minimal loader approach. Your ~/.bashrc should look like:
# ~/.bashrc - Your personal bash configuration
# Your custom settings go here
export EDITOR=nvim
export VISUAL=nvim
# Load dash framework (must be at the end)
[[ -f ~/.dash/loader.sh ]] && source ~/.dash/loader.sh- Aliases: Edit
~/.dash/config/bash_aliases - Environment: Edit
~/.dash/config/env - Functions: Add to
~/.dash/functions/core.sh - Hooks: Edit
~/.dash/config/hooks.sh - ble.sh: Edit
~/.dash/config/blerc
dash-setup # Run initial setup
dash-check # Check dependencies and installation
dash-update # Update dash and dependencies
dash-doctor # Run health checks and diagnosticsdash-update # Update bundled libraries only
dash-update --all # Update everything (libs + system + cargo)
dash-update --system # Update system packages
dash-update --cargo # Update Cargo packages# File operations
extract <file> # Extract any archive
mkcd <dir> # Create and cd into directory
backup <file> # Backup file with timestamp
# Process management
killp <name> # Find and kill process
topcpu [n] # Show top N CPU-using processes
topmem [n] # Show top N memory-using processes
# Network
myip # Get external IP
localip # Get local IP addresses
port_check <host> <port> # Check if port is open
whatslistening <port> # Show what's listening on port
# Git helpers
gclone <url> # Clone and cd into repo
glog # Pretty git log
gst # Git status short
gca <msg> # Commit all with message
# Development
serve [port] # Start HTTP server (default: 8000)
json <file|string> # Pretty print JSON
genpass [length] # Generate random password
genuuid # Generate UUID
# System
sysinfo # Show system information
diskusage # Show disk usage of current dir
up [n] # Go up N directories
# dash framework
dash-reload # Reload dash configuration
dash-edit # Edit dash in $EDITOR
dash-logs [n] # Show last N log lines
dash-clear-logs # Clear dash logs# Install
cargo install starship
# Create config
starship preset nerd-font-symbols -o ~/.config/starship.toml# Install
sudo pacman -S fzf # Arch
cargo install fzf # Cargo
# Keybindings (auto-loaded by dash)
Ctrl-R # Search history
Ctrl-T # Search files
Alt-C # cd into directory# Install
cargo install zoxide
# Usage
cd ~/projects/myapp # First visit
cd myapp # Jump directly later# Install
cargo install atuin
# Usage
Ctrl-R # Search history (enhanced)# Install
cargo install usage-cli
# Provides automatic completions for many toolsdash-checkdash-doctorble.sh not working
# Reinstall ble.sh
cd ~/.dash/lib/ble.sh
make clean && make install PREFIX=~/.dash/lib/ble.shCompletions not working
# Check argc-completions
ls ~/.dash/lib/argc-completions/completions
# Reload shell
source ~/.bashrcSlow startup
# Enable debug mode
export DASH_DEBUG=1
source ~/.bashrc
# Check logs
dash-logscd ~/.dash
git pull
dash-updatedash-update --all# Backup your .bashrc first!
cp ~/.bashrc ~/.bashrc.backup
# Remove dash loader from .bashrc
sed -i '/dash\/loader.sh/d' ~/.bashrc
# Remove dash directory
rm -rf ~/.dash
# Reload shell
source ~/.bashrcContributions welcome! To add custom functions or configurations:
- Add functions to
~/.dash/functions/core.sh - Add aliases to
~/.dash/config/bash_aliases - Add completions to
~/.dash/completion/custom.sh
MIT License - See LICENSE file for details
dash integrates these amazing projects:
- ble.sh - Enhanced readline
- bash-preexec - Command hooks
- argc-completions - Completions
- bash-it - Bash framework
- basher - Package manager
- starship - Cross-shell prompt
- fzf - Fuzzy finder
- zoxide - Smart cd
- atuin - Shell history