¿Cómo elimino esta barra de menú de mis aplicaciones electrónicas?
También dice "Hola mundo" (¿se debe a que descargué electron preconstruido y desaparecerá una vez que empaquete la aplicación?). No los codifiqué en el html, ¡así que no sé cómo sacarlo! -
frame: false
lo hizo por mí.removeMenu()
es solo para Linux y WindowssetMenu
yremoveMenu
no funciona más enlaceUtilizar este:
Referencia: https://github.com/electron/electron/issues/1415
Lo intenté
mainWindow.setMenu(null)
, pero no funcionó.fuente
mainWindow.setMenu(null)
con electron 5.0.2 y no funcionó bien. No estoy seguro de por qué veo el consejo de usarlo en todas partes, y estaba divagando si soy el único que está haciendo algo incorrectamente. Su consejo de usosetMenuBarVisibility
, aunque elimina la visibilidad de la barra de menú, no la elimina por completo. Se puede recuperar presionando laAlt
tecla..setMenu(null)
ni.removeMenu()
funcionó para mí..setMenuBarVisibility(false)
elimina la barra de menú y laAlt
tecla solo funciona si.setAutoHideMenuBar(true)
se ejecuta.setMenu(null)
no funcionó, perosetMenuBarVisibility(false)
funciona como se esperaba (la barra no se puede recuperar presionando laalt
tecla como mencionó @Artium).Para Electron 7.1.1, puede usar esto:
fuente
Menu.setApplicationMenu(null)
funcionó en ¡7.1.2
Otras soluciones no funcionaron para mí!Cuando empaqueta su aplicación, el menú predeterminado ya no estará allí, si esto lo molesta durante el desarrollo, puede llamar
setMenu(null)
a la ventana del navegador como lo sugiere @TonyVincent.fuente
A partir de 7.0.0, la mayoría de las soluciones anteriores ya no funcionan.
BrowserWindow.setMenu()
ha sido reemplazado porMenu.setApplicationMenu()
, que ahora cambia el menú en todas las ventanas.setMenu()
,removeMenu()
ya no hacen nada, que por cierto todavía se mencionan en los documentos.setAutoHideMenuBar()
todavía funciona, pero podría ser una molestia si planeaba usar Alt como modificador de teclas de acceso rápido. Una vez que el menú está visible, debe hacer clic fuera de la ventana (perder el enfoque) para ocultar el menú nuevamente.Si su aplicación tiene más de una ventana, no puede configurar / eliminar menús por separado en cada ventana. La única forma de eliminar un menú es utilizar el enfoque de ventana sin marco. Eso es lo que quiero en mi aplicación actual, pero no es una buena solución en todos los casos.
fuente
El menú puede ocultarse o ocultarse automáticamente (como en Slack o VS Code ; puede presionar Alt para mostrar / ocultar el menú).
Métodos relevantes:
---- win.setMenu (menú) : establece el menú como la barra de menú de la ventana, si lo establece en nulo se eliminará la barra de menú. ( Esto eliminará el menú por completo )
---- win.setAutoHideMenuBar (ocultar) : establece si la barra de menú de la ventana debe ocultarse automáticamente. Una vez configurada, la barra de menú solo se
mostrará cuando los usuarios presionen la tecla Alt .
Fuente: https://github.com/Automattic/simplenote-electron/issues/293
También existe el método para hacer una ventana sin marco como se muestra a continuación:
(sin botón de cierre ni nada. Puede ser lo que queramos (mejor diseño))
https://electronjs.org/docs/api/browser-window#winremovemenu-linux-windows
Doc: https://electronjs.org/docs/api/frameless-window
Editar: (nuevo)
https://electronjs.org/docs/api/browser-window#winremovemenu-linux-windows
Se agregó win.removeMenu () para eliminar los menús de la aplicación en lugar de usar win.setMenu (nulo)
Eso se agrega desde v5 según:
https://github.com/electron/electron/pull/16570
https://github.com/electron/electron/pull/16657
Error de electron v7
Para Electron 7.1.1 use en
Menu.setApplicationMenu
lugar dewin.removeMenu()
según este hilo:
https://github.com/electron/electron/issues/16521
Y la gran nota es: ¡tienes que llamarlo antes de crear la ventana del navegador ! ¡O no funcionará!
ACTUALIZAR (Configuración de autoHideMenuBar en la construcción de BrowserWindow)
¡Como por @kcpr comentario! Podemos establecer la propiedad y muchos en el constructor.
¡Eso está disponible en la última versión estable de electron que es 8.3!
¡Pero también en versiones antiguas verifiqué v1, v2, v3, v4!
¡Está ahí en todas las versiones!
Según este enlace
https://github.com/electron/electron/blob/1-3-x/docs/api/browser-window.md
Y para la v8.3
https://github.com/electron/electron/blob/v8.3.0/docs/api/browser-window.md#new-browserwindowoptions
El enlace del documento
https://www.electronjs.org/docs/api/browser-window#new-browserwindowoptions
Desde el documento de la opción:
Aquí un fragmento para ilustrarlo:
fuente
BrowserWindow
constructor de este modo:new BrowserWindow({autoHideMenuBar: true})
. Y, por cierto, gracias por esta respuesta. Me parece que probablemente sea el más completo (asumiendo que los métodos aún existen y no están en desuso).Funciona como se esperaba sin menú en el navegador.
fuente
Siguiendo la respuesta de este problema , debe llamar
Menu.setApplicationMenu(null)
antes de que se cree la ventana.fuente
Antes de esta línea en main.js:
fuente
De acuerdo con la documentación oficial @ https://github.com/electron/electron/blob/v8.0.0-beta.1/docs/api/menu.md la forma correcta de hacer esto ahora desde 7.1.2 y he probado en 8.0 también es para:
fuente
Estas soluciones tienen errores. Cuando se utilizan soluciones a continuación, las ventanas se demoran en cerrarse.
Usé la solución a continuación. Esto es mejor por ahora.
fuente