Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion Brewfile
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,6 @@ brew "direnv" # Directory-specific env vars
brew "glow" # Terminal markdown viewer
brew "tldr" # Simplified man pages
brew "watch" # Run command periodically
brew "cormacrelf/tap/dark-notify" if OS.mac? # Dark mode detection

# Languages & Runtimes
brew "go"
Expand Down
4 changes: 1 addition & 3 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -87,8 +87,6 @@ Files in `home/` are symlinked to `~` by `bootstrap.sh`. This allows version con

**Prompt** (`home/.zsh_prompt`) - Timer displayed if command takes >0s.

**Dark Mode Switching** (`home/.bin/toggle-btop-theme`) - Switches btop theme based on macOS appearance. Requires `dark-notify`.

**Claude Code** (`home/.claude/`) - Global config, agents, commands, contrib scripts, hooks, skills, settings.

**Hooks** (`home/.claude/hooks/`) - Shell scripts for Claude Code lifecycle events. See `hooks/README.md` for architecture and details. When adding or modifying hooks, update the README.
Expand Down Expand Up @@ -117,7 +115,7 @@ Files in `home/` are symlinked to `~` by `bootstrap.sh`. This allows version con

LaunchAgent plists live in `~/Library/LaunchAgents/`. The external service repos (event-bus, session-analytics, memory-store) have their own `make install-server`; obsidian-mcp is set up by *this* repo's bootstrap (`claude mcp add` + plist in `LaunchAgents/`, wrapper in `home/.bin/obsidian-mcp-start`, requires Obsidian with the Local REST API plugin running). Reload with `launchctl unload` + `launchctl load`.

Note: `agent-memory-store` is documented infra but is **not** provisioned by bootstrap (no `claude mcp add`, no `AGENT_MEMORY_STORE_URL` in `settings.local.json`) — it's registered out-of-band where used. The repo-managed LaunchAgents are: `com.evansenter.obsidian-mcp` (gateway only), `com.evansenter.sysload` (zellij CPU/RAM widget, if zellij installed), `com.user.dark-notify` (btop dark-mode switching, if dark-notify installed), and `com.user.cargo-sweep` (periodic `cargo sweep`, if cargo installed).
Note: `agent-memory-store` is documented infra but is **not** provisioned by bootstrap (no `claude mcp add`, no `AGENT_MEMORY_STORE_URL` in `settings.local.json`) — it's registered out-of-band where used. The repo-managed LaunchAgents are: `com.evansenter.obsidian-mcp` (gateway only), `com.evansenter.sysload` (zellij CPU/RAM widget, if zellij installed), and `com.user.cargo-sweep` (periodic `cargo sweep`, if cargo installed).

**Adding new LaunchAgents:** Plists go in the top-level `LaunchAgents/` directory (NOT `home/Library/LaunchAgents/`). Use `__HOME__` as a placeholder for the user's home directory — `install_launch_agent()` in bootstrap does `sed` substitution at install time. Logs go to `~/.local/log/`. Add an `install_launch_agent` call in `install_launch_agents()`, gated on the binary being present.

Expand Down
16 changes: 0 additions & 16 deletions LaunchAgents/com.user.dark-notify.plist

This file was deleted.

