Skip to content

Connect to enterprise (802.1X) Wi-Fi networks from the network panel#6334

Open
KazeTachinuu wants to merge 1 commit into
basecamp:quattrofrom
KazeTachinuu:enterprise-8021x-wifi
Open

Connect to enterprise (802.1X) Wi-Fi networks from the network panel#6334
KazeTachinuu wants to merge 1 commit into
basecamp:quattrofrom
KazeTachinuu:enterprise-8021x-wifi

Conversation

@KazeTachinuu

@KazeTachinuu KazeTachinuu commented Jul 21, 2026

Copy link
Copy Markdown

The network panel only supports PSK Wi-Fi, so eduroam and other 802.1X networks can't be joined from the UI (#2382, #2351, #2076); #6321 imports old iwd networks but leaves enterprise ones for manual re-add.

Detect 802.1X networks from their advertised security type and expand the passphrase prompt with an identity field. Connecting creates the NetworkManager profile with nmcli (PEAP/MSCHAPv2) and activates it through the panel's existing tracking, since Quickshell's networking API can't create profiles. PSK behavior is unchanged.

image

Copilot AI review requested due to automatic review settings July 21, 2026 13:10

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds WPA/WPA2-Enterprise (802.1X) Wi‑Fi join support to the network panel by detecting EAP security and creating the required NetworkManager profile via nmcli, while keeping the existing PSK flow intact.

Changes:

  • Add an enterprise (EAP) credential UI path with an identity field alongside the passphrase prompt.
  • Implement an out-of-band nmcli-driven connect flow for PEAP/MSCHAPv2 networks and hook it into the panel’s existing connect/failure tracking.
  • Introduce a reusable nmcli script string in the panel model for (re)creating and activating the EAP profile.

Tip

If you aren't ready for review, convert to a draft PR.
Click "Convert to draft" or run gh pr ready --undo.
Click "Ready for review" or run gh pr ready to reengage.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 4 comments.

File Description
shell/plugins/panels/network/Panel.qml Adds enterprise detection, identity input, and a Process-based nmcli connect path integrated with existing action tracking.
shell/plugins/panels/network/Model.js Adds the enterpriseConnectScript used by the panel to create/activate an 802.1X NetworkManager profile.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread shell/plugins/panels/network/Panel.qml Outdated
Comment on lines +669 to +671
var wifi = root.networkForSsid(root.actionSsid)
if (wifi) root.failNetworkAction(wifi.network, ConnectionFailReason.WifiClientFailed)
}
Comment thread shell/plugins/panels/network/Panel.qml Outdated

onAccepted: pwField.forceActiveFocus()
onTextChanged: if (row.isPasswordOpen && text !== root.identityText) root.identityText = text
Keys.onEscapePressed: { root.passwordSsid = ""; root.passwordText = "" }
Comment thread shell/plugins/panels/network/Panel.qml Outdated
}
onAccepted: row.submitCredentials()
onTextChanged: if (row.isPasswordOpen && text !== root.passwordText) root.passwordText = text
Keys.onEscapePressed: { root.passwordSsid = ""; root.passwordText = "" }
Comment thread shell/plugins/panels/network/Model.js Outdated
Comment on lines +243 to +249
var enterpriseConnectScript =
"nmcli connection delete id \"$1\" >/dev/null 2>&1;" +
" nmcli connection add type wifi con-name \"$1\" ssid \"$1\"" +
" wifi-sec.key-mgmt wpa-eap 802-1x.eap peap 802-1x.phase2-auth mschapv2" +
" 802-1x.identity \"$2\" 802-1x.password \"$3\" 802-1x.auth-timeout 8" +
" && nmcli connection up id \"$1\"" +
" || { nmcli connection delete id \"$1\" >/dev/null 2>&1; false; }"
Copilot AI review requested due to automatic review settings July 21, 2026 13:40
@KazeTachinuu
KazeTachinuu force-pushed the enterprise-8021x-wifi branch from 8dddec2 to 840832c Compare July 21, 2026 13:40

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 2 out of 2 changed files in this pull request and generated 4 comments.

Comment on lines +580 to +584
function connectEnterprise(ssid, identity, passphrase) {
runNetworkAction("connect", networkForSsid(ssid), function(network) {
Quickshell.execDetached(["bash", "-c", Model.enterpriseConnectScript, "nmcli-eap", ssid, identity, passphrase])
})
}
Comment on lines +581 to +583
runNetworkAction("connect", networkForSsid(ssid), function(network) {
Quickshell.execDetached(["bash", "-c", Model.enterpriseConnectScript, "nmcli-eap", ssid, identity, passphrase])
})
Comment on lines +580 to +584
function connectEnterprise(ssid, identity, passphrase) {
runNetworkAction("connect", networkForSsid(ssid), function(network) {
Quickshell.execDetached(["bash", "-c", Model.enterpriseConnectScript, "nmcli-eap", ssid, identity, passphrase])
})
}

var enterpriseConnectScript =
"u=$(uuidgen);" +
" nmcli connection add type wifi con-name \"$1\" ssid \"$1\" connection.uuid \"$u\"" +
@RushiChaganti

Copy link
Copy Markdown
Contributor

Hey @KazeTachinuu, I’ve implemented this as a migration in my PR (#6321). I think your PR (#6334) is the next step, since you’re working on the UI side of it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants