diff options
Diffstat (limited to 'bin/blackpearl-sshmenu.sh')
| -rwxr-xr-x | bin/blackpearl-sshmenu.sh | 28 |
1 files changed, 0 insertions, 28 deletions
diff --git a/bin/blackpearl-sshmenu.sh b/bin/blackpearl-sshmenu.sh deleted file mode 100755 index a94217e..0000000 --- a/bin/blackpearl-sshmenu.sh +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/bash -# SSH menu: the hosts in ~/.ssh/config as cards, rofi themed by udt. -# Copyright (C) 2026 Danilo M. <danix@danix.xyz> -# Licensed under the GNU General Public License v2 only. - -# rofi's own ssh mode shows the alias only, so the config is read here. -# ponytail: plain "Keyword value" lines in ~/.ssh/config only; Include and -# Match are not followed, wildcard Host patterns are skipped. -mapfile -t hosts < <(awk ' - function flush() { if (name != "") print name "\t" user "\t" addr } - tolower($1) == "host" { flush(); name = ($2 ~ /[*?]/) ? "" : $2; user = ""; addr = $2 } - tolower($1) == "hostname" { addr = $2 } - tolower($1) == "user" { user = $2 } - END { flush() }' ~/.ssh/config) - -# Two lines a card: the alias, then "user · address" with the user only where -# the config sets one. Entries are joined on "|" so each can hold a newline. -entries=() -for h in "${hosts[@]}"; do - IFS=$'\t' read -r name user addr <<< "$h" - entries+=("<b>$name</b> -<span size='small' fgalpha='65%'>${user:+$user · }$addr</span>") -done - -i=$(IFS='|'; printf '%s' "${entries[*]}" | rofi -dmenu -i -markup-rows \ - -sep '|' -eh 2 -format i -p ' SSH:' -theme ~/.config/rofi/udt/ssh.rasi) || exit -name=${hosts[i]%%$'\t'*} -exec rofi-sensible-terminal -e ssh "$name" |
