Experimental network management GUI added. This may be broken.

This commit is contained in:
Storm Dragon committed 2026-11-08 00:49:40 -05:00
1 parent f18b6955a9
commit f3a082219a
5 files changed
+1110

No files matched your search

+77
View File
@@ -37,6 +37,7 @@ Optional features use these packages when installed:
- libnotify: For sending notifications
- magic-wormhole: [optional] for file sharing with magic-wormhole GUI
- notification-daemon: To handle notifications
- networkmanager: [optional] for the Network panel, including libnm's GObject introspection data.
- pamixer: for the mute-unmute script
- pcmanfm: [optional] Graphical file manager.
- playerctl: music controls
@@ -110,6 +111,82 @@ Personal (if configured), and Bypass modes; check existing mode sounds and
Cthulhu's native mode speech. Also check battery status, OCR, and USB alerts if
enabled. Automated checks do not prove audible output or physical key behavior.
## Network Panel (Optional)
Press Control+Alt+Tab, then Shift+N to open the accessible wired/Wi-Fi panel.
It requires NetworkManager/libnm 1.30 or newer and its `NM-1.0` introspection
data, plus I38's existing Python/PyGObject/GTK 3 dependencies. On Stormux,
connection management requires membership in `network` in the current session
and an appropriate polkit policy. The GUI never elevates or requests an
administrator password. If permissions or its process-specific protection
against authentication prompts are unavailable, it remains usable for viewing
connection information. No group membership or policy is changed by the panel.
Try the source directly before updating your installation:
```bash
python3 -B scripts/network.py
```
Use the arrows to select a connection; Tab to Connect, Disconnect, Refresh,
Details, or Close. Selection alone does not connect or disconnect. Type a
case-insensitive name prefix to filter. Escape clears the filter, then closes
the window. Nearby access points with the same SSID and security are combined
per adapter, while distinct saved profiles remain selectable. Existing rows
retain their order and selection when scans change. Signal strength is available
in Details; fluctuations do not rewrite the focused row.
New personal Wi-Fi networks use an accessible GTK password dialog. Remember
password saves through NetworkManager with the system-wide profile, under its
access controls. Without remembering, a new profile is saved without its
password and with autoconnect disabled. Existing profiles can request another
password, including after a wrong-password failure. Saving a replacement
requires modification permission; otherwise it is used only for that attempt.
I38 stores no passwords itself. Enterprise/hidden-network setup, VPN setup, and
advanced IP/DNS editing are not included. Closing the window leaves established
connections running. See the Network Connections section of the I38 guide.
For the installed binding, review the diff and regenerate your I38 configuration,
then reload i3. `./i38.sh -u` copies scripts but does not add Shift+N to existing
bindings. Regeneration uses your saved preferences; review them first.
Automated checks (no host connections are changed):
```bash
dbus-run-session -- env I38_PRIVATE_NETWORK_TEST=1 python3 -B -m unittest discover -s tests -p test_network.py -v
xvfb-run -a dbus-run-session -- env -u AT_SPI_BUS_ADDRESS I38_PRIVATE_NETWORK_GUI_TEST=1 python3 -B tests/native_network_gui.py -v
```
For a native check against the running NetworkManager and polkit services, add
`I38_NETWORK_LIVE_READONLY_TEST=1` to the second command's environment. It reads
connection information, registers the panel's temporary agents, and checks that
a polkit challenge for this process is declined when the local policy offers
one. It does not activate, disconnect, scan, or modify connections or policy.
Before submission, review and test the changes as required by this project's
AI-assisted contributions policy. For live testing with Cthulhu and Orca:
1. Open the source panel. Check initial selection, complete row announcements,
prefix search, Tab/Shift+Tab, status review, Details, and Escape. Check Braille
if available. Refresh must preserve focus and selection without repeated
signal-strength announcements.
2. Join a test Wi-Fi network. Check password masking, Show password, Remember
password, cancellation, an incorrect password, a correct retry, and reopening
the panel. Verify remembered credentials reconnect and an unremembered new
profile requires its password again. No administrator dialog should appear.
3. Check an existing wired connection and Wi-Fi, including both active together,
disconnect/reconnect, Wi-Fi disabled/enabled, and hardware wireless blocking
if available. Confirm normal networking still works after the panel closes.
4. If a restricted test account is available, check that missing `network`
membership or denied authorization leaves information readable and changes
disabled. A policy change while a password dialog is open must be rechecked.
5. After configuration regeneration, check Panel Mode Shift+N, existing lowercase
`n` for Notes, F1 help, and the other panel bindings. Opening the network panel
twice should focus its existing window.
Private GTK and D-Bus checks do not establish audible speech, Braille, physical
key behavior, or successful live connection/password persistence.
## USB Connection Alerts (Optional)
Setup offers USB connection sounds and spoken device names separately from window