diff options
| author | ATMDA <atdma2600@gmail.com> | 2025-11-13 18:59:48 -0500 |
|---|---|---|
| committer | ATMDA <atdma2600@gmail.com> | 2025-11-13 18:59:48 -0500 |
| commit | 617e686238d3c7155112196043f0883ccf6a7012 (patch) | |
| tree | aa18b05efd2e088a37f9099fb225f93658d07127 /plan.md | |
| parent | controlcenter: created dev panel for wireless testing (diff) | |
| download | caelestia-shell-617e686238d3c7155112196043f0883ccf6a7012.tar.gz caelestia-shell-617e686238d3c7155112196043f0883ccf6a7012.tar.bz2 caelestia-shell-617e686238d3c7155112196043f0883ccf6a7012.zip | |
service: Nmcli.qml
Diffstat (limited to 'plan.md')
| -rw-r--r-- | plan.md | 137 |
1 files changed, 137 insertions, 0 deletions
@@ -0,0 +1,137 @@ +# Nmcli.qml Feature Completion Plan + +This document outlines the missing features needed in `Nmcli.qml` to replace `Network.qml` or rewrite the wireless panel in the control center. + +## Current Status + +`Nmcli.qml` currently has: +- ✅ Device status queries +- ✅ Wireless/Ethernet interface listing +- ✅ Interface connection status checking +- ✅ Basic wireless connection (SSID + password) +- ✅ Disconnect functionality +- ✅ Device details (basic) +- ✅ Interface up/down +- ✅ WiFi scanning +- ✅ SSID listing with signal/security (sorted) + +## Missing Features + +### 1. WiFi Radio Control +- [x] `enableWifi(enabled: bool)` - Turn WiFi radio on/off +- [x] `toggleWifi()` - Toggle WiFi radio state +- [x] `wifiEnabled` property - Current WiFi radio state +- [x] Monitor WiFi radio state changes + +**Implementation Notes:** +- Use `nmcli radio wifi on/off` +- Monitor state with `nmcli radio wifi` +- Update `wifiEnabled` property on state changes + +### 2. Network List Management +- [x] `networks` property - List of AccessPoint objects +- [x] `active` property - Currently active network +- [x] Real-time network list updates +- [x] Network grouping by SSID with signal prioritization +- [x] AccessPoint component/object with properties: + - `ssid`, `bssid`, `strength`, `frequency`, `active`, `security`, `isSecure` + +**Implementation Notes:** +- Use `nmcli -g ACTIVE,SIGNAL,FREQ,SSID,BSSID,SECURITY d w` +- Parse and group networks by SSID +- Prioritize active/connected networks +- Update network list on connection changes + +### 3. Connection Management - BSSID Support +- [x] BSSID support in `connectWireless()` function +- [x] Connection profile creation with BSSID (`createConnectionWithPassword`) +- [x] Handle BSSID in connection commands + +**Implementation Notes:** +- Use `nmcli connection add` with `802-11-wireless.bssid` for BSSID-based connections +- Fallback to SSID-only connection if BSSID not available +- Handle existing connection profiles when BSSID is provided + +### 4. Saved Connection Profile Management +- [x] `savedConnections` property - List of saved connection names +- [x] `savedConnectionSsids` property - List of saved SSIDs +- [x] `hasSavedProfile(ssid: string)` function - Check if profile exists +- [x] `forgetNetwork(ssid: string)` function - Delete connection profile +- [x] Load saved connections on startup +- [x] Update saved connections list after connection changes + +**Implementation Notes:** +- Use `nmcli -t -f NAME,TYPE connection show` to list connections +- Query SSIDs for WiFi connections: `nmcli -t -f 802-11-wireless.ssid connection show <name>` +- Use `nmcli connection delete <name>` to forget networks +- Case-insensitive SSID matching + +### 5. Pending Connection Tracking +- [x] `pendingConnection` property - Track connection in progress +- [x] Connection state tracking with timers +- [x] Connection success/failure detection +- [x] Automatic retry or callback on failure + +**Implementation Notes:** +- Track pending connection with SSID/BSSID +- Use timers to check connection status +- Monitor network list updates to detect successful connection +- Handle connection failures and trigger callbacks + +### 6. Connection Failure Handling +- [x] `connectionFailed(ssid: string)` signal +- [x] Password requirement detection from error messages +- [x] Connection retry logic +- [x] Error message parsing and reporting + +**Implementation Notes:** +- Parse stderr output for password requirements +- Detect specific error patterns (e.g., "Secrets were required") +- Emit signals for UI to handle password dialogs +- Provide meaningful error messages + +### 7. Password Callback Handling +- [x] `connectToNetworkWithPasswordCheck()` function +- [x] Try connection without password first (use saved password) +- [x] Callback on password requirement +- [x] Handle both secure and open networks + +**Implementation Notes:** +- Attempt connection without password for secure networks +- If connection fails with password error, trigger callback +- For open networks, connect directly +- Support callback pattern for password dialogs + +### 8. Device Details Parsing +- [x] Full parsing of `device show` output +- [x] `wirelessDeviceDetails` property with: + - `ipAddress`, `gateway`, `dns[]`, `subnet`, `macAddress` +- [x] `ethernetDeviceDetails` property with: + - `ipAddress`, `gateway`, `dns[]`, `subnet`, `macAddress`, `speed` +- [x] `cidrToSubnetMask()` helper function +- [x] Update device details on connection changes + +**Implementation Notes:** +- Parse `nmcli device show <interface>` output +- Extract IP4.ADDRESS, IP4.GATEWAY, IP4.DNS, etc. +- Convert CIDR notation to subnet mask +- Handle both wireless and ethernet device details + +### 9. Connection Status Monitoring +- [x] Automatic network list refresh on connection changes +- [x] Monitor connection state changes +- [x] Update active network property +- [x] Refresh device details on connection + +**Implementation Notes:** +- Use Process stdout SplitParser to monitor changes +- Trigger network list refresh on connection events +- Update `active` property when connection changes +- Refresh device details when connected + +### 10. Ethernet Device Management +- [x] `ethernetDevices` property - List of ethernet devices +- [x] `activeEthernet` property - Currently active ethernet device +- [x] `connectEthernet(connectionName, interfaceName)` function +- [x] `disconnectEthernet(connectionName)` function +- [x] Ethernet device details parsing |