fix(scripts): add <c-r> for refresh

This commit is contained in:
Barrett Ruth 2026-03-02 12:08:35 -05:00
parent dd10d11347
commit 0afc547def
Signed by: barrett
GPG key ID: A6C96C9349D2FC81
2 changed files with 54 additions and 42 deletions

View file

@ -357,6 +357,9 @@ in
[dmenu] [dmenu]
mode=text mode=text
exit-immediately-if-empty=no exit-immediately-if-empty=no
[key-bindings]
custom-1=Control+r
''; '';
xdg.configFile."fuzzel/themes/midnight.ini".text = mkFuzzelTheme config.palettes.midnight; xdg.configFile."fuzzel/themes/midnight.ini".text = mkFuzzelTheme config.palettes.midnight;
xdg.configFile."fuzzel/themes/daylight.ini".text = mkFuzzelTheme config.palettes.daylight; xdg.configFile."fuzzel/themes/daylight.ini".text = mkFuzzelTheme config.palettes.daylight;

View file

@ -142,49 +142,58 @@ wifi)
require fuzzel require fuzzel
station=$(iwctl device list 2>/dev/null | sed 's/\x1b\[[0-9;]*[a-zA-Z]//g' | awk '/station/{print $1}') station=$(iwctl device list 2>/dev/null | sed 's/\x1b\[[0-9;]*[a-zA-Z]//g' | awk '/station/{print $1}')
[ -z "$station" ] && { echo "ctl: no wifi device found" >&2; exit 1; } [ -z "$station" ] && { echo "ctl: no wifi device found" >&2; exit 1; }
iwctl station "$station" scan 2>/dev/null while :; do
sleep 1 iwctl station "$station" scan 2>/dev/null
networks=$(iwctl station "$station" get-networks 2>/dev/null | \ sleep 1
sed 's/\x1b\[[0-9;]*[a-zA-Z]//g' | \ networks=$(iwctl station "$station" get-networks 2>/dev/null | \
awk 'NR>4 && /\S/ && !/^[[:space:]]*-/' | \ sed 's/\x1b\[[0-9;]*[a-zA-Z]//g' | \
sed 's/^[[:space:]>]*//' | \ awk 'NR>4 && /\S/ && !/^[[:space:]]*-/' | \
awk '{ awk '{
sub(/[[:space:]]*$/, "") active = ($0 ~ /^[[:space:]]*>/) ? ">" : ""
i = index($0, " ") sub(/^[[:space:]>]*/, "")
if (i > 0) { sub(/[[:space:]]*$/, "")
ssid = substr($0, 1, i - 1) i = index($0, " ")
rest = substr($0, i) if (i > 0) {
sub(/^[[:space:]]*/, "", rest) ssid = substr($0, 1, i - 1)
j = index(rest, " ") rest = substr($0, i)
if (j > 0) { sub(/^[[:space:]]*/, "", rest)
security = substr(rest, 1, j - 1) j = index(rest, " ")
signal = substr(rest, j) if (j > 0) {
sub(/^[[:space:]]*/, "", signal) security = substr(rest, 1, j - 1)
sub(/[[:space:]]*$/, "", signal) signal = substr(rest, j)
} else { sub(/^[[:space:]]*/, "", signal)
security = rest sub(/[[:space:]]*$/, "", signal)
signal = "" } else {
security = rest
signal = ""
}
sub(/[[:space:]]*$/, "", ssid)
sub(/[[:space:]]*$/, "", security)
printf "%s\t%s\t%s\t%s\n", ssid, security, signal, active
} }
sub(/[[:space:]]*$/, "", ssid) }')
sub(/[[:space:]]*$/, "", security) [ -z "$networks" ] && exit 0
printf "%s\t%s\t%s\n", ssid, security, signal w1=$(printf '%s\n' "$networks" | awk -F'\t' 'BEGIN{m=12}{l=length($1);if(l>m)m=l}END{print m}')
} w2=$(printf '%s\n' "$networks" | awk -F'\t' 'BEGIN{m=8}{l=length($2);if(l>m)m=l}END{print m}')
}') w3=$(printf '%s\n' "$networks" | awk -F'\t' 'BEGIN{m=6}{l=length($3);if(l>m)m=l}END{print m}')
[ -z "$networks" ] && exit 0 fw=$((w1 + 4 + w2 + 4 + w3 + 14))
w1=$(printf '%s\n' "$networks" | awk -F'\t' 'BEGIN{m=12}{l=length($1);if(l>m)m=l}END{print m}') sep=$(awk -v n="$fw" 'BEGIN{for(i=0;i<n;i++)printf "─";print ""}')
w2=$(printf '%s\n' "$networks" | awk -F'\t' 'BEGIN{m=8}{l=length($2);if(l>m)m=l}END{print m}') header=$(printf " %-*s %-*s %s\n%s" "$w1" "Network name" "$w2" "Security" "Signal" "$sep")
w3=$(printf '%s\n' "$networks" | awk -F'\t' 'BEGIN{m=6}{l=length($3);if(l>m)m=l}END{print m}') count=$(printf '%s\n' "$networks" | wc -l)
fw=$((w1 + 4 + w2 + 4 + w3 + 10)) ssid=$(printf '%s\n' "$networks" | \
sep=$(awk -v n="$fw" 'BEGIN{for(i=0;i<n;i++)printf "─";print ""}') awk -F'\t' -v w1="$w1" -v w2="$w2" '{
header=$(printf "%-*s %-*s %s\n%s" "$w1" "Network name" "$w2" "Security" "Signal" "$sep") prefix = ($4 == ">") ? " > " : " "
count=$(printf '%s\n' "$networks" | wc -l) printf "%s%-*s %-*s %s\t%s\n", prefix, w1, $1, w2, $2, $3, $1
ssid=$(printf '%s\n' "$networks" | \ }' | \
awk -F'\t' -v w1="$w1" -v w2="$w2" '{printf "%-*s %-*s %s\t%s\n", w1, $1, w2, $2, $3, $1}' | \ fuzzel --dmenu --prompt="wifi: " --no-icons --lines="$count" \
fuzzel --dmenu --prompt="wifi: " --no-icons --lines="$count" \ --with-nth=1 --accept-nth=2 \
--with-nth=1 --accept-nth=2 \ --mesg="$header" --mesg-mode=expand \
--mesg="$header" --mesg-mode=expand \ --font="monospace:size=12" --width="$fw")
--font="monospace:size=12" --width="$fw") rc=$?
[ -z "$ssid" ] && exit 0 [ "$rc" = 10 ] && continue
[ -z "$ssid" ] && exit 0
break
done
known=$(iwctl known-networks list 2>/dev/null | sed 's/\x1b\[[0-9;]*[a-zA-Z]//g') known=$(iwctl known-networks list 2>/dev/null | sed 's/\x1b\[[0-9;]*[a-zA-Z]//g')
if printf '%s' "$known" | grep -qF "$ssid"; then if printf '%s' "$known" | grep -qF "$ssid"; then
iwctl station "$station" connect "$ssid" iwctl station "$station" connect "$ssid"