#!/usr/bin/perl -w
use Net::DBus;
use strict;
use v5.10;
my $bus = Net::DBus->find;
for (@{$bus
->get_service("org.freedesktop.DBus")
->get_object("/org/freedesktop/DBus")
->ListNames
}) {
if (/org\.mpris\.MediaPlayer2\./) {
my $mp = $bus->get_service($_)->get_object("/org/mpris/MediaPlayer2");
print $mp->Get('org.mpris.MediaPlayer2.Player', 'PlaybackStatus'), ": ";
my %data = %{$mp->Get('org.mpris.MediaPlayer2.Player', 'Metadata')};
say join ' - ',
$data{'xesam:artist'}[0],
$data{'xesam:album'},
$data{'xesam:title'};
open STDERR, '/dev/null'; # I don't care to see your diagnostic BS.
exec "xdg-open", $data{'mpris:artUrl'};
}
}