diff --git a/templates/launch-wifi-menu.sh.j2 b/templates/launch-wifi-menu.sh.j2 index c0b9294..7ff461f 100644 --- a/templates/launch-wifi-menu.sh.j2 +++ b/templates/launch-wifi-menu.sh.j2 @@ -1,20 +1,33 @@ #!/bin/bash -# Et simpelt script til at vælge Wi-Fi og lade nm-applet håndtere passwords. +# Et robust script til at vælge og forbinde til Wi-Fi, +# der åbner en ny terminal for at spørge om password. # Viser listen af netværk i vores stylede wofi-menu -SSID=$(nmcli -t -f SSID,IN-USE device wifi list --rescan yes | sed '/\*/d' | sed 's/\\:/-/g' | sort -u | wofi \ +CHOSEN_SSID=$(nmcli -t -f SSID,IN-USE device wifi list --rescan yes | sed '/\*/d' | sed 's/\\:/-/g' | sort -u | wofi \ --show dmenu \ --conf "$HOME/.config/wofi/config-network" \ --style "$HOME/.config/wofi/style.css" \ -p "Vælg Wi-Fi Netværk") -# Afslut hvis intet blev valgt -if [ -z "$SSID" ]; then +# Afslut hvis intet blev valgt (brugeren trykkede Esc) +if [ -z "$CHOSEN_SSID" ]; then exit 0 fi -# Prøv at forbinde. -# Hvis netværket kræver et password, og det ikke er gemt, vil den kørende -# nm-applet agent nu automatisk åbne en pæn grafisk dialogboks. -nmcli device wifi connect "$SSID" +# Tjek om vi allerede er forbundet til det valgte netværk +# '-w' for præcist match, '-q' for stille +if nmcli connection show --active | grep -wq "^${CHOSEN_SSID}"; then + # Hvis ja, så gør intet. + exit 0 +fi + +# Tjek om der findes en gemt forbindelse med dette navn +if nmcli connection show | grep -wq "^${CHOSEN_SSID}"; then + # Hvis ja, aktiver den i et nyt terminalvindue, så brugeren ser status. + kitty --title "Forbinder til Wi-Fi..." bash -c "nmcli connection up '$CHOSEN_SSID'; read -p 'Forbindelse aktiveret. Tryk Enter for at lukke.'" +else + # Hvis nej, er det et nyt netværk. + # Åbn en ny terminal, der kører 'nmcli' med '--ask' flaget for at bede om password. + kitty --title "Netværks-adgangskode" bash -c "nmcli device wifi connect '$CHOSEN_SSID' --ask; read -p 'Tryk Enter for at lukke...'" +fi