Come abilitare / disabilitare Do Not Disturb dalla shell su Mavericks?


10

Vorrei attivare o disattivare la funzione Non disturbare nel centro notifiche con una scorciatoia da tastiera.

Sto usando BetterTouchTool per alcune scorciatoie da tastiera extra ma non supporta l'abilitazione / disabilitazione delle notifiche nelle opzioni predefinite.

Ha un'opzione per l'esecuzione di un comando del terminale, quindi sto chiedendo qui come abilitare / disabilitare la funzione Non disturbare dal terminale?

ho trovato Pianificare 'Non disturbare' in OS X Mountain Lion With Automator e ho provato a eseguire i comandi ma non sembra funzionare.


Dal momento che stai davvero chiedendo come farlo fare da una tastiera, a differenza della shell, dovresti probabilmente cambiare il titolo della domanda. O se mi sbaglio, per favore correggimi!
— webmarc

In realtà, non importa ... Non mi sono reso conto che "bestTouchTool" richiede il terminale per quello che vuoi.
— webmarc

Ho chiesto principalmente come farlo dalla shell. Farlo dalle preferenze di sistema risolve il mio caso, ma è più divertente sapere come farlo dalla shell.
— razvanz

Gotcha, ho aggiornato la mia risposta con le informazioni sulla shell.
— webmarc

Risposte:


10

Puoi semplicemente impostare una scorciatoia da tastiera globale per esso in Preferenze di Sistema - & gt; Tastiera - & gt; Scorciatoie - & gt; Controllo della missione

