Jump to content

Dotfiles: Difference between revisions

From Archive
Fix formatting and improve readability
FIX: Restore actual Dotfiles content
 
(6 intermediate revisions by the same user not shown)
Line 25: Line 25:
* Modern CLI aliases (lsd, bat, dust, duf, btop)
* Modern CLI aliases (lsd, bat, dust, duf, btop)
* Lazy-loaded tools (conda, zoxide, atuin) for performance
* Lazy-loaded tools (conda, zoxide, atuin) for performance
* Smart git commit with LLM integration
* UV Python package management
* UV Python package management


'''Notable Aliases:'''
'''Notable Aliases:'''
alias l='lsd -lah'          # Enhanced ls with icons
<pre>
alias c='clear && refresh'  # Clear and refresh
alias l='lsd -lah'          # Enhanced ls with icons
alias m='neomutt'          # Email client
alias c='clear && refresh'  # Clear and refresh
alias ei='email-insights'    # AI email analysis
alias m='neomutt'          # Email client
alias commit='...'          # LLM-powered git commits
alias ei='email-insights'    # AI email analysis
</pre>


=== Startup Script (.startup.sh) ===
=== CIPHER Morning Ritual (Dec 2025) ===
AI-powered Message of the Day system providing contextual information:
AI-powered daily planning system that runs on first terminal boot.


'''Components:'''
'''Location:''' <code>~/.dotfiles/bin/morning-ritual</code>
* '''Tasks''' - Integration with Things CLI
* '''Calendar''' - icalBuddy for today's events
* '''Recent Work''' - Git repositories from ~/code
* '''Recent Notes''' - Obsidian markdown files
* '''Email Summary''' - AI-filtered unread messages
* '''AI Insights''' - Personalized productivity suggestions (cached 3hr)


'''Intelligence Features:'''
'''What it does:'''
* Filters out financial spam automatically
CIPHER analyzes your entire context and suggests 12 pomodoros RANKED BY PRIORITY. Pick your top 3 via fzf multi-select.
* Categorizes emails (🤖 dev, ⚠️ urgent, 📅 calendar)
* Skips in tmux sessions unless forced
* Background email sync
* Zen mode aware


=== Zen Mode (.zen-mode.sh) ===
'''Context gathered:'''
System-wide minimal interface toggle:
* Things.app tasks (Today + Anytime lists)
* Hides menu bars and dock
* Calendar events via icalBuddy
* Disables notifications
* Recent git activity across ~/code
* Creates `/tmp/.zen-mode-state` flag
* Command history patterns
* Integrates with tmux, nvim, and startup script
* 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 ==
== Terminal & Multiplexer ==
Line 69: Line 114:
* Geometric pane count indicators (⚌ ☰ ⚍ ⚏ ☷)
* Geometric pane count indicators (⚌ ☰ ⚍ ⚏ ☷)
* Centered window list
* Centered window list
* Subtle arrow indicators for active pane
* Prefix indicator: ◼ (when active)
* Prefix indicator: ◼ (when active)


'''Key Bindings:'''
'''Key Bindings:'''
Prefix: C-a
<pre>
Windows: Alt+h/l (prev/next)
Prefix: C-a
Panes: hjkl (vim-style)
Windows: Alt+h/l (prev/next)
Resize: HJKL (capital letters)
Panes: hjkl (vim-style)
Split: - (horizontal), _ (vertical)
Resize: HJKL (capital letters)
Split: - (horizontal), _ (vertical)
</pre>


== Email System ==
=== 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)


=== Neomutt + mbsync ===
'''Pane Capture:'''
Complete email workflow with AI enhancement:
* '''C-a C-y''' → Yank entire pane to clipboard
* '''C-a M-y''' → Yank last 200 lines to clipboard


'''Setup:'''
=== Mermaid-ASCII Integration (Sept 2025) ===
* mbsync for Gmail IMAP sync
Send ASCII diagrams to tmux panes.
* Neomutt as terminal email client
* Keychain integration for secure auth
* Background auto-sync


'''AI Features:'''
'''Functions:'''
* Email subject filtering and cleanup
* <code>send-mermaid <pane></code> - Send diagram to pane
* Automatic categorization
* <code>test-mermaid [pane]</code> - Quick test (defaults to 0:6.2)
* Spam/financial email removal
* <code>setup-diagram-listener <pane></code> - Auto-refresh display
* Inbox insights and priority analysis
* Per-email AI summarization (Press 'S')


