【发布时间】:2015-10-08 11:31:43
【问题描述】:
我真的很喜欢 El Capitan 中的“自动隐藏菜单栏”选项,但有时我喜欢(私人)有时我不喜欢(工作)。有没有办法通过更改它在 plist 文件中的值来以编程方式显示/隐藏它?如果是这样,在哪个 plist 文件中找到了该设置?任何帮助表示赞赏。
【问题讨论】:
标签: macos plist osx-elcapitan
我真的很喜欢 El Capitan 中的“自动隐藏菜单栏”选项,但有时我喜欢(私人)有时我不喜欢(工作)。有没有办法通过更改它在 plist 文件中的值来以编程方式显示/隐藏它?如果是这样,在哪个 plist 文件中找到了该设置?任何帮助表示赞赏。
【问题讨论】:
标签: macos plist osx-elcapitan
正如Rich Trouton on apple.stackexchange.com所回答的那样
以下是使用默认设置隐藏和取消隐藏菜单栏的方法:
隐藏:
defaults write NSGlobalDomain _HIHideMenuBar -bool true
显示:
defaults write NSGlobalDomain _HIHideMenuBar -bool false
运行后,注销并重新登录。或者,您可以以登录用户身份运行以下命令来重新启动 Finder 并显示更改:
killall Finder
正如 trevordmiller 在下面的评论中指出的那样,在 Sierra 中,您似乎必须先关闭终端才能使更改生效。
【讨论】:
killall Finder 是不够的
从 10.12.5 开始,我发现 @trevordmiller 只是部分正确;每个应用程序似乎都需要单独重新启动才能注册新设置。换句话说,如果我使用:
defaults write NSGlobalDomain _HIHideMenuBar -bool false
killall Finder
这仅在 Finder 处于活动状态时显示菜单栏。要在其他应用程序中显示它,我必须重新启动它们。 Killall Finder 除了重新启动 Finder 应用程序并为其注册设置外,不需要任何其他方式。重启任何终端应用程序也是如此。
【讨论】:
来自 AppKit 发行说明:
NSApplication(自 WWDC Seed 以来的新功能)
10.11 支持一种新的菜单栏行为,在正常的非全屏交互期间隐藏菜单栏。菜单栏显示自己 当鼠标移动到每个顶部的热点区域时自动 展示。当此模式启用时, NSApplication.presentationOptions 属性将包括 NSApplicationPresentationAutoHideMenuBar 值。
10.11 之前,HIToolbox 提供的 SetSystemUIMode API,以及 AppKit 提供的 NSApplication 的 setPresentationOptions API,做了 不允许显式启用自动隐藏菜单栏 隐藏 Dock。 -setPresentationOptions 现在允许选项 包含 AutoHideMenuBar 但不包含 HideDock 或 自动隐藏坞站。为了确保与现有应用程序的兼容性, SetSystemUIMode API 将只允许在 10.11 和 稍后通过 kUIModeNormal 和 kUIOptionAutoShowMenuBar;如果此组合由 在 Yosemite 或更早版本上链接的应用程序,AutoShowMenuBar 选项 被忽略
您正在寻找这个位。根据需要翻转它。
typedef NS_OPTIONS(NSUInteger, NSApplicationPresentationOptions) {
/* Flags that comprise an application's presentationOptions */
NSApplicationPresentationAutoHideMenuBar = (1 << 2),
} NS_ENUM_AVAILABLE_MAC(10_6);
【讨论】:
为时已晚。如果它对其他人有帮助,那么捷径可能会派上用场。
打开Automator -> 选择Service -> Service接收选定的文本 -> 在no input strong>任何应用程序 -> 添加 Run Shell Script 动作 -> 添加以下行。
bool=$(defaults read NSGlobalDomain _HIHideMenuBar)
if [ "$bool" == 0 ]; then
defaults write NSGlobalDomain _HIHideMenuBar -bool true
else
defaults write NSGlobalDomain _HIHideMenuBar -bool false
fi
保存。 (这些步骤创建了一个在系统启动时运行的服务。)
提供快捷方式,
转到系统偏好设置 -> 键盘 -> 快捷方式 -> 服务 -> 滚动到最后找到 General 部分 -> 设置服务的首选快捷方式。
【讨论】:
❯ /usr/bin/defaults write NSGlobalDomain _HIHideMenuBar -bool [true|false]
但是您必须关闭 Finder 应用程序的实例,然后再次启动它:
# `-g` don't bring app to foreground, `-a` specify app name
❯ killall Finder && open -ga /System/Library/CoreServices/Finder.app/
作为热键触发脚本来打开/关闭(隐藏/取消隐藏):
if (( `/usr/bin/defaults read NSGlobalDomain _HIHideMenuBar` == 0 ));
then
/usr/bin/defaults write NSGlobalDomain _HIHideMenuBar -bool true \
&& killall Finder \
&& open -ga /System/Library/CoreServices/Finder.app/
else
/usr/bin/defaults write NSGlobalDomain _HIHideMenuBar -bool false \
&& killall Finder \
&& open -ga /System/Library/CoreServices/Finder.app/
fi
- 可用于 Alfred 工作流程、Hammerspoon、Keyboard Maestro、Automator 等。
【讨论】: