/
main.js
73 lines (64 loc) · 1.59 KB
/
main.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
const { app, Tray, Menu, BrowserWindow } = require('electron');
const path = require('path');
const moment = require('moment-timezone');
let appIcon = null;
let win = null;
let isOpen = null;
let time = () => {
return moment().format('hh:mm a');
};
let timeHour = () => {
return moment().format('h');
}
let getTimeWithFormat = (momentTz) => {
return momentTz.format('hh:mm a zz');
}
let contextMenu = () => {
return Menu.buildFromTemplate([
{
label: time()
},
{
type: 'separator'
},
{
label: getTimeWithFormat(moment().tz('America/Los_Angeles')) + '\tWest coast'
},
{
label: getTimeWithFormat(moment().tz('America/Denver')) + '\tDenver'
},
{
label: getTimeWithFormat(moment().tz('America/North_Dakota/Center')) + '\tOKC'
},
{
label: getTimeWithFormat(moment().tz('America/New_York')) + '\tNew York'
},
{
label: getTimeWithFormat(moment().tz('Europe/London')) + '\tLondon'
},
{
type: 'separator'
},
{
label: 'Quit',
accelerator: 'Command+q',
selector: 'terminate:'
}
]);
};
let iconPath = () => path.join(__dirname, 'icons', `${timeHour()}-Template.png`);
let setupClock = (tray) => {
tray.setToolTip(time());
tray.setImage(iconPath());
if (!isOpen) {
tray.setContextMenu(contextMenu());
}
}
app.on('ready', () => {
app.dock.hide();
win = new BrowserWindow({ show: false });
tray = new Tray(iconPath());
setInterval(() => setupClock(tray), 1000);
tray.on('mouse-enter', () => { isOpen = true; });
tray.on('mouse-leave', () => { isOpen = false; });
});