From: Nick Bowler Date: Sun, 26 Feb 2012 19:35:54 +0000 (-0500) Subject: mpdmenu: Use a specialized script to send playid commands to MPD. X-Git-Url: https://git.draconx.ca/gitweb/fvwmconf.git/commitdiff_plain/74a217f96316193daa602b8a5f4a81cc922a42af mpdmenu: Use a specialized script to send playid commands to MPD. This avoids the dependency on a patched mpc. --- diff --git a/scripts/mpdexec.pl b/scripts/mpdexec.pl new file mode 100755 index 0000000..9c6e069 --- /dev/null +++ b/scripts/mpdexec.pl @@ -0,0 +1,40 @@ +#!/usr/bin/env perl +# +# Copyright © 2012 Nick Bowler +# +# Simple program to send a command to MPD. The result is printed to standard +# output. +# +# License WTFPL2: Do What The Fuck You Want To Public License, version 2. +# This is free software: you are free to do what the fuck you want to. +# There is NO WARRANTY, to the extent permitted by law. + +use strict; + +use utf8; +use encoding 'utf8'; +use IO::Socket::INET6; + +my $host = $ENV{MPD_HOST} // "localhost"; +my $port = $ENV{MPD_PORT} // 6600; + +my $sock = new IO::Socket::INET6( + PeerAddr => $host, + PeerPort => $port, + Proto => 'tcp', +) or die "failed to connect to MPD: $!"; +binmode($sock, ":utf8"); + +if (!(<$sock> =~ /^OK MPD ([0-9]+)\.([0-9]+)\.([0-9]+)$/)) { + die "MPD failed to announce version: $!"; +} + +print $sock join(' ', @ARGV), "\n"; +while (<$sock>) { + last if (/^OK/); + print; + exit 1 if (/^ACK/); +} + +print $sock "close\n"; +close $sock; diff --git a/scripts/mpdmenu.pl b/scripts/mpdmenu.pl index 0da4c7f..ca7d2be 100755 --- a/scripts/mpdmenu.pl +++ b/scripts/mpdmenu.pl @@ -104,7 +104,8 @@ if (defined $album) { $t_title = sanitise($t_title, 0); my $cmd = sprintf "AddToMenu $menu \"%d\t%s - %s\"" - ." Exec mpc playid %d", + ." Exec exec $FVWM/scripts/mpdexec.pl" + ." playid %d", $t_trackno, $t_artist, $t_title, $t_id; cmd($cmd); @@ -248,7 +249,9 @@ if (defined $album) { $thumb =~ s/\n//sg; $thumb = "%$thumb%" if (-f $thumb); - cmd("AddToMenu $menu \"$thumb$t_artist - $t_title\" Exec mpc playid $t_id"); + cmd("AddToMenu $menu \"$thumb$t_artist - $t_title\"" + ." Exec exec $FVWM/scripts/mpdexec.pl" + ." playid $t_id"); } } # end use locale workaround } else {