1 package Display::Plugins::MPD;
5 use POSIX qw/strftime/;
8 my ($class,$stage) = @_;
12 'mpd' => Audio::MPD->new(),
17 bless ($self, $class);
25 my $current = $self->{'mpd'}->current();
27 if ($self->{'file'} ne $current->file()) {
29 push @lines, $current->title() if defined $current->title();
30 push @lines, $current->album() if defined $current->album();
31 push @lines, $current->artist() if defined $current->artist();
33 $self->{'status'}->set_text(join("\n", @lines));
35 $self->{'file'} = $current->file();
37 $self->{'bg'}->set_height($self->{'status'}->get_height() + 10);
38 $self->{'bg'}->set_anchor_point(1, $self->{'bg'}->get_height());
39 $self->{'bg'}->set_position(10, $self->{'stage'}->get_height() - 10);
41 $self->{'status'}->set_anchor_point(1, $self->{'status'}->get_height());
42 $self->{'status'}->set_position(15, $self->{'stage'}->get_height() - 20);
44 if (! $self->{'active'}) {
45 $self->{'stage'}->add($self->{'bg'});
46 $self->{'stage'}->add($self->{'status'});
48 $self->{'active'} = time() + 30;
51 Glib::Timeout->add_seconds(30, $self->can('hide_display'), $self);
60 if ($self->{'active'} <= time()) {
61 $self->{'stage'}->remove($self->{'status'});
62 $self->{'stage'}->remove($self->{'bg'});
64 $self->{'active'} = 0;
73 $self->{'status'} = Clutter::Label->new('Sans 20', "Song\nAlbum");
74 $self->{'status'}->set_color(Clutter::Color->parse('White'));
76 $self->{'bg'} = Clutter::Rectangle->new(Clutter::Color->parse('Black'));
77 $self->{'bg'}->set_width($self->{'stage'}->get_width() - 40);
78 $self->{'bg'}->set_opacity(100);
80 Glib::Timeout->add_seconds(5, $self->can('display'), $self);