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.