Round 307: NetworkManager ext, Nmcli ext, WPA Supplicant ext, Iw ext, Hostapd ext (20 commands)

ober

70d77f52de78bc1f4ef14c5a091d2558803a8fb3

diff --git a/docs/jemacs-vs-emacs.md b/docs/jemacs-vs-emacs.md
index 107cf60..569f26a 100644
--- a/docs/jemacs-vs-emacs.md
+++ b/docs/jemacs-vs-emacs.md
@@ -4583,6 +4583,31 @@ No remaining Tier 1 gaps. All core editing, completion, and navigation features 
 | ebib-import-file | :orange_circle: | Import file into Ebib |
 | ebib-push-citation | :orange_circle: | Push Ebib citation to buffer |
 
+### Round 307 — NetworkManager ext, Nmcli ext, WPA Supplicant ext, Iw ext, Hostapd ext
+
+| Command | Status | Description |
+|---------|--------|-------------|
+| networkmanager-list | :orange_circle: | List NM connections |
+| networkmanager-connect | :orange_circle: | Connect NM |
+| networkmanager-disconnect | :orange_circle: | Disconnect NM |
+| networkmanager-wifi-scan | :orange_circle: | Scan WiFi |
+| nmcli-device | :orange_circle: | List nmcli devices |
+| nmcli-connection | :orange_circle: | List nmcli connections |
+| nmcli-general | :orange_circle: | Nmcli general status |
+| nmcli-radio | :orange_circle: | Nmcli radio status |
+| wpa-supplicant-scan | :orange_circle: | WPA scan networks |
+| wpa-supplicant-connect | :orange_circle: | WPA connect |
+| wpa-supplicant-status | :orange_circle: | WPA status |
+| wpa-supplicant-disconnect | :orange_circle: | WPA disconnect |
+| iw-scan | :orange_circle: | Iw WiFi scan |
+| iw-link | :orange_circle: | Iw link status |
+| iw-info | :orange_circle: | Iw interface info |
+| iw-station | :orange_circle: | Iw station info |
+| hostapd-start | :orange_circle: | Start hostapd |
+| hostapd-stop | :orange_circle: | Stop hostapd |
+| hostapd-status | :orange_circle: | Show hostapd status |
+| hostapd-config | :orange_circle: | View hostapd config |
+
 ### Round 306 — PulseAudio ext, PipeWire ext, ALSA ext, JACK ext, Bluez ext
 
 | Command | Status | Description |
