¿Cómo habilitar / deshabilitar No molestar desde shell en Mavericks?

10

Me gustaría alternar la función No molestar en el centro de notificaciones con un método abreviado de teclado.

Estoy utilizando BetterTouchTool para algunos métodos abreviados de teclado adicionales, pero no admite la activación / desactivación de las notificaciones en las opciones predeterminadas.

Tiene una opción para ejecutar un comando de terminal, por lo que pregunto cómo habilitar / deshabilitar la función No molestar desde la terminal.

Encontré Programa ' No molestar 'en OS X Mountain Lion con Automator y traté de ejecutar los comandos pero no parece funcionar.

    
pregunta razvanz 16.09.2014 - 16:25

5 respuestas

10

Puede simplemente configurar un método abreviado de teclado global para él en Preferencias del sistema - > Teclado - > Accesos directos - > Control de Misión

O si definitivamente lo quieres desde la línea de comandos, un applecript para hacer esto (asumiendo que configuras el atajo de teclado para usar cmd shift opt ctrl D .

Tenga en cuenta que todavía DEBE configurar un comando de teclado en las Preferencias del sistema para que esto funcione.

Coloque el siguiente script en un archivo, por ejemplo, ~ / dnd.applescript

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

Ahora puede ejecutar osascript ~/dnd.applescript desde la línea de comandos para cambiar su configuración de DND.

Captura de pantalla:

    
respondido por el webmarc 16.09.2014 - 17:10
14

A partir de OS X 10.10.3, este AppleScript activará "No molestar". No se requiere atajo de teclado:

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

Puede guardarlo como un AppleScript y ejecutarlo desde el terminal con osascript DoNotDisturb.applescript , o puede incluirlo en un script de Bash envolviéndolo en un heredoc como el siguiente:

#!/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
    
respondido por el James 12.05.2015 - 09:08
7

Sobre la base de las respuestas de James y Zsolt, he creado un par de scripts para activar o desactivar (no cambiar) el estado DND. Tampoco requieren ningún enlace de teclas o GUID de la máquina para funcionar.

IMPORTANTE : tenga en cuenta que la ejecución de estos scripts por primera vez puede requerir un permiso de accesibilidad para la aplicación que ejecuta los scripts. Si no otorga el permiso en la solicitud, el botón alt / permanecerá presionado para el sistema y tendrá que cerrar sesión y volver a iniciarla para "descomprimirlo". . Esto también es cierto para las respuestas anteriores con AppleScript. Si se edita el script, los permisos deberán ser revocados y vueltos a otorgar. Los permisos se otorgan utilizando:

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

Para macOS Sierra y High Sierra es menu bar 1 :

Active No molestar ENCENDIDO (deshabilitar notificaciones):

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

Desactiva la función No molestar OFF (habilitar notificaciones):

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

Para versiones anteriores de macOS es menu bar 2 :

Active No molestar ENCENDIDO (deshabilitar notificaciones):

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

Desactiva la función No molestar OFF (habilitar notificaciones):

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
    
respondido por el sv3k 28.06.2016 - 16:20
7

Puede simplificar la respuesta que razvanz proporcionó usando el argumento -currentHost para el comando predeterminado.

Habilitar No molestar:

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

(a través de enlace )

Deshabilitar No molestar:

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

Ahora puede envolver esto fácilmente como una secuencia de comandos para habilitar o inhabilitar "No molestar" como una secuencia de comandos que funcionaría en la máquina de cualquiera, independientemente de las preferencias del sistema. Aquí hay un ejemplo de cómo hacerlo:

#!/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

Fuente: enlace

    
respondido por el Ryan 25.10.2017 - 00:34
0

Sobre la base de la respuesta de James, también quisiera señalar que también puede determinar si está activada o desactivada. Así que lo siguiente lo apaga, y no hace nada si ya está apagado:

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

Debe sustituir su propio GUID de máquina en el nombre de archivo (solo hay un archivo allí, por lo que es fácil de entender)

    
respondido por el Zsolt Szatmari 28.11.2015 - 11:24

Lea otras preguntas en las etiquetas