Raccourci clavier pour ignorer les notifications

28

J'aimerais pouvoir ignorer et ouvrir des notifications avec le clavier

(Ne parle pas d'ouvrir / fermer le centre de notification)

Est-ce possible? Et si oui, comment?

Drewdavid
la source
Avez-vous vu la mise à jour que vous avez demandée?
Markhunte

Réponses:

26

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

Cela fermera l'alerte et la notification des bannières


Dans Automator, choisissez un nouveau service

entrez la description de l'image ici


Ajouter une action Exécuter Applescript

entrez la description de l'image ici


et remplacez 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 le «Service reçoit [aucune entrée] dans [n'importe quelle application]»

Enregistrez le service.


Ouvrez les raccourcis clavier dans les préférences système et définissez votre pour votre service sous «Services» entrez la description de l'image ici

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

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

otifications / fenêtre sont numérotées de 1 à le nombre total. Mais au fur et à mesure qu'ils ferment, le script fonctionnerait toujours sur l'ancien compte. Mais le système réattribuera l'index des fenêtres.

Donc, là où nous disons 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 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 de lancer une erreur car elle n'existe pas. Le script va saisir cela et le gérer. )


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

click button 2 of this_item

Les notifications de bannière n'ont pas de bouton 2.

Mais vous pouvez simplement cliquer sur la fenêtre.

Donc, ce code devrait prendre soin de montrer.

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
markhunte
la source
Merci, c'est vraiment cool. La seule chose qui manque est de savoir comment ouvrir une notification plutôt que de la fermer ... c'est quelque chose que vous pourriez ajouter, et je serai ravi d'accepter votre réponse!
Drewdavid
@Drewdavid a mis à jour la réponse :-)
markhunte
1
Drewdavid: J'ai le même problème, et j'ai renoncé à le résoudre sous Sécurité et confidentialité et je viens de configurer un raccourci clavier global via BetterTouchTool.
Bez Hermoso
1
Remarque: le processus "Notification Center" peut être nommé soit "Notification Center" de "NotificationCenter". Le système comprendra les deux dans Applescript. Il est normal d'utiliser le nom de l'application dans AppleScript. Dans ce cas, Notification Center ". Si vous utilisez un script shell do ou unix, utilisez le nom de processus réel" NotificationCenter "
markhunte
1
@Chris, enregistrez le workflow en tant qu'application dans Automator. Nommé quelque chose comme «Fermer toutes les Noifications.app», puis ajoutez-le manuellement à l'accessibilité. Ensuite, créez un service comme décrit ci-dessus mais dans la course, utilisez Applescript: "dites à l'application" Fermer toutes les notifications "d'activer"
markhunte
5

Pas tout à fait ce que vous demandez:

Vous pouvez limiter le temps affiché pour le type de bannières avec

Terminer et coller dans ce qui suit

defaults write com.apple.notificationcenterui bannerTime #

avec le signe # numéro remplacé par le nombre de secondes pendant lesquelles vous souhaitez que les notifications de bannière restent, puis déconnectez-vous et reconnectez-vous.

Pour restaurer la fonction d'origine (5 secondes), utilisez defaults delete com.apple.notificationcenterui bannerTime

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

Ruskes
la source
Merci d'avoir posté; la limite de temps mérite également d'être
notée
Est-ce que cela fonctionne à High Sierra? Je ne pouvais pas lui faire d'effet.
luckman212
1

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

mon closeNotif () sur 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

Sandhitsu Das
la source