Thread Term::Choose Hotkeys?
(3 answers)
Opened by payx at 2022-04-17 19:22
Hallo allerseits,
hallo Kürbis (ich nutze erfreut aus, dass Du hier mitliest), ich habe mir mit Term::Choose einen universellen Launcher gebaut, der sehr praktisch sein kann, wenn man eine Arbeitsumgebung (oder mehrere) mit vielen Einzeltools und Dateien hat: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 #!/usr/bin/perl use strict; use warnings; use 5.010; use YAML qw( LoadFile ); use Term::Choose qw( choose ); binmode(STDOUT, ":encoding(utf8)"); system('chcp 65001 > nul') if ($^O eq 'MSWin32'); my $configF = (shift @ARGV or "launcher_config.yml"); my $config = LoadFile($configF) or die "Can't load config file '$configF'!"; $config->{term_choose_options}->{index} = 1; $config->{reset_shell} //= ($^O eq 'MSWin32' ? 'cls' : 'clear'); go($config->{main}) while 1; ##################################################################### sub go { my $aR = shift; my $items = [ map { ($config->{item_prefix}//'') . [%{$_}]->[0] . ($config->{item_suffix}//'') } @{$aR} ]; my $choice = choose( $items , $config->{term_choose_options} ); my $command = [%{$aR->[$choice]}]->[1]; if (ref $command eq 'ARRAY') { $aR = $command; } elsif (not $command) { return; } elsif ($command eq 'exit') { exit; } else { system($command); system($config->{reset_shell}); } go($aR) } Das Config-File (launcher_config.yml), das alle Inhalte enthält: Code: (dl
)
1 # YAML! Den Launcher kann man schön mit den Pfeiltasten und mit der Maus bedienen. Was mir nur fehlt, ist eine Möglichkeit, Items per Tastatur direkt auszuwählen, also z.B. k oder 1 (oder 2) einzutippen für den zweiten Eintrag o.ä. Habe ich etwas übersehen, oder geht das mit Term::Choose nicht? Frohe Ostern bei dieser Gelegenheit! Grüße payx |