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 RegisterEventHotKey for permission-free global hotkeys.
  • A standalone CLI sharing the same service definitions.
  • No third-party dependencies — just the macOS SDK.