Jump to content

Dotfiles: Difference between revisions

From Archive
Added tips.txt section, CLI fuzzy aliases, gist backup link
Update to match current dotfiles state (Jan 2026): fix tmux bindings, add usage logging, update file structure
Tags: Blanking Reverted
Line 1: Line 1:
= EJ Fox Dotfiles Configuration =


Personal terminal environment optimized for minimalist productivity and AI-enhanced workflows.
== Overview ==
A comprehensive dotfiles configuration emphasizing geometric aesthetics, functional minimalism, and modern CLI tools. Built around the philosophy of distraction-free computing with intelligent automation.
=== Core Philosophy ===
* '''Geometric symbols''' throughout interface (◆ ◇ ○ ▪ ─)
* '''Theme-agnostic''' design (adapts to light/dark mode automatically)
* '''Zen mode''' for deep focus across all applications
* '''Modern CLI tools''' replacing legacy Unix commands
* '''AI integration''' for context-aware assistance
== Shell Configuration ==
=== ZSH (.zshrc) ===
Primary shell configuration with modern enhancements:
'''Key Features:'''
* Oh My Zsh with Powerlevel10k prompt
* Ruby environment via rbenv (replaced RVM)
* Email workflow integration
* Modern CLI aliases (lsd, bat, dust, duf, btop)
* Lazy-loaded tools (conda, zoxide, atuin) for performance
* UV Python package management
'''Notable Aliases:'''
<pre>
alias l='lsd -lah'          # Enhanced ls with icons
alias c='clear && refresh'  # Clear and refresh
alias m='neomutt'          # Email client
alias ei='email-insights'    # AI email analysis
</pre>
=== CIPHER Morning Ritual (Dec 2025) ===
AI-powered daily planning system that runs on first terminal boot.
'''Location:''' <code>~/.dotfiles/bin/morning-ritual</code>
'''What it does:'''
CIPHER analyzes your entire context and suggests 12 pomodoros RANKED BY PRIORITY. Pick your top 3 via fzf multi-select.
'''Context gathered:'''
* Things.app tasks (Today + Anytime lists)
* Calendar events via icalBuddy
* Recent git activity across ~/code
* Command history patterns
* GitHub notifications, PRs awaiting review
* Obsidian week note + 5 recent docs
* Day/time energy state (weekend vs weekday)
'''Architecture:'''
<pre>
.startup.sh runs on first boot
    ↓
Gather ALL context (Things, calendar, git, Obsidian, GitHub)
    ↓
Send to Claude CLI with CIPHER persona
    ↓
