我有一个程序需要在菜单栏中打开和关闭系统时钟。 这样就可以了:
defaults write com.apple.MenuBarClock ClockEnabled -bool false
(使用false
- > true
将其重新打开。
除非在我手动打开日期和时间之前它才真正生效。时间设置(只是打开设置会导致菜单栏刷新,时钟根据先前发出的“默认写入”命令显示或消失。)
问题:
是否有刷新菜单栏显示的命令? 或者以编程方式打开日期和时间时间系统偏好?
PS:感谢第一个回答指出“killall SystemUIServer”,但除了我遇到的奇怪问题之外,它似乎太慢了。整个菜单栏刷新,需要一整秒。我真的只想打开和关闭时钟,就像在日期和时间偏好设置中手动点击“在菜单栏中显示日期和时间”时所发生的那样。
答案 0 :(得分:5)
尝试一下:
defaults write com.apple.MenuBarClock ClockEnabled -bool false
killall SystemUIServer
使用killall SystemUIServer
并不危险,因为该进程一旦被杀死就会重新启动。从我的简短测试中,这似乎重置菜单栏时钟以及其他系统菜单栏项目(WiFi,电池等)
答案 1 :(得分:4)
菜单栏中的时钟实际上是Menu Extra,其路径为:/System/Library/CoreServices/Menu Extras/Clock.menu
除了更改ClockEnabled
的{{1}}键之外,您还必须修改com.apple.MenuBarClock
的{{1}}键来修改菜单附加列表。
例如,以下命令将添加额外的时钟菜单:
menuExtras
棘手的部分是再次删除时钟菜单,因为默认设置没有com.apple.systemuiserver
选项,您必须使用defaults write com.apple.systemuiserver menuExtras -array-add "/System/Library/CoreServices/Menu Extras/Clock.menu"
选项覆盖整个数组。
一旦进行了更改,就可以向SystemUIServer发送挂断信号:
-array-remove
要以编程方式打开“日期和时间”系统偏好设置面板,您可以使用以下AppleScript:
-array
答案 2 :(得分:0)
要删除 /System/Library/CoreServices/Menu Extras/ 中的条目,可以通过捕获所有条目减去您不想要的条目并将其重写为“defaults write com.apple.systemuiserver menuExtras/”来实现
sysUI=$(defaults read com.apple.systemuiserver menuExtras)
newSysUI=$(echo "$sysUI"|grep -v 'Clock.menu')
defaults write com.apple.systemuiserver menuExtras "$newSysUI"
killall SystemUIServer