Сделать так, чтобы строка меню никогда не отображалась в полноэкранном режиме

70

Практически каждое приложение, которое я использую в полноэкранном режиме (включая Firefox, MacVim и терминал), имеет вкладки в верхней части экрана.

Проблема в том, что когда я перемещаю мышь, чтобы добраться до вкладок, я часто случайно касаюсь верхней части экрана, в результате чего в меню ОС НАД вкладками:

Иллюстрация - при перемещении мыши в верхнюю часть экрана в полноэкранных приложениях появляется строка меню

Есть ли способ изменить это поведение? Я бы предпочел, чтобы строка меню оставалась скрытой, когда я использую полноэкранное приложение, даже если моя мышь касается верхней части экрана.

MaiaVictor
источник
5
Да, это действительно раздражает. Я хотел бы там, где defaults writeможно редактировать переменную. Но до сих пор я не слышал ни о чем подобном. Это особенно раздражает при использовании виртуальной машины в полноэкранном режиме. У Ubuntu есть верхняя строка меню, и мне это нравится. Но я постоянно запускаю строку меню OSX. :(
Джентматт
Есть ОДНА вещь, которую вы можете сделать, но она полностью жертвует использованием строки меню - то есть, помимо упрямого ее скрытия, вы даже не можете активировать ее вручную (с помощью сочетания клавиш Ctrl+ F2) или, по-видимому, управлять любым из Пункты строки меню с помощью назначенных им сочетаний клавиш, либо :(. Но это НЕ БУДЕТ избавляться от панели меню прямо, если вы действительно хотите избавиться от нее для конкретной программы. Скачайте PresentYourApps (это на CNET), запустите приложение, для которого вы хотите удалить строку меню, запустите PreentYourApps и соответственно установите параметры для этого приложения. Оно
4
Хорошо, дальнейшая информация: то, что делает PresentYourApps, в основном устанавливает значение LSUIPresentationMode или «Режим представления пользовательского интерфейса приложения» в Info.plist для рассматриваемого приложения: документация здесь и руководство Lifehacker здесь . Вместо «4» используйте числовое значение «3» для режима «Все скрытые», что и делает мой предыдущий комментарий в этом более простом графическом интерфейсе, но опять же, «Все скрытые» досадно отключает ВСЕ доступ к строке меню, когда в этом app, в то время как «Все подавлено» скрывает меню, но мышь вызывает его при нажатии на верхнюю часть экрана, что нам не нужно.
3
если бы мы только могли указать большую задержку ... это действительно раздражает
Лукас Поттерский
1
В качестве обходного решения, кто-то может написать приложение, которое создает «стену», предотвращающую попадание мыши в верхний ряд пикселей на экране (если не удерживается клавиша для «отпускания» мыши). Нечто подобное было бы приемлемым первым шагом и причиной моей награды.
клонист

Ответы:

9

Строка меню НЕ может быть скрыта по команде, когда вы захотите из-за ограничений в Mac OS X. Apple может сделать это в своих собственных программах, но они НЕ сделали возможным это для других разработчиков в Mac OS X. Одна из причин заключается в том, что Меню Apple находится в строке меню и полезно, если приложение перестает отвечать на запросы или если пользователю необходимо выйти из системы / выключить компьютер.

Существует приложение под названием Menu Eclipse, которое позволяет изменять поведение строки меню (за исключением скрытия).

Зевс
источник
1
«Menu eclipse» не скрывает строку меню.
Кольцо Ø
1
строка меню может быть вызвана нажатием клавиши или более длительной паузой - это все равно позволит пользователю выйти из сломанного приложения, не прерывая при этом его рабочий процесс на основе вкладок
Тони Ли
1
Это не может быть на 100% верно, так как есть много полноэкранных игр, которые не позволяют вам получить доступ к строке меню. Хотя они предположительно используют нестандартные функции для полного экрана.
Wowfunhappy
@Wowfunhappy Я бы предположил, что это результат запуска приложений в режиме игры.
Зевс
Хорошо все в порядке, и что о Command+ Option+ Shift+ Esc? Когда приложение перестает отвечать на запросы, выключение компьютера ничего не делает, пока приложение не ответит. Поэтому строка меню не должна быть обязательной при полноэкранном режиме.
Максима Алекс
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 inputв any 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
  • Он может работать не так, как ожидалось для некоторых конкретных приложений, я заметил проблемы с приложением Activity Monitor (которое обычно не используется в полноэкранном режиме), и есть отчет по Chrome , который я не пробовал, так как использую Firefox и его отлично работает .
pepper_chico
источник
Этого более чем достаточно для награды. Превосходная работа! Для будущих пользователей, пожалуйста, измените, чтобы описать любые потенциальные ограничения, когда вы их найдете. Мне кажется, что chrome это не очень нравится, а также приложения исчезают со вкладки cmd + при использовании этого ярлыка.
клонист
@ cloneman Хорошо, спасибо. Я добавил раздел Caveats .
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 Я до сих пор использую его в Сьерре, работает нормально.
pepper_chico
5

Самое близкое решение, которое я нашел, - это сделать, как упоминалось ранее, отключив «Дисплеи с отдельными пробелами» в «Управлении полетами». Это имеет смысл только в среде с несколькими мониторами, поскольку строка меню по-прежнему отображается на основном мониторе.

Если вы заставляете приложение работать в полноэкранном режиме (нажмите зеленую кнопку), оно заполняет весь экран, но все остальные экраны становятся черными, и строка меню перемещается на экран приложения. Таким образом, решение заключается в том, чтобы вручную расширить края приложения настолько, насколько вам нужно. Когда-то у VMWare был какой-то полноэкранный обходной путь, в котором не использовался полноэкранный механизм Apple.

Если / пока Apple не сочтет это проблемой, которую нужно решить, вам будет трудно найти нехакерское решение. Он настолько важен для работы операционной системы (как кнопка «Домой» на iPhone / iPad / iPod).

Брайан Скотт
источник
0

Одно из возможных решений - это не полностью избавиться от меню, а на самом деле держать меню всегда включенным (оно не так уж велико), а просто вместо этого избавиться от Dock, выполнив следующий прием.

Зайдите в терминал и наберите:

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

Это сделает ваш док маленьким. Нажмите ⌘ ⌥ D, чтобы скрыть док.

Идея украдена отсюда .

Alex
источник
Понижение этого ответа ниже нуля действительно значит. Это может помочь людям с подобной проблемой, но теперь они будут игнорировать ее, предполагая, что это решение не работает вообще. Моей целью было оптимизировать пространство экрана, не раздражая вкладки в браузере и редакторах кода. Ни один из вышеперечисленных ответов не помог мне, но полное избавление от дока сделало меня счастливым.
Алекс
-1

Попробуйте использовать горячие клавиши для переключения вкладок в браузере / ide, чтобы вы никогда не двигали мышь в верхней части, чтобы появилось меню

Данкив Виталий
источник