Hacer que la barra de menú nunca se muestre mientras está en pantalla completa

Prácticamente todas las aplicaciones que uso en pantalla completa (incluidos Firefox, MacVim y Terminal) tienen pestañas en la parte superior de la pantalla.

El problema es que cuando muevo el mouse para llegar a las pestañas, a menudo toco accidentalmente la parte superior de la pantalla, mostrando el menú del sistema operativo SOBRE las pestañas:

Foto de archivo - Mover el mouse a la parte superior de la pantalla en las aplicaciones de pantalla completa hace que aparezca la barra de menú

¿Hay alguna forma de cambiar este comportamiento? Preferiría que la barra de menú permaneciera oculta cuando estoy usando una aplicación de pantalla completa, incluso si mi mouse toca la parte superior de la pantalla.

Sí, esto es realmente molesto. Ojalá allí donde defaults writese pudiera editar una variable. Pero hasta ahora no he oído nada de eso. Es especialmente molesto cuando se usa una VM en pantalla completa. Ubuntu tiene la barra de menú en la parte superior y me gusta así. Pero constantemente hago que aparezca la barra de menú de OSX. :(
Hay UNA cosa que puede hacer, pero sacrifica el uso de la barra de menú por completo, es decir, además de ocultarlo obstinadamente, ni siquiera puede activarlo manualmente (a través del atajo de teclado Ctrl+ F2) o, al parecer, operar cualquiera de los elementos de la barra de menú a través de sus atajos de teclado asignados, ya sea :(. Pero SÍ se deshace de la barra de menú directamente si realmente quiere deshacerse de ella para un programa específico. Descargue 'PresentYourApps' (está en CNET), ejecute la aplicación para la que desea eliminar la barra de menú, ejecute PreentYourApps y configure las opciones para esa aplicación en consecuencia. Modificará la aplicación y la reiniciará.
De acuerdo, más información: lo que hace 'PresentYourApps' es básicamente establecer el valor LSUIPresentationMode o 'Application UI Presentation Mode' en Info.plist para la aplicación en cuestión: documentación aquí y una guía en Lifehacker aquí . En lugar de '4', use el valor numérico '3' para el modo 'Todo oculto', que es lo que hacen los pasos de mi comentario anterior en esa GUI más fácil, pero nuevamente, 'Todo oculto' deshabilita molestamente TODO el acceso a la barra de menú cuando está en eso aplicación, mientras que 'Todo suprimido' Oculta el menú, pero el mouse lo invoca cuando se presiona la parte superior de la pantalla, lo que no queremos.
¿Puede intentar deshabilitar la opción "Las pantallas tienen espacios separados" en la sección Control de la misión de la aplicación Preferencias del sistema? Sé que cambia el comportamiento de la barra de menú, pero no puedo probarlo en mi máquina actual porque no estoy ejecutando Mavericks.
¿Alguna solución todavía?
¿Puedes volver a subir la imagen? El enlace de Dropbox ahora se vincula a un 404.
Pruebe el navegador Vivaldi, donde puede tener pestañas en la parte inferior de la pantalla.
kb.parallels.com/en/123101 (¿Parallels tiene esto en modo "juego"?)
si tan solo pudiéramos especificar un retraso mayor... esto es realmente molesto
¿Hay alguna mejora en 10.13 (High Sierra)?
Sin mejoras en 10.13.
Como solución alternativa, alguien podría escribir una aplicación que haga una "pared" para evitar que el mouse golpee la fila superior de píxeles en la pantalla (a menos que se mantenga presionada una tecla para "soltar" el mouse). Algo como esto sería un primer paso aceptable y la razón de mi generosidad.
@cloneman gran idea!
Es sorprendente que todavía no tengamos una forma adecuada de lograr esto.
Pasé tanto tiempo tratando de encontrar una manera de obligar a la barra de menú a permanecer oculta, no puedo soportar este comportamiento en absoluto.

Respuestas (7)

  • Guarde el siguiente AppleScript en un archivo llamado 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
    
  • Desde la terminal, compílelo en una aplicación con el siguiente comando:

    osacompile -o "/Applications/Full Screen.app" fullscreen.scpt
    
  • Abra el Full Screen.app's Info.plist(por ejemplo vim '/Applications/Full Screen.app/Contents/Info.plist') y agregue lo siguiente al dict:

        <key>NSUIElement</key>
        <true/>
    
  • Añadir Full Screen.appcomo excepción en System Preferences > Security & Privacy > Privacy > Accessibility.

  • Inicie Automator y cree un nuevo Service.

  • Cambie "Servicio recibe" a " no inputen any application".
  • Agrega una Library > Utilities > Launch Applicationacción.
  • Configure la acción para iniciar la Full Screenaplicación creada anteriormente.
  • Guarde el servicio como Full Screeny cierre Automator.
  • En System Preferences > Keyboard > Shortcuts > Services, desplácese hacia abajo hasta el final de la lista y el Full Screenservicio recién creado debería aparecer allí. CommandAsocie un atajo único para él, como Shift++ o Command+ por ejemplo .\CommandF11

Esto crea un atajo para hacer que una aplicación ingrese a pantalla completa mientras se elimina la barra de menú, o para salir de la pantalla completa y recuperar la barra de menú. ¡Proporciona un acceso directo alternativo a pantalla completa!

Para lanzadores de pantalla completa específicos de la aplicación, consulte mi otra respuesta .

Advertencias

Puede haber algunas desventajas y/o mala conducta al usar este enfoque:

  • Funciona configurando ApplicationType=UIElement, lo que hace que el ícono de la aplicación no se agregue/resalte en el Dock y haga que la aplicación sea inaccesible a través de Command+ Tab. El problema Command+ se informó en los comentarios , no lo noté ya que principalmente uso la descripción general de Mission Control para cambiar entre aplicaciones de pantalla completa.Tab
  • Es posible que no se comporte como se esperaba para algunas aplicaciones específicas, he notado problemas con la aplicación Monitor de actividad (que generalmente no se usa en pantalla completa de todos modos) y hay un informe sobre Chrome , que no probé porque uso Firefox y funciona muy bien
Esto es más que suficiente para la recompensa. ¡Excelente trabajo! Para futuros usuarios, edite para describir cualquier posible limitación cuando la encuentre. En mi opinión, parece que a Chrome no le gusta mucho esto y, además, las aplicaciones desaparecen de la pestaña cmd+ cuando se usa este acceso directo.
@cloneman Bien, gracias. He añadido una sección de Advertencias .
siempre recibe un error: este script contiene cambios sin compilar y no se puede ejecutar. (-2700)
Esta solución no funciona para mí y estoy en macOS Sierra 10.12.6. La ventana de error dice: Can't get window 1 of <<class prcs>> "Full Screen" of application "System Events". Invalid index.Y luego también dice:System Events got an error: Can't get window 1 of process "Full Screen": Invalid index. (-1719)
@rm.rf.etc Todavía lo estoy usando en Sierra, funciona bien.
Tengo exactamente el mismo error que rm.rf.etc
@cbartondock Apenas arranco en macOS, es solo un mal sistema operativo. Sugiera una mejora si encuentra problemas. Por el tiempo que lo usé en Sierra funcionó.
¿Hay algún motivo en particular por el que esté utilizando osacompileen lugar de simplemente exportar como una aplicación desde el editor de Applescript? Supongo que cualquiera de los dos funciona, el último parece un paso menos.

La barra de menú NO se puede ocultar cuando lo desee debido a las limitaciones de Mac OS X. Apple puede hacer esto en sus propios programas, pero NO lo han hecho posible para otros desarrolladores en Mac OS X. Una de las razones es que Apple Menu se encuentra en la barra de menús y es útil si la aplicación deja de responder o si el usuario necesita cerrar sesión/apagar la máquina.

Hay una aplicación llamada Menu Eclipse que te permite cambiar los comportamientos de la barra de menú (excepto para ocultarla).

"Menú eclipse" no oculta la barra de menú.
la barra de menú podría activarse con una pulsación de tecla o con una pausa más larga; esto aún permitiría al usuario salir de una aplicación rota sin interrumpir su flujo de trabajo basado en pestañas
Esto no puede ser 100% cierto, ya que hay muchos juegos de pantalla completa que no te permiten acceder a la barra de menú. Aunque presumiblemente están usando funciones no estándar para pantalla completa.
@Wowfunhappy Supongo que es el resultado de ejecutar aplicaciones en el modo de juego.
Está bien, ¿y qué hay de Command+ Option+ Shift+ Esc? Cuando la aplicación deja de responder, apagar la máquina no hace nada hasta que la aplicación responde. Por lo tanto, la barra de menú no debería ser imprescindible en pantalla completa.
Fwiw, Menu Eclipse se actualizó por última vez " hace 8 años " según la tienda. No era gran cosa hace seis años. Llegar allí ahora. Si es valiente, hay una demostración que dice: " La versión de demostración es completamente funcional, excepto que su configuración no se guarda cuando sale de la aplicación ", en el sitio del autor , que no se ha actualizado desde 2014. Todavía atenúa las cosas, incluso en un M1 Mac, pero por supuesto no lo oculta.
¿Cómo ayuda la barra de menú si la aplicación deja de responder?

La solución más cercana que he encontrado es hacer lo que se mencionó anteriormente, deshabilitar "Las pantallas tienen espacios separados" en Mission Control. Esto solo tiene sentido en un entorno de varios monitores, ya que la barra de menú aún se muestra en el monitor principal.

Si hace que la aplicación "vaya a pantalla completa" (haga clic en el botón verde), llena toda la pantalla, pero todas las demás pantallas se vuelven negras y la barra de menú se mueve a la pantalla de la aplicación. Entonces, la solución es expandir manualmente los bordes de la aplicación tanto como quieras. Érase una vez, VMWare tenía algún tipo de solución de pantalla completa que no usaba el mecanismo de pantalla completa de Apple.

A menos/hasta que Apple vea esto como un problema que necesita solución, será difícil encontrar una solución que no sea un truco. Es tan integral para el funcionamiento del sistema operativo (como el botón de inicio en el iPhone/iPad/iPod).

Mi solución en Python:

import autopy.mouse as mouse
from time import sleep

while True:
    x, y = mouse.location()
    if y < 5:
        mouse.move(x, 5)
    sleep(0.1)
mejor que nada
Para mí, esta fue la mejor solución, aunque tuve que cambiar el tiempo de 0.1 a 0.01 para que realmente lo detuviera. Ya tengo un comando con alias para abrir un túnel ssh para RDP, así que solo incluí la ejecución de este script en ese comando.

Una posible solución es no deshacerse del menú por completo, sino mantener el menú siempre activo (no es tan grande), y simplemente deshacerse del Dock en su lugar, haciendo el siguiente truco.

Ve a la terminal y escribe:

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

Esto hará que tu Dock sea pequeño. La prensa ⌘ ⌥ D para ocultar el muelle.

Idea robada de aquí .

Votar a la baja esta respuesta por debajo de cero es realmente malo. Podría ayudar a las personas con un problema similar, pero ahora lo ignorarán, asumiendo que esta solución no funciona en absoluto. Mi objetivo era optimizar el espacio de la pantalla sin irritarme con las pestañas del navegador y los editores de código. Ninguna de las otras respuestas anteriores funcionó para mí, pero deshacerme por completo del Dock me hizo feliz.

Yo uso Firefox y lo resolví editando el navegador chrome ( userChrome.css).

Acabo de invertir el orden vertical de los elementos principales del navegador (pestañas, barra de herramientas, contenido principal). En la pantalla que se muestra a continuación, observe que mis pestañas están en la parte inferior.

Este diseño parece extraño al principio, pero no me importa, solo quiero evitar el problema constante que tengo al mostrar involuntariamente la barra de menú de macOS mientras estoy en modo de pantalla completa.

ingrese la descripción de la imagen aquí

Aquí está mi userChrome.css(lo mantuve simple). Puede encontrar instrucciones sobre cómo editar su interfaz de usuario de Firefox aquí .

body {
  display: flex !important;
  flex-direction: column-reverse !important;
}

#browser {
  flex: 1 1 auto !important;
}

#navigator-toolbox {
  display: flex !important;
  flex-direction: column-reverse !important;
}

Intente usar teclas de acceso rápido para cambiar de pestaña en el navegador / ide para que nunca mueva el mouse hacia la parte superior para que aparezca la barra de menú