Как читать не беспокоить с помощью applescript?

Я пытаюсь прочитать статус «не беспокоить» или «не беспокоить» с помощью applescript.

По какой-то причине он всегда возвращает «1», независимо от того, включен или выключен dnd.

do shell script "defaults -currentHost read ~/Library/Preferences/ByHost/com.apple.notificationcenterui doNotDisturb"

Куча Редактор: Редактор скриптов для создания и запуска скрипта ОС: macOS Монтерей

К вашему сведению, я также пробовал без полного пути к com.apple.notificationcenterui

user4150758 09.04.2022 12:57
1
1
41
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Если вы не возражаете, прочтите это через пользовательский интерфейс 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

Спасибо, это работает, есть ли способ прочитать значение, не открывая центр управления (с визуальной точки зрения)?

user4150758 10.04.2022 04:47

Я думаю, что есть способ сделать это, сравнив файл plist, в котором хранится конфигурация, до и после изменения настройки через пользовательский интерфейс. Насколько я помню, это не так ясно, и, к сожалению, я не смог найти заметки об этом, так что вам нужно погуглить, удачи.

user3579815 10.04.2022 10:08

На моей Каталине ваш обычный 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

Другие вопросы по теме