summarylogtreecommitdiffstats
path: root/0001-MPRIS-interface.patch
blob: 0330d3409893bae02f85402ca8ac14984e872502 (plain)
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
diff --git a/build/main.js b/build/main.js
index 6f97abb..aaf62f5 100644
--- a/build/main.js
+++ b/build/main.js
@@ -2108,6 +2108,7 @@ module.exports = (function(modules) {
         this.ipc.send(constants.c, control);
       }
       isSupportedSMTC() {
+        return true;
         if (void 0 !== this.isSupported) return this.isSupported;
         if (Object(utils.h)(constants.n))
           return (this.isSupported = !1), this.isSupported;
@@ -3998,6 +3999,7 @@ module.exports = (function(modules) {
               services_SchemeHandler.handleSchemeFromOpenUrl(url),
               event.preventDefault();
           }),
+          external_electron_.app.commandLine.appendSwitch('disable-features', 'MediaSessionService'),
           external_electron_.app.on("ready", () => {
             external_electron_log_default.a.debug("App is ready"),
               this.applicationMenu.init(),
diff --git a/node_modules/electron-media-service/src/index.js b/node_modules/electron-media-service/src/index.js
index 301db0d..9677e7c 100644
--- a/node_modules/electron-media-service/src/index.js
+++ b/node_modules/electron-media-service/src/index.js
@@ -5,7 +5,8 @@ if (process.platform === 'darwin' && semver.satisfies(os.release(), '>=18.0.0'))
   module.exports = require('./darwin');
 } else if (process.platform === 'win32' && semver.satisfies(os.release(), '>=10.0.0')) { // WIN 10 or supp
   module.exports = require('./win32');
-}
-else {
+} else if (process.platform === 'linux') {
+  module.exports = require('./linux');
+} else {
   module.exports = require('./NullService');
 }
diff --git a/node_modules/electron-media-service/src/linux/index.js b/node_modules/electron-media-service/src/linux/index.js
new file mode 100644
index 0000000..23c6ff5
--- /dev/null
+++ b/node_modules/electron-media-service/src/linux/index.js
@@ -0,0 +1,97 @@
+const { EventEmitter } = require('events');
+const mpris = require('mpris-service');
+
+class MediaService extends EventEmitter {
+    constructor() {
+        super();
+        this.player = mpris({
+                            name: 'deezer',
+                            desktopEntry: 'deezer',
+                            identity: 'Deezer desktop client',
+                            supportedInterfaces: ['player']
+                        });
+        this.player.canRaise = false;
+        this.player.canQuit = false;
+        this.player.canSeek = false;
+        this.player.canEditTracks = false;
+        this.player.playbackStatus = 'Stopped';
+        this._started = false;
+    }
+
+    _requireStart() {
+        if (!this.isStarted()) {
+            throw new Error('This method requires the media service be started before calling');
+        }
+    }
+
+    startService() {
+        this._started = true;
+        var _this = this;
+        var events = ['next', 'previous', 'pause', 'play'];
+        events.forEach(function (eventName) {
+            _this.player.on(eventName, (arg) => {
+                if (arg === -1) {
+                    _this.emit(eventName);
+                } else {
+                    _this.emit(eventName, arg * 1000);
+                }
+            });
+        });
+        this.player.on('playpause', (arg) => {
+            if (arg === -1) {
+                _this.emit('playPause');
+            } else {
+                _this.emit('playPause', arg * 1000);
+            }
+        });
+    }
+
+    stopService() {
+        this._requireStart();
+        this._started = false;
+    }
+
+    isStarted() {
+        return this._started;
+    }
+
+    setMetaData(metaData) {
+        this._requireStart();
+
+        const {
+            title,
+            artist,
+            album,
+            albumArt,
+            state,
+            hasPrev,
+            hasNext
+        } = metaData;
+
+        if (typeof title !== 'undefined' &&
+                typeof album !== 'undefined' &&
+                typeof artist !== 'undefined') {
+            this.player.metadata = {
+                'mpris:trackid': this.player.objectPath('track/0'),
+                'xesam:title': title ,
+                'xesam:album': album,
+                'xesam:artist': [ artist ],
+                'mpris:artUrl': albumArt
+            }
+        }
+
+        if (typeof hasPrev !== 'undefined') {
+            this.player.canGoPrevious = hasPrev;
+        }
+
+        if (typeof hasNext !== 'undefined') {
+            this.player.canGoNext = hasNext
+        }
+
+        if (typeof state !== 'undefined') {
+            this.player.playbackStatus = state === 'playing' ? 'Playing' : 'Paused';
+        }
+    }
+}
+
+module.exports = MediaService;