diff --git a/mopidy/frontends/mpris/__init__.py b/mopidy/frontends/mpris/__init__.py index 7e979152..6656347f 100644 --- a/mopidy/frontends/mpris/__init__.py +++ b/mopidy/frontends/mpris/__init__.py @@ -10,6 +10,7 @@ except ImportError as import_error: from pykka.actor import ThreadingActor +from mopidy import settings from mopidy.frontends.mpris import objects from mopidy.listeners import BackendListener @@ -79,9 +80,7 @@ class MprisFrontend(ThreadingActor, BackendListener): logger.debug(u'Sending startup notification...') self.indicate_server = indicate.Server() self.indicate_server.set_type('music.mopidy') - # FIXME Location of .desktop file shouldn't be hardcoded - self.indicate_server.set_desktop_file( - '/usr/share/applications/mopidy.desktop') + self.indicate_server.set_desktop_file(settings.DESKTOP_FILE) self.indicate_server.show() logger.debug(u'Startup notification sent') diff --git a/mopidy/frontends/mpris/objects.py b/mopidy/frontends/mpris/objects.py index 3721e119..fa85116f 100644 --- a/mopidy/frontends/mpris/objects.py +++ b/mopidy/frontends/mpris/objects.py @@ -1,4 +1,5 @@ import logging +import os logger = logging.getLogger('mopidy.frontends.mpris') @@ -12,6 +13,7 @@ except ImportError as import_error: from pykka.registry import ActorRegistry +from mopidy import settings from mopidy.backends.base import Backend from mopidy.backends.base.playback import PlaybackController from mopidy.mixers.base import BaseMixer @@ -49,7 +51,7 @@ class MprisObject(dbus.service.Object): # NOTE Change if adding optional track list support 'HasTrackList': (False, None), 'Identity': ('Mopidy', None), - 'DesktopEntry': ('mopidy', None), + 'DesktopEntry': (self.get_DesktopEntry, None), 'SupportedUriSchemes': (self.get_SupportedUriSchemes, None), # TODO Return MIME types supported by local backend if active 'SupportedMimeTypes': (dbus.Array([], signature='s'), None), @@ -159,6 +161,9 @@ class MprisObject(dbus.service.Object): ### Root interface properties + def get_DesktopEntry(self): + return os.path.splitext(os.path.basename(settings.DESKTOP_FILE))[0] + def get_SupportedUriSchemes(self): return dbus.Array(self.backend.uri_schemes.get(), signature='s') diff --git a/mopidy/settings.py b/mopidy/settings.py index a5137543..b1e0c791 100644 --- a/mopidy/settings.py +++ b/mopidy/settings.py @@ -49,6 +49,15 @@ DEBUG_LOG_FORMAT = u'%(levelname)-8s %(asctime)s' + \ #: DEBUG_LOG_FILENAME = u'mopidy.log' DEBUG_LOG_FILENAME = u'mopidy.log' +#: Location of the Mopidy .desktop file. +#: +#: Used by :mod:`mopidy.frontends.mpris`. +#: +#: Default:: +#: +#: DESKTOP_FILE = u'/usr/share/applications/mopidy.desktop' +DESKTOP_FILE = u'/usr/share/applications/mopidy.desktop' + #: List of server frontends to use. #: #: Default:: diff --git a/tests/frontends/mpris/root_interface_test.py b/tests/frontends/mpris/root_interface_test.py index 72800f64..52a1c66e 100644 --- a/tests/frontends/mpris/root_interface_test.py +++ b/tests/frontends/mpris/root_interface_test.py @@ -1,6 +1,7 @@ import mock import unittest +from mopidy import settings from mopidy.backends.dummy import DummyBackend from mopidy.frontends.mpris import objects @@ -44,6 +45,12 @@ class RootInterfaceTest(unittest.TestCase): result = self.mpris.Get(objects.ROOT_IFACE, 'DesktopEntry') self.assertEquals(result, 'mopidy') + def test_desktop_entry_is_based_on_DESKTOP_FILE_setting(self): + settings.runtime['DESKTOP_FILE'] = '/tmp/foo.desktop' + result = self.mpris.Get(objects.ROOT_IFACE, 'DesktopEntry') + self.assertEquals(result, 'foo') + settings.runtime.clear() + def test_supported_uri_schemes_is_empty(self): result = self.mpris.Get(objects.ROOT_IFACE, 'SupportedUriSchemes') self.assertEquals(len(result), 1)