From 88ee0fb9893438637a2c47420a788f24a040f42f Mon Sep 17 00:00:00 2001 From: Manish Date: Wed, 13 Oct 2021 12:26:38 +0530 Subject: [PATCH 1/6] fix: mpris was not registering itself before. Sorry I missed that somehow, because playerctl controls were working. That was because of chromium was also registering itself for mpris. --- plugins/shortcuts/back.js | 39 ++++++++++++++++++++++++++++++++------- 1 file changed, 32 insertions(+), 7 deletions(-) diff --git a/plugins/shortcuts/back.js b/plugins/shortcuts/back.js index ba12ba42..cbbcc7ea 100644 --- a/plugins/shortcuts/back.js +++ b/plugins/shortcuts/back.js @@ -1,9 +1,11 @@ const { globalShortcut } = require("electron"); const is = require("electron-is"); const electronLocalshortcut = require("electron-localshortcut"); - const getSongControls = require("../../providers/song-controls"); const { setupMPRIS } = require("./mpris"); +const registerCallback = require("../../providers/song-info"); + +let player; function _registerGlobalShortcut(webContents, shortcut, action) { globalShortcut.register(shortcut, () => { @@ -26,18 +28,41 @@ function registerShortcuts(win, options) { _registerGlobalShortcut(win.webContents, "MediaPreviousTrack", previous); _registerLocalShortcut(win, "CommandOrControl+F", search); _registerLocalShortcut(win, "CommandOrControl+L", search); + registerCallback(songInfo => { + player.metadata = { + 'mpris:length': songInfo.songDuration * 60 * 1000 * 1000, // In microseconds + 'mpris:artUrl': songInfo.imageSrc, + 'xesam:title': songInfo.title, + 'xesam:artist': songInfo.artist + }; + } + ) if (is.linux()) { try { - const player = setupMPRIS(); - - player.on("raise", () => { + const MPRISPlayer = setupMPRIS(); + player = MPRISPlayer + MPRISPlayer.on("raise", () => { win.setSkipTaskbar(false); win.show(); }); - player.on("playpause", playPause); - player.on("next", next); - player.on("previous", previous); + MPRISPlayer.on("play", () => { + console.log('Event:', "play", arguments); + player.playbackStatus = 'Playing'; + playPause() + }); + MPRISPlayer.on("pause", () => { + console.log('Event:', "pause", arguments); + player.playbackStatus = 'Paused'; + playPause() + }); + MPRISPlayer.on("next", () => { + next() + }); + MPRISPlayer.on("previous", () => { + previous() + }); + } catch (e) { console.warn("Error in MPRIS", e); } From a76f12c01c1227d32fa8f24b81e9bcba4f43b0f8 Mon Sep 17 00:00:00 2001 From: Manish Date: Wed, 13 Oct 2021 12:27:13 +0530 Subject: [PATCH 2/6] feat: add play and pause seperate song controller. --- plugins/shortcuts/back.js | 15 +++++++++------ providers/song-controls-front.js | 18 ++++++++++++++++++ providers/song-controls.js | 2 ++ 3 files changed, 29 insertions(+), 6 deletions(-) diff --git a/plugins/shortcuts/back.js b/plugins/shortcuts/back.js index cbbcc7ea..dc711da1 100644 --- a/plugins/shortcuts/back.js +++ b/plugins/shortcuts/back.js @@ -21,7 +21,7 @@ function _registerLocalShortcut(win, shortcut, action) { function registerShortcuts(win, options) { const songControls = getSongControls(win); - const { playPause, next, previous, search } = songControls; + const { play, pause, playPause, next, previous, search } = songControls; _registerGlobalShortcut(win.webContents, "MediaPlayPause", playPause); _registerGlobalShortcut(win.webContents, "MediaNextTrack", next); @@ -41,20 +41,21 @@ function registerShortcuts(win, options) { if (is.linux()) { try { const MPRISPlayer = setupMPRIS(); - player = MPRISPlayer + MPRISPlayer.on("raise", () => { win.setSkipTaskbar(false); win.show(); }); + MPRISPlayer.on("playPause", () => { + console.log("Playpause"); + }) MPRISPlayer.on("play", () => { - console.log('Event:', "play", arguments); player.playbackStatus = 'Playing'; - playPause() + play() }); MPRISPlayer.on("pause", () => { - console.log('Event:', "pause", arguments); player.playbackStatus = 'Paused'; - playPause() + pause() }); MPRISPlayer.on("next", () => { next() @@ -63,6 +64,8 @@ function registerShortcuts(win, options) { previous() }); + player = MPRISPlayer + } catch (e) { console.warn("Error in MPRIS", e); } diff --git a/providers/song-controls-front.js b/providers/song-controls-front.js index 1860e761..9283a0b8 100644 --- a/providers/song-controls-front.js +++ b/providers/song-controls-front.js @@ -15,4 +15,22 @@ module.exports = () => { videoStream.pause(); } }); + + ipcRenderer.on("play", () => { + if (!videoStream) { + videoStream = document.querySelector(".video-stream"); + } + + if (videoStream.paused) videoStream.play(); + }); + + ipcRenderer.on("pause", () => { + if (!videoStream) { + videoStream = document.querySelector(".video-stream"); + } + + videoStream.yns_pause ? + videoStream.yns_pause() : + videoStream.pause(); + }); }; diff --git a/providers/song-controls.js b/providers/song-controls.js index 5d3ad953..27be8822 100644 --- a/providers/song-controls.js +++ b/providers/song-controls.js @@ -13,6 +13,8 @@ module.exports = (win) => { previous: () => pressKey(win, "k"), next: () => pressKey(win, "j"), playPause: () => win.webContents.send("playPause"), + play: () => win.webContents.send("play"), + pause: () => win.webContents.send("pause"), like: () => pressKey(win, "_"), dislike: () => pressKey(win, "+"), go10sBack: () => pressKey(win, "h"), From 81fb5118aab95b81e5d7c8265ab7c63069a3df3e Mon Sep 17 00:00:00 2001 From: Manish Date: Thu, 14 Oct 2021 10:16:36 +0530 Subject: [PATCH 3/6] fix: don't create play pause method unneccessarily --- plugins/shortcuts/back.js | 31 +++++++++++++++++-------------- providers/song-controls-front.js | 18 ------------------ 2 files changed, 17 insertions(+), 32 deletions(-) diff --git a/plugins/shortcuts/back.js b/plugins/shortcuts/back.js index dc711da1..d3fb2dc7 100644 --- a/plugins/shortcuts/back.js +++ b/plugins/shortcuts/back.js @@ -21,7 +21,7 @@ function _registerLocalShortcut(win, shortcut, action) { function registerShortcuts(win, options) { const songControls = getSongControls(win); - const { play, pause, playPause, next, previous, search } = songControls; + const { playPause, next, previous, search } = songControls; _registerGlobalShortcut(win.webContents, "MediaPlayPause", playPause); _registerGlobalShortcut(win.webContents, "MediaNextTrack", next); @@ -29,12 +29,14 @@ function registerShortcuts(win, options) { _registerLocalShortcut(win, "CommandOrControl+F", search); _registerLocalShortcut(win, "CommandOrControl+L", search); registerCallback(songInfo => { - player.metadata = { - 'mpris:length': songInfo.songDuration * 60 * 1000 * 1000, // In microseconds - 'mpris:artUrl': songInfo.imageSrc, - 'xesam:title': songInfo.title, - 'xesam:artist': songInfo.artist - }; + if (player) { + player.metadata = { + 'mpris:length': songInfo.songDuration * 60 * 1000 * 1000, // In microseconds + 'mpris:artUrl': songInfo.imageSrc, + 'xesam:title': songInfo.title, + 'xesam:artist': songInfo.artist + }; + } } ) @@ -46,16 +48,17 @@ function registerShortcuts(win, options) { win.setSkipTaskbar(false); win.show(); }); - MPRISPlayer.on("playPause", () => { - console.log("Playpause"); - }) MPRISPlayer.on("play", () => { - player.playbackStatus = 'Playing'; - play() + if (MPRISPlayer.playbackStatus !== 'Playing') { + MPRISPlayer.playbackStatus = 'Playing'; + playPause() + } }); MPRISPlayer.on("pause", () => { - player.playbackStatus = 'Paused'; - pause() + if (MPRISPlayer.playbackStatus === 'Playing') { + MPRISPlayer.playbackStatus = 'Paused'; + playPause() + } }); MPRISPlayer.on("next", () => { next() diff --git a/providers/song-controls-front.js b/providers/song-controls-front.js index 9283a0b8..1860e761 100644 --- a/providers/song-controls-front.js +++ b/providers/song-controls-front.js @@ -15,22 +15,4 @@ module.exports = () => { videoStream.pause(); } }); - - ipcRenderer.on("play", () => { - if (!videoStream) { - videoStream = document.querySelector(".video-stream"); - } - - if (videoStream.paused) videoStream.play(); - }); - - ipcRenderer.on("pause", () => { - if (!videoStream) { - videoStream = document.querySelector(".video-stream"); - } - - videoStream.yns_pause ? - videoStream.yns_pause() : - videoStream.pause(); - }); }; From 361606427a2509893c8bf457cdcce5da49ebf6a9 Mon Sep 17 00:00:00 2001 From: Manish Date: Thu, 14 Oct 2021 10:18:05 +0530 Subject: [PATCH 4/6] fix: remove unused play pause functions --- providers/song-controls.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/providers/song-controls.js b/providers/song-controls.js index 27be8822..5d3ad953 100644 --- a/providers/song-controls.js +++ b/providers/song-controls.js @@ -13,8 +13,6 @@ module.exports = (win) => { previous: () => pressKey(win, "k"), next: () => pressKey(win, "j"), playPause: () => win.webContents.send("playPause"), - play: () => win.webContents.send("play"), - pause: () => win.webContents.send("pause"), like: () => pressKey(win, "_"), dislike: () => pressKey(win, "+"), go10sBack: () => pressKey(win, "h"), From 79d0c7b666f64091a49cff11c9688085c89c4222 Mon Sep 17 00:00:00 2001 From: Manish Date: Sun, 17 Oct 2021 10:54:05 +0530 Subject: [PATCH 5/6] fix: typo --- plugins/shortcuts/back.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/shortcuts/back.js b/plugins/shortcuts/back.js index d3fb2dc7..9bb01d07 100644 --- a/plugins/shortcuts/back.js +++ b/plugins/shortcuts/back.js @@ -55,7 +55,7 @@ function registerShortcuts(win, options) { } }); MPRISPlayer.on("pause", () => { - if (MPRISPlayer.playbackStatus === 'Playing') { + if (MPRISPlayer.playbackStatus !== 'Paused') { MPRISPlayer.playbackStatus = 'Paused'; playPause() } From 663507b3f80074898a43bbab764529bfc9d432dc Mon Sep 17 00:00:00 2001 From: Manish Date: Sun, 17 Oct 2021 11:06:26 +0530 Subject: [PATCH 6/6] fix: player status when play at start --- plugins/shortcuts/back.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/plugins/shortcuts/back.js b/plugins/shortcuts/back.js index 9bb01d07..0184ffb3 100644 --- a/plugins/shortcuts/back.js +++ b/plugins/shortcuts/back.js @@ -36,6 +36,9 @@ function registerShortcuts(win, options) { 'xesam:title': songInfo.title, 'xesam:artist': songInfo.artist }; + if (!songInfo.isPaused) { + player.playbackStatus = "Playing" + } } } )