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