summarylogtreecommitdiffstats
path: root/0001-MPRIS-interface.patch
blob: eef82addb1d9fed8e3db5fb2e4c579eb29db34fc (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
diff --git a/app/js/main/App/index.js b/app/js/main/App/index.js
index 94631c5..1026110 100644
--- a/app/main.js
+++ b/app/main.js
@@ -2436,6 +2436,7 @@
               main_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"),
               main_AutoUpdater.init();
diff --git a/node_modules/electron-media-service/src/index.js b/node_modules/electron-media-service/src/index.js
index f4bdbe6..6171945 100644
--- a/node_modules/electron-media-service/src/index.js
+++ b/node_modules/electron-media-service/src/index.js
@@ -14,6 +14,10 @@ switch (process.platform) {
       module.exports = require('./win32');
     break;
   }
+  case 'linux': {
+      module.exports = require('./linux');
+    break;
+  }
   default: {
     break;
   }
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..3935e1c
--- /dev/null
+++ b/node_modules/electron-media-service/src/linux/index.js
@@ -0,0 +1,82 @@
+const { EventEmitter } = require('events');
+const mpris = require('mpris-service');
+
+class MediaService extends EventEmitter {
+    constructor() {
+        super();
+        this.player = mpris({
+                            name: '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', 'stop', '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({
+        currentTime,
+        duration,
+        title,
+        artist,
+        album,
+        albumArt,
+        id,
+        state
+    }) {
+        this._requireStart();
+        this.player.metadata = {
+            'xesam:title': title,
+            'xesam:album': album,
+            'xesam:artist': artist,
+            'mpris:artUrl': albumArt
+        }
+        if (state === 'playing') {
+            this.player.playbackStatus = 'Playing';
+        } else {
+            this.player.playbackStatus = 'Stopped';
+        }
+    }
+}
+
+module.exports = MediaService;