Add a global delay to Command-Q to stop accidental app quits.
A macOS app that adds a global delay of 1 second to the Cmd-Q shortcut. In
other words, you have to hold down Cmd-Q for 1 second before an application
will quit.
When the delay is active, an overlay is drawn at the center of the screen.
A quick search for ‘command q’ on Google revealed these insights:
… and many more similar sentiments.
Some proposed solutions include:
This app implements the same approach as Google Chrome’s “Warn Before Quitting”
feature, except it is now available on every app!
Pre-built binaries can be downloaded from the releases page.
Unzip, drag the app to Applications, and then run it. You can optionally
choose to automatically start the application on login.
If you wish to install the application from Homebrew:
$ brew tap dteoh/sqa
$ brew install --cask slowquitapps
The application will live at /Applications/SlowQuitApps.app
.
Updating the app:
$ brew update
$ brew reinstall --cask slowquitapps
$ killall SlowQuitApps
Then relaunch the application.
Or using brew-cask-upgrade:
$ brew cu slowquitapps
Installing the app through Homebrew will add a script called sqa
accessible
from the command line. To use this tool, the main app must first be given
permissions to run.
Unfortunately, after upgrading SQA, you will have to reset accessibility
permissions for the app. Go to System Preferences -> Security & Privacy ->
Privacy -> Accessibility. Remove SlowQuitApps from the list, then add it back
to the list again.
The app is currently developed on Mojave and only support for Mojave can be
provided.
You must exit and relaunch SlowQuitApps after making customizations.
To exit the app:
$ killall SlowQuitApps
All of the following tasks can be done more conveniently using the sqa
script. This script is automatically available from the command line when the
app is installed through Homebrew.
The currently set delay can be reviewed with:
$ defaults read com.dteoh.SlowQuitApps
To change the delay to 5 seconds for example, open up Terminal app and
run the following command:
$ defaults write com.dteoh.SlowQuitApps delay -int 5000
The delay is specified in milliseconds.
Whitelisted apps will be sent the Cmd-Q keypress directly.
To whitelist an app, start by locating its bundle ID. For example, to whitelist
the “Notes” application:
$ osascript -e 'id of app "Notes"'
com.apple.Notes
$ defaults write com.dteoh.SlowQuitApps whitelist -array-add com.apple.Notes
To reset the whitelist:
$ defaults delete com.dteoh.SlowQuitApps whitelist
To check whitelisted apps:
$ defaults read com.dteoh.SlowQuitApps whitelist
The whitelist can be used to only allow SlowQuitApps to handle Cmd-Q for those
selected applications. To switch on this mode:
$ defaults write com.dteoh.SlowQuitApps invertList -bool YES
In this mode, non-whitelisted apps will be sent the Cmd-Q keypress directly.
To switch off this mode:
$ defaults delete com.dteoh.SlowQuitApps invertList
By default, an overlay with an indicator of the time remaining until the app gets closed appears. To hide this overlay, run the following command:
$ defaults write com.dteoh.SlowQuitApps displayOverlay -bool NO
SlowQuitApps
Copyright (C) 2020 Douglas Teoh
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.