Skip to content

Commit 69ccfcd

Browse files
committed
feature: add simple menuItem for control track to menu of tray
control track: - play/pause - next track - previous track
1 parent 08b635f commit 69ccfcd

File tree

2 files changed

+39
-18
lines changed

2 files changed

+39
-18
lines changed

index.js

Lines changed: 33 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
const { app, BrowserWindow, globalShortcut, ipcMain, systemPreferences, Tray } = require('electron')
1+
const { app, BrowserWindow, globalShortcut, ipcMain, systemPreferences, Tray, Menu } = require('electron')
22
const notifier = require('node-notifier')
33
const path = require('path')
44
const windowStateKeeper = require('electron-window-state')
@@ -47,27 +47,45 @@ function createWindow () {
4747

4848
function globalShortcuts () {
4949
// Play,Pause
50-
globalShortcut.register('MediaPlayPause', () => {
51-
console.log('play/pause')
52-
mainWindow.webContents.executeJavaScript(`document.querySelector('.play-pause-button').click()`)
53-
})
50+
globalShortcut.register('MediaPlayPause', mediaPlayPause)
5451
// Next
55-
globalShortcut.register('MediaNextTrack', () => {
56-
mainWindow.webContents.executeJavaScript(`document.querySelector('.next-button').click()`)
57-
})
52+
globalShortcut.register('MediaNextTrack', mediaNextTrack)
5853
// Previous
59-
globalShortcut.register('MediaPreviousTrack', () => {
60-
mainWindow.webContents.executeJavaScript(`document.querySelector('.previous-button').click()`)
61-
})
54+
globalShortcut.register('MediaPreviousTrack', mediaPreviousTrack)
55+
}
56+
57+
function mediaPlayPause () {
58+
console.info('play/pause')
59+
mainWindow.webContents.executeJavaScript(`document.querySelector('.play-pause-button').click()`)
60+
}
61+
62+
function mediaNextTrack () {
63+
console.info('play next track')
64+
mainWindow.webContents.executeJavaScript(`document.querySelector('.next-button').click()`)
65+
}
66+
67+
function mediaPreviousTrack () {
68+
console.info('play previous track')
69+
mainWindow.webContents.executeJavaScript(`document.querySelector('.previous-button').click()`)
6270
}
6371

6472
function trayIcon () {
6573
tray = new Tray(path.join(__dirname, `assets/icons/menu-standard-${trayTheme}.png`))
6674
tray.setToolTip('MusicTube Player')
67-
tray.on('click', () => {
68-
if (mainWindow.isMinimized()) mainWindow.restore()
69-
mainWindow.show()
70-
})
75+
76+
const contextMenu = Menu.buildFromTemplate([
77+
{ label: 'Open App',
78+
type: 'normal',
79+
click: () => {
80+
if (mainWindow.isMinimized()) mainWindow.restore()
81+
mainWindow.show()
82+
}
83+
},
84+
{ label: 'Play/Pause', type: 'normal', click: mediaPlayPause },
85+
{ label: 'Next', type: 'normal', click: mediaNextTrack },
86+
{ label: 'Previous', type: 'normal', click: mediaPreviousTrack }
87+
])
88+
tray.setContextMenu(contextMenu)
7189
}
7290

7391
function playStatus () {

package-lock.json

Lines changed: 6 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)