Зробіть так, щоб рядок меню ніколи не відображався під час повноекранного режиму


69

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

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

Ілюстрація - переміщення миші на верхній частині екрана в додатках на весь екран відображає панель меню

Чи є спосіб змінити таку поведінку? Я вважаю за краще, якщо рядок меню залишатиметься прихованим, коли я використовую програму на весь екран, навіть якщо миша торкається верхньої частини екрана.


5
Так, це справді дратує. Я хотів би там, де defaults writeзмінна міг би редагувати. Але поки що я не чув про щось подібне. Це особливо дратує при використанні VM в повноекранному режимі. Ubuntu має меню вгорі, і мені це подобається. Але я постійно викликаю появу рядка меню OSX. :(
gentmatt

Є ОДНЕ, що ви можете зробити, але воно жертвує цілком, використовуючи рядок меню - тобто, крім того, що вперто приховувати його, ви навіть не можете його активувати вручну (за допомогою комбінації клавіш Ctrl+ F2) або, як видається, керувати будь-яким із Елементи рядка меню через призначені для них клавіші швидкого доступу :(. Але це НЕ позбавляється від панелі меню прямо, якщо ви дійсно хочете позбутися від нього для певної програми. Завантажте "PresentYourApps" (це на CNET), запустіть додаток, з якого ви хочете видалити рядок меню, запустіть PreentYourApps і встановіть відповідні параметри для цього додатка. Він

4
Добре відомості: що "PresentYourApps" в основному встановлює значення LSUIPresentationMode або "Режим презентації інтерфейсу додатка" у Info.plist для відповідного додатка: тут документація та посібник по Lifehacker тут . Замість "4" використовуйте числове значення "3" для режиму "Усі приховані". Це є те, що кроки мого вище коментаря роблять у тому простішому графічному інтерфейсі, але знову ж таки "Усі приховані" дратівливо відключають ВСІЙ доступ до панелі меню, коли в цьому додаток, тоді як "Усі пригнічені" НЕ приховує меню, але миша викликає його, коли потрапляє вгорі екрана, чого ми не хочемо.

3
якби тільки ми могли вказати на більшу затримку ... це справді дратує
Лукас Поттерський

1
Як вирішення способу вирішення питання, хтось може написати програму, яка створює "стіну", щоб миша не потрапляла у верхній ряд пікселів на екрані (якщо не утримується клавіша для "звільнення" миші.). Щось подібне було б прийнятним першим кроком і причиною моєї щедрості.
клоніст

Відповіді:


9

Рядок меню НЕ можна приховати за командою, коли вам подобається через обмеження в Mac OS X. Apple може робити це у своїх власних програмах, але вони НЕ МОЖЛИВАТИ це для інших розробників в Mac OS X. Одна з причин того, що Apple Menu сидить на панелі меню і корисний, якщо програма не відповідає або якщо користувачеві потрібно вийти з системи / вимкнути його.

Існує програма під назвою Menu Eclipse, яка дозволяє змінювати поведінку меню (крім приховування).


1
"Затемнення меню" не приховує рядок меню.
Кільце Ø

1
панель меню може бути спровокована натисканням клавіші або довшою паузою - це все одно дозволить користувачеві вийти із зламаного додатка, а також не перервати робочий потік на основі вкладок
Toni Leigh

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.

  • Запустіть Автоматизатор і створіть новий 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, через що піктограма програми не додається / не виділяється в док-станції та робить додаток недоступним через Command+ Tab. Про проблему Command+ повідомлялося в коментарях , я її не помічав, оскільки я в основному використовую огляд контролю місій для переходу між програмами на весь екранTab
  • Він може не вести себе так, як очікувалося в деяких конкретних програмах, я помітив проблеми з додатком Monitor Monitor (який, як правило, не використовується на весь екран) і є звіт про Chrome , який я не намагався, оскільки я використовую Firefox і це працює чудово .

Це більш ніж достатньо для щедроти. Відмінна робота! Для майбутніх користувачів, будь ласка, відредагуйте, щоб описати будь-які потенційні обмеження, коли ви їх знайдете. Зверху в голові здається, що хрому це не дуже подобається, а також додатки зникають із вкладки 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, щоб сховати док-станцію.

Ідея вкрадена звідси .


Скинути цю відповідь нижче нуля справді мало. Це може допомогти людям з подібною проблемою, але тепер вони проігнорують її, вважаючи, що це рішення не працює взагалі. Моєю метою було оптимізувати простір екрану, не маючи роздратування вкладками в браузері та редакторах коду. Жодна з інших відповідей, описаних вище, не працювала для мене, але повністю позбувшись Дока зробило мене щасливим.
Олексій

-1

Спробуйте використовувати гарячі клавіші для переключення вкладок у браузері / ide, щоб ви ніколи не переміщували мишу вгорі, щоб з'явилося меню

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.