在全屏模式下,菜单栏永远不会显示


69

几乎我在全屏使用的每个应用程序(包括Firefox,MacVim和终端)都有屏幕顶部的标签。

问题是,当我移动鼠标到达标签时,我经常会不小心碰到屏幕顶部,在标签上引入操作系统菜单:

插图 - 在全屏应用程序中将鼠标移动到屏幕顶部会显示菜单栏

有没有办法改变这种行为?我喜欢它,如果我使用全屏应用程序时菜单栏会保持隐藏,即使我的鼠标确实触摸屏幕的顶部。


5
是的,这真的很烦人。我希望defaults write变量可以编辑。但到目前为止,我还没有听说过这样的事情。在全屏使用VM时尤其烦人。Ubuntu顶部有菜单栏,我喜欢这样。但我不断触发OSX菜单栏出现。:(
gentmatt

有一件事你可以做,但它完全牺牲了使用菜单栏 - 也就是说,除了顽固地隐藏它,你甚至无法手动激活它(通过键盘快捷键Ctrl+ F2),或者,它似乎操作任何一个菜单栏的项目通过他们指定的键盘快捷键,或者:(但如果您真的想要删除特定程序的菜单栏,它可以摆脱菜单栏。下载'PresentYourApps'(它在CNET上),运行要删除菜单栏的应用程序,运行PreentYourApps并相应地设置该应用程序的选项。它将修改应用程序并重新启动它。

4
好吧进一步信息:什么PresentYourApps'不被基本定LSUIPresentationMode或“应用程序UI演示模式”在Info.plist中有问题的应用价值:文档,这里在Lifehacker的和导向这里。而不是'4',将数字值'3'用于'All hidden'模式,这是我上面评论的步骤在更简单的GUI中所做的 - 但同样,'All hidden'烦人地禁用所有访问菜单栏的权限应用程序,而'全部被抑制'会隐藏菜单,但鼠标会在屏幕顶部调用它,这是我们不想要的。

3
如果我们能指定一个更大的延迟...这真的很烦人
卢卡斯波特斯基2017年

1
作为一种解决方案,有人可以编写一个应用程序来制作一个“墙”,以防止鼠标击中屏幕上的顶行像素(除非按住一个键以“释放”鼠标。)。这样的事情将是可接受的第一步和我的赏金的原因。
克隆曼

Answers:


9

由于Mac OS X的限制,菜单栏不能随时隐藏在命令中.Apple可以在他们自己的程序中执行此操作,但它们无法使Mac OS X中的其他开发人员成为可能。其中一个原因是Apple菜单位于菜单栏上,如果应用程序无响应或用户需要注销/关闭机器,则有用。

有一个名为Menu Eclipse的应用程序,它允许您更改菜单栏行为(隐藏它除外)。


1
“菜单eclipse”不会隐藏菜单栏。
戒指Ø14年

1
菜单栏可以是由一个按键或更长时间的暂停触发-这将仍然允许用户打出来一个破碎的应用程序的同时,也不会打断他们的标签基于工作流程
托尼·雷

1
这不可能100%正确,因为有很多全屏游戏不允许您访问菜单栏。虽然它们大概是使用非标准功能进行全屏显示。
Wowfunhappy 2016年

@Wowfunhappy我认为这是在游戏模式下运行应用程序的结果。
宙斯

好的,那么Command+ Option+ Shift+ Esc怎么样?当应用程序无响应时,在应用程序响应之前关闭计算机不会执行任何操作。所以菜单栏不应该是全屏时必须的。
MáximaAlekz

8
  • 将以下AppleScript保存到名为的文件fullscreen.scpt

    use framework "AppKit"
    use scripting additions
    
    repeat with runningApp in current application's NSWorkspace's sharedWorkspace's runningApplications()
        if runningApp's isActive()
            set frontApp to (localizedName of runningApp) as text
            exit repeat
        end if
    end repeat
    
    tell application "System Events"
        tell process frontApp to set isFullScreen to value of attribute "AXFullScreen" of first window
        if frontApp = "Finder"
            tell process frontApp to set value of attribute "AXFullScreen" of first window to not isFullScreen
        else if isFullScreen
            do shell script "lsappinfo setinfo -app " & quoted form of frontApp & " ApplicationType=Foreground"
            tell process frontApp to set value of attribute "AXFullScreen" of first window to false
    
            (*fix to make sure the menu bar is not stuck*)
            delay 0.42
            tell application "Finder" to activate
            tell process frontApp to set frontmost to true
        else
            do shell script "lsappinfo setinfo -app " & quoted form of frontApp & " ApplicationType=UIElement"
            tell process frontApp to set value of attribute "AXFullScreen" of first window to true
        end if
    end tell
    
  • 从终端,使用以下命令将其编译为应用程序:

    osacompile -o "/Applications/Full Screen.app" fullscreen.scpt
    
  • 打开Full Screen.app's Info.plist(例如vim '/Applications/Full Screen.app/Contents/Info.plist'并将以下内容添加dict

        <key>NSUIElement</key>
        <true/>
    
  • 添加Full Screen.app为例外System Preferences > Security & Privacy > Privacy > Accessibility

  • 启动Automator并创建一个新的Service

  • 将“服务接收”更改为“ no inputany application”。
  • 添加Library > Utilities > Launch Application动作。
  • 配置操作以启动先前创建的Full Screen应用程序。
  • 将服务保存为Full Screen并关闭Automator。
  • System Preferences > Keyboard > Shortcuts > Services,向下滚动到列表的底部,Full Screen应该在那里列出刚刚创建的服务。为其关联唯一的Command快捷方式,例如Shift+ Command+ \Command+ F11

这将创建一个快捷方式,使应用程序在删除菜单栏时进入全屏,或者退出全屏以返回菜单栏。它提供了另一种全屏快捷方式!

对于特定于应用程序的全屏幕发射器,请查看我的其他答案

注意事项

使用这种方法可能存在一些缺点和/或不当行为:

  • 它通过设置工作ApplicationType=UIElement,这导致应用程序图标不在Dock中添加/突出显示,并通过Command+ 使应用程序无法访问Tab。该Command+ Tab问题报道中评论,我没有注意到它,因为我一直都用任务控制概述全屏幕应用程序之间切换。
  • 对于某些特定的应用程序,它可能没有预期的行为,我注意到活动监视器应用程序的问题(通常不会全屏使用)并且有关于Chrome的报告,我没有尝试,因为我使用Firefox和它效果很好

这对于赏金来说已经绰绰有余了。优秀作品!对于未来的用户,请在编辑时进行编辑,以便在找到任何可能的限制时进 在我的脑海中,似乎Chrome不太喜欢这个,而且,当使用此快捷方式时,应用程序从cmd +选项卡中消失。
克隆曼

@cloneman很好,谢谢。我添加了一个警告部分。
pepper_chico

总是得到错误:此脚本包含未编译的更改,无法运行。(-2700)
辛萌

这个解决方案对我不起作用,我在macOS Sierra 10.12.6上。错误窗口说:Can't get window 1 of <<class prcs>> "Full Screen" of application "System Events". Invalid index.然后也说:System Events got an error: Can't get window 1 of process "Full Screen": Invalid index. (-1719)
rm.rf.etc

@ rm.rf.etc我还在Sierra上使用它,工作正常。
pepper_chico

5

我发现的最接近的解决方案是如前所述,在Mission Control中禁用“显示器具有单独的空格”。这仅在多监视器环境中有意义,因为菜单栏仍然显示在主监视器上。

如果您使应用程序“全屏”(单击绿色按钮),它将填满整个屏幕,但所有其他屏幕都会变黑,并且菜单栏会移动到应用程序的屏幕。因此,解决方案是根据需要手动扩展应用程序的边缘。曾几何时,VMWare有一种不使用Apple全屏机制的全屏解决方法。

除非/直到Apple认为这是一个需要修复的问题,否则你很难找到一个非hacky解决方案。它是如此不可或缺的操作系统是如何工作的(就像在iPhone / iPad的/ iPod的主键)。


-1

一种可能的解决方案是不要完全摆脱菜单,但实际上保持菜单始终打开(它不是那么大),而只是通过执行以下技巧摆脱Dock。

转到终端并键入:

defaults write com.apple.dock tilesize -int 1
killall Dock

这将使您的Dock变小。按⌘⌥D隐藏停靠点。

想法从这里偷走


将此答案低于零是非常卑鄙的。它可以帮助有类似问题的人,但现在他们会忽略它,假设这个解决方案根本不起作用。我的目标是优化屏幕空间,同时不会对浏览器和代码编辑器中的选项卡产生不满。上面的其他答案都没有为我工作,但完全摆脱Dock让我很开心。
亚历克斯

-1

尝试在浏览器/ ide中使用热键作为开关选项卡,这样您就不会将鼠标移动到顶部到菜单栏

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.