Come abilitare / disabilitare la funzione Non disturbare dalla shell su Mavericks?

10

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

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

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

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

    
posta razvanz 16.09.2014 - 16:25
fonte

5 risposte

10

Puoi semplicemente impostare una scorciatoia da tastiera globale per esso in Preferenze di Sistema - > Tastiera - > Scorciatoie - > Controllo missione

O se lo vuoi assolutamente dalla riga di comando, un applecript per farlo (assumendo che tu imposti la scorciatoia da tastiera per usare cmd shift opt 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 eseguire osascript ~/dnd.applescript dalla riga di comando per attivare l'impostazione DND.

Screencap:

    
risposta data 16.09.2014 - 17:10
fonte
14

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 , oppure 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
    
risposta data 12.05.2015 - 09:08
fonte
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 : tieni presente 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 pulsante alt / opzione rimarrà premuto per il sistema e sarà necessario disconnettersi e tornare a "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 :

Turn Do Not Disturb ON (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

Attiva Non disturbare OFF (abilita 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 :

Turn Do Not Disturb ON (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

Attiva Non disturbare OFF (abilita 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
    
risposta data 28.06.2016 - 16:20
fonte
7

Puoi semplificare la risposta che razvanz ha fornito utilizzando l'argomento -currentHost 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

(tramite link )

Disattiva Non disturbare:

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

Ora potresti 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: link

    
risposta data 25.10.2017 - 00:34
fonte
0

Basandosi sulla risposta di James, mi piacerebbe anche sottolineare che è anche possibile determinare se è attivata o disattivata. 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

Devi sostituire il tuo GUID della tua macchina nel nome del file (c'è solo un file lì, quindi è facile da capire)

    
risposta data 28.11.2015 - 11:24
fonte

Leggi altre domande sui tag