7 changes: 0 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -123,17 +123,10 @@ On a bare macOS install, in order:
- **tmux:** press `prefix + I` to install TPM plugins.
- **iTerm2:** import the Catppuccin color preset (`preferences/` / `vendor/iterm-catppuccin/`).
- **zellij:** `zellij kill-all-sessions` so the symlinked config is picked up (hot-reload doesn't work with symlinks).
- **btop dark-mode switching (optional):** `brew install cormacrelf/tap/dark-notify` then re-run `./bootstrap.sh -f`.
- **Gateway host only:** open Obsidian with the Local REST API plugin enabled (obsidian-mcp's wrapper backs off until it's reachable).

### Optional dependencies

**Dark mode theme switching** (btop):
```bash
brew install cormacrelf/tap/dark-notify
./bootstrap.sh # Re-run to install LaunchAgent
```

**Claude Code** (commands, hooks, settings symlinked to ~/.claude/):
```bash
./bootstrap.sh # Symlinks commands/, hooks/, settings.json, CLAUDE.md
Expand Down
39 changes: 0 additions & 39 deletions bootstrap.sh
Original file line number Diff line number Diff line change
Expand Up @@ -428,45 +428,6 @@ install_launch_agents() {
return 0
fi

local dotfiles_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd -P)"

# Install dark-notify LaunchAgent (only if dark-notify is installed)
if command -v dark-notify >/dev/null 2>&1; then
local plist="com.user.dark-notify.plist"
local homebrew_prefix
if command -v brew >/dev/null 2>&1 && homebrew_prefix="$(brew --prefix 2>/dev/null)"; then
: # homebrew_prefix set by condition
elif [[ "$(uname -m)" == "arm64" ]]; then
homebrew_prefix="/opt/homebrew"
else
homebrew_prefix="/usr/local"
fi
local new_plist_content
new_plist_content=$(sed -e "s|__HOME__|$HOME|g" -e "s|__HOMEBREW_PREFIX__|$homebrew_prefix|g" "$dotfiles_dir/LaunchAgents/$plist")
local dest_plist="$HOME/Library/LaunchAgents/$plist"

mkdir -p "$HOME/Library/LaunchAgents"

local tmp_plist
tmp_plist=$(mktemp)
echo "$new_plist_content" > "$tmp_plist"

if [[ ! -f "$dest_plist" ]] || ! cmp -s "$tmp_plist" "$dest_plist"; then
echo "Installing LaunchAgent: $plist"
mv "$tmp_plist" "$dest_plist"

launchctl bootout "gui/$(id -u)/com.user.dark-notify" 2>/dev/null || true
launchctl bootstrap "gui/$(id -u)" "$dest_plist" || true

"$HOME/.bin/toggle-btop-theme"
else
rm -f "$tmp_plist"
fi
else
echo "Skipping dark-notify LaunchAgent (dark-notify not installed)"
echo " Install with: brew install cormacrelf/tap/dark-notify"
fi

# Install cargo-sweep LaunchAgent (only if cargo is installed)
if command -v cargo >/dev/null 2>&1; then
install_launch_agent "com.user.cargo-sweep.plist"
Expand Down
41 changes: 0 additions & 41 deletions home/.bin/toggle-btop-theme

This file was deleted.

3 changes: 2 additions & 1 deletion home/.claude/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -137,5 +137,6 @@
"skipDangerousModePermissionPrompt": true,
"theme": "auto",
"remoteControlAtStartup": true,
"agentPushNotifEnabled": true
"agentPushNotifEnabled": true,
"tui": "fullscreen"
}
10 changes: 4 additions & 6 deletions home/.claude/skills/catppuccin-theming/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -71,9 +71,7 @@ When configuring a new CLI tool:

## Dark/Light Mode Switching

`dark-notify` monitors macOS appearance changes. Currently only btop switches themes automatically (`home/.bin/toggle-btop-theme`). Other tools use Mocha (dark) permanently.

To add another tool to auto-switching:
1. Add a case to `toggle-btop-theme` (or create a new script)
2. The script receives "light" or "dark" as `$1`
3. Use Latte for light mode, Mocha for dark mode
All tools use Mocha (dark) permanently — there is no automatic light/dark
switching. If you want to add it for a tool, drive a script off macOS appearance
(e.g. `defaults read -g AppleInterfaceStyle`) and swap Latte (light) for Mocha
(dark).
4 changes: 0 additions & 4 deletions uninstall.sh
Original file line number Diff line number Diff line change
Expand Up @@ -36,10 +36,6 @@ if [[ $REPLY =~ ^[Yy]$ ]]; then
rm "$link" && echo "Removed: $link"
done

# Unload and remove dark-notify LaunchAgent
launchctl bootout "gui/$(id -u)/com.user.dark-notify" 2>/dev/null || true
rm -f ~/Library/LaunchAgents/com.user.dark-notify.plist

# Remove btop theme symlinks
rm -f ~/.config/btop/themes/catppuccin_*.theme 2>/dev/null

Expand Down
Loading