Як увімкнути/вимкнути "Не турбувати" з оболонки на Mavericks?

Мені хотілося б перемикати пункт Не турбувати в центрі сповіщень за допомогою комбінації клавіш.

Я використовую BetterTouchTool для деяких додаткових клавіатурних скорочень, але він не підтримує включення/вимикання повідомлень у параметрах за замовчуванням.

Він має опцію для виконання команди терміналу, тому я запитую, як включити/вимкнути Do Not Disturb з терміналу?

Я знайшов Розклад "Не турбуйте" в OS X Mountain Lion З Automator , і я спробував запустити команди, але це не здавалося, що працює.

7
Я в першу чергу запитав, як це зробити з оболонки. Роблячи це з системних уподобань вирішує мій випадок, але більш цікаво знати, як це зробити з оболонки.
додано Автор djsadinoff, джерело
Оскільки ви дійсно запитуєте, як це зробити з клавіатури, на відміну від оболонки, ви, ймовірно, повинні змінити назву питання. Або якщо я помиляюся, виправте мене!
додано Автор xcorat, джерело
Насправді, неважливо ... Я не розумію, що "betterTouchTool" вимагає терміналу за те, що ви хочете.
додано Автор xcorat, джерело
Отримав, я оновив свою відповідь з інформацією оболонки.
додано Автор xcorat, джерело

5 Відповіді

На OS X 10.10.3, цей AppleScript буде перемикатися "Не турбувати". Немає необхідного сполучення клавіш:

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

Ви можете зберегти його як AppleScript і запустити його з терміналу з osascript DoNotDisturb.applescript , або ви можете включити його в Bash-скрипт, упакувавши його в heredoc так:

#!/bin/bash
osascript <
12
додано
Це означає, що ви також можете перемикати DoNotDisturb , натиснувши на крайній правий фрагмент панелі меню, утримуючи клавішу Option .
додано Автор djsadinoff, джерело

You can just setup a global keyboard shortcut for it in System Preferences -> Keyboard -> Shortcuts -> Mission Control

Або, якщо ви обов'язково бажаєте, щоб це було зроблено в командному рядку, скористайтеся цим сценарієм (якщо ви встановите комбінацію клавіш для використання cmdshift opt < kbd> ctrl D .

Зверніть увагу, що ви все ще ПОВИННІ налаштувати команду клавіатури в System Preferences, щоб це працювало.

Помістіть скрипт нижче у файл, скажімо, ~/dnd.applescript

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

Тепер ви можете запустити osascript ~/dnd.applescript з командного рядка для перемикання налаштувань DND.

Screencap: Keyboard shortcut modification in System Preferences

8
додано
Чудово! Дякую. Хоч би там був кращий шлях хоч.
додано Автор PoulGrym, джерело
Немає необхідності прив'язувати незрозумілі комбінації клавіш і перемикатися з osascript .
додано Автор PoulGrym, джерело
Я просто не люблю, коли є неоднозначні точки входу в дію, але вона працює як чарівність!
додано Автор PoulGrym, джерело
Чим краще?
додано Автор xcorat, джерело
Я припускаю, що я прошу, якщо ви маєте на увазі краще, як у "більш ефективний" або краще, як у "гарніше під ковдрою". Це практичне або естетичне бажання?
додано Автор xcorat, джерело
Просто цікаво, у мене немає ніяких додаткових пропозицій в будь-якому випадку.
додано Автор xcorat, джерело

Спираючись на відповіді від Джеймса і Жолта, я створив пару сценаріїв, щоб увімкнути або вимкнути (не перемикати) стан DND. Вони також не потребують прив'язки клавіш або машинного GUID для роботи.

IMPORTANT: Please note that running these scripts for the first time may require accessibility permission for the app which runs the scripts. If you do not grant the permission in the request the alt/option button will remain pressed for the system and you will need to log out and back in to "unpress" it. This is also true for previous answers with AppleScript. If the script is edited, the permissions will need to be revoked and re-granted. Permissions are granted using:

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

Для macOS Sierra та High Sierra це рядок меню 1 :

Увімкнути функцію "Не турбувати" ON (вимкнути сповіщення):

if [[ $(plutil -convert xml1 -o - ~/Library/Preferences/ByHost/com.apple.notificationcenterui.*.plist | grep false) ]]; then
    osascript <

Увімкнути "Не турбувати" ВИМКН (увімкнути сповіщення):

if ! [[ $(plutil -convert xml1 -o - ~/Library/Preferences/ByHost/com.apple.notificationcenterui.*.plist | grep false) ]]; then
    osascript <

Для попередніх версій macOS це панель меню 2 :

Увімкнути функцію "Не турбувати" ON (вимкнути сповіщення):

if [[ $(plutil -convert xml1 -o - ~/Library/Preferences/ByHost/com.apple.notificationcenterui.*.plist | grep false) ]]; then
    osascript <

Увімкнути "Не турбувати" ВИМКН (увімкнути сповіщення):

if ! [[ $(plutil -convert xml1 -o - ~/Library/Preferences/ByHost/com.apple.notificationcenterui.*.plist | grep false) ]]; then
    osascript <
7
додано

Ви можете спростити відповідь, що надається , використовуючи аргумент -currentHost за умовчанням команду.

Увімкнути не турбувати:

  за замовчуванням -currentHost write ~/Бібліотека/Налаштування/ByHost/com.apple.notificationcenterui doNotDisturb -boolean
за замовчуванням -currentHost написати ~/Бібліотека/Налаштування/ByHost/com.apple.notificationcenterui doNotDisturbDate -date "` дата -u +
killall NotificationCenter
 

(за допомогою https://heyfocus.com/enabling-do-not-disturb-mode/ )

Вимкнути не турбувати:

  за замовчуванням -currentHost write ~/Бібліотека/Налаштування/ByHost/com.apple.notificationcenterui doNotDisturb -boolean false
killall NotificationCenter
 

Now you could easily wrap this up as a script to enable or disable Do Not Disturb as a script that would work on anybody's machine regardless of system preferences. Here is an example of how to do that: https://gist.github.com/ryangreenberg/5267f68a8e7b07ea66370b4eb5580ab9

5
додано
Незначна візуальна помилка! [Відзначений для людей, які виглядають @ color]: Я спробував це, і це сорт працює. Я відклав деякі сповіщення протягом 5 хвилин, а потім увімкнув Не турбувати для сповіщень, а потім запустив команди в розділі "Вимкнути не турбувати". З одного боку, значок залишився сірим, але, з іншого боку, він, здається, працював інакше - сповіщення виникли через кілька хвилин. Друге випробування: я ввімкнув функцію "Не турбувати для сповіщень" (без переривання), і виконував команди в розділі "Disable Do Not Disturb". Значок залишився сірим, але сповіщення вискочили прямо.
додано Автор Matthew Elvey, джерело
+1 для команди, яка не є Applescript!
додано Автор AR_HZ, джерело
@MatthewElvey Це може бути зміна від Сьєрри до Високої Сьєрри. Можливо, нам потрібно знайти новий спосіб перезавантаження піктограми меню.
додано Автор jrobertsz66, джерело

Спираючись на відповідь Джеймса, я також хотів би відзначити, що ви також можете визначити, чи ввімкнено або вимкнено. Отже, його вимикає та нічого не робить, якщо вже вимкнено:

if [[ $(plutil -convert xml1 -o - ~/Library/Preferences/ByHost/com.apple.notificationcenterui.000-000-000-000.plist | grep false) ]]; then
    osascript <

Ви повинні замінити ваш власний GUID машини на ім'я файлу (там є тільки один файл, тому легко зрозуміти)

0
додано