'''Workflow:'''
'''Critical rules:'''
m          # Open neomutt
* Use multiline syntax (not semicolons)
ei          # AI inbox analysis
* Always use <code>-a</code> flag for ASCII-only mode
1-4        # Quick filters (unread, replied, sent, flagged)
<pre>
/           # Search
echo "graph TD
gg/G        # First/last email
A[Start] --> B[Process]
S          # AI summarize current email
B --> C[End]" | mermaid-ascii -a > /tmp/diagram.txt
tmux send-keys -t 0:6.2 "cat /tmp/diagram.txt" Enter
</pre>


== Development Environment ==
== Development Environment ==


=== Neovim ===
=== Neovim (0.11+) ===
LazyVim configuration with minimal aesthetics:
LazyVim configuration with minimal aesthetics.
* Auto dark/light mode switching
* Zen mode integration
* Minimal statusline
* Hardtime plugin for vim skill building


=== Git Integration ===
'''0.11 Features (Nov 2025):'''
* Smart commit messages via LLM
* Built-in LSP auto-completion (opt-in)
* Git status in sketchybar
* Async treesitter parsing
* LFS support for large files
* Virtual lines for diagnostics
* Conventional commit formatting
* 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 ==
== Modern CLI Tools ==
Line 131: Line 259:
* '''atuin''' → history (encrypted shell history)
* '''atuin''' → history (encrypted shell history)


== Application Configurations ==
== Email System ==


=== Ghostty Terminal ===
=== Neomutt + mbsync ===
Modern terminal emulator settings:
Complete email workflow with AI enhancement:
* Opacity and blur effects
* Font: SF Mono
* Theme synchronization
* Performance optimizations


=== Sketchybar ===
'''Setup:'''
macOS menu bar replacement:
* mbsync for Gmail IMAP sync
* Git status indicators
* Neomutt as terminal email client
* Battery with percentage
* Keychain integration for secure auth
* Productivity metrics
* Claude usage tracking
* Minimal aesthetic matching tmux


=== File Management ===
'''AI Features:'''
* '''Yazi''' - Terminal file manager without color distractions
* <code>ei</code> - Email insights and priority analysis
* '''Btop''' - System monitor with transparent background
* <code>S</code> in neomutt - AI summarize current email
* Automatic categorization and spam filtering


== Automation & Intelligence ==
== Security ==


=== LLM Integration ===
=== Secrets Management ===
AI enhancement throughout the system:
* Secrets in <code>~/.env</code> (gitignored)
* Startup insights with CIPHER persona
* App passwords in macOS Keychain
* Email categorization and summarization
* Wiki credentials in <code>~/.claude-secrets</code>
* Commit message generation
* Context-aware suggestions


=== Background Processes ===
=== Security Cleanup (Nov 2025) ===
* Email sync every 60 seconds
9 API keys scrubbed from git history:
* Git status updates
* Anthropic, OpenRouter, OpenAI keys
* Theme synchronization
* Twitter OAuth tokens
* Cache management (3-hour cycles)
* Supabase anon key


== Installation & Sync ==
== Installation ==


Repository: https://github.com/ejfox/dotfiles
Repository: https://github.com/ejfox/dotfiles


'''Setup Process:'''
<pre>
git clone https://github.com/ejfox/dotfiles.git ~/.dotfiles
git clone https://github.com/ejfox/dotfiles.git ~/.dotfiles
cd ~/.dotfiles
cd ~/.dotfiles
./sync-dotfiles.sh
./sync-dotfiles.sh
</pre>


'''Dependencies:'''
== The Philosophy ==
* Oh My Zsh + Powerlevel10k
* Homebrew packages (neomutt, mbsync, llm, etc.)
* LLM CLI tool with OpenAI API
* Things app for task management
* Obsidian for note-taking


== Security Notes ==
=== 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.


* No secrets committed to repository
=== Automation as Anxiety Reduction ===
* Passwords stored in macOS Keychain
AI handles triage. Email filtering removes uncertainty. The startup dashboard prevents "what did I forget?" anxiety.
* App-specific passwords for Gmail
* Secure email authentication via keychain lookup commands


== Recent Updates ==
=== Immediacy Over Perfection ===
Shortcuts prioritize immediate access over complete functionality. Small, frequent commits with "good enough" messages beat perfect commits that never happen.


