See doc/aerospace.md for AeroSpace window manager configuration and keyboard shortcuts.
See doc/hammerspoon.md for Hammerspoon configuration and URL schemes.
Hammerspoon is used for window management features that AeroSpace cannot handle natively.
Currently configured features:
- Center window on screen via URL scheme (
hammerspoon://center) - AeroSpace workspace HUD via URL scheme (
hammerspoon://aerospace-workspace?ws=<num>) - Toggle Chrome's native vertical tab sidebar via
Cmd+Shift+Band left-edge hover
Custom Raycast scripts are available in config/mac/raycast/.
Add the script directory in Raycast:
- Open Raycast Settings.
- Open
Script Commands. - Click
Add Script Directory. - Select
~/.dotfiles/config/mac/raycast.
Raycast indexes scripts in the directory as commands. Metadata changes in script headers are picked up automatically.
See Raycast Script Commands for the official setup flow and metadata reference.
| Script | Description |
|---|---|
toggle_aerospace.sh |
Toggle AeroSpace ON/OFF |
toggle_aerospace_float.sh |
Make focused window floating and center it |
new_chrome.sh |
Open new Chrome window in current space |
new_safari.sh |
Open new Safari window in current space |
new_wezterm.sh |
Open new WezTerm window |
User-level launchd agents are declared in config/dot_config/mise/config.toml and managed by mise. mise generates the plist files under ~/Library/LaunchAgents/ and loads them with launchctl.
mise bootstrap macos launchd-agents apply --yesinstall.sh runs this command automatically on macOS after installing Headroom.
| Label | Purpose |
|---|---|
dev.mise.headroom-proxy |
Run headroom proxy on 127.0.0.1:8787 at login |
The generated plist is ~/Library/LaunchAgents/dev.mise.headroom-proxy.plist.
# Status
mise bootstrap macos launchd-agents status
launchctl print gui/$(id -u)/dev.mise.headroom-proxy
# Apply changes
mise bootstrap macos launchd-agents apply --yes
# Stop / Start
launchctl bootout gui/$(id -u)/dev.mise.headroom-proxy
mise bootstrap macos launchd-agents apply --yesstdout/stderr are routed to the macOS unified logging system (no log files are written, so disk usage stays bounded).
# Tail logs live
log stream --predicate 'process == "headroom"' --info
# Show the last hour
log show --predicate 'process == "headroom"' --info --last 1h
# Include debug-level entries
log stream --predicate 'process == "headroom"' --debug --infoIf a process exits immediately and process == "headroom" returns nothing, search by launchd label instead:
log show --predicate 'subsystem == "com.apple.xpc.launchd" AND eventMessage CONTAINS "dev.mise.headroom-proxy"' --last 1h