Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
Summon is a tiny macOS command-line tool for keyboard-driven app switching.
Define your applications in ~/.config/summon/summon.toml, wire them to your preferred hotkey tool, and use one command to launch, focus, or cycle through app windows.
Summon is designed to be fast, boring, and easy to keep in your dotfiles.
Installation
# from source, install to ~/bin and start the warm daemon path
Quick Start
Create ~/.config/summon/summon.toml:
[]
= true
= true
[]
= "com.mitchellh.ghostty"
[]
= "com.brave.Browser"
[]
= "dev.zed.Zed"
Wire to your hotkey tool (e.g. skhd):
cmd + alt + ctrl + shift - return : summon terminal
cmd + alt + ctrl + shift - b : summon browser
cmd + alt + ctrl + shift - z : summon editor
Usage
By default, summon will try the daemon first and fall back to direct mode if
the socket is unavailable. Set SUMMON_DAEMON=off to force direct mode, or
SUMMON_DAEMON=required to require the daemon.
Configuration
Summon reads from $XDG_CONFIG_HOME/summon/summon.toml (defaults to ~/.config/summon/summon.toml).
Each binding maps a name to an application target:
[]
= "com.mitchellh.ghostty"
= true
= true
Applications can be resolved by bundle identifier, name, or path:
[]
= "com.mitchellh.ghostty" # Bundle ID (preferred)
[]
= "Preview" # App name
[]
= "/Applications/My App.app" # Path
How it works
- Resolve the configured target application
- If not running — launch it
- If running but not focused — focus its most recent window
- If already focused and
cycle_when_focusedis enabled — cycle to the next window
This makes repeated keypresses useful rather than redundant.
For the snappiest hot path, just install restarts a background daemon that
caches config and handles repeated invocations over a Unix socket. That keeps
keypresses off the cold CLI startup path while still preserving a direct-mode
fallback.
The daemon logs to ~/Library/Logs/summon/summond.log. Use
summon inspect windows <app> --pretty to capture the live AX window state
that Summon will use for cycling.
Integrations
Summon works with any tool that can execute a command. Example configs are in the examples/ directory.
skhd
Add to ~/.skhdrc:
hyper - return : summon terminal
hyper - b : summon browser
hyper - z : summon editor
hyper - f : summon finder
See examples/skhdrc for a complete example.
Raycast
Copy the script commands from examples/raycast/ to your Raycast scripts directory:
Shell aliases
Add to ~/.zshrc or ~/.bashrc:
See examples/shell-aliases.sh for more.
Other tools
Summon also works with Karabiner-Elements, Hammerspoon, Alfred, and AeroSpace. Any tool that can run a shell command can invoke summon <binding>.
License
Apache-2.0