Jump to content

Dotfiles: Difference between revisions

From Archive
Rewrite as narrative field guide for future self
FIX: Restore actual Dotfiles content
 
(5 intermediate revisions by the same user not shown)
Line 1: Line 1:
= EJ Fox Dotfiles: The Complete Field Guide =
= EJ Fox Dotfiles Configuration =


''A survival manual for your future self when you inevitably forget how your own terminal works.''
Personal terminal environment optimized for minimalist productivity and AI-enhanced workflows.


== The Daily Workflow ==
== Overview ==


When you open a terminal, your startup script automatically runs a custom dashboard that shows you everything you need to know right now. It pulls from Things for your tasks, icalBuddy for calendar events, scans your ~/code directory for recent git repos, checks Obsidian for recent notes, and gives you an AI-powered email summary that filters out all the financial spam automatically.
A comprehensive dotfiles configuration emphasizing geometric aesthetics, functional minimalism, and modern CLI tools. Built around the philosophy of distraction-free computing with intelligent automation.


The AI (using your CIPHER persona) gives you cryptic but helpful daily insights cached for 3 hours. If you're in a tmux session, it won't spam you with this info unless you explicitly run `~/.startup.sh --force`.
=== 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


=== Your Custom Commands ===
== Shell Configuration ==


When you want to check email, just type `m` to open neomutt. Inside neomutt, press `1` to see only unread emails, `2` for emails you've replied to, `3` to jump to sent mail, `4` for flagged items, and `0` to show everything. If an email looks important but you don't want to read the whole thing, press `S` to get an AI summary.
=== ZSH (.zshrc) ===
Primary shell configuration with modern enhancements:


For deeper email analysis when you have a pile of unread messages, run `ei` (email-insights). This feeds your recent email subjects to the AI and gives you a prioritized breakdown of what actually needs your attention versus what's just noise.
'''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


Your git workflow is enhanced with an AI-powered commit command. Just type `commit` and it'll analyze your staged changes, generate 10 different commit message options using conventional commit format, and let you pick one with fzf. No more staring at a blank commit message prompt.
'''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>


=== Terminal Navigation ===
=== CIPHER Morning Ritual (Dec 2025) ===
AI-powered daily planning system that runs on first terminal boot.


Your tmux setup is designed to be completely monochrome and distraction-free. The prefix key is `C-a` (not the default C-b). Use `Alt+h` and `Alt+l` to switch between windows quickly without hitting the prefix. For panes, it's pure vim: `hjkl` to navigate, `HJKL` (capital) to resize. Split with `-` for horizontal or `_` for vertical.
'''Location:''' <code>~/.dotfiles/bin/morning-ritual</code>


The status bar shows geometric symbols for pane counts: ⚌ for 2 panes, ☰ for 3, ⚍ for 4, etc. When you're using the prefix key, you'll see a ◼ indicator. The whole thing is centered like your code editor and completely theme-agnostic.
'''What it does:'''
CIPHER analyzes your entire context and suggests 12 pomodoros RANKED BY PRIORITY. Pick your top 3 via fzf multi-select.


=== Zen Mode System ===
'''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)


When you need deep focus, run `~/.zen-mode.sh` to hide the dock, menu bar, and disable notifications system-wide. This creates a `/tmp/.zen-mode-state` file that all your other tools check for. Your startup script won't show, tmux and nvim know to be extra minimal, and everything just gets out of your way. Run the script again to toggle back.
'''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>


== Email System Deep Dive ==
'''CIPHER personality:''' Terse, insightful, William Gibson meets Unix philosophy. Dry wit with competence. Geometric symbols: ◆ ◇ ○ ●


Your email setup is a three-part system: mbsync pulls from Gmail in the background, neomutt provides the interface, and AI processes everything to keep you sane.
'''Usage:'''
<pre>
morning-ritual              # Force run
rm /tmp/morning_ritual/last_run && morning-ritual  # Reset today
</pre>


The background sync happens automatically, but you can manually sync with `Ctrl+S` inside neomutt. Your startup script shows a smart summary that categorizes emails: 🤖 for dev notifications (GitHub, CI failures), ⚠️ for urgent items, 📅 for calendar stuff, and → for normal emails. Financial emails, payment failures, and subscription spam are automatically filtered out.
=== AI-Powered Git Commits (Dec 2025) ===
'''Location:''' <code>~/.dotfiles/bin/ai-commit</code>


The AI email summarization happens in two places. The startup summary processes recent email subjects and cleans up encoding artifacts while filtering spam. The deeper `ei` command analyzes patterns in your inbox and suggests workflows for handling everything efficiently.
'''Usage:''' In lazygit, press '''a''' key after staging files.


Inside neomutt, everything is monochrome to match your tmux aesthetic. No colors, just reverse highlighting for the current selection. Raw emails are shown in chronological order with no threading - pure and simple. Auto-mark-read is enabled so emails mark themselves read as you scroll past them.
'''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>


== Shell Customizations ==
'''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>


Your zsh is heavily customized but loads fast through lazy loading. Tools like conda, zoxide, and atuin only initialize when you first use them. Your PATH prioritizes modern replacements: `lsd` instead of `ls`, `bat` instead of `cat`, `dust` instead of `du`.
== Terminal & Multiplexer ==


The `c` command doesn't just clear the screen - it clears and runs your refresh function. The `l` command gives you a detailed directory listing with icons and human-readable sizes. When you want to jump directories, just type `z` followed by part of a path name - zoxide will figure out where you meant to go.
=== Tmux (.tmux.conf) ===
Minimalist terminal multiplexer configuration:


