diff options
author | joe <rbo@gmx.us> | 2025-08-21 18:40:13 +0200 |
---|---|---|
committer | joe <rbo@gmx.us> | 2025-08-21 18:40:13 +0200 |
commit | 0c82e88e2bd0f3a4b8224b189eb76e106c1e3d31 (patch) | |
tree | 78dce6af99ba59e3de28a74594b24e85b05f78f6 /.local | |
parent | up (diff) | |
download | dotfiles-bsd-0c82e88e2bd0f3a4b8224b189eb76e106c1e3d31.tar.gz dotfiles-bsd-0c82e88e2bd0f3a4b8224b189eb76e106c1e3d31.tar.bz2 dotfiles-bsd-0c82e88e2bd0f3a4b8224b189eb76e106c1e3d31.tar.xz dotfiles-bsd-0c82e88e2bd0f3a4b8224b189eb76e106c1e3d31.tar.zst dotfiles-bsd-0c82e88e2bd0f3a4b8224b189eb76e106c1e3d31.zip |
up
Diffstat (limited to '')
-rwxr-xr-x | .local/bin/linkview | 27 |
1 files changed, 21 insertions, 6 deletions
diff --git a/.local/bin/linkview b/.local/bin/linkview index 0f8dff5..cd9d90e 100755 --- a/.local/bin/linkview +++ b/.local/bin/linkview @@ -12,6 +12,7 @@ use Term::ReadKey; use Capture::Tiny qw(capture); use POSIX qw(setsid); use Data::UUID; +use Hash::Ordered; use feature qw(switch); no warnings qw(experimental::smartmatch); @@ -148,7 +149,7 @@ sub img_pdf $ext =~ s/\?.*//; $new_file_name = $uuid . $ext; rename($file_name, $new_file_name) or die $!; - if ($key eq "2 img") { + if ($key =~ /img/) { $ret = system(IMGVIEW_PATH . " " . $new_file_name); } else { @@ -496,10 +497,17 @@ sub get_yt_vid_name sub fzf_prompt { - my ($url) = @_; + my ($url, $mapping_ref) = @_; my $answer; - my $list = join("\n", sort keys %func_list); + my @sorted_keys; + my @stripped_keys; + my $list; + @sorted_keys = sort keys %func_list; + @stripped_keys = map { substr($_, 2) } @sorted_keys; + %$mapping_ref = (); + @{$mapping_ref}{@stripped_keys} = @sorted_keys; + $list = join("\n", @stripped_keys); $answer = `printf "$list\n" | $menu --prompt '$url > '`; chomp $answer; return $answer; @@ -508,14 +516,21 @@ sub fzf_prompt sub linkview { my $answer; + my $og_key; + my %mapping; if (@ARGV == 0 || $ARGV[0] eq '') { print STDERR "linkview: no URL\n"; exit 1; } - $answer = fzf_prompt($ARGV[0]); - return unless exists $func_list{$answer}; - $func_list{$answer}->($ARGV[0], $ARGV[1], $answer); + + $answer = fzf_prompt($ARGV[0], \%mapping); + + return unless exists $mapping{$answer}; + $og_key = $mapping{$answer}; + + return unless exists $func_list{$og_key}; + $func_list{$og_key}->($ARGV[0], $ARGV[1], $og_key); return; } |