]> git.draconx.ca Git - fvwmconf.git/blobdiff - scripts/mpdmenu.pl
mpdmenu: Replace all uses of mpc with mpdexec.
[fvwmconf.git] / scripts / mpdmenu.pl
index 5a83987e8a340c4bb9099a276b948d1450770410..d477ca3bdfb01eb69d2bbc807ea958ef9aa0a2b0 100755 (executable)
@@ -100,11 +100,12 @@ if (defined $album) {
 
                next if (defined $artist && !$accept{albumdir($t_file)});
 
-               $t_artist = sanitise($t_artist);
-               $t_title  = sanitise($t_title);
+               $t_artist = sanitise($t_artist, 0);
+               $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);
@@ -136,7 +137,7 @@ if (defined $album) {
        use locale;
        foreach (sort keys(%albums)) {
                my $key      = $_;
-               my $a_album  = sanitise($key);
+               my $a_album  = sanitise($key, 1);
 
                open THUMB, "-|", "$FVWM/scripts/thumbnail.zsh",
                                         "--small", "--music", $albums{$key};
@@ -200,6 +201,9 @@ if (defined $album) {
        s/\s+(instrumental|off vocal|short|tv)([\s-]+(mix|size|version))?$//i;
        s/\s+without\s+\w+$//i;
 
+       # Deal with separate movements in classical pieces.
+       s/: [IVX]+\..*//;
+
        my $basetitle  = $_;
        my $_basetitle = $basetitle;
 
@@ -233,8 +237,8 @@ if (defined $album) {
                # MPD searches are case-insensitive.
                next if (!($t_title =~ m/(\P{Latin}|^)\Q$basetitle\E(\P{Latin}|$)/ || $t_title =~ m/\Q$basetitle\E/i));
 
-               $t_artist = sanitise($t_artist);
-               $t_title  = sanitise($t_title);
+               $t_artist = sanitise($t_artist, 1);
+               $t_title  = sanitise($t_title, 1);
 
                open THUMB, "-|", "$FVWM/scripts/thumbnail.zsh",
                                         "--small", "--music", $t_file;
@@ -245,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 {
@@ -295,14 +301,14 @@ if (defined $album) {
 
                if (-f $thumb) {
                        cmd("AddToMenu $menu \"*$thumb*\" "
-                               ."Exec exec gqview ".shellify($scan, 0));
+                               ."Exec exec geeqie ".shellify($scan, 0));
                }
-               cmd("AddToMenu $menu \"Title:   ".sanitise($entry{Title})."\" "
-                       ."Popup MenuMPDTitle");
-               cmd("AddToMenu $menu \"Artist:  ".sanitise($entry{Artist})."\" "
-                       ."Popup MenuMPDArtist");
-               cmd("AddToMenu $menu \"Album:   ".sanitise($entry{Album})."\" "
-                       ."Popup MenuMPDAlbum");
+               cmd("AddToMenu $menu \"Title:   ".sanitise($entry{Title}, 0)
+                       ."\" Popup MenuMPDTitle");
+               cmd("AddToMenu $menu \"Artist:  ".sanitise($entry{Artist}, 0)
+                       ."\" Popup MenuMPDArtist");
+               cmd("AddToMenu $menu \"Album:   ".sanitise($entry{Album}, 0)
+                       ."\" Popup MenuMPDAlbum");
                cmd("AddToMenu $menu \"\" Nop");
        } else {
                cmd("AddToMenu $menu \"<Song info unavailable>\"");
@@ -311,25 +317,25 @@ if (defined $album) {
 
        if ($state eq "play" || $state eq "pause") {
                cmd("AddToMenu $menu \"\t\tNext%$icons/next.svg:16x16%\" "
-                       ."Exec exec mpc next");
+                       ."Exec exec $FVWM/scripts/mpdexec.pl next");
                cmd("AddToMenu $menu \"\t\tPause%$icons/pause.svg:16x16%\" "
-                       ."Exec exec mpc pause") if ($state eq "play");
+                       ."Exec exec $FVWM/scripts/mpdexec.pl pause");
                cmd("AddToMenu $menu \"\t\tPlay%$icons/play.svg:16x16%\" "
-                       ."Exec exec mpc play") if ($state eq "pause");
+                       ."Exec exec $FVWM/scripts/mpdexec.pl play");
                cmd("AddToMenu $menu \"\t\tStop%$icons/stop.svg:16x16%\" "
-                       ."Exec exec mpc stop");
+                       ."Exec exec $FVWM/scripts/mpdexec.pl stop");
                cmd("AddToMenu $menu \"\t\tPrev%$icons/prev.svg:16x16%\" "
-                       ."Exec exec mpc prev");
+                       ."Exec exec $FVWM/scripts/mpdexec.pl previous");
        } elsif ($state eq "stop") {
                cmd("AddToMenu $menu \"\t\tPlay%$icons/play.svg:16x16%\" "
-                       ."Exec exec mpc play");
+                       ."Exec exec $FVWM/scripts/mpdexec.pl play");
        } else {
                die("Unknown MPD state!\n");
        }
 
        cmd("AddToMenu $menu \"\" Nop");
        cmd("AddToMenu $menu \"\t\tShuffle%$icons/shuffle.svg:16x16%\" "
-               ."Exec exec mpc shuffle");
+               ."Exec exec $FVWM/scripts/mpdexec.pl shuffle");
 
        cmd("DestroyMenu MenuMPDTitle");
        cmd("AddToMenu   MenuMPDTitle  DynamicPopUpAction MakeMenuMPDTitle");
@@ -370,7 +376,8 @@ print $sock "close\n";
 sub sanitise
 {
        $_ = $_[0];
-       s/([\$&@%^*])/\1\1/g;
+       s/&/&&/g if ($_[1]);
+       s/([\$@%^*])/\1\1/g;
        s/"/\\"/g;
        return $_;
 }