Your Ruby environment uses rbenv instead of RVM (you migrated away from RVM chaos). Python uses uv for everything - it's aliased to replace pip, pip3, python, and venv commands with helpful reminders to use uv instead.
'''Visual Design:'''
* No colors (theme-agnostic)
* Geometric pane count indicators (⚌ ☰ ⚍ ⚏ ☷)
* Centered window list
* Prefix indicator: ◼ (when active)


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


You've replaced most traditional Unix commands with modern alternatives. `lsd` gives you colored ls output with file type icons. `bat` provides syntax highlighting when viewing files. `dust` shows disk usage visually instead of boring du output. `duf` presents disk free information with actual graphs. `btop` replaces top with a modern TUI that looks like a sci-fi interface.
=== Tmux 2025 Popup Workflows (Nov 2025) ===
Modern popup workflows that float over your pane layout:


These aren't just aliases - they're fundamental workflow changes. When you `cat` a code file, you get syntax highlighting automatically. When you `ls` a directory, you see file types at a glance. When you check disk usage, you get immediate visual understanding instead of scanning numbers.
'''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 ==
== Development Environment ==


Your nvim setup is LazyVim with minimal customizations. It auto-detects light/dark mode and switches themes accordingly. Zen mode integration means it goes completely minimal when you're in focus mode. The statusline is stripped down to essentials only.
=== Neovim (0.11+) ===
LazyVim configuration with minimal aesthetics.


Sketchybar replaces the default macOS menu bar with custom widgets. It shows git status for your current directory, battery percentage, and tracks how much you're using Claude API. Everything matches your minimal aesthetic - no flashy colors or animations.
'''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


== The AI Integration Layer ==
=== Essential Plugins (Nov 2025) ===


Throughout your system, AI provides contextual assistance without being intrusive. The startup script uses your CIPHER persona to give daily insights. Email processing removes spam and categorizes everything intelligently. Git commits get smart suggestions based on your actual changes.
'''oil.nvim''' - Filesystem as a buffer
<pre>
-        Open parent directory
<CR>    Open file/directory
g.       Toggle hidden files
</pre>


The key is that AI enhances your workflow without taking over. It filters noise, suggests actions, and provides context - but you're always in control. When the LLM is unavailable, everything falls back to sensible defaults.
'''vim-tmux-navigator''' - Seamless navigation
<pre>
Ctrl-h/j/k/l  Move between nvim splits AND tmux panes
</pre>


== File and Process Management ==
'''tmux-thumbs''' - Vimium-style hints
<pre>
prefix + Space  Show letter hints on visible text
</pre>


Yazi handles file management in the terminal with vim-like navigation but no distracting colors. Everything is about content and structure, not visual candy. Btop monitors system processes with transparency effects that integrate with your desktop.
'''nvim-dap''' - Debugging
<pre>
<leader>db  Toggle breakpoint
<leader>dc  Start/continue
<leader>di  Step into
<leader>do  Step over
</pre>


For search, ripgrep (rg) handles text searching with blazing speed. The startup script uses it extensively to scan through your email and notes quickly.
'''kulala.nvim''' - HTTP client
<pre>
<CR>        Execute request under cursor
[r / ]r    Jump between requests
<leader>rc  Copy as cURL
</pre>


== Backup and Recovery ==
'''git-conflict.nvim''' - Merge conflicts
<pre>
co  Choose ours
ct  Choose theirs
cb  Choose both
[x / ]x  Jump between conflicts
</pre>


Your entire setup is version controlled in the dotfiles repo. The sync script handles symlinking everything to the right places. If you're setting up a new machine or recovering from a system wipe, just clone the repo and run the sync script.
=== Vulpes Shader System (Nov 2025) ===
Custom GLSL shaders for Ghostty terminal.


All secrets are in macOS Keychain, never committed to git. Email authentication goes through keychain lookup commands. Your app passwords and API keys are safely stored in the system keychain and retrieved dynamically.
'''Location:''' <code>~/.config/ghostty/shaders/</code>


== Troubleshooting Your Own System ==
'''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


If neomutt throws library errors, run `brew reinstall neomutt` to fix dependency issues. If the startup script seems slow, check if the AI reflection cache is stale - it's in `/tmp/startup_cache/reflection_cache.txt` and refreshes every 3 hours.
'''Reload:''' Cmd+Shift+, in Ghostty


If email isn't syncing, manually run `mbsync gmail` to see error messages. The most common issue is keychain access - make sure your app password is stored correctly with the security command.
=== mini.animate (Nov 2025) ===
'''Location:''' <code>~/.config/nvim/lua/plugins/mini-animate.lua</code>


When tmux keybindings feel wrong, remember your prefix is `C-a`, not the default `C-b`. If you're getting weird characters in terminal output, check that your TERM variable is set to "xterm-256color".
Subtle animations:
* Cursor: 80ms cubic easing
* Resize: 60ms cubic
* Open/Close: 60ms cubic
* Scroll: DISABLED


== The Philosophy in Practice ==
== Sketchybar ==


Everything in your setup follows the principle of minimal visual noise with maximum functional density. Colors are used sparingly and meaningfully. Animations are disabled. Information is presented geometrically and consistently across all tools.
=== CIPHER Coach (Nov 2025) ===
'''Location:''' <code>~/.config/sketchybar/plugins/next_event.sh</code>


The goal is a computing environment that stays out of your way but provides powerful capabilities when needed. AI handles the tedious filtering and categorization. Modern tools provide better UX than their Unix ancestors. Everything is designed for your future self to understand and maintain.
When no calendar events in next 4 hours, shows CIPHER-selected task from Things.


When you inevitably customize something new, follow the same principles: monochrome where possible, geometric symbols for status, intelligent defaults, and always provide a way to get back to baseline functionality.
'''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)
 
== 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:Configuration]]
[[Category:Terminal]]
[[Category:Technical Systems]]
[[Category:Productivity]]
[[Category:Documentation]]
[[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