What It Does

QuitProtect intercepts commandQ before it reaches the frontmost application and requires you to confirm the quit with a deliberate action. A single accidental keypress won’t close anything.

It sits silently in your menu bar, counting the quits it has blocked. You’ll be surprised how often it saves you.

Two Modes

Double-press command-Q (default)

The first commandQ is consumed silently. Press again within the interval to actually quit. If you don’t press again, nothing happens — the quit is blocked.

IntervalDescription
0.3sFast — requires quick double-tap
0.4s (default)Balanced
0.5sRelaxed
0.75sGenerous window

Hold command-Q

Hold commandQ for the configured duration to quit. Anything shorter is blocked.

DurationDescription
0.5sQuick hold
1.0s (default)Balanced
1.5sDeliberate
2.0sVery deliberate

Settings

Click the power icon in the menu bar and choose Settings… to configure:

Quit Mode

Switch between double-press and hold-to-quit using radio buttons. The timing option updates to match the selected mode.

General

If you’ve hidden the menu bar icon and want it back, just re-open QuitProtect from your Applications folder — it reappears immediately.

Auto-updates are handled by Sparkle. Use the “Check for Updates…” menu item to check on demand; Sparkle’s prompt offers an “Automatically download and install updates in the future” checkbox the first time an update is available. QuitProtect checks for new versions automatically once a day in the background.

Languages

QuitProtect follows your macOS language preference. English and Simplified Chinese (简体中文) are included; every other language, Traditional Chinese among them, falls back to English.

The Simplified Chinese localisation was contributed by RSS1102, who also wrote the quit guidance overlay.

The localisation went further than translation: the string handling moved into the shared JorvikKit toolkit, so every other Jorvik app can now be localised the same way. That part was unasked-for, and is the more valuable of the two.

Permissions

Permission status can be checked in Settings.

Self-exclusion

QuitProtect does not protect itself — you can always quit QuitProtect with a normal commandQ.

Installation

Two formats on every release — both signed and notarised, pick whichever suits:

Or install it with Homebrew: brew install --cask perpetualbeta/jorvik/quitprotect

On first launch, grant Accessibility permission when prompted.

Building from Source

QuitProtect uses Swift Package Manager. No Xcode project is required.

  1. Clone the repo: git clone https://github.com/PerpetualBeta/QuitProtect.git
  2. Run gmake build
  3. Launch with open .build/QuitProtect.app

Requirements

macOS 14 (Sonoma) or later. Universal binary (Apple Silicon and Intel).