Faça com que a barra de menus nunca seja exibida enquanto estiver em tela cheia

70

Praticamente todos os aplicativos que utilizo em tela cheia (incluindo Firefox, MacVim e Terminal) têm guias na parte superior da tela.

O problema é que, quando movo o mouse para alcançar as guias, muitas vezes toco acidentalmente na parte superior da tela, trazendo o menu do SO sobre as guias:

Ilustração - mover o mouse para o topo da tela em aplicativos de tela cheia faz a barra de menus aparecer

Existe alguma maneira de mudar esse comportamento? Eu preferiria que a barra de menus ficasse oculta quando estou usando um aplicativo de tela cheia, mesmo que meu mouse toque na parte superior da tela.

MaiaVictor
fonte
5
Sim, isso é realmente irritante. Eu desejo lá onde uma defaults writevariável possa ser editada. Mas até agora eu não ouvi nada sobre isso. É especialmente irritante ao usar uma VM em tela cheia. O Ubuntu tem a barra de menu no topo e eu gosto dessa maneira. Mas estou constantemente ativando a barra de menus do OSX para aparecer. :(
gentmatt
Há uma coisa que você pode fazer, mas ela sacrifica completamente a barra de menus - ou seja, além de ocultá-la teimosamente, você não pode nem ativá-la manualmente (via atalho de teclado Ctrl+ F2) ou, ao que parece, operar qualquer um dos botões. os itens da barra de menus por meio dos atalhos de teclado atribuídos, quer :(. Mas ela se livra da barra de menus se quiser realmente se livrar dela para um programa específico. Faça o download do 'PresentYourApps' (está no CNET), execute o aplicativo que você deseja remover a barra de menu para, PreentYourApps correr e definir as opções para esse aplicativo em conformidade vai modificar o aplicativo e reiniciá-lo..
4
Ok, mais informações: o que 'PresentYourApps' faz é basicamente definir o valor LSUIPresentationMode ou 'Application UI Presentation Mode' no Info.plist do aplicativo em questão: documentação aqui e um guia no Lifehacker aqui . Em vez de '4', use o valor numérico '3' para o modo 'Todos ocultos', que é o que as etapas do meu comentário acima fazem nessa GUI mais fácil - mas novamente, 'Todos ocultos' desativa irritantemente TODO o acesso à barra de menus quando estiver nesse aplicativo, enquanto 'All suprimido' oculta o menu, mas o mouse o invoca quando atinge o topo da tela, o que não queremos.
3
se pudéssemos especificar um atraso maior ... este é realmente irritante
Lucas Pottersky
11
Como solução alternativa, alguém pode escrever um aplicativo que faça uma "parede" para impedir que o mouse atinja a linha superior de pixels na tela (a menos que uma tecla seja pressionada para "liberar" o mouse). Algo assim seria um primeiro passo aceitável e a razão da minha recompensa.
Cloneman

Respostas:

9

A barra de menus NÃO pode estar oculta no comando sempre que você desejar devido a limitações no Mac OS X. A Apple pode fazer isso em seus próprios programas, mas NÃO possibilitou outros desenvolvedores no Mac OS X. Um dos motivos é que O Apple Menu fica na barra de menus e é útil se o aplicativo não responder ou se o usuário precisar fazer logoff / desligar a máquina.

Há um aplicativo chamado Menu Eclipse que permite alterar os comportamentos da barra de menus (exceto para ocultá-lo).

Zeus
fonte
11
"Menu eclipse" não oculta a barra de menus.
Anel Ø
11
Na barra de menu poderia ser triggerable por uma combinação de teclas ou por uma pausa mais longa - isso ainda permitiria que o usuário sair de um aplicativo quebrado ao mesmo tempo, não interromper o seu guia o fluxo de trabalho baseado
Toni Leigh
11
Isso não pode ser 100% verdadeiro, pois existem muitos jogos em tela cheia que não permitem o acesso à barra de menus. Embora eles estejam usando funções fora do padrão para tela cheia.
Wowfunhappy 31/08/19
@Wowfunhappy Eu diria que é o resultado da execução de aplicativos no modo de jogo.
Zeus
Ok ok ok, e quanto a Command+ Option+ Shift+ Esc? Quando o aplicativo não responde, o desligamento da máquina não faz nada até que o aplicativo responda. Portanto, a barra de menus não deve ser obrigatória quando estiver em tela cheia.
Máxima Alekz
8
  • Salve o seguinte AppleScript em um arquivo chamado 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
    
  • Do terminal, compile-o para um aplicativo com o seguinte comando:

    osacompile -o "/Applications/Full Screen.app" fullscreen.scpt
    
  • Abra o Full Screen.app's Info.plist(por exemplo vim '/Applications/Full Screen.app/Contents/Info.plist') e adicione o seguinte ao dict:

        <key>NSUIElement</key>
        <true/>
    
  • Adicione Full Screen.appcomo uma exceção em System Preferences > Security & Privacy > Privacy > Accessibility.

  • Inicie o Automator e crie um novo Service.

  • Altere "Serviço recebe" para " no inputem any application".
  • Adicione uma Library > Utilities > Launch Applicationação.
  • Configure a ação para iniciar o Full Screenaplicativo criado anteriormente .
  • Salve o serviço como Full Screene feche o Automator.
  • Em System Preferences > Keyboard > Shortcuts > Services, role para baixo até a parte inferior da lista e o Full Screenserviço recém-criado deve estar listado lá. Associe um Commandatalho exclusivo para ele, como Shift+ Command+ \ou Command+ F11por exemplo.

Isso cria um atalho para fazer com que um aplicativo entre em tela cheia enquanto remove a barra de menus ou sai da tela cheia, trazendo a barra de menu de volta. Ele fornece um atalho alternativo para tela cheia!

Para lançadores de tela cheia específicos de aplicativos, verifique minha outra resposta .

Ressalvas

Pode haver algumas desvantagens e / ou mau comportamento ao usar esta abordagem:

  • Ele funciona por configuração ApplicationType=UIElement, o que faz com que o ícone do aplicativo não seja adicionado / destacado no Dock e torna o aplicativo inacessível via Command+ Tab. O problema Command+ foi relatado nos comentários , mas não o notei, pois uso principalmente a visão geral do Controle da Missão para alternar entre aplicativos em tela cheia.Tab
  • Pode não se comportar conforme o esperado para alguns aplicativos específicos, notei problemas com o aplicativo Monitor de Atividade (que geralmente não é usado em tela cheia) e há um relatório no Chrome , que não tentei desde que uso o Firefox e ele funciona muito bem .
pepper_chico
fonte
Isso é mais do que suficiente para a recompensa. Excelente trabalho! Para futuros usuários, edite para descrever possíveis limitações quando encontrá-las. No topo da minha cabeça, parece que o chrome não gosta muito disso e também os aplicativos desaparecem da guia cmd + ao usar esse atalho.
Cloneman
@cloneman Nice, obrigado. Adicionei uma seção de advertências .
pepper_chico
sempre obtém erro: este script contém alterações não compiladas e não pode ser executado. (-2700)
Xin Meng
Esta solução não funciona para mim e estou no macOS Sierra 10.12.6. A janela de erro diz: Can't get window 1 of <<class prcs>> "Full Screen" of application "System Events". Invalid index.E então também diz:System Events got an error: Can't get window 1 of process "Full Screen": Invalid index. (-1719)
rm.rf.etc
@ rm.rf.etc Eu ainda estou usando no Sierra, funcionando bem.
pepper_chico
5

A solução mais próxima que encontrei é fazer como mencionado anteriormente, desativando "Os monitores têm espaços separados" no Controle de missão. Isso só faz sentido em um ambiente com vários monitores, como a barra de menus ainda é exibida no monitor principal.

Se você fizer o aplicativo "ficar em tela cheia" (clique no botão verde), ele preencherá a tela inteira, mas todas as outras telas ficarão pretas e a barra de menus será movida para a tela do aplicativo. Portanto, a solução é expandir manualmente as bordas do aplicativo o mais alto ou mais alto que você desejar. Era uma vez, o VMWare tinha algum tipo de solução alternativa em tela cheia que não usava o mecanismo de tela cheia da Apple.

A menos que / até que a Apple veja isso como um problema que precisa ser corrigido, será difícil encontrar uma solução não-hacky. É tão essencial para o funcionamento do sistema operacional (como o botão home do iPhone / iPad / iPod).

Bryan Scott
fonte
0

Uma solução possível é não se livrar completamente do menu, mas manter o menu sempre ativo (não é tão grande) e apenas se livrar do Dock, executando o seguinte truque.

Vá para o terminal e digite:

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

Isso tornará seu Dock pequeno. Pressione ⌘ ⌥ D para ocultar a estação.

Idéia roubada daqui .

Alex
fonte
A votação abaixo desta resposta abaixo de zero é realmente má. Isso pode ajudar as pessoas com o mesmo problema, mas agora elas o ignoram, supondo que essa solução não funcione. Meu objetivo era otimizar o espaço da tela, sem irritar as guias do navegador e os editores de código. Nenhuma das outras respostas acima funcionou para mim, mas me livrar completamente do Dock me deixou feliz.
Alex
-1

Tente usar teclas de atalho para alternar as guias no navegador / ide, para que você nunca mova o mouse para cima para aparecer a barra de menus

Dankiv Vitalij
fonte