AKRABAT
With the release of Big Sur, my scripts for keyboard control of macOS notification alerts stopped working.
With a bit of experimentation and help from Google, I have written new ones.
Closing an alert
To close a notification alert on Big Sur, conceptually we want to press the X button that appears when you hover over it. The AppleScript to do this is:
activate application "NotificationCenter" tell application "System Events" tell process "NotificationCenter" set theWindow to group 1 of UI element 1 of scroll area 1 of window "Notification Center" # click theWindow set theActions to actions of theWindow repeat with theAction in theActions if description of theAction is "Close" then tell theWindow perform theAction end tell exit repeat end if end repeat end tell end tell
This is much more complicated than just clicking button 1 of window 1 which is what we did before! In Big Sur, NotificationCenter now has a set of actions within the window and we iterate over them looking for the one called “Close” and then execute it.
This closes the notification alert.
Running from the command line
To run it from the command line, I have a file called close-alert stored in /usr/local/bin that runs osascript
for me:
/usr/local/bin/close-alert:
#!/bin/bash osascript -e 'activate application "NotificationCenter" tell application "System Events" tell process "NotificationCenter" set theWindow to group 1 of UI element 1 of scroll area 1 of window "Notification Center" # click theWindow set theActions to actions of theWindow repeat with theAction in theActions if description of theAction is "Close" then tell theWindow perform theAction end tell exit repeat end if end repeat end tell end tell'
This is marked as executable (chmod a+x /usr/local/bin/close-alert) so that I can close a notification alert from Terminal
Running from Alfred
I have also added to Alfred as a workflow. This requires two steps: a keyword step called “close alert” which takes no argument that is linked to a run script step which runs /usr/local/bin/close-alert.
This allows me to type “close alert” into Alfred to close the notification.
This gives me back keyboard control of closing the Big Sur notifcation alerts which is the operation I do most.
Source: AKRABAT