Программное вмешательство в настройки Mac OSX MenuBar - PullRequest
4 голосов
/ 01 июля 2010

У меня есть программа, которая должна включать и выключать системные часы в строке меню. Это сделает это:

defaults write com.apple.MenuBarClock ClockEnabled -bool false

(с помощью false -> true, чтобы включить его).

За исключением того, что он фактически не вступает в силу, пока я не открою настройки даты и времени вручную (простое открытие настроек приводит к обновлению строки меню и появлению или исчезновению часов в соответствии с ранее введенной командой «запись по умолчанию»). 1008 *

Вопрос:

Есть ли команда для обновления отображения строки меню? Или программно открыть системные настройки даты и времени?

PS: Благодаря первому ответу за указание на «killall SystemUIServer», но в дополнение к странной проблеме, с которой я столкнулся, она кажется слишком медленной. Весь menubar обновляется, и это занимает целую секунду. Я действительно хочу просто включать и выключать часы, как, например, когда вы вручную нажимаете «Показать дату и время в строке меню» в настройках «Дата и время».

Ответы [ 2 ]

5 голосов
/ 01 июля 2010

Попробуйте:

defaults write com.apple.MenuBarClock ClockEnabled -bool false
killall SystemUIServer

Использование killall SystemUIServer не опасно, так как процесс просто перезапускается, как только его убивают. Из моего краткого тестирования это похоже на сброс часов панели меню, а также других системных пунктов меню (WiFi, батарея и т. Д.)

4 голосов
/ 18 августа 2010

Часы в строке меню на самом деле представляют собой меню «Extra», путь которого: /System/Library/CoreServices/Menu Extras/Clock.menu

В дополнение к изменению клавиши ClockEnabled на com.apple.MenuBarClock вы также должны изменить список дополнительных функций меню:изменив клавишу menuExtras на com.apple.systemuiserver.

Например, следующая команда добавит дополнительное меню часов:

defaults write com.apple.systemuiserver menuExtras -array-add "/System/Library/CoreServices/Menu Extras/Clock.menu"

Сложная часть снова удаляет дополнительное меню часов, потому чтопо умолчанию не имеет опции -array-remove, необходимо перезаписать весь массив с помощью опции -array.

После внесения изменений достаточно отправить сигнал зависания SystemUIServer:

killall SystemUIServer -HUP

Чтобы программно открыть панель системных настроек «Дата и время», вы можете использовать следующий AppleScript:

tell application "System Preferences"
    set current pane to pane id "com.apple.preference.datetime"
end tell
...