Files
dotfiles/README.md
2025-12-21 23:44:28 -05:00

436 lines
14 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ADLee's Dotfiles (Arch/CachyOS)
Personal configuration files for a fast, productive dev environment on **Arch Linux** and **CachyOS**.
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![Shell](https://img.shields.io/badge/Shell-Zsh-green.svg)](https://www.zsh.org/)
[![OS](https://img.shields.io/badge/OS-Arch%2FCachyOS-blue.svg)](https://archlinux.org/)
```
┌[alee@battlestation]─[~/.dotfiles ⎇ main]
└%
```
## ✨ Features
| Feature | Description |
|---------|-------------|
| **Setup Wizard** | Beautiful TUI installer with feature selection |
| **Dynamic MOTD** | System info on shell start (uptime, CPU, memory, updates) |
| **Zsh Theme** | Two-line prompt with 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 and get insights |
| **Secrets Vault** | Encrypted storage for API keys and sensitive data |
| **LastPass CLI** | Unified password manager integration |
| **Dotfiles Sync** | Keep configuration in sync across machines |
| **Snapper Integration** | Btrfs snapshot management with limine-snapper-sync |
| **Tmux Workspaces** | Project templates with pre-configured layouts |
| **SSH Manager** | Save and manage SSH connections with tmux integration |
## 🚀 Quick Start
### One-liner Install
```bash
git clone https://github.com/adlee-was-taken/dotfiles.git ~/.dotfiles && cd ~/.dotfiles && ./install.sh
```
### 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
```
## 📋 System Requirements
- **OS:** Arch Linux or CachyOS
- **Editors:** Vim (required), Neovim (optional)
- **Password Manager:** LastPass
- **Shell:** Zsh (installed by script)
- **Package Manager:** Pacman (built-in)
## 📁 Repository Layout
```
dotfiles/
├── install.sh # Main installer script
├── dotfiles.conf # Central configuration
├── zsh/
│ ├── .zshrc # Shell configuration
│ ├── aliases.zsh # Command aliases
│ ├── themes/adlee.zsh-theme # Prompt theme
│ └── functions/
│ ├── command-palette.zsh # Ctrl+Space launcher
│ ├── motd.zsh # System info display
│ ├── smart-suggest.zsh # Typo correction
│ ├── password-manager.zsh # LastPass integration
│ ├── snapper.zsh # Btrfs snapshots
│ ├── ssh-manager.zsh # SSH profiles
│ ├── tmux-workspaces.zsh # Workspace templates
│ └── python-templates.zsh # Python project scaffolding
├── vim/.vimrc # Vim configuration
├── nvim/ # Neovim configuration
├── tmux/.tmux.conf # Tmux configuration
├── git/.gitconfig.template # Git configuration template
└── bin/ # Scripts (symlinked to ~/.local/bin)
├── dotfiles-doctor.sh # Health checker
├── dotfiles-sync.sh # Multi-machine sync
├── dotfiles-stats.sh # Shell analytics
├── dotfiles-update.sh # Update dotfiles
├── dotfiles-vault.sh # Encrypted secrets manager
└── dotfiles-version.sh # Version info
```
## 🎮 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, recent commands, bookmarks, git commands, quick actions
**Keybindings:**
- `Enter` - Execute command
- `Ctrl+E` - Edit before running
- `Ctrl+Y` - Copy to clipboard
### Directory Bookmarks
```bash
bookmark projects ~/projects # Save bookmark
bookmark list # List all
jump projects # Go to bookmark
j # Fuzzy select
```
## 🔧 Smart Suggestions
Automatic typo correction for 100+ common mistakes:
```bash
$ gti status
✗ Command not found: gti
→ Did you mean: git?
$ dokcer ps
✗ Command not found: dokcer
→ Did you mean: docker?
```
Alias recommendations for frequently typed commands:
```bash
💡 Tip: You've typed 'git status' 50 times
Consider adding: alias gs='git status'
```
## 📊 Shell Analytics
```bash
dotfiles-stats.sh # Full dashboard
# or use aliases:
dfstats
stats
```
```
╔═══════════════════════════════════════════════════════════════════╗
║ Shell Analytics Dashboard ║
╠═══════════════════════════════════════════════════════════════════╣
║ Total commands: 4,832 ║
║ Unique commands: 847 ║
║ ║
║ Top Commands ║
║ git 847 ████████████████████████░░░░░░ ║
║ cd 412 ████████████░░░░░░░░░░░░░░░░░░ ║
║ ls 398 ███████████░░░░░░░░░░░░░░░░░░░ ║
╚═══════════════════════════════════════════════════════════════════╝
```
## 🔐 Secrets Vault
Encrypted storage for API keys and tokens:
```bash
vault set GITHUB_TOKEN ghp_xxxxxxxxxxxx
vault set AWS_SECRET_KEY # Prompts for hidden input
vault get GITHUB_TOKEN
vault list # Shows keys only
vault delete OLD_KEY
# Full command: dotfiles-vault.sh
```
Export to environment:
```bash
eval $(vault shell) # Load all secrets
```
Uses `age` or `gpg` encryption. Secrets auto-load on shell start.
## 🔑 Password Manager Integration
LastPass CLI for unified password management:
```bash
pw list # List all items
pw get github # Get password
pw get github username # Get specific field
pw otp github # Get TOTP code
pw copy aws # Copy password to clipboard
pw search mail # Search items
pwf # Fuzzy search + copy (requires fzf)
```
### Install LastPass CLI
```bash
# Via AUR with paru (recommended)
paru -S lastpass-cli
# Or with yay
yay -S lastpass-cli
```
## 🖥️ Dynamic MOTD
System info displayed on shell startup:
```
┌──────────────────────────────────────────────────────────────┐
│ ✦ alee@battlestation Mon Dec 15 14:30 │
├──────────────────────────────────────────────────────────────┤
│ ▲ up:4d 7h ◆ load:0.45 ◇ mem:8.2/32G ⊡ 234G free │
└──────────────────────────────────────────────────────────────┘
```
Shows: uptime, load average, memory usage, disk space
**Configuration:**
```bash
ENABLE_MOTD="true" # Enable MOTD
MOTD_STYLE="compact" # compact (box), mini (single line), or off
```
## 🎨 Zsh Theme
```
┌[user@hostname]─[~/projects ⎇ main *]
└%
```
**Features:**
- Two-line prompt for clarity
- Git integration (branch name with dirty indicator `*`)
- Command timer (shows elapsed time for commands >10s)
- Smart path truncation
- Root detection (red for root, blue for users)
## 🔄 Dotfiles Sync
Keep configuration synchronized across machines:
```bash
dotfiles-sync.sh # Interactive sync
dotfiles-sync.sh --status # Show sync 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 notifications of available updates.
## 📸 Snapper Integration
Btrfs snapshot management for Arch with limine bootloader:
```bash
snap-create "Before system update" # Create snapshot
snap-list 20 # List recent snapshots
snap-check-limine # Verify boot menu sync
snap-delete 42 # Delete snapshot
snap-validate-service # Check service status
```
Auto-syncs with `limine-snapper-sync` for boot menu entries.
**Install on CachyOS/Arch:**
```bash
paru -S limine-snapper-sync
sudo systemctl enable limine-snapper-sync.service
```
## 🎯 Tmux Workspace Manager
Pre-configured layouts for different workflows:
```bash
tw-create myproject dev # Create dev workspace
tw myproject # Quick attach or create
tw-list # List active workspaces
tw-save my-custom-layout # Save current layout as template
tw-sync # Toggle pane sync for multi-server
twf # Fuzzy search workspaces
```
**Available Templates:**
- `dev` - Vim (50%) + terminal (25%) + logs (25%)
- `ops` - 4-pane monitoring grid
- `ssh-multi` - 4 panes for multi-server management
- `debug` - 2 panes: main (70%) + helper (30%)
- `full` - Single full-screen pane
- `review` - Side-by-side code review panes
## 🌐 SSH Session Manager
Save and manage SSH connections with automatic tmux integration:
```bash
ssh-save prod user@prod.example.com 22 ~/.ssh/prod_key
ssh-connect prod # Auto-creates/attaches tmux session
ssh-list # List all profiles
sshf # Fuzzy search and connect
ssh-sync-dotfiles prod # Deploy dotfiles to remote
```
## 🐍 Python Project Templates
Quick project scaffolding with virtual environments:
```bash
py-new myproject # Basic Python project
py-django myblog # Django web app
py-flask myapp # Flask web app
py-fastapi myapi # FastAPI REST API
py-data analysis # Data science project
py-cli mytool # CLI tool with Click
```
All include virtual environment setup, git initialization, and project structure.
## ⌨️ Command Aliases
All dotfiles commands have convenient aliases:
| Alias | Command | Description |
|-------|---------|-------------|
| `dfd` | `dotfiles-doctor.sh` | Health check |
| `dffix` | `dotfiles-doctor.sh --fix` | Auto-fix issues |
| `dfs` | `dotfiles-sync.sh` | Sync dotfiles |
| `dfpush` | `dotfiles-sync.sh --push` | Push changes |
| `dfpull` | `dotfiles-sync.sh --pull` | Pull changes |
| `dfu` | `dotfiles-update.sh` | Update dotfiles |
| `dfv` | `dotfiles-version.sh` | Version info |
| `dfstats` | `dotfiles-stats.sh` | Shell analytics |
| `vault` | `dotfiles-vault.sh` | Secrets manager |
| `pw` | LastPass password manager | Get/list passwords |
| `tw` | Tmux workspace manager | Quick workspace access |
| `reload` | `source ~/.zshrc` | Reload shell config |
## 🩺 Health Check
```bash
dotfiles-doctor.sh # Run diagnostics
dotfiles-doctor.sh --fix # Auto-fix issues
# Aliases: dfd, doctor, dffix
```
Checks: symlinks, zsh plugins, git config, optional tools, and more
## ⚙️ Configuration
Edit `~/.dotfiles/dotfiles.conf` to customize:
```bash
# Identity
USER_FULLNAME="Your Name"
USER_EMAIL="you@example.com"
USER_GITHUB="yourusername"
# Features
INSTALL_ZSH_PLUGINS="true"
INSTALL_FZF="ask"
INSTALL_NEOVIM="ask"
SET_ZSH_DEFAULT="ask"
# Advanced
ENABLE_SMART_SUGGESTIONS="true"
ENABLE_COMMAND_PALETTE="true"
ENABLE_VAULT="true"
DOTFILES_AUTO_SYNC_CHECK="true"
```
## 🔄 Updating
```bash
dotfiles-update.sh
# or aliases:
dfu
dfupdate
```
Check version:
```bash
dotfiles-version.sh
# or: dfv
```
## 🗑️ Uninstalling
```bash
./install.sh --uninstall # Remove symlinks
./install.sh --uninstall --purge # Also delete ~/.dotfiles
```
## 📚 Documentation
- [SETUP_GUIDE.md](docs/SETUP_GUIDE.md) - Detailed installation and configuration
- [ESPANSO.md](docs/ESPANSO.md) - Text expansion snippets reference
- [SNAPPER.md](docs/SNAPPER.md) - Btrfs snapshot management guide
- [SSH_TMUX_INTEGRATION.md](docs/SSH_TMUX_INTEGRATION.md) - SSH + Tmux workflow
## 🛠️ Install Options
```bash
./install.sh # Standard install
./install.sh --wizard # Interactive TUI wizard
./install.sh --skip-deps # Re-run without checking deps
./install.sh --uninstall # Remove symlinks
./install.sh --help # Show all options
```
## 🤝 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
**Repository:** https://github.com/adlee-was-taken/dotfiles
**Arch/CachyOS Only Edition**