Scorciatoia da tastiera per chiudere le notifiche


Risposte:


26

È possibile creare il servizio Automator per eseguire questo Applescript e dargli una scorciatoia da tastiera nelle scorciatoie da tastiera Preferenze di Sistema

Ciò chiuderà la notifica di avviso e banner


In Automator scegli un nuovo servizio

inserisci qui la descrizione dell'immagine


Aggiungi un'azione Esegui Applescript

inserisci qui la descrizione dell'immagine


e sostituisci il suo codice con:

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

Impostare il 'Servizio riceve [nessun input] in [qualsiasi applicazione]'

Salva il servizio.


Apri le scorciatoie da tastiera in Preferenze di sistema e imposta il tuo servizio in "Servizi" inserisci qui la descrizione dell'immagine

Ora qualsiasi app appena lanciata prenderà il collegamento.

(Nota: ho strutturato lo script per contrastare il lancio di un errore che si verificherà quando le notifiche / finestre iniziano a chiudersi.

le otifiche / finestre sono numerate da 1 fino al conteggio totale. Ma quando chiudono la sceneggiatura funzionerebbe ancora del vecchio conteggio. Ma il sistema riassegnerà l'indice delle finestre.

Quindi, quando diciamo che inizia da 1 a 6, lo script proverà a chiudere la finestra 1, la finestra 2, la finestra 3 e così via. Ma il sistema ha assegnato nuovamente i numeri di finestra 1,2,3 alle ultime finestre rimanenti. Ma lo script proverà a chiudere la finestra 4 e genererà un errore perché non esiste. La sceneggiatura lo afferrerà e lo affronterà. )


Se si desidera fare clic sul pulsante "Mostra" in una notifica di avviso. si cambia il pulsante su cui si fa clic da 1 a 2.

click button 2 of this_item

Le notifiche banner non hanno un pulsante 2.

Ma puoi semplicemente fare clic sulla finestra.

Quindi questo codice dovrebbe occuparsi di Mostrare.

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

Grazie, è davvero fantastico. L'unica cosa che manca è come aprire anche una notifica piuttosto che chiuderla ... è qualcosa che potresti aggiungere e accetterò volentieri la tua risposta!
Drewdavid,

@Drewdavid ha aggiornato la risposta :-)
markhunte l'

1
Drewdavid: sto riscontrando lo stesso problema e ho rinunciato a risolverlo in Sicurezza e privacy e ho appena impostato un tasto di scelta rapida globale tramite BetterTouchTool.
Bez Hermoso,

1
Nota: il processo "Centro di notifica" può essere denominato "Centro di notifica" di "NotificationCenter". Il sistema capirà entrambi all'interno di Applescript. È normale utilizzare il nome dell'app in AppleScript. In questo caso Notification Center ". Se si utilizza uno script do shell o unix, utilizzare il nome del processo effettivo" NotificationCenter "
markhunte,

1
@Chris, salva il flusso di lavoro come Applicazione in Automator. Chiamato qualcosa come "Close All Noifications.app", quindi aggiungilo manualmente all'accessibilità. Quindi crea un servizio come descritto sopra ma, in esecuzione, usa Applescript: "comunica all'applicazione" Chiudi tutte le notifiche "per attivare"
markhunte,

5

Non proprio quello che stai chiedendo:

È possibile limitare il tempo visualizzato per il tipo di banner con

Terminare e incollare quanto segue

defaults write com.apple.notificationcenterui bannerTime #

con il segno del numero # sostituito con la quantità di secondi in cui si desidera che le notifiche banner rimangano, quindi disconnettersi e riconnettersi.

Per ripristinare la funzione originale (5 secondi) utilizzare defaults delete com.apple.notificationcenterui bannerTime

So che non ha detto: Ma si potrebbe ciclo la notifica on / off con uno script e assegnare una scorciatoia di tastiera ad esso. Disabilitare temporaneamente il Centro notifiche in Mountain Lion dalla riga di comando?


Grazie per la pubblicazione; qui vale la pena notare anche il limite di tempo :)
Drewdavid,

Funziona in High Sierra? Non sono riuscito a ottenere alcun effetto.
luckman212

1

La sceneggiatura originale di Markhunte funziona ma si interrompe dopo alcune finestre. È possibile che l'elenco di finestre includa solo quelle attualmente visibili. Quando ne hai troppi, questo non chiuderà tutto. Ho aggiunto un ciclo al di fuori del ciclo principale per interrogare le finestre fino a quando non otteniamo un conteggio delle finestre pari a zero. Ecco il codice:

my closeNotif () su 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

end closeNotif

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.