Latest improvements include:
=== Theme Agnosticism as Future-Proofing ===
* Email system with AI filtering
Monochrome and geometric symbols remain functional regardless of OS design changes. Decoupled from aesthetic fashions.
* Rbenv migration from RVM
* Enhanced startup script with email integration
* Monochrome neomutt configuration
* Background sync automation
* Improved repo detection in startup


---
=== 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:Configuration]]
[[Category:Terminal]]
[[Category:Technical Systems]]
[[Category:Productivity]]
[[Category:Documentation]]
 
{{Navbox Technical}}

Latest revision as of 00:29, 8 December 2025

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:

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

CIPHER Morning Ritual (Dec 2025)

AI-powered daily planning system that runs on first terminal boot.

Location: ~/.dotfiles/bin/morning-ritual

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:

.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

CIPHER personality: Terse, insightful, William Gibson meets Unix philosophy. Dry wit with competence. Geometric symbols: ◆ ◇ ○ ●

Usage:

morning-ritual              # Force run
rm /tmp/morning_ritual/last_run && morning-ritual  # Reset today

AI-Powered Git Commits (Dec 2025)

Location: ~/.dotfiles/bin/ai-commit

Usage: In lazygit, press a key after staging files.

Flow:

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

Lazygit config: ~/.config/lazygit/config.yml

customCommands:
  - key: "a"
    context: "files"
    description: "AI commit (fzf + Claude)"
    subprocess: true
    command: 'MSG=$(ai-commit) && git commit -m "$MSG"'

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:

Prefix: C-a
Windows: Alt+h/l (prev/next)
Panes: hjkl (vim-style)
Resize: HJKL (capital letters)
Split: - (horizontal), _ (vertical)

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:

  • send-mermaid <pane> - Send diagram to pane
  • test-mermaid [pane] - Quick test (defaults to 0:6.2)
  • setup-diagram-listener <pane> - Auto-refresh display

Critical rules:

  • Use multiline syntax (not semicolons)
  • Always use -a flag for ASCII-only mode
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

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

-        Open parent directory
<CR>     Open file/directory
g.       Toggle hidden files

vim-tmux-navigator - Seamless navigation

Ctrl-h/j/k/l  Move between nvim splits AND tmux panes

tmux-thumbs - Vimium-style hints

prefix + Space  Show letter hints on visible text

nvim-dap - Debugging

<leader>db  Toggle breakpoint
<leader>dc  Start/continue
<leader>di  Step into
<leader>do  Step over

kulala.nvim - HTTP client

<CR>        Execute request under cursor
[r / ]r     Jump between requests
<leader>rc  Copy as cURL

git-conflict.nvim - Merge conflicts

co  Choose ours
ct  Choose theirs
cb  Choose both
[x / ]x  Jump between conflicts

Vulpes Shader System (Nov 2025)

Custom GLSL shaders for Ghostty terminal.

Location: ~/.config/ghostty/shaders/

Stack (order matters):

  1. cursor-blaze-vulpes.glsl - Hot pink cursor trail (#ff268c)
  2. bloom-vulpes.glsl - Red-selective glow effect
  3. vignette-subtle.glsl - Subtle edge darkening
  4. tft-subtle.glsl - LCD subpixel effect

Reload: Cmd+Shift+, in Ghostty

mini.animate (Nov 2025)

Location: ~/.config/nvim/lua/plugins/mini-animate.lua

Subtle animations:

  • Cursor: 80ms cubic easing
  • Resize: 60ms cubic
  • Open/Close: 60ms cubic
  • Scroll: DISABLED

Sketchybar

CIPHER Coach (Nov 2025)

Location: ~/.config/sketchybar/plugins/next_event.sh

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: ~/.config/sketchybar/plugins/battery.sh

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)

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:

  • ei - Email insights and priority analysis
  • S in neomutt - AI summarize current email
  • Automatic categorization and spam filtering

Security

Secrets Management

  • Secrets in ~/.env (gitignored)
  • App passwords in macOS Keychain
  • Wiki credentials in ~/.claude-secrets

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

git clone https://github.com/ejfox/dotfiles.git ~/.dotfiles
cd ~/.dotfiles
./sync-dotfiles.sh

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.



Technical
Core Technical · CLI · Dotfiles · Nvim · SSH · VPS
Tools Sketchybar · ArchiveBox · ThinkPad Linux
Systems Automation · Personal APIs · Quantified Self
Reference Runbooks · New Computer Runbook · Syntax guide