Я пытаюсь прочитать статус «не беспокоить» или «не беспокоить» с помощью applescript.
По какой-то причине он всегда возвращает «1», независимо от того, включен или выключен dnd.
do shell script "defaults -currentHost read ~/Library/Preferences/ByHost/com.apple.notificationcenterui doNotDisturb"
Куча Редактор: Редактор скриптов для создания и запуска скрипта ОС: macOS Монтерей
Если вы не возражаете, прочтите это через пользовательский интерфейс Mac OS Monterey.
log getDNDStatus()
on getDNDStatus()
set currentState to 1
tell application "System Events" to tell process "ControlCenter"
click of menu bar item "Control Center" of menu bar 1
if exists (first checkbox of front window whose title is "Focus") then set currentState to 0
end tell
tell application "System Events" to key code 53 -- Escape to close the control center popup
currentState
end getDNDStatus
Спасибо, это работает, есть ли способ прочитать значение, не открывая центр управления (с визуальной точки зрения)?
Я думаю, что есть способ сделать это, сравнив файл plist, в котором хранится конфигурация, до и после изменения настройки через пользовательский интерфейс. Насколько я помню, это не так ясно, и, к сожалению, я не смог найти заметки об этом, так что вам нужно погуглить, удачи.
На моей Каталине ваш обычный Apple-скрипт работает нормально:
set DNDStatus to (do shell script "defaults -currentHost read com.apple.notificationcenterui doNotDisturb") as integer as boolean
Вот решение AppleScript Objective-C:
use AppleScript version "2.4" -- Yosemite (10.10) or later
use framework "Foundation"
use scripting additions
set defaults to current application's NSUserDefaults's alloc()'s initWithSuiteName:"com.apple.notificationcenterui"
set DNDStatus to (defaults's valueForKey:"doNotDisturb") as boolean
К вашему сведению, я также пробовал без полного пути к com.apple.notificationcenterui