From 4eac6457ea047d5789f2f33a4e8635721e32dceb Mon Sep 17 00:00:00 2001 From: jeffvli Date: Sun, 28 Dec 2025 01:15:34 -0800 Subject: [PATCH] add MPRIS volume handler (#1415) --- src/main/features/core/remote/index.ts | 3 +++ src/preload/mpris.ts | 5 +++++ src/renderer/features/player/hooks/use-mpris.ts | 5 +++++ 3 files changed, 13 insertions(+) diff --git a/src/main/features/core/remote/index.ts b/src/main/features/core/remote/index.ts index 75560620b..8b1110592 100644 --- a/src/main/features/core/remote/index.ts +++ b/src/main/features/core/remote/index.ts @@ -657,6 +657,9 @@ if (mprisPlayer) { } currentState.volume = volume; broadcast({ data: volume, event: 'volume' }); + getMainWindow()?.webContents.send('request-volume', { + volume, + }); }); } diff --git a/src/preload/mpris.ts b/src/preload/mpris.ts index 8f962d1e1..e1252888b 100644 --- a/src/preload/mpris.ts +++ b/src/preload/mpris.ts @@ -51,11 +51,16 @@ const requestToggleShuffle = ( ipcRenderer.on('mpris-request-toggle-shuffle', cb); }; +const requestVolume = (cb: (event: IpcRendererEvent, data: { volume: number }) => void) => { + ipcRenderer.on('request-volume', cb); +}; + export const mpris = { requestPosition, requestSeek, requestToggleRepeat, requestToggleShuffle, + requestVolume, updatePosition, updateRepeat, updateSeek, diff --git a/src/renderer/features/player/hooks/use-mpris.ts b/src/renderer/features/player/hooks/use-mpris.ts index 54e31d1d3..d0c06af82 100644 --- a/src/renderer/features/player/hooks/use-mpris.ts +++ b/src/renderer/features/player/hooks/use-mpris.ts @@ -43,11 +43,16 @@ export const useMPRIS = () => { player.toggleShuffle(); }); + mpris?.requestVolume((_e: unknown, data: { volume: number }) => { + player.setVolume(data.volume); + }); + return () => { ipc?.removeAllListeners('mpris-request-toggle-repeat'); ipc?.removeAllListeners('mpris-request-toggle-shuffle'); ipc?.removeAllListeners('request-position'); ipc?.removeAllListeners('request-seek'); + ipc?.removeAllListeners('request-volume'); }; }, [player]);