Field notes

Shell ergonomics

Project navigation, fuzzy finding, auto-environments and session switching, all set up through fish conf.d auto-sourcing with nothing to run by hand.

Everyday

CDPATH4

Jump to ~/Code/titan from anywhere
Jump to ~/Code/scratch from anywhere
Current dir first, then ~/Code fallback
Relative paths still take priority over CDPATH

zoxide8

Zoxide frecency jump (learns from usage)
Fuzzy match, jumps to best frecency match
Absolute paths still work normally
Relative navigation unchanged
Interactive fzf picker from zoxide database
Show what zoxide would match
List all entries sorted by score
Edit the zoxide database interactively

fzf6

Fuzzy search command history
Fuzzy file picker, inserts path at cursor
Fuzzy cd into subdirectory
--height 40% --reverse --border
Pipe anything into fzf for selection
Find file → fzf pick → open in vim

direnv7

Auto-loads .envrc if present
Auto-unloads environment variables
Approve a new or changed .envrc
Block an .envrc from loading
Show current direnv state
Shell script evaluated on directory entry
Example .envrc content, sets $FOO

Project switcher5

Jump directly to ~/Code/titan
Jump to ~/Code/shell-ergonomics
No args, opens fzf picker over ~/Code
Tab completion, lists all ~/Code dirs
Narrows to matching project names

Project sessionizer6

Open fuzzy project picker
Auto-detects cmux/tmux/plain and dispatches
→ Opens in cmux workspace
→ Opens in tmux session
→ Plain cd to project directory
Project list sourced from ~/Code (max-depth 1)

Configure

Configuration files12

CDPATH setup
Zoxide init with cd override
fzf defaults and keybindings
direnv hook
Ctrl+F → project-sessionizer
Project switcher function
Dispatcher (cmux/tmux/cd)
tmux session manager
cmux workspace manager
Generate loader in fish conf.d
Remove loader file
Auto-generated loader (do not edit)

Reference

tmux sessionizer5

Create or switch to tmux session for project
Derived from basename, dots → dashes
Switches to it via tmux switch-client
Creates detached, sets cwd, then switches
Dot replacement for tmux compatibility

cmux sessionizer4

Create or select cmux workspace for project
Found via cmux find-window, then selected
Created via cmux new-workspace --cwd
Derived from project directory basename

Fish completions8

All directory names in ~/Code
All cmux subcommands
Flags: --cwd, --command
pin, unpin, rename, move-up, ...
All browser subcommands
terminal, browser
left, right, up, down
refs, uuids, both