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;