Skip to content

Commit 7441277

Browse files
[BUG] Systray menu keeps flickering and can't be clicked when playing a radio channel
Fixes #208
1 parent e80410e commit 7441277

File tree

1 file changed

+46
-38
lines changed

1 file changed

+46
-38
lines changed

patches/05-provide-metadata-mpris.patch

Lines changed: 46 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
1-
From d97b60764e4a02f3f6a7fe91bbf952339640689d Mon Sep 17 00:00:00 2001
1+
From b3977537f865f9cada0884a41975495c67ecb402 Mon Sep 17 00:00:00 2001
22
From: josselinonduty <contact@josselinonduty.fr>
3-
Date: Tue, 2 Dec 2025 13:40:50 +0100
3+
Date: Sun, 25 Jan 2026 03:14:31 +0100
44
Subject: [PATCH] feat: Provide metadata and MPRIS compatiblity
55

66
---
7-
build/main.js | 149 ++++++++++++++++++++++++++++++++++++++--------
8-
build/renderer.js | 118 +++++++++++++++++++++++++++++++-----
9-
2 files changed, 226 insertions(+), 41 deletions(-)
7+
build/main.js | 152 ++++++++++++++++++++++++++++++++++++++--------
8+
build/renderer.js | 123 ++++++++++++++++++++++++++++++++-----
9+
2 files changed, 234 insertions(+), 41 deletions(-)
1010

1111
diff --git a/build/main.js b/build/main.js
12-
index 75182f1..14ea84b 100644
12+
index f7f5739..0e0ecf7 100644
1313
--- a/build/main.js
1414
+++ b/build/main.js
1515
@@ -87,6 +87,10 @@
@@ -71,7 +71,7 @@ index 75182f1..14ea84b 100644
7171
}
7272
play() {
7373
this.ipc.send("channel-player-media-control", MediaPlayerControl.Play);
74-
@@ -1207,15 +1235,67 @@
74+
@@ -1207,15 +1235,70 @@
7575
this.ipc.send("channel-player-shuffle-update", shuffle);
7676
}
7777
setRepeatMode(repeatMode) {
@@ -103,6 +103,9 @@ index 75182f1..14ea84b 100644
103103
+ Math.round(data?.position * 1000 * 1000 || 0);
104104
+ return;
105105
+ }
106+
+
107+
+ if (!track || Object.keys(track).length === 0) return;
108+
+ if (!track.title && !track.artist) return;
106109
+
107110
(this.track = Object.assign(this.track, track)),
108111
- this.emit(MediaEvents.TrackUpdated, this.track);
@@ -146,7 +149,7 @@ index 75182f1..14ea84b 100644
146149
}
147150
getTrackInfo() {
148151
return this.track;
149-
@@ -1275,7 +1355,11 @@
152+
@@ -1275,7 +1358,11 @@
150153
1,
151154
(0, external_inversify_namespaceObject.inject)(SERVICE_USER)
152155
),
@@ -159,7 +162,7 @@ index 75182f1..14ea84b 100644
159162
],
160163
MediaService
161164
);
162-
@@ -2457,7 +2541,7 @@
165+
@@ -2457,7 +2544,7 @@
163166
(this.ipc = ipc),
164167
(this.app = app);
165168
}
@@ -168,7 +171,7 @@ index 75182f1..14ea84b 100644
168171
const previousUserID = this.user.id;
169172
(this.user = Object.assign(this.user, userInfo)),
170173
previousUserID !== this.user.id &&
171-
@@ -2689,23 +2773,34 @@
174+
@@ -2689,23 +2776,34 @@
172175
const PlayerIpc_ipc = main_di.get(SERVICE_IPC),
173176
media = main_di.get(SERVICE_MEDIA),
174177
powerSave = main_di.get(SERVICE_POWER_SAVE);
@@ -216,7 +219,7 @@ index 75182f1..14ea84b 100644
216219
});
217220
const UpdaterIpc_ipc = main_di.get(SERVICE_IPC),
218221
autoUpdater = main_di.get(SERVICE_UPDATER);
219-
@@ -2714,8 +2809,8 @@
222+
@@ -2714,8 +2812,8 @@
220223
});
221224
const UserIpc_ipc = main_di.get(SERVICE_IPC),
222225
user = main_di.get(SERVICE_USER);
@@ -227,7 +230,7 @@ index 75182f1..14ea84b 100644
227230
});
228231
var application_awaiter = function (thisArg, _arguments, P, generator) {
229232
return new (P || (P = Promise))(function (resolve, reject) {
230-
@@ -2781,6 +2876,10 @@
233+
@@ -2781,6 +2879,10 @@
231234
"autoplay-policy",
232235
"no-user-gesture-required"
233236
),
@@ -239,7 +242,7 @@ index 75182f1..14ea84b 100644
239242
"second-instance",
240243
(event, argv) => {
241244
diff --git a/build/renderer.js b/build/renderer.js
242-
index 7329ec8..d0f0f4d 100644
245+
index a30f35a..e6efc46 100644
243246
--- a/build/renderer.js
244247
+++ b/build/renderer.js
245248
@@ -285,6 +285,42 @@
@@ -356,7 +359,7 @@ index 7329ec8..d0f0f4d 100644
356359
break;
357360
}
358361
case "player-track-updated": {
359-
@@ -396,13 +451,44 @@
362+
@@ -396,13 +451,49 @@
360363
canRepeat: event.data.player.hasRepeat,
361364
canShuffle: event.data.player.hasShuffle,
362365
};
@@ -374,34 +377,39 @@ index 7329ec8..d0f0f4d 100644
374377
!1
375378
),
376379
+ setInterval(() => {
377-
+ if (document.readyState === "complete") {
378-
+ renderer_ipc.send(
379-
+ "channel-player-track-update",
380-
+ {},
381-
+ {},
382-
+ {
383-
+ position:
384-
+ document
385-
+ .querySelector(".slider-track .slider-track-input")
386-
+ ?.getAttribute("value") || 0,
387-
+ trackInfo: {
388-
+ song: {
389-
+ DURATION:
390-
+ document
391-
+ .querySelector(".slider-track .slider-track-input")
392-
+ ?.getAttribute("max") || 0,
393-
+ },
394-
+ },
395-
+ player: {
396-
+ volume: window.dzPlayer?.volume,
380+
+ if (!document.readyState === "complete") return;
381+
+
382+
+ const sliderValue = document
383+
+ .querySelector(".slider-track .slider-track-input")
384+
+ ?.getAttribute("value");
385+
+ if (sliderValue === null) return;
386+
+
387+
+ renderer_ipc.send(
388+
+ "channel-player-track-update",
389+
+ {},
390+
+ {},
391+
+ {
392+
+ position:
393+
+ document
394+
+ .querySelector(".slider-track .slider-track-input")
395+
+ ?.getAttribute("value") || 0,
396+
+ trackInfo: {
397+
+ song: {
398+
+ DURATION:
399+
+ document
400+
+ .querySelector(".slider-track .slider-track-input")
401+
+ ?.getAttribute("max") || 0,
397402
+ },
398-
+ }
399-
+ );
400-
+ }
403+
+ },
404+
+ player: {
405+
+ volume: window.dzPlayer?.volume,
406+
+ },
407+
+ }
408+
+ );
401409
+ }, 50),
402410
(function (layoutName, callback) {
403411
const layouts = nodeRequire("./assets/layout.json"),
404412
manifest = nodeRequire("./assets/manifest.json");
405413
--
406-
2.48.1
414+
2.51.0
407415

0 commit comments

Comments
 (0)