El paso a paso o código que verás en este post es la resolución más fácil y válida que encontramos a esta inquietud o dilema.
Solución:
De hecho, lo descubrí hace mucho tiempo, pero para las personas que se encuentran con el mismo problema, aquí hay una forma en que pueden lograr minimizar tray
y restaurar desde tray
. El truco es atrapar close
y minimize
eventos.
var BrowserWindow = require('browser-window'),
var mainWindow = new BrowserWindow(
width: 850,
height: 450,
title: "TEST",
icon:'./icon.png'
);
mainWindow.on('minimize',function(event)
event.preventDefault();
mainWindow.hide();
);
mainWindow.on('close', function (event)
if(!application.isQuiting)
event.preventDefault();
mainWindow.hide();
return false;
);
y restaurar desde Tray
var contextMenu = Menu.buildFromTemplate([
label: 'Show App', click: function()
mainWindow.show();
,
label: 'Quit', click: function()
application.isQuiting = true;
application.quit();
]);
Actualicé el código con un escenario si desea mostrar el ícono en la bandeja del sistema todo el tiempo hasta que no salga de la aplicación
var app, BrowserWindow, Tray, Menu = require('electron')
var path = require('path')
var url = require('url')
var iconpath = path.join(__dirname, 'user.ico') // path of y
var win
function createWindow()
win = new BrowserWindow( width: 600, height: 600, icon: iconpath )
win.loadURL(url.format(
pathname: path.join(__dirname, 'index.html'),
))
var appIcon = new Tray(iconpath)
var contextMenu = Menu.buildFromTemplate([
label: 'Show App', click: function ()
win.show()
,
label: 'Quit', click: function ()
app.isQuiting = true
app.quit()
])
appIcon.setContextMenu(contextMenu)
win.on('close', function (event)
win = null
)
win.on('minimize', function (event)
event.preventDefault()
win.hide()
)
win.on('show', function ()
appIcon.setHighlightMode('always')
)
app.on('ready', createWindow)
Además de las respuestas anteriores – isQuiting
vale la pena configurar la bandera en la aplicación ‘ before-quit
devolución de llamada, también. De esta manera, la aplicación se cerrará correctamente si lo solicita el sistema operativo o el usuario de alguna otra manera, por ejemplo, a través del comando de salida de la barra de tareas de Macos Dock. Fragmento completo compatible con TypeScript:
import app, BrowserWindow, Tray, Menu from 'electron';
import * as path from 'path';
let window;
let isQuiting;
let tray;
app.on('before-quit', function ()
isQuiting = true;
);
app.on('ready', () =>
tray = new Tray(path.join(__dirname, 'tray.png'));
tray.setContextMenu(Menu.buildFromTemplate([
label: 'Show App', click: function ()
window.show();
,
label: 'Quit', click: function ()
isQuiting = true;
app.quit();
]));
window = new BrowserWindow(
width: 850,
height: 450,
show: false,
);
window.on('close', function (event)
if (!isQuiting)
event.preventDefault();
window.hide();
event.returnValue = false;
);
);
Te mostramos las reseñas y valoraciones de los lectores
Acuérdate de que te permitimos añadir un enjuiciamiento certero si te ayudó.