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);
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};
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;
# 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;
$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 {
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>\"");
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");
sub sanitise
{
$_ = $_[0];
- s/([\$&@%^*])/\1\1/g;
+ s/&/&&/g if ($_[1]);
+ s/([\$@%^*])/\1\1/g;
s/"/\\"/g;
return $_;
}