42 lines
872 B
Bash
Executable File
42 lines
872 B
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
read -r -d '' awkscript <<- 'EOF'
|
|
{
|
|
if ($1 == "name") {
|
|
print FILENAME":"$2;
|
|
}
|
|
if ($1 == "protocol") {
|
|
print "("$2")";
|
|
}
|
|
}
|
|
EOF
|
|
|
|
getentry() {
|
|
awk -F'=' "$awkscript" "$1" | paste -sd' '
|
|
}
|
|
|
|
export awkscript
|
|
export -f getentry
|
|
|
|
groups=$(ls -1 ~/.local/share/remmina/ | cut -d_ -f1 | uniq)
|
|
groupcnt=$(wc -l <<<$groups)
|
|
|
|
while true; do
|
|
if [ "$groupcnt" -eq 1 ]; then
|
|
group=$groups
|
|
else
|
|
group=$(echo -e "$groups" | fuzzel --dmenu)
|
|
fi
|
|
[ -z "$group" ] && exit
|
|
|
|
entries=$(find ~/.local/share/remmina/ -name "$group*" -type f -exec bash -c "getentry {}" \; )
|
|
#echo -e "$entries"
|
|
|
|
fuzcmd="fuzzel --dmenu --terminal='' --with-nth=2 --accept-nth=1 --nth-delimiter=: --hide-prompt"
|
|
selected=$(echo -e "$entries" | $fuzcmd 2>/dev/null | tail -n1)
|
|
[[ $selected =~ delim ]] && [ "$groupcnt" -gt 1 ] && continue
|
|
break
|
|
done
|
|
|
|
remmina -c "$selected"
|