fix(scripts): add <c-r> for refresh
This commit is contained in:
parent
dd10d11347
commit
0afc547def
2 changed files with 54 additions and 42 deletions
|
|
@ -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;
|
||||||
|
|
|
||||||
93
scripts/ctl
93
scripts/ctl
|
|
@ -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"
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue