Never quit an app by accident again. A tiny native macOS menu-bar app that intercepts βQ (and other danger shortcuts) with a double-press or hold-to-confirm gate.
- π‘οΈ Guards βQ out of the box β βW ready with one toggle
- π― Custom danger commands β record any β/β/β₯ combo
- π Three confirmation modes β press twice, hold, or either
- β±οΈ Adjustable timing β hold 0.5β5s, double-press window 0.5β3s
- π¬ Native HUD overlay β tells you what's happening and which app is affected
- π Launch at login β enable from settings
- πͺΆ Super light β single binary, pure AppKit + SwiftUI, zero deps, no dock icon
- macOS 13 Ventura or later
- Xcode command-line tools (to build from source)
SlowQ intercepts keystrokes via a CGEvent tap, which requires Accessibility access.
- Launch SlowQ β you'll get a system prompt
- Go to System Settings β Privacy & Security β Accessibility
- Enable SlowQ
No relaunch needed β the guard activates the moment permission is granted. Until then, the menu bar shows a "Grant Accessibility Accessβ¦" shortcut.
β οΈ Rebuilding re-signs the binary, which can invalidate the grant. If βQ stops working after a rebuild, remove and re-add SlowQ in the Accessibility list (or runtccutil reset Accessibility com.slowq.SlowQ).
Open Settings⦠from the menu bar icon:
| Setting | What it does |
|---|---|
| Enable SlowQ | Master switch |
| Confirm by | Press twice / Hold / Either |
| Hold duration | How long to hold before it fires |
| Second press within | Time window between presses |
| Launch at login | Register as a login item |
| Danger Commands | Toggle βQ/βW, add/remove custom shortcuts |
SlowQ installs a filtering CGEvent tap at the head of the session event queue. When a guarded shortcut is pressed, the event is swallowed before the frontmost app sees it, and a confirmation state starts. On the second press (or when the hold threshold is reached), SlowQ re-posts the original shortcut as a synthetic event tagged with a private marker, which the tap recognizes and passes through untouched.
Key design decisions:
- Only exact modifier matches β ββ§Q (log out) is never caught by the plain βQ guard
- Character-based matching β βQ works on non-US keyboard layouts
- SlowQ never guards itself, and skips plain βQ in Finder (which has no Quit)
π€ Contributing β Bug reports, ideas, and PRs welcome. See CONTRIBUTING.md before opening one.
π Security β Found something sketchy? Report it privately via SECURITY.md.
π License β MIT, do whatever you want with it. See LICENSE.