2010-06-30 63 views
4

我有一個程序需要打開和關閉菜單欄中的系統時鐘。 這將做到這一點:以編程方式篡改Mac OSX MenuBar設置

defaults write com.apple.MenuBarClock ClockEnabled -bool false 

(與false - >true來打開它)。

除非手動打開,否則它實際上不會生效日期&時間設置(剛打開設置會導致菜單欄刷新,並且時鐘根據先前發出的「默認寫入」命令出現或消失)。

問題:

是否有命令刷新菜單欄的顯示? 或以編程方式打開日期&時間系統首選項?

PS:感謝指出「killall SystemUIServer」的第一個答案,但除了我遇到的奇怪問題之外,它似乎太慢了。整個菜單欄刷新,需要整整一秒鐘。我真的只想打開和關閉時鐘,就像手動點擊「日期和時間」偏好設置中的「在菜單欄中顯示日期和時間」時發生的情況。

回答

5

試試這個:

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

使用killall SystemUIServer是沒有危險的過程,就像一旦它被殺害重新啓動。從我簡短的測試,這似乎重新設置菜單欄時鐘以及其它系統菜單欄項目(無線網絡,電池等)

+0

奇怪的是,這是爲ShowDay等其他設置,但不適用於我的ClockEnabled。 – dreeves 2010-07-01 01:42:55

4

在菜單欄的時鐘實際上是一個額外的菜單,其路徑是:/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 
+0

但是,如果命令重複,它也會創建多個時鐘。如上所述刪除時鐘也會將所有狀態欄項目重置爲默認值。 – paul 2011-09-04 23:01:03