#!/usr/bin/env sh # include common definitions # shellcheck source=scripts/core/sxmo_common.sh . "$(dirname "$0")/sxmo_common.sh" connections() { ACTIVE="$(nmcli -c no -t c show --active | cut -d: -f1,3 | sed "s/$/ $icon_chk/")" INACTIVE="$(nmcli -c no -t c show | cut -d: -f1,3)" printf %b "$ACTIVE\n$INACTIVE" | sort -u -t: -k1,1 } toggleconnection() { CONNLINE="$1" CONNNAME="$(echo "$CHOICE" | cut -d: -f1)" if echo "$CONNLINE" | grep "$icon_chk"; then RES="$(nmcli c down "$CONNNAME" 2>&1)" else RES="$(nmcli c up "$CONNNAME" 2>&1)" fi notify-send "$RES" } deletenetworkmenu() { CHOICE="$( printf %b "Close Menu\n$(connections)" | dmenu -c -p "Delete Network" -l 14 )" if [ "$CHOICE" = "Close Menu" ]; then return else CONNNAME="$(echo "$CHOICE" | cut -d: -f1)" RES="$(nmcli c delete "$CONNNAME" 2>&1)" notify-send "$RES" fi } getifname() { IFTYPE="$1" IFNAME="$(nmcli d | grep -m 1 "$IFTYPE" | cut -d' ' -f1)" [ -z "$IFNAME" ] && notify-send "No interface with type $IFTYPE found" && IFNAME=lo echo "$IFNAME" } addnetworkgsmmenu() { CONNNAME="$( echo "Close Menu" | sxmo_dmenu_with_kb.sh -c -p "Add GSM: Alias" -l 20 )" [ "$CONNNAME" = "Close Menu" ] && return APN="$( echo "Close Menu" | sxmo_dmenu_with_kb.sh -c -p "Add GSM: APN" -l 20 )" [ "$APN" = "Close Menu" ] && return # TODO: Support gsm bearer username & password nmcli c add \ type gsm \ ifname "$(getifname gsm)" \ con-name "$CONNNAME" \ apn "$APN" } addnetworkwpamenu() { SSID="$( nmcli d wifi list | tail -n +2 | grep -v '^\*' | awk -F' ' '{ print $6 }' | grep -v '\-\-' | xargs -0 printf 'Close Menu\n%s' | sxmo_dmenu_with_kb.sh -c -p "Add WPA: SSID" -l 20 )" [ "$SSID" = "Close Menu" ] && return PASSPHRASE="$( echo "Close Menu" | sxmo_dmenu_with_kb.sh -c -p "Add WPA: Passphrase" -l 20 )" [ "$PASSPHRASE" = "Close Menu" ] && return nmcli c add \ type wifi \ ifname wlan0 \ con-name "$SSID" \ 802-11-wireless-security.key-mgmt wpa-psk \ ssid "$SSID" \ 802-11-wireless-security.psk "$PASSPHRASE" } networksmenu() { while true; do CHOICE="$( printf %b " $(connections) Add a GSM Network Add a WPA Network Add a Hotspot Delete a Network Launch Nmtui Launch Ifconfig Scan Wifi Networks System Menu Close Menu " | awk '{$1=$1};1' | grep '\w' | dmenu -c -p 'Networks' -l 14 )" case "$CHOICE" in "System Menu" ) sxmo_appmenu.sh sys && exit ;; "Close Menu" ) exit ;; "Add a GSM Network" ) addnetworkgsmmenu ;; "Add a WPA Network" ) addnetworkwpamenu ;; "Add a Hotspot" ) sxmo_hotspot.sh ;; "Delete a Network" ) deletenetworkmenu ;; "Launch Nmtui" ) sxmo_terminal.sh nmtui & ;; "Launch Ifconfig" ) sxmo_terminal.sh watch -n 2 ifconfig & ;; "Scan Wifi Networks" ) sxmo_terminal.sh watch -n 2 nmcli d wifi list & ;; *) toggleconnection "$CHOICE" ;; esac done } if [ $# -gt 0 ]; then "$@" else networksmenu fi