fulton

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

Read More