Cross-platform global keyboard shortcut daemon and library. Register system-wide hotkeys that fire regardless of which application has focus.
$ fulton --key "cmd+shift+v" --exec "open -a Schrodinger"
Listening for 1 hotkey (backend: simple, Ctrl+C to stop)...
Most frameworks that offer global hotkeys bundle the feature inside a massive runtime. The native APIs exist on every OS, but they're each different: Carbon on macOS, RegisterHotKey on Windows, XGrabKey on Linux. Fulton wraps all of them behind one API.
Ships as both a CLI (bind keys to shell commands, like a cross-platform
skhd) and a C ABI library loadable via
FFI from Bun, Rust/Tauri, Python, or anything else that can call a .dylib /
.so / .dll.
Define all your shortcuts in a config file and run fulton with no arguments:
# ~/.config/fulton/config
ctrl+shift+v = open -a Schrodinger
super+space = rofi -show drun
ctrl+alt+t = ghostty
One binding per line. # comments. Split on the first =. That's it.
Two backend modes per platform: simple (no permissions, just registers the hotkey) and advanced (can intercept and swallow keystrokes, may require Accessibility on macOS).
Supports macOS, Windows, and Linux (both X11 and Wayland). On Wayland, fulton
reads keyboard input via evdev — run fulton --setup for one-time permission
setup.
Works with copycat and poltergeist --- use Fulton to trigger clipboard operations or accessibility actions from any app, any context.
brew install georgemandis/tap/fulton