Add hide to tray

This commit is contained in:
GHOSCHT 2020-08-01 17:55:03 +02:00
parent 4a7fec4ba3
commit 18c87e1a14
3 changed files with 73 additions and 12 deletions

View file

@ -1,11 +1,15 @@
import path from 'path';
import { app, crashReporter, BrowserWindow, Menu } from 'electron';
import { app, crashReporter, BrowserWindow, Menu, Tray } from 'electron';
const screenz = require('screenz');
const isDevelopment = process.env.NODE_ENV === 'development';
let mainWindow = null;
let forceQuit = false;
const windowSize = { width: 630, height: 350 };
const taskBarHeight = 40;
const installExtensions = async () => {
const installer = require('electron-devtools-installer');
const extensions = ['REACT_DEVELOPER_TOOLS', 'REDUX_DEVTOOLS'];
@ -19,13 +23,6 @@ const installExtensions = async () => {
}
};
crashReporter.start({
productName: 'GHOSCHTS Lamp control',
companyName: 'GHOSCHT',
submitURL: 'https://your-domain.com/url-to-submit',
uploadToServer: false,
});
app.on('window-all-closed', () => {
// On OS X it is common for applications and their menu bar
// to stay active until the user quits explicitly with Cmd + Q
@ -40,10 +37,15 @@ app.on('ready', async () => {
}
mainWindow = new BrowserWindow({
width: 630,
height: 370,
width: windowSize.width,
height: windowSize.height,
x: screenz.width - windowSize.width,
y: screenz.height - windowSize.height - taskBarHeight,
movable: false,
resizable: false,
frame: false,
show: false,
alwaysOnTop: true,
webPreferences: {
nodeIntegration: true,
},
@ -83,9 +85,51 @@ app.on('ready', async () => {
mainWindow.on('closed', () => {
mainWindow = null;
});
app.on('browser-window-blur', () => {
if (mainWindow) {
mainWindow.hide();
}
});
}
let tray = null;
tray = createTray();
});
function createTray() {
let appIcon = new Tray(path.join(__dirname, '../../dist-assets/icon.png'));
const contextMenu = Menu.buildFromTemplate([
{
label: 'Show',
click: () => {
mainWindow.show();
},
},
{
label: 'Hide',
click: () => {
mainWindow.hide();
},
},
{
label: 'Exit',
click: () => {
app.isQuiting = true;
app.quit();
},
},
]);
appIcon.on('click', (event) => {
mainWindow.show();
});
appIcon.setToolTip('Light Control');
appIcon.setContextMenu(contextMenu);
return appIcon;
}
if (isDevelopment) {
// auto-open dev tools
mainWindow.webContents.openDevTools();

View file

@ -26,6 +26,7 @@
"redux-actions": "^2.6.5",
"redux-localstorage": "^0.4.1",
"redux-thunk": "^2.2.0",
"screenz": "^1.0.0",
"serialport": "^9.0.0",
"yarn": "^1.22.4"
},

View file

@ -5009,7 +5009,7 @@ mute-stream@0.0.8:
resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d"
integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==
nan@^2.12.1, nan@^2.14.1:
nan@^2.12.1, nan@^2.14.0, nan@^2.14.1:
version "2.14.1"
resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.1.tgz#d7be34dfa3105b91494c3147089315eff8874b01"
integrity sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==
@ -5061,7 +5061,7 @@ nice-try@^1.0.4:
resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366"
integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==
node-abi@^2.7.0:
node-abi@^2.13.0, node-abi@^2.7.0:
version "2.18.0"
resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-2.18.0.tgz#1f5486cfd7d38bd4f5392fa44a4ad4d9a0dffbf4"
integrity sha512-yi05ZoiuNNEbyT/xXfSySZE+yVnQW6fxPZuFbLyS1s6b5Kw3HzV2PHOM4XR+nsjzkHxByK+2Wg+yCQbe35l8dw==
@ -6146,6 +6146,15 @@ roarr@^2.15.3:
semver-compare "^1.0.0"
sprintf-js "^1.1.2"
robotjs@~0.6.0:
version "0.6.0"
resolved "https://registry.yarnpkg.com/robotjs/-/robotjs-0.6.0.tgz#8d1f63221f5b18dc496c7768f75261043891f64a"
integrity sha512-6pRWI3d+CBZqCXT/rsJfabbZoELua+jTeXilG27F8Jvix/J2BYZ0O7Tly2WCmXyqw5xYdCvOwvCeLRHEtXkt4w==
dependencies:
nan "^2.14.0"
node-abi "^2.13.0"
prebuild-install "^5.3.3"
run-async@^2.4.0:
version "2.4.1"
resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455"
@ -6212,6 +6221,13 @@ scheduler@^0.19.1:
loose-envify "^1.1.0"
object-assign "^4.1.1"
screenz@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/screenz/-/screenz-1.0.0.tgz#9e59fe161f1744416036f0171c716faf3d891d2b"
integrity sha512-dAEx0aCTL99Kw6MUtJGpgjxNpeG7+vg52Yik09stY9TOKnHr1W8NU7TAF6AoMgV2cr7yiCLyqbNbmQJtGtdcbw==
dependencies:
robotjs "~0.6.0"
semver-compare@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc"