my $sock;
my ($albumid, $trackid);
-my %artistids;
-my $menu;
+my ($topmenu, $menu);
my $mode = "top";
+my %artistids;
# Quotes the argument so that it is presented as a single argument to MPD
# at the protocol level. This also works OK for most FVWM arguments.
sub make_submenu {
my $name = shift;
$name =~ s/-/_/g;
- unshift @_, ("exec", $SELF, "--menu=$name");
+ unshift @_, ("exec", $SELF, "--topmenu=$topmenu", "--menu=$name");
fvwm_cmd("DestroyFunc", "Make$name");
fvwm_cmd("AddToFunc", "Make$name");
fvwm_cmd("DestroyMenu", $name);
fvwm_cmd("AddToMenu", $name, "DynamicPopupAction", "Make$name");
- fvwm_cmd("AddToFunc", "KillMenuMPD", "I", "DestroyMenu", $name);
+ fvwm_cmd("AddToFunc", "Kill$topmenu", "I", "DestroyMenu", $name);
fvwm_cmd("DestroyFunc", "Make$name");
fvwm_cmd("AddToFunc", "Make$name");
fvwm_cmd("+", "I", "DestroyMenu", $name);
fvwm_cmd("+", "I", "-PipeRead",
join(' ', map { fvwm_shell_literal } @_));
- fvwm_cmd("AddToFunc", "KillMenuMPD", "I", "DestroyFunc", "Make$name");
+ fvwm_cmd("AddToFunc", "Kill$topmenu", "I", "DestroyFunc", "Make$name");
return ("Popup", $name);
}
'V|version' => sub { print_version(); exit },
'H|help' => sub { print_help(); exit },
+
+ 'topmenu=s' => \$topmenu, # top menu name (for submenu generation)
) or do { print_usage; exit 1 };
+unless (defined $menu) {
+ $topmenu //= "MenuMPD";
+ $menu = $topmenu . ($mode ne "top" ? $mode : "");
+}
+$topmenu //= $menu;
+
# Connect to MPD.
$sock = new IO::Socket::INET6(
PeerAddr => $host,
my $entry = $matches->{$mbid};
my $thumb = shift @thumbs;
- my @submenu = make_submenu("$menu-$mbid", "--album-id=$mbid");
+ my @submenu = make_submenu("$topmenu-$mbid",
+ "--album-id=$mbid");
fvwm_cmd("AddToMenu", $menu,
$thumb . fvwm_label_escape($entry->{Album}),
@submenu);