fzf with 12 ranked pomodoros (#01-#12)
    ↓
TAB to multi-select, Enter to accept
    ↓
Selected tasks added to Things inbox
</pre>
'''CIPHER personality:''' Terse, insightful, William Gibson meets Unix philosophy. Dry wit with competence. Geometric symbols: ◆ ◇ ○ ●
'''Usage:'''
<pre>
morning-ritual              # Force run
rm /tmp/morning_ritual/last_run && morning-ritual  # Reset today
</pre>
=== AI-Powered Git Commits (Dec 2025) ===
'''Location:''' <code>~/.dotfiles/bin/ai-commit</code>
'''Usage:''' In lazygit, press '''a''' key after staging files.
'''Flow:'''
<pre>
Stage files in lazygit (space)
    ↓
Hit 'a' key
    ↓
ai-commit gathers: staged diff, branch name, recent commits
    ↓
Claude returns 3 conventional commit messages
    ↓
fzf with diff preview (60% right pane)
    ↓
Select message, commit executes
</pre>
'''Lazygit config:''' <code>~/.config/lazygit/config.yml</code>
<pre>
customCommands:
  - key: "a"
    context: "files"
    description: "AI commit (fzf + Claude)"
    subprocess: true
    command: 'MSG=$(ai-commit) && git commit -m "$MSG"'
</pre>
== Terminal & Multiplexer ==
=== Tmux (.tmux.conf) ===
Minimalist terminal multiplexer configuration:
'''Visual Design:'''
* No colors (theme-agnostic)
* Geometric pane count indicators (⚌ ☰ ⚍ ⚏ ☷)
* Centered window list
* Prefix indicator: ◼ (when active)
'''Key Bindings:'''
<pre>
Prefix: C-a
Windows: Alt+h/l (prev/next)
Panes: hjkl (vim-style)
Resize: HJKL (capital letters)
Split: - (horizontal), _ (vertical)
</pre>
=== Tmux 2025 Popup Workflows (Nov 2025) ===
Modern popup workflows that float over your pane layout:
'''Popups:'''
* '''C-a g''' → Lazygit popup in current directory
* '''C-a K''' → Yazi file manager popup
* '''C-a S''' → Scratch terminal toggle (persistent)
'''Pane Capture:'''
* '''C-a C-y''' → Yank entire pane to clipboard
* '''C-a M-y''' → Yank last 200 lines to clipboard
=== Mermaid-ASCII Integration (Sept 2025) ===
Send ASCII diagrams to tmux panes.
'''Functions:'''
* <code>send-mermaid <pane></code> - Send diagram to pane
* <code>test-mermaid [pane]</code> - Quick test (defaults to 0:6.2)
* <code>setup-diagram-listener <pane></code> - Auto-refresh display
'''Critical rules:'''
* Use multiline syntax (not semicolons)
* Always use <code>-a</code> flag for ASCII-only mode
<pre>
echo "graph TD
A[Start] --> B[Process]
B --> C[End]" | mermaid-ascii -a > /tmp/diagram.txt
tmux send-keys -t 0:6.2 "cat /tmp/diagram.txt" Enter
</pre>
== Development Environment ==
=== Neovim (0.11+) ===
LazyVim configuration with minimal aesthetics.
'''0.11 Features (Nov 2025):'''
* Built-in LSP auto-completion (opt-in)
* Async treesitter parsing
* Virtual lines for diagnostics
* Shell prompt jumping with [[ and ]] in terminal
=== Essential Plugins (Nov 2025) ===
'''oil.nvim''' - Filesystem as a buffer
<pre>
-        Open parent directory
<CR>    Open file/directory
g.      Toggle hidden files
</pre>
'''vim-tmux-navigator''' - Seamless navigation
<pre>
Ctrl-h/j/k/l  Move between nvim splits AND tmux panes
</pre>
'''tmux-thumbs''' - Vimium-style hints
<pre>
prefix + Space  Show letter hints on visible text
</pre>
'''nvim-dap''' - Debugging
<pre>
<leader>db  Toggle breakpoint
<leader>dc  Start/continue
<leader>di  Step into
<leader>do  Step over
</pre>
'''kulala.nvim''' - HTTP client
<pre>
<CR>        Execute request under cursor
[r / ]r    Jump between requests
<leader>rc  Copy as cURL
</pre>
'''git-conflict.nvim''' - Merge conflicts
<pre>
co  Choose ours
ct  Choose theirs
cb  Choose both
[x / ]x  Jump between conflicts
</pre>
=== Vulpes Shader System (Nov 2025) ===
Custom GLSL shaders for Ghostty terminal.
'''Location:''' <code>~/.config/ghostty/shaders/</code>
'''Stack (order matters):'''
# '''cursor-blaze-vulpes.glsl''' - Hot pink cursor trail (#ff268c)
# '''bloom-vulpes.glsl''' - Red-selective glow effect
# '''vignette-subtle.glsl''' - Subtle edge darkening
# '''tft-subtle.glsl''' - LCD subpixel effect
'''Reload:''' Cmd+Shift+, in Ghostty
=== mini.animate (Nov 2025) ===
'''Location:''' <code>~/.config/nvim/lua/plugins/mini-animate.lua</code>
Subtle animations:
* Cursor: 80ms cubic easing
* Resize: 60ms cubic
* Open/Close: 60ms cubic
* Scroll: DISABLED
== Sketchybar ==
=== CIPHER Coach (Nov 2025) ===
'''Location:''' <code>~/.config/sketchybar/plugins/next_event.sh</code>
When no calendar events in next 4 hours, shows CIPHER-selected task from Things.
'''Features:'''
* Shows next timed event with countdown
* Skips all-day events
* CIPHER mode picks most joyful task when calendar is clear
* Caches messages, updates when tasks change
=== Battery Fade Effect ===
'''Location:''' <code>~/.config/sketchybar/plugins/battery.sh</code>
Smooth gradient from black to red as battery drains (20min → 0min).
== Modern CLI Tools ==
Replacements for traditional Unix commands:
* '''lsd''' → ls (with icons and colors)
* '''bat''' → cat (syntax highlighting)
* '''dust''' → du (disk usage visualization)
* '''duf''' → df (disk free with graphs)
* '''btop''' → top (modern system monitor)
* '''zoxide''' → cd (smart directory jumping)
* '''atuin''' → history (encrypted shell history)
=== tips.txt - Videogame Loading Screen Vibes ===
'''Location:''' <code>~/tips.txt</code> (symlinked from dotfiles) | '''[https://gist.github.com/ejfox/36c37cb4a9ae4bb3e18fe0b4636eedde View full tips.txt on GitHub Gist]'''
All custom shortcuts organized by category. Type <code>tip</code> to see a random one.
'''What's in it:'''
* All nvim fuzzy finder aliases (v, n, vs, vg, o, r)
* Oil.nvim filesystem editing tricks
* Complete tmux keybindings (pane selection M-1 through M-9)
* LSP navigation shortcuts
* Merge conflict resolution keys
* Git/GitHub utilities (ghpub, ??, commit)
* Clipboard/JSON tools (pbjson, jcurl, showcase)
* Python uv commands
* IRC commands
''Why it goes hard:'' Quick reference for commands you forget. CIPHER bot can read these for contextual suggestions.
=== CLI Nvim Fuzzy Finder Aliases ===
Single-letter commands that open nvim with fuzzy finding built in. Search happens at CLI level before nvim opens.
{| class="wikitable"
|-
! Alias !! Command !! Description
|-
| <code>v</code> || nvim || Just nvim
|-
| <code>n</code> || nvim . || Open current directory with oil.nvim browser
|-
| <code>vs</code> || fzf + bat preview || Fuzzy find files with syntax-highlighted preview
|-
| <code>vg</code> || ripgrep + fzf || Grep file contents, fuzzy find match, open file
|-
| <code>o</code> || fd + fzf (Obsidian) || Obsidian vault fuzzy finder, sorted by modification time
|-
| <code>r</code> || fd + fzf (~/code) || Recent files across ALL projects (the game changer)
|}
'''The <code>r</code> command:'''
* Searches entire <code>~/code</code> directory for recently edited files
* Includes: .js .ts .vue .md .jsx .tsx .css .scss .py .go .rs
* Excludes all build artifacts (node_modules, dist, build, etc)
* Shows clean paths: <code>website2/components/Header.vue</code>
* Jump back to ANY file across ANY project instantly
'''Why it goes hard:'''
* Search happens BEFORE nvim opens (faster workflow)
* Preview shows you what you're opening (no guessing)
* Uses tools already installed (fzf, bat, ripgrep)
* Single letter commands = muscle memory
* Ctrl-C out safely, nvim won't open empty
== Email System ==
=== Neomutt + mbsync ===
Complete email workflow with AI enhancement:
'''Setup:'''
* mbsync for Gmail IMAP sync
* Neomutt as terminal email client
* Keychain integration for secure auth
'''AI Features:'''
* <code>ei</code> - Email insights and priority analysis
* <code>S</code> in neomutt - AI summarize current email
* Automatic categorization and spam filtering
== Security ==
=== Secrets Management ===
* Secrets in <code>~/.env</code> (gitignored)
* App passwords in macOS Keychain
* Wiki credentials in <code>~/.claude-secrets</code>
=== Security Cleanup (Nov 2025) ===
9 API keys scrubbed from git history:
* Anthropic, OpenRouter, OpenAI keys
* Twitter OAuth tokens
* Supabase anon key
== Installation ==
Repository: https://github.com/ejfox/dotfiles
<pre>
git clone https://github.com/ejfox/dotfiles.git ~/.dotfiles
cd ~/.dotfiles
./sync-dotfiles.sh
</pre>
== The Philosophy ==
=== Minimalism as Cognitive Offloading ===
Every visual element that isn't essential is cognitive load. The monochrome approach keeps your visual cortex available for actual work.
=== Automation as Anxiety Reduction ===
AI handles triage. Email filtering removes uncertainty. The startup dashboard prevents "what did I forget?" anxiety.
=== Immediacy Over Perfection ===
Shortcuts prioritize immediate access over complete functionality. Small, frequent commits with "good enough" messages beat perfect commits that never happen.
=== Theme Agnosticism as Future-Proofing ===
Monochrome and geometric symbols remain functional regardless of OS design changes. Decoupled from aesthetic fashions.
=== Intelligence at the Edges ===
AI handles pattern recognition and filtering. Human decision-making stays human. The system never makes choices for you.
----
[[Category:Configuration]]
[[Category:Technical Systems]]
[[Category:Documentation]]
{{Navbox Technical}}

Revision as of 16:55, 26 January 2026