1 package Display::Plugins::MPD;
5 use POSIX qw/strftime/;
7 use base ('Display::Plugin');
15 my $class = ref($proto) || $proto;
17 my $self = $class->SUPER::new(@_);
19 $self->{'mpd'} = Audio::MPD->new();
21 $self->{'active'} = 0;
23 bless ($self, $class);
24 $self->init_delay($delay, 'mpd_display');
30 my ($self, $kernel) = @_[OBJECT, KERNEL];
32 my $current = $self->{'mpd'}->current();
34 if (defined $current && $self->{'file'} ne $current->file()) {
36 push @lines, $current->title() if defined $current->title();
37 push @lines, $current->album() if defined $current->album();
38 push @lines, $current->artist() if defined $current->artist();
40 $self->{'status'}->set_text(join("\n", @lines));
42 $self->{'file'} = $current->file();
44 $kernel->yield('notifications_add', $self->{'status'}, $self->{'logo'});
53 $self->{'kernel'}->state('mpd_display', $self, 'display');
55 $self->{'status'} = Clutter::Label->new('Sans 20', "Song\nAlbum");
56 $self->{'status'}->set_color(Clutter::Color->parse('White'));
57 $self->{'status'}->set_ellipsize('end');
59 $self->{'logo'} = Clutter::Texture->new("$Bin/share/MPD.png");
61 $self->{'kernel'}->yield('mpd_display');