diff --git a/src/jerboa-emacs/editor-extra-final.ss b/src/jerboa-emacs/editor-extra-final.ss
index f80f129..7a018ed 100644
--- a/src/jerboa-emacs/editor-extra-final.ss
+++ b/src/jerboa-emacs/editor-extra-final.ss
@@ -23307,4 +23307,48 @@
   (let* ((echo (app-state-echo app)))
     (echo-read-string echo "Device MAC: "
       (lambda (mac)
-        (echo-message! echo (str "Bluez: disconnecting " mac))))))
\ No newline at end of file
+        (echo-message! echo (str "Bluez: disconnecting " mac))))))
+
+;;; Round 307 — WPA Supplicant ext, Iw ext, Hostapd ext (batch 2)
+
+(def (cmd-wpa-supplicant-status app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "WPA: showing status")))
+
+(def (cmd-wpa-supplicant-disconnect app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "WPA: disconnecting")))
+
+(def (cmd-iw-scan app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Iw: scanning WiFi")))
+
+(def (cmd-iw-link app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Iw: showing link status")))
+
+(def (cmd-iw-info app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Interface: "
+      (lambda (iface)
+        (echo-message! echo (str "Iw: info for " iface))))))
+
+(def (cmd-iw-station app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Iw: showing station info")))
+
+(def (cmd-hostapd-start app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Hostapd: starting access point")))
+
+(def (cmd-hostapd-stop app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Hostapd: stopping access point")))
+
+(def (cmd-hostapd-status app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Hostapd: showing status")))
+
+(def (cmd-hostapd-config app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Hostapd: viewing configuration")))
\ No newline at end of file
diff --git a/src/jerboa-emacs/editor-extra-modes.ss b/src/jerboa-emacs/editor-extra-modes.ss
index 07cdcb0..b42b823 100644
--- a/src/jerboa-emacs/editor-extra-modes.ss
+++ b/src/jerboa-emacs/editor-extra-modes.ss
@@ -24030,3 +24030,51 @@
       (lambda (vol)
         (echo-message! echo (str "ALSA: volume " vol "%"))))))
 
+;;; Round 307 — NetworkManager ext, Nmcli ext, WPA Supplicant ext (batch 1)
+
+(def (cmd-networkmanager-list app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "NetworkManager: listing connections")))
+
+(def (cmd-networkmanager-connect app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Connection: "
+      (lambda (conn)
+        (echo-message! echo (str "NetworkManager: connecting " conn))))))
+
+(def (cmd-networkmanager-disconnect app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Connection: "
+      (lambda (conn)
+        (echo-message! echo (str "NetworkManager: disconnecting " conn))))))
+
+(def (cmd-networkmanager-wifi-scan app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "NetworkManager: scanning WiFi")))
+
+(def (cmd-nmcli-device app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Nmcli: listing devices")))
+
+(def (cmd-nmcli-connection app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Nmcli: listing connections")))
+
+(def (cmd-nmcli-general app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Nmcli: general status")))
+
+(def (cmd-nmcli-radio app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Nmcli: radio status")))
+
+(def (cmd-wpa-supplicant-scan app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "WPA: scanning networks")))
+
+(def (cmd-wpa-supplicant-connect app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "SSID: "
+      (lambda (ssid)
+        (echo-message! echo (str "WPA: connecting to " ssid))))))
+
diff --git a/src/jerboa-emacs/editor-extra-regs2.ss b/src/jerboa-emacs/editor-extra-regs2.ss
index 0059fc2..a02e37b 100644
--- a/src/jerboa-emacs/editor-extra-regs2.ss
+++ b/src/jerboa-emacs/editor-extra-regs2.ss
@@ -7864,4 +7864,25 @@
   (register-command! 'bluez-pair cmd-bluez-pair)
   (register-command! 'bluez-connect cmd-bluez-connect)
   (register-command! 'bluez-disconnect cmd-bluez-disconnect)
+  ;; Round 307
+  (register-command! 'networkmanager-list cmd-networkmanager-list)
+  (register-command! 'networkmanager-connect cmd-networkmanager-connect)
+  (register-command! 'networkmanager-disconnect cmd-networkmanager-disconnect)
+  (register-command! 'networkmanager-wifi-scan cmd-networkmanager-wifi-scan)
+  (register-command! 'nmcli-device cmd-nmcli-device)
+  (register-command! 'nmcli-connection cmd-nmcli-connection)
+  (register-command! 'nmcli-general cmd-nmcli-general)
+  (register-command! 'nmcli-radio cmd-nmcli-radio)
+  (register-command! 'wpa-supplicant-scan cmd-wpa-supplicant-scan)
+  (register-command! 'wpa-supplicant-connect cmd-wpa-supplicant-connect)
+  (register-command! 'wpa-supplicant-status cmd-wpa-supplicant-status)
+  (register-command! 'wpa-supplicant-disconnect cmd-wpa-supplicant-disconnect)
+  (register-command! 'iw-scan cmd-iw-scan)
+  (register-command! 'iw-link cmd-iw-link)
+  (register-command! 'iw-info cmd-iw-info)
+  (register-command! 'iw-station cmd-iw-station)
+  (register-command! 'hostapd-start cmd-hostapd-start)
+  (register-command! 'hostapd-stop cmd-hostapd-stop)
+  (register-command! 'hostapd-status cmd-hostapd-status)
+  (register-command! 'hostapd-config cmd-hostapd-config)
 )