O se lo vuoi assolutamente dalla riga di comando, un applecript per farlo (supponendo che tu imposti la scorciatoia da tastiera da usare cmd cambio optare ctrl D .

Nota che devi ancora impostare un comando da tastiera in Preferenze di Sistema affinché funzioni.

Inserisci lo script seguente in un file, ad esempio ~ / dnd.applescript

ignoring application responses
    tell application "System Events" to keystroke "D" using {command down, shift down, option down, control down}
end ignoring

Ora puoi correre osascript ~/dnd.applescript dalla riga di comando per attivare l'impostazione DND.

Screenshot: Keyboard shortcut modification in System Preferences


Perfezionare! Grazie. Vorrei che ci fosse un modo migliore però.
— Will B

Meglio in che modo?
— webmarc

Non dover associare una scorciatoia da tastiera oscura e attivarla con osascript.
— Will B

Immagino di chiederti se intendi meglio come in "più efficace" o meglio come in "più carina sotto le coperte". È un desiderio pratico o estetico?
— webmarc

Solo curioso, non ho alcun suggerimento aggiuntivo in entrambi i casi.
— webmarc

15

A partire da OS X 10.10.3, questo AppleScript attiva "Non disturbare". Nessuna scelta rapida da tastiera:

tell application "System Events" to tell process "SystemUIServer"
  key down option
  click menu bar item 1 of menu bar 2
  key up option
end tell

Puoi salvarlo come un AppleScript ed eseguirlo dal terminale con osascript DoNotDisturb.applescript, o puoi includerlo in uno script Bash inserendolo in un heredoc in questo modo:

#!/bin/bash
osascript <<EOD
  tell application "System Events" to tell process "SystemUIServer"
    key down option
    click menu bar item 1 of menu bar 2
    key up option
  end tell
EOD

6
Ciò significa che puoi anche attivare DoNotDisturb facendo clic sulle tessere più a destra nella barra dei menu mentre si tiene premuto il tasto Option chiave.
— razvanz

7

Basandosi sulle risposte di James e Zsolt, ho creato un paio di script per attivare o disattivare (non attivare) lo stato DND. Inoltre, non richiedono alcun binding di tasti o GUID della macchina per funzionare.

IMPORTANTE : Si noti che l'esecuzione di questi script per la prima volta potrebbe richiedere l'autorizzazione all'accessibilità per l'app che esegue gli script. Se non si concede l'autorizzazione nella richiesta il alt / opzione il pulsante rimarrà premuto per il sistema e sarà necessario disconnettersi e tornare indietro per "annullarlo". Questo vale anche per le risposte precedenti con AppleScript. Se lo script è modificato, le autorizzazioni dovranno essere revocate e date nuovamente. Le autorizzazioni sono concesse usando:

System Preferences > Security & Privacy > Accessibility > Add your app

È per macOS Sierra e High Sierra menu bar 1:

Girare Non disturbare SOPRA (disabilita le notifiche):

if [[ $(plutil -convert xml1 -o - ~/Library/Preferences/ByHost/com.apple.notificationcenterui.*.plist | grep false) ]]; then
    osascript <<EOD
      tell application "System Events" to tell process "SystemUIServer"
        key down option
        click menu bar item 1 of menu bar 1
        key up option
      end tell
EOD
fi

Girare Non disturbare OFF (attivare le notifiche):

if ! [[ $(plutil -convert xml1 -o - ~/Library/Preferences/ByHost/com.apple.notificationcenterui.*.plist | grep false) ]]; then
    osascript <<EOD
      tell application "System Events" to tell process "SystemUIServer"
        key down option
        click menu bar item 1 of menu bar 1
        key up option
      end tell
EOD
fi

Per le versioni precedenti di macOS è menu bar 2:

Girare Non disturbare SOPRA (disabilita le notifiche):

if [[ $(plutil -convert xml1 -o - ~/Library/Preferences/ByHost/com.apple.notificationcenterui.*.plist | grep false) ]]; then
    osascript <<EOD
      tell application "System Events" to tell process "SystemUIServer"
        key down option
        click menu bar item 1 of menu bar 2
        key up option
      end tell
EOD
fi

Girare Non disturbare OFF (attivare le notifiche):

if ! [[ $(plutil -convert xml1 -o - ~/Library/Preferences/ByHost/com.apple.notificationcenterui.*.plist | grep false) ]]; then
    osascript <<EOD
      tell application "System Events" to tell process "SystemUIServer"
        key down option
        click menu bar item 1 of menu bar 2
        key up option
      end tell
EOD
fi

7

Puoi semplificare la risposta che Razvanz ha fornito usando il -currentHost argomento al comando defaults.

Abilita Non disturbare:

defaults -currentHost write ~/Library/Preferences/ByHost/com.apple.notificationcenterui doNotDisturb -boolean true
defaults -currentHost write ~/Library/Preferences/ByHost/com.apple.notificationcenterui doNotDisturbDate -date "`date -u +\"%Y-%m-%d %H:%M:%S +0000\"`"
killall NotificationCenter

(attraverso https://heyfocus.com/blog/enabling-do-not-disturb-mode/ )

Disattiva Non disturbare:

defaults -currentHost write ~/Library/Preferences/ByHost/com.apple.notificationcenterui doNotDisturb -boolean false
killall NotificationCenter

Ora puoi facilmente racchiuderlo come uno script per abilitare o disabilitare "Non disturbare" come uno script che potrebbe funzionare sulla macchina di chiunque, indipendentemente dalle preferenze di sistema. Ecco un esempio di come farlo:

#!/bin/bash

set -eou pipefail

# From https://heyfocus.com/enabling-do-not-disturb-mode and
# https://apple.stackexchange.com/questions/145487

if [[ $(defaults -currentHost read ~/Library/Preferences/ByHost/com.apple.notificationcenterui doNotDisturb) -eq 0 ]]; then
  defaults -currentHost write ~/Library/Preferences/ByHost/com.apple.notificationcenterui doNotDisturb -boolean true
  defaults -currentHost write ~/Library/Preferences/ByHost/com.apple.notificationcenterui doNotDisturbDate -date "`date -u +\"%Y-%m-%d %H:%M:%S +000\"`"
  killall NotificationCenter
  echo "Do Not Disturb is enabled. Run $0 to turn it off (OS X will turn it off automatically tomorrow)."
else
  defaults -currentHost write ~/Library/Preferences/ByHost/com.apple.notificationcenterui doNotDisturb -boolean false
  killall NotificationCenter
  echo "Do Not Disturb is disabled. Run $0 to turn it on again."
fi

Fonte: https://gist.github.com/ryangreenberg/5267f68a8e7b07ea66370b4eb5580ab9


1
Insetto visivo minore! [Notato per gente che guarda @ colore]: ho provato questo e funziona in qualche modo. Ho posticipato alcune notifiche per 5 minuti, quindi attivato Non disturbare per le notifiche, quindi ho eseguito i comandi in "Disattiva Non disturbare". Da un lato, l'icona è rimasta in grigio, ma dall'altro sembra funzionare diversamente: le notifiche sono spuntate in pochi minuti. Secondo test: ho attivato Non disturbare per le notifiche (senza sonnecchiare nulla), & amp; ha eseguito i comandi in "Disattiva Non disturbare". L'icona è rimasta in grigio, ma le notifiche sono saltate fuori.
— Matthew Elvey

1
@MatthewElvey Potrebbe essere un cambiamento da Sierra a High Sierra. Probabilmente abbiamo bisogno di trovare un nuovo modo per ricaricare l'icona della barra dei menu.
— Ryan

1
+1 per il comando non-Applescript!
— Matt

0

Basandosi sulla risposta di James, vorrei anche sottolineare che è anche possibile determinare se è acceso o spento. Quindi il seguente lo spegne e non fa nulla se già spento:

if [[ $(plutil -convert xml1 -o - ~/Library/Preferences/ByHost/com.apple.notificationcenterui.000-000-000-000.plist | grep false) ]]; then
    osascript <<EOD
      tell application "System Events" to tell process "SystemUIServer"
        key down option
        click menu bar item 1 of menu bar 2
        key up option
      end tell
EOD
fi

È necessario sostituire il proprio GUID della macchina nel nome file (c'è solo un file lì, quindi è facile da capire)

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.