You are not logged in.
Hello.
I'm using Spotify and trying to control it with MPRIS through DBus. Probably should note that I've never dealt with MPRIS nor DBus.
I started by trying this command (while Spotify was obviously running and playing):
dbus-send --print-reply --dest=org.mpris.MediaPlayer2 /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.PlayPause
Output is:
Error org.freedesktop.DBus.Error.ServiceUnknown: The name org.mpris.MediaPlayer2 was not provided by any .service files
After a bit of searches I concluded that
org.mpris.MediaPlayer2
is a service that needs to be active in the session (please correct me if I'm wrong). So I ran
systemctl
and looked for anything related. Nothing.
I also tried to query DBus with:
dbus-send --session \
--dest=org.freedesktop.DBus \
--type=method_call \
--print-reply \
/org/freedesktop/DBus \
org.freedesktop.DBus.ListNames
Nothing related here as well.
And here I am.
Thanks in advance.
Last edited by ExoDroiD (2018-01-01 15:53:53)
Offline
I use spopd for listening to music on spotify. For this I configured my media keys in the config file of dwm. Here's the entry for toggling playback:
"dbus-send", "--print-reply", "--dest=org.mpris.MediaPlayer2.spopd", "/org/mpris/MediaPlayer2", "org.mpris.MediaPlayer2.Player.PlayPause"
which translates to this command
dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spopd /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.PlayPause
I see a difference between yours any my command line in the entry for --dest. I'm not sure what the spotify client (you use the official client, right?) is named here, but I guess you have to use
--dest=org.mpris.MediaPlayer2.spotify
The rest of your command looks fine, it's just what I have (which works!)
After a bit of searches I concluded that
org.mpris.MediaPlayer2
is a service that needs to be active in the session (please correct me if I'm wrong). So I ran
systemctl
and looked for anything related. Nothing.
I didn't have to mess with any systemd related stuff, so I think you are on the wrong road here
edit: While I recommend for you to fix your command line and then use it, I still want to point out to you that there's a tool called playerctl (in [community]) which might make this task easier for you.
Last edited by sekret (2018-01-03 20:45:37)
Offline
I see a difference between yours any my command line in the entry for --dest. I'm not sure what the spotify client (you use the official client, right?) is named here, but I guess you have to use
--dest=org.mpris.MediaPlayer2.spotify
I tried using
--dest=org.mpris.MediaPlayer2.spotify
but forgot to mention it, even tried again after you suggested it just to make sure. The same error is yielded:
Error org.freedesktop.DBus.Error.ServiceUnknown: The name org.mpris.MediaPlayer2.spotify was not provided by any .service files
edit: While I recommend for you to fix your command line and then use it, I still want to point out to you that there's a tool called playerctl (in [community]) which might make this task easier for you.
I know about this tool and have used it in the past, it's just that I wanted a less "dependant" way to control Spotify... (though I'm pretty sure that playerctl does the same thing I'm trying to do)
Anyway, as I've yet come to a solution, I'm gonna try playerctl and edit my response with the results.
EDIT:
Just as I expected, playerctl didn't help. When running
playerctl -l
which should list the running players, lists none (while Spotify was running of course).
Last edited by ExoDroiD (2018-01-04 15:33:44)
Offline
Ok then I'm out of ideas. I can only add, that the wiki covers those commands, see here.
Maybe a bug in the spotify client? I suggest you try another application with mpris support, just to see if it's not a dbus issue.
Offline
Ok then I'm out of ideas. I can only add, that the wiki covers those commands, see here.
Unfortunately, I went over this page more times than I'd admit.
Maybe a bug in the spotify client? I suggest you try another application with mpris support, just to see if it's not a dbus issue.
Will try that. I think I'm missing some of the information regarding the DBus service itself, for example:
Who should be responsible for activating this service? Is it the client?
If it's possible, could I activate it myself?
PS: Which client would you recommend testing it with?
Edit: Tried Clementine. Still no DBus service.
Last edited by ExoDroiD (2018-01-05 14:27:03)
Offline
The Dbus service should be initialized as part of the session startup by the systemd user session, you shouldn't have to activate it yourself, given your general setup is correct. What's the output of
systemctl --user status dbus
and FWIW the output of that dbus listing command you posted.
Offline
How are you starting your DE? If you use startx please post the contents of your ~/.xinitrc.
Offline
The Dbus service should be initialized as part of the session startup by the systemd user session, you shouldn't have to activate it yourself, given your general setup is correct. What's the output of
systemctl --user status dbus
$ systemctl --user status dbus
● dbus.service - D-Bus User Message Bus
Loaded: loaded (/usr/lib/systemd/user/dbus.service; static; vendor preset: enabled)
Active: active (running) since Fri 2018-01-05 16:13:09 IST; 37min ago
Docs: man:dbus-daemon(1)
Main PID: 640 (dbus-daemon)
CGroup: /user.slice/user-1000.slice/user@1000.service/dbus.service
├─ 640 /usr/bin/dbus-daemon --session --address=systemd: --nofork --nopidfile --systemd-activation --syslog-only
└─1559 /usr/lib/GConf/gconfd-2
Jan 05 16:13:09 dell systemd[579]: Started D-Bus User Message Bus.
Jan 05 16:13:09 dell dbus-daemon[640]: [session uid=1000 pid=640] Activating systemd to hand-off: service name='org.a11y.Bus' unit='at-spi-dbus-bus.service' requested by ':1.1' (uid=1000 pid=633 comm="nm-applet ")
Jan 05 16:13:09 dell dbus-daemon[640]: [session uid=1000 pid=640] Successfully activated service 'org.freedesktop.systemd1'
Jan 05 16:13:09 dell dbus-daemon[640]: [session uid=1000 pid=640] Successfully activated service 'org.a11y.Bus'
Jan 05 16:24:50 dell dbus-daemon[640]: [session uid=1000 pid=640] Activating service name='org.gnome.GConf' requested by ':1.12' (uid=1000 pid=1433 comm="/usr/lib/firefox/firefox ")
Jan 05 16:24:50 dell dbus-daemon[640]: [session uid=1000 pid=640] Successfully activated service 'org.gnome.GConf'
and FWIW the output of that dbus listing command you posted.
Did you mean this one?:
$ dbus-send --session --dest=org.freedesktop.DBus --type=method_call --print-reply /org/freedesktop/DBus org.freedesktop.DBus.ListNames
method return time=1515162666.148629 sender=org.freedesktop.DBus -> destination=:1.3 serial=3 reply_serial=2
array [
string "org.freedesktop.DBus"
string ":1.3"
string "org.gnome.Terminal"
string ":1.1"
]
How are you starting your DE? If you use startx please post the contents of your ~/.xinitrc.
#!/bin/bash
exec i3
Last edited by ExoDroiD (2018-01-05 14:51:05)
Offline
Your ~/.xinitrc isn't launching the user session because it's missing vital sections...
https://wiki.archlinux.org/index.php/Xinit#xinitrc
See the second note.
Offline
Your ~/.xinitrc isn't launching the user session because it's missing vital sections...
https://wiki.archlinux.org/index.php/Xinit#xinitrc
See the second note.
I guess this if block should be after my
exec i3
That didn't help, still no MPRIS DBus interfaces. Tried with Spotify and with Clementine.
I assume adding this if block did do something as there're a bit more DBus interfaces...
Last edited by ExoDroiD (2018-01-05 15:10:47)
Offline
No it should be before your exec i3, all lines after the exec aren't executed anymore, since the process (i.e. i3) replaces the bash shell that is parsing the script
Offline
No it should be before your exec i3, all lines after the exec aren't executed anymore, since the process (i.e. i3) replaces the bash shell that is parsing the script
That makes sense, but I tried both and when the if block was after the exec there were more DBus interfaces. I'm gonna put it back to be before the exec.
Offline
Your ~/.xinitrc isn't launching the user session because it's missing vital sections...
https://wiki.archlinux.org/index.php/Xinit#xinitrc
See the second note.
This is interesting! I don't have this stuff in my .xinitrc, but still everything works!
#!/bin/sh
setxkbmap de
xset +fp /usr/share/fonts/local
xset fp rehash
xsetroot -cursor_name left_ptr
xrandr-default
dunst &
notify-send "$(khal list today)" &
conky | while read -r; do xsetroot -name "$REPLY"; done &
redshift &
exec dwm
Don't know if those xset* lines are still required, but I see no dbus stuff there. I know too little about dbus to understand this.
Just to be sure, this post is not intended to take over the thread, I'm just curious.
Offline
UPDATE:
I've now added Gnome Shell (alongside i3) and there's definately a D-Bus interface for Spotify:
$ dbus-send --session --dest=org.freedesktop.DBus --type=method_call --print-reply /org/freedesktop/DBus org.freedesktop.DBus.ListNames | grep spotify
string "org.mpris.MediaPlayer2.spotify"
I'm still very interested about what causes this problem and how to fix it.
If there's any data I could provide to help identify the problem please let me know.
Offline
I think you may need to change this argument
--dest=org.mpris.MediaPlayer2
to this:
--dest=org.mpris.MediaPlayer2.spotify
Offline