summarylogtreecommitdiffstats
path: root/0001-MPRIS-interface.patch
blob: 19e7066881953934ce64960de811d09929a29be4 (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
diff --git a/app/main.js b/app/main.js
index caf4699..5e88d7d 100644
--- a/app/main.js
+++ b/app/main.js
@@ -2636,6 +2636,7 @@
         this.ipc.send(constants.c, control);
       }
       isSupportedSMTC() {
+        return true;
         return (
           !Object(utils.h)(constants.l) &&
           Object(utils.i)({
@@ -3216,6 +3217,7 @@
               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"),
               services_AutoUpdater.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');
 }
--- /dev/null	2019-10-12 21:52:32.461829196 +0200
+++ b/node_modules/electron-media-service/src/linux/index.js	2019-10-12 22:23:11.969848536 +0200
@@ -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;