【问题标题】:Programmatically tampering with Mac OSX MenuBar settings以编程方式篡改 Macos 菜单栏设置
【发布时间】:2011-03-10 09:10:01
【问题描述】:

我有一个程序需要在菜单栏中打开和关闭系统时钟。 这将做到这一点:

defaults write com.apple.MenuBarClock ClockEnabled -bool false

(使用false->true 将其重新打开)。

除非在我手动打开日期和时间设置之前它实际上不会生效(仅打开设置会导致菜单栏刷新并且时钟根据之前发出的“默认写入”命令出现或消失)。

问题:

是否有刷新菜单栏显示的命令? 还是以编程方式打开日期和时间系统首选项?

PS:感谢指出“killall SystemUIServer”的第一个答案,但除了我遇到的奇怪问题之外,它似乎太慢了。整个菜单栏刷新,需要一整秒。我真的很想打开和关闭时钟,就像您在日期和时间首选项中手动单击“在菜单栏中显示日期和时间”时发生的情况一样。

【问题讨论】:

    标签: macos scripting applescript


    【解决方案1】:

    试试这个:

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

    使用killall SystemUIServer 并不危险,因为进程一旦被杀死就会重新启动。根据我的简短测试,这似乎会重置菜单栏时钟以及其他系统菜单栏项目(WiFi、电池等)

    【讨论】:

    • 奇怪的是,这适用于 ShowDay 等其他设置,但不适用于我的 ClockEnabled。
    【解决方案2】:

    菜单栏中的时钟实际上是一个Menu Extra,其路径为:/System/Library/CoreServices/Menu Extras/Clock.menu

    除了更改com.apple.MenuBarClockClockEnabled 键之外,您还必须通过修改com.apple.systemuiservermenuExtras 键来修改菜单附加列表。

    例如,以下命令将额外添加时钟菜单:

    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
    

    【讨论】:

    • 这行得通,但是,如果重复该命令,它也会创建多个时钟。如上所述删除时钟也会将所有状态栏项目重置为其默认值。
    【解决方案3】:

    要删除 /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
    

    【讨论】:

    • 仅供参考...这不再适用于 macOS Big Sur 中的 时钟,因为 OS 的方式发生了变化 处理它。它还可能会影响其他 Menu Extras,因为在 macOS Big Sur 中过去存在的一些不再这样做。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-26
    • 1970-01-01
    • 2010-10-15
    • 2016-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多