Flick
A tiny macOS menu bar app and CLI for toggling services (VPN, Tailscale, anything with a connect/disconnect command) from a global hotkey or a single click.
The menu bar shows one colored dot for aggregate status. Press your hotkey, the service flips. That’s it.
Features
- Menu bar dot reflecting aggregate status — empty for all-disconnected, green for all-connected, yellow for some, dimmed while a toggle is in progress.
- Click the dot to open a service menu; Alt+click to quit.
- Global hotkeys — one to open the menu, one per service to toggle directly.
- CLI (
flick) for scripts and the terminal. - Generic — drives any service via the shell commands you define.
- No Accessibility permission — hotkeys use Carbon’s
RegisterEventHotKey, which needs no permission and consumes the keystroke so it never leaks to the focused app. - Zero dependencies beyond the macOS SDK.
How it works
Flick toggles anything you can express as three shell commands — check status, start, and stop. A service entry looks like this:
1// Tailscale
2{ "id": "ts", "name": "Tailscale",
3 "status_command": "tailscale status >/dev/null 2>&1",
4 "connect_command": "tailscale up",
5 "disconnect_command": "tailscale down" }
The same shape drives VPNs (OpenVPN, WireGuard), SSH tunnels, Docker, or any other connect/disconnect workflow.
Technology
- Swift with AppKit for the menu bar (
NSStatusItem). - Carbon
RegisterEventHotKeyfor permission-free global hotkeys. - A standalone CLI sharing the same service definitions.
- No third-party dependencies — just the macOS SDK.