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


16

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

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

У ньому є можливість виконання команди терміналу, тому я запитую тут, як увімкнути / відключити функцію "Не турбувати" з терміналу?

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


Оскільки ви насправді запитуєте, як це зробити з клавіатури, на відміну від оболонки, ви, ймовірно, повинні змінити назву питання. Або якщо я помиляюся, будь ласка, виправте мене!
webmarc

Насправді, неважливо ... я не усвідомлював, що "кращеTouchTool" вимагає терміналу для того, що ти хочеш.
webmarc

Я в першу чергу запитав, як це зробити зі шкаралупи. Робити це за допомогою системних уподобань вирішує мій випадок, але цікавіше знати, як це зробити з оболонки.
Разван

Зробив, я оновив свою відповідь інформацією про оболонку.
webmarc

Відповіді:


13

Ви можете просто встановити глобальну комбінацію клавіш для неї в системних налаштуваннях -> Клавіатура -> Ярлики -> Управління місією

Або якщо ви обов'язково хочете, щоб це було в командному рядку, це зробить яблучний сценарій (якщо припустити, що ви налаштуєте ярлик клавіатури для використання cmdshiftoptctrlD.

Зверніть увагу, що ви все-таки ОБОВ'ЯЗКОВО встановити команду клавіатури в системних налаштуваннях, щоб це працювало.

Поставте нижченаведений скрипт у файл, скажімо, ~ / 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.

Скріншот: Модифікація комбінації клавіш у налаштуваннях системи


1
Ідеально! Дякую. Хочеться, щоб був кращий спосіб.
Буде B

Краще в який спосіб?
webmarc

1
Не потрібно прив’язувати незрозумілий ярлик клавіатури та перемикати його на osascript.
Буде B

Напевно, я питаю, чи ти маєш на увазі краще, як у "більш ефективному" чи краще, як у "гарніші під ковдрами". Це практичне чи естетичне побажання?
webmarc

Що цікаво, я не маю жодних додаткових пропозицій.
webmarc

17

З ОС 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, загорнувши його в гередок так:

#!/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
Це означає, що ви також можете перемикатися DoNotDisturb, натискаючи крайню праву плитку на панелі меню, утримуючи Optionклавішу.
Разван

2
Це більше не працює на Mojave. Здається, що Applescript натискає на пункт рядка меню так, ніби опція не була відхилена, хоча це
Dylanthepiguy

13

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

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

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

(через https://heyfocus.com/blog/enabling-do-not-disturb-mode/ )

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

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

Тепер ви можете легко перетворити це як сценарій, щоб увімкнути або вимкнути "Не турбувати" як сценарій, який працюватиме на будь-якій машині незалежно від системних уподобань. Ось приклад того, як це зробити:

#!/bin/bash

set -eou pipefail

# From https://heyfocus.com/enabling-do-not-disturb-mode and
# /apple/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

Джерело: https://gist.github.com/ryangreenberg/5267f68a8e7b07ea66370b4eb5580ab9


2
Незначна візуальна помилка! [Помічено для людей, які виглядають @ кольором]: Я спробував це, і це сорти працює. Я відклав сповіщення протягом 5 хвилин, а потім увімкнув "Не турбувати сповіщення", а потім запустив команди в розділі "Відключити не турбувати". З одного боку, піктограма залишалася затьмареною, але з іншого, здавалося, вона працювала інакше - сповіщення спливало за кілька хвилин. Другий тест: я ввімкнув «Не турбувати» для сповіщень (без відміни нічого) та запустив команди в розділі «Вимкнути не турбувати». Піктограма залишилася затьмареною, але сповіщення з’явились прямо вгору.
Меттью Елві

1
@MatthewElvey Це може бути перехід від Сьєрра до Високої Сьєрри. Напевно, нам потрібно знайти новий спосіб перезавантажити значок меню.
Райан

1
+1 для команди, яка не є Applescript!
Метт

1
Здійснюється, що Dnd не змінюється на високій Сьєрра / мояве з цим рішенням
Дилантхепігуй

8

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

ВАЖЛИВО : Зверніть увагу, що для запуску цих сценаріїв вперше може знадобитися дозвіл на доступність для програми, яка запускає сценарії. Якщо ви не надаєте дозволу у запиті, кнопка alt/ optionзалишатиметься натиснутою для системи, і вам потрібно буде вийти з системи та повернутись назад, щоб "видалити" її. Це справедливо і для попередніх відповідей з AppleScript. Якщо сценарій буде відредаговано, дозволи потрібно буде відкликати та надавати повторно. Дозвіл надається за допомогою:

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

Для macOS Sierra та High Sierra це menu bar 1:

Turn не турбувати ON (відключити повідомлення):

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

Turn не турбувати OFF (пристрою оповіщати):

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

Для більш ранніх версій macOS це menu bar 2:

Turn не турбувати ON (відключити повідомлення):

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

Turn не турбувати OFF (пристрою оповіщати):

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

1
Це більше не працює на Mojave. Здається, що Applescript клацає на панелі меню, як ніби параметр не був
відключений

2

Графік не турбує

Просто додамо, що ви також можете запланувати "Не турбувати" з командного рядка, щоб активувати / деактивувати кожен день у встановлений час.

Щоб встановити час, коли DND буде ввімкнено :

defaults -currentHost write ~/Library/Preferences/ByHost/com.apple.notificationcenterui dndStart -integer <start_time_in_minutes>

Щоб встановити час, коли DND буде відключено :

defaults -currentHost write ~/Library/Preferences/ByHost/com.apple.notificationcenterui dndEnd -integer <end_time_in_minutes>

ПРИМІТКА: замініть<start_time_in_minutes>і<end_time_in_minutes>бажаним значенням (пояснено нижче).


Приклад:

Щоб запланувати день DND, щоб починати щодня о 15:00 та закінчувати о 18:30, виконайте наступне:

Перетворіть 15:00 та 18:30 хвилин, щоб отримати значення <start_time_in_minutes>та <end_time_in_minutes>. Тобто помножте кількість годин на 60 і додайте кількість хвилин.

Для 15:00 це було б: 15 * 60 + 0 = 900і 18:30 , що було б: 18 * 60 + 30 = 1110. Даючи нам команди нижче:

defaults -currentHost write ~/Library/Preferences/ByHost/com.apple.notificationcenterui dndStart -integer 900
defaults -currentHost write ~/Library/Preferences/ByHost/com.apple.notificationcenterui dndEnd -integer 1110
killall NotificationCenter # 'resets' Notificatio Center so that it reads the DND change

1

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

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

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.