335 lines
9.3 KiB
Markdown
335 lines
9.3 KiB
Markdown
# ADLee's Dotfiles
|
||
|
||
Personal configuration files for a fast, consistent dev environment across Linux/macOS.
|
||
|
||
[](https://opensource.org/licenses/MIT)
|
||
[](https://www.zsh.org/)
|
||
|
||
```
|
||
┌[alee@battlestation]─[~/.dotfiles ⎇ main]
|
||
└%
|
||
```
|
||
|
||
## ✨ Features
|
||
|
||
| Feature | Description |
|
||
|---------|-------------|
|
||
| **Setup Wizard** | Beautiful TUI installer with feature selection |
|
||
| **Zsh Theme** | Git status, command timer, root detection |
|
||
| **Command Palette** | Raycast-style fuzzy launcher (Ctrl+Space) |
|
||
| **Smart Suggestions** | Typo correction + alias recommendations |
|
||
| **Shell Analytics** | Track command usage, get insights |
|
||
| **Secrets Vault** | Encrypted storage for API keys |
|
||
| **Dotfiles Sync** | Auto-sync across machines |
|
||
| **Espanso** | 100+ text expansion snippets |
|
||
| **Snapper** | Btrfs snapshot helpers (Arch/CachyOS) |
|
||
|
||
## 🚀 Quick Start
|
||
|
||
### One-liner Install
|
||
|
||
```bash
|
||
curl -fsSL https://raw.githubusercontent.com/adlee-was-taken/dotfiles/main/install.sh | bash
|
||
```
|
||
|
||
### Interactive Wizard (Recommended)
|
||
|
||
```bash
|
||
git clone https://github.com/adlee-was-taken/dotfiles.git ~/.dotfiles
|
||
cd ~/.dotfiles
|
||
./install.sh --wizard
|
||
```
|
||
|
||
### Standard Install
|
||
|
||
```bash
|
||
git clone https://github.com/adlee-was-taken/dotfiles.git ~/.dotfiles
|
||
cd ~/.dotfiles
|
||
./install.sh
|
||
```
|
||
|
||
## 📁 Repository Layout
|
||
|
||
```
|
||
dotfiles/
|
||
├── install.sh # Main installer
|
||
├── dotfiles.conf # Central configuration
|
||
├── zsh/
|
||
│ ├── .zshrc # Shell config
|
||
│ ├── themes/adlee.zsh-theme
|
||
│ └── functions/
|
||
│ ├── snapper.zsh # Btrfs snapshots
|
||
│ ├── smart-suggest.zsh # Typo correction
|
||
│ └── command-palette.zsh
|
||
├── espanso/ # Text expansion
|
||
│ └── match/base.yml # 100+ snippets
|
||
├── bin/ # Utility scripts
|
||
│ ├── setup-wizard.sh # TUI installer
|
||
│ ├── dotfiles-doctor.sh # Health checker
|
||
│ ├── dotfiles-sync.sh # Multi-machine sync
|
||
│ ├── shell-stats.sh # Analytics
|
||
│ └── vault.sh # Secrets manager
|
||
├── git/.gitconfig.template
|
||
├── vim/.vimrc
|
||
├── tmux/.tmux.conf
|
||
└── docs/
|
||
```
|
||
|
||
## 🎮 Command Palette
|
||
|
||
Press **Ctrl+Space** or **Ctrl+P** to open the fuzzy command launcher:
|
||
|
||
```
|
||
╭──────────────────────────────────────────╮
|
||
│ ❯ git │
|
||
├──────────────────────────────────────────┤
|
||
│ ⎇ git status │
|
||
│ ⎇ git pull main │
|
||
│ ⚡ gs (alias → git status) │
|
||
│ ↺ git commit -m "..." │
|
||
│ ★ Edit .zshrc │
|
||
╰──────────────────────────────────────────╯
|
||
```
|
||
|
||
**Searches:** aliases, functions, history, bookmarks, git commands, docker commands, quick actions
|
||
|
||
**Keybindings:**
|
||
- `Enter` - Execute
|
||
- `Ctrl+E` - Edit before running
|
||
- `Ctrl+Y` - Copy to clipboard
|
||
|
||
### Directory Bookmarks
|
||
|
||
```bash
|
||
bookmark projects ~/projects # Save
|
||
bookmark list # List all
|
||
jump projects # Go to bookmark
|
||
j # Fuzzy select
|
||
```
|
||
|
||
## 🔧 Smart Suggestions
|
||
|
||
Automatic typo correction:
|
||
|
||
```bash
|
||
$ gti status
|
||
✗ Command not found: gti
|
||
→ Did you mean: git?
|
||
|
||
$ dokcer ps
|
||
✗ Command not found: dokcer
|
||
→ Did you mean: docker?
|
||
```
|
||
|
||
Alias recommendations:
|
||
|
||
```bash
|
||
💡 Tip: You've typed 'docker-compose up -d' 15 times
|
||
Consider adding: alias dcu='docker-compose up -d'
|
||
```
|
||
|
||
Quick fix with `fuck`:
|
||
|
||
```bash
|
||
$ gti status
|
||
✗ Command not found: gti
|
||
$ fuck
|
||
Running: git status
|
||
```
|
||
|
||
## 📊 Shell Analytics
|
||
|
||
```bash
|
||
shell-stats.sh
|
||
```
|
||
|
||
```
|
||
╔═══════════════════════════════════════════════════════════════════╗
|
||
║ Shell Analytics Dashboard ║
|
||
╠═══════════════════════════════════════════════════════════════════╣
|
||
║ Total commands: 4,832 ║
|
||
║ Unique commands: 847 ║
|
||
║ ║
|
||
║ Top Commands ║
|
||
║ git 847 ████████████████████████░░░░░░ ║
|
||
║ cd 412 ████████████░░░░░░░░░░░░░░░░░░ ║
|
||
║ ls 398 ███████████░░░░░░░░░░░░░░░░░░░ ║
|
||
╚═══════════════════════════════════════════════════════════════════╝
|
||
```
|
||
|
||
```bash
|
||
shell-stats.sh --suggest # Alias suggestions
|
||
shell-stats.sh --heatmap # Activity by hour
|
||
shell-stats.sh --git # Git breakdown
|
||
shell-stats.sh --dirs # Most visited directories
|
||
```
|
||
|
||
## 🔐 Secrets Vault
|
||
|
||
Encrypted storage for API keys and tokens:
|
||
|
||
```bash
|
||
vault set GITHUB_TOKEN ghp_xxxxxxxxxxxx
|
||
vault set AWS_SECRET_KEY # Prompts (hidden input)
|
||
vault get GITHUB_TOKEN
|
||
vault list # Shows keys only
|
||
vault delete OLD_KEY
|
||
```
|
||
|
||
Export to environment:
|
||
|
||
```bash
|
||
eval $(vault shell) # Load all secrets
|
||
```
|
||
|
||
Uses `age` or `gpg` encryption. Secrets auto-load on shell start.
|
||
|
||
## 🔄 Dotfiles Sync
|
||
|
||
Keep dotfiles synchronized across machines:
|
||
|
||
```bash
|
||
dotfiles-sync.sh # Interactive sync
|
||
dotfiles-sync.sh --status # Show status
|
||
dotfiles-sync.sh --push # Push changes
|
||
dotfiles-sync.sh --pull # Pull changes
|
||
dotfiles-sync.sh --watch 300 # Auto-sync every 5 min
|
||
```
|
||
|
||
On shell start, you'll see:
|
||
|
||
```
|
||
⚠ Dotfiles: 3 update(s) available
|
||
Run: dotfiles-sync.sh --pull
|
||
```
|
||
|
||
## ⌨️ Espanso Snippets
|
||
|
||
All triggers use `..` prefix:
|
||
|
||
| Category | Examples |
|
||
|----------|----------|
|
||
| **Date/Time** | `..date` → 2025-12-15, `..ts` → ISO timestamp |
|
||
| **Git** | `..gstat`, `..gcm`, `..branch` (current branch) |
|
||
| **Docker** | `..dps`, `..dcup`, `..dlog` |
|
||
| **Symbols** | `..shrug` → ¯\\\_(ツ)\_/¯, `..check` → ✓ |
|
||
| **Code** | `..bash` → script template, `..python` → main template |
|
||
|
||
Full list: [docs/ESPANSO.md](docs/ESPANSO.md)
|
||
|
||
## 🎨 Theme Features
|
||
|
||
```
|
||
┌[user@hostname]─[~/projects ⎇ main *]
|
||
└%
|
||
```
|
||
|
||
- **Git integration** – Branch name with dirty indicator (`*`)
|
||
- **Command timer** – Shows elapsed time for commands >10s
|
||
- **Smart paths** – Truncates long directories
|
||
- **Root detection** – Red prompt for root, blue for users
|
||
|
||
## 🩺 Health Check
|
||
|
||
```bash
|
||
dotfiles-doctor.sh # Run diagnostics
|
||
dotfiles-doctor.sh --fix # Auto-fix issues
|
||
```
|
||
|
||
```
|
||
━━━ Symlinks ━━━
|
||
✓ Symlink valid: .zshrc
|
||
✓ Symlink valid: .gitconfig
|
||
✓ Symlink valid: adlee.zsh-theme
|
||
|
||
━━━ Zsh Plugins ━━━
|
||
✓ Plugin installed: zsh-autosuggestions
|
||
✓ Plugin installed: zsh-syntax-highlighting
|
||
|
||
━━━ Summary ━━━
|
||
Passed: 12
|
||
Warnings: 1
|
||
Failed: 0
|
||
```
|
||
|
||
## ⚙️ Configuration
|
||
|
||
All settings in `dotfiles.conf`:
|
||
|
||
```bash
|
||
# Identity
|
||
USER_FULLNAME="Your Name"
|
||
USER_EMAIL="you@example.com"
|
||
GIT_USER_NAME="" # Falls back to USER_FULLNAME
|
||
|
||
# Features
|
||
INSTALL_ZSH_PLUGINS="true"
|
||
INSTALL_FZF="ask"
|
||
INSTALL_ESPANSO="ask"
|
||
|
||
# Advanced
|
||
ENABLE_SMART_SUGGESTIONS="true"
|
||
ENABLE_COMMAND_PALETTE="true"
|
||
ENABLE_VAULT="true"
|
||
DOTFILES_AUTO_SYNC_CHECK="true"
|
||
```
|
||
|
||
## 🔄 Updating
|
||
|
||
```bash
|
||
cd ~/.dotfiles && git pull && ./install.sh
|
||
# or
|
||
update-dotfiles.sh
|
||
```
|
||
|
||
Check version:
|
||
|
||
```bash
|
||
dotfiles-version.sh
|
||
```
|
||
|
||
## 🗑️ Uninstalling
|
||
|
||
```bash
|
||
./install.sh --uninstall # Remove symlinks
|
||
./install.sh --uninstall --purge # Also delete ~/.dotfiles
|
||
```
|
||
|
||
## 📚 Documentation
|
||
|
||
- [Setup Guide](docs/SETUP_GUIDE.md) - Detailed installation instructions
|
||
- [Espanso Reference](docs/ESPANSO.md) - All text expansion snippets
|
||
- [Snapper Guide](docs/SNAPPER.md) - Btrfs snapshot management
|
||
|
||
## 🛠️ Install Options
|
||
|
||
```bash
|
||
./install.sh # Standard install
|
||
./install.sh --wizard # Interactive TUI
|
||
./install.sh --skip-deps # Skip dependency check
|
||
./install.sh --uninstall # Remove symlinks
|
||
./install.sh --help # All options
|
||
```
|
||
|
||
## 📋 Requirements
|
||
|
||
- **OS:** Linux (Ubuntu, Arch, Fedora) or macOS
|
||
- **Shell:** Zsh (installed automatically)
|
||
- **Optional:** fzf (for command palette), age/gpg (for vault)
|
||
|
||
## 🤝 Forking
|
||
|
||
1. Fork the repo
|
||
2. Edit `dotfiles.conf` with your settings
|
||
3. Customize files as needed
|
||
4. The installer will use your fork's URLs
|
||
|
||
## 📄 License
|
||
|
||
MIT – See [LICENSE](LICENSE)
|
||
|
||
---
|
||
|
||
**Author:** Aaron D. Lee
|
||
**Repo:** https://github.com/adlee-was-taken/dotfiles
|