72 votes

Raccourci clavier MacOS pour désactiver les notifications ?

J'aimerais pouvoir rejeter et ouvrir les notifications du centre de notification de MacOS avec le clavier.

(Je ne parle pas de l'ouverture/fermeture du Centre de notification lui-même).

Est-ce possible d'une manière ou d'une autre avec un outil, un paramètre ou un autre logiciel ?

42voto

markhunte Points 11634

Vous pouvez créer un service Automator pour exécuter cet Applescript et lui donner un raccourci clavier dans les Préférences Système Raccourcis clavier.

Ceci fermera la notification d'alerte et de bannières


Dans Automator, choisissez un nouveau service

enter image description here


Ajouter une action d'exécution Applescript

enter image description here


et remplacer son code par :

my closeNotif()
on closeNotif()

    tell application "System Events"
        tell process "Notification Center"
            set theWindows to every window
            repeat with i from 1 to number of items in theWindows
                set this_item to item i of theWindows
                try
                    click button 1 of this_item
                on error

                    my closeNotif()
                end try
            end repeat
        end tell
    end tell

end closeNotif

Définissez l'option "Le service ne reçoit [aucune contribution] dans [toute application]".

Sauvegarder le service.


Ouvrez les raccourcis clavier dans les préférences système et définissez votre service sous "Services". enter image description here

Maintenant, toute application nouvellement lancée reprendra le raccourci.

(Note : J'ai structuré le script pour contrer le lancement d'une erreur qui se produira lorsque les notifications/fenêtres commenceront à se fermer.

Les notifications/fenêtres sont numérotées de 1 jusqu'au nombre total. Mais lorsqu'elles se ferment, le script continue à travailler avec l'ancien compte. Mais le système réassignera l'index des fenêtres.

Ainsi, lorsque nous disons de commencer à 1 -6, le script va essayer de fermer la fenêtre 1, la fenêtre 2, la fenêtre 3 et ainsi de suite. Mais le système a réattribué les numéros de fenêtre 1, 2, 3 aux dernières fenêtres restantes. Mais le script va essayer de fermer la fenêtre 4 et lancer une erreur car elle n'existe pas. Le script va attraper cela et le traiter. )


Si vous voulez cliquer sur le bouton "Afficher" sur une notification d'alerte. vous changez le bouton sur lequel vous cliquez de 1 à 2.

click button 2 of this_item

Les notifications des bannières ne comportent pas de bouton 2.

Mais vous pouvez simplement cliquer sur la fenêtre.

Ce code devrait donc s'occuper de l'exposition.

my closeNotif()
on closeNotif()

    tell application "System Events"
        tell process "Notification Center"
            set theWindows to every window
            repeat with i from 1 to number of items in theWindows
                set this_item to item i of theWindows
                set cnt to count buttons of this_item
                try
                    if cnt > 1 then

                        click button 2 of this_item
                    else
                        click this_item
                    end if
                on error

                    closeNotif()
                end try
            end repeat
        end tell
    end tell

end closeNotif

12 votes

Ça ne marche plus à Big Sur, mais j'ai trouvé un mise à jour du script qui fonctionne.

13voto

Ruskes Points 44895

Pas tout à fait ce que vous demandez :

Vous pouvez limiter le temps d'affichage du type de bannières avec

Terminal et collez ce qui suit

defaults write com.apple.notificationcenterui bannerTime #

en remplaçant le signe # par le nombre de secondes pendant lesquelles vous souhaitez que les notifications de la bannière restent en place, puis déconnectez-vous et reconnectez-vous.

Pour rétablir la fonction originale (5 secondes), utilisez defaults delete com.apple.notificationcenterui bannerTime

Je sais que vous avez dit non : mais vous pourriez cycle la Notification on/off avec un script et lui attribuer un raccourci clavier. Désactiver temporairement le centre de notification dans Mountain Lion à partir de la ligne de commande ?

0 votes

Merci d'avoir posté ; la limite de temps est également à noter ici :)

0 votes

Cela fonctionne-t-il dans High Sierra ? Je n'ai pas réussi à obtenir un effet quelconque.

6voto

Chris Hynes Points 5110

La réponse précédemment acceptée ne fonctionne pas à Big Sur. Ce script fonctionne.

0 votes

Merci à @RussellZ qui a posté le lien script dans son commentaire ci-dessus.

2voto

Z0B Points 103

Notification de la fermeture de l'ensemble des activités (alerte/banner)

Similaire à la réponse de markhunte dans la mesure où un peu d'AppleScript est utilisé, mais l'implémentation est grandement améliorée.

A savoir, contrairement au script de markhunte, ferme aussi les notifications en bannière, ne plante pas quand une notification n'a pas de bouton de fermeture, fonctionne même quand le centre de notification est ouvert, fonctionne avec les notifications où le bouton de fermeture n'est pas le premier bouton, détecte les notifications bloquées, etc....

Utilisation d'un flux de travail Alfred

Si vous utilisez Alfred, vous disposez de ce flux de travail : Démission de la notification . Il fermera toutes les notifications actuellement affichées avec un raccourci ou un mot-clé Alfred. Super simple à utiliser et fonctionne comme prévu.

Sans utiliser Alfred

Si vous n'utilisez pas Alfred, vous pouvez prendre les main script à partir du flux de travail et (comme dans la réponse de markhunte) en utilisant Automator, enregistrez-la comme une "Action rapide". Définissez ensuite un raccourci clavier pour cette action dans les préférences système. Cela fonctionne de la même manière que le flux de travail, mais demande un peu plus d'efforts que de cliquer sur "installer" comme avec Alfred.

1voto

Sandhitsu Das Points 11

Le script original de markhunte fonctionne mais s'arrête après quelques Windows. Il se peut que la liste des fenêtres ne comprenne que celles qui sont actuellement visibles. Si vous en avez trop, cela ne fermera pas toutes les fenêtres. J'ai ajouté une boucle en dehors de la boucle principale pour interroger les fenêtres jusqu'à ce que nous obtenions un nombre de fenêtres égal à zéro. Voici le code :

mon closeNotif() on closeNotif()

tell application "System Events"
    tell process "Notification Center"
        set theWindows to every window
        set nWindows to number of items in theWindows
        repeat until nWindows is 0
            repeat with i from 1 to number of items in theWindows
                set this_item to item i of theWindows
                try
                    click button 1 of this_item
                    delay 0.2
                on error

                    my closeNotif()
                end try
            end repeat
            set theWindows to every window
            set nWindows to number of items in theWindows
        end repeat
    end tell
end tell

fin closeNotif

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X