[gnome-shell] status/network: Show WireGuard connections in VPN list
- From: Marge Bot <marge-bot src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell] status/network: Show WireGuard connections in VPN list
- Date: Mon, 23 May 2022 18:04:09 +0000 (UTC)
commit b5ace213a1faae2d4177afdc7d6c84fd96667354
Author: Christian Glombek <lorbus fedoraproject org>
Date: Sun Oct 3 19:49:27 2021 +0200
status/network: Show WireGuard connections in VPN list
With this change, WireGuard connections, and an on/off toggle button
or a status description for each are shown in the VPN section of the
Gnome Shell network status UI.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1995>
js/ui/status/network.js | 70 ++++++++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 69 insertions(+), 1 deletion(-)
---
diff --git a/js/ui/status/network.js b/js/ui/status/network.js
index 289c323ed3..967fa0d9d8 100644
--- a/js/ui/status/network.js
+++ b/js/ui/status/network.js
@@ -1435,6 +1435,70 @@ var NMDeviceWireless = class {
};
Signals.addSignalMethods(NMDeviceWireless.prototype);
+var NMWireguardItem = class extends NMConnectionItem {
+ _buildUI() {
+ this.labelItem = new PopupMenu.PopupMenuItem('');
+ this.labelItem.connect('activate', this._activate.bind(this));
+
+ this.radioItem = new PopupMenu.PopupSwitchMenuItem(this._connection.get_id(), false);
+ this.radioItem.connect('toggled', this._toggle.bind(this));
+ }
+
+ _sync() {
+ let isActive = this.isActive();
+ this.labelItem.label.text = isActive ? _('Turn Off') : this._section.getConnectLabel();
+ this.radioItem.setToggleState(isActive);
+ this.radioItem.setStatus(this._getStatus());
+ this.emit('icon-changed');
+ }
+
+ _getStatus() {
+ if (this._activeConnection === null)
+ return null;
+
+ switch (this._activeConnection.state) {
+ case NM.ActiveConnectionState.UNKNOWN:
+ return _('unknown');
+ case NM.ActiveConnectionState.ACTIVATING:
+ return _('activating…');
+ case NM.ActiveConnectionState.ACTIVATED:
+ return null;
+ case NM.ActiveConnectionState.DEACTIVATING:
+ return _('deactivating…');
+ case NM.ActiveConnectionState.DEACTIVATED:
+ return _('deactivated');
+ default:
+ return 'invalid';
+ }
+ }
+
+ _connectionStateChanged(ac, newstate, reason) {
+ if (newstate === NM.ActiveConnectionState.DEACTIVATED &&
+ reason !== NM.ActiveConnectionStateReason.NO_SECRETS) {
+ // FIXME: if we ever want to show something based on reason,
+ // we need to convert from NM.ActiveConnectionStateReason
+ // to NM.DeviceStateReason
+ this.emit('activation-failed', reason);
+ }
+
+ this.emit('icon-changed');
+ super._connectionStateChanged();
+ }
+
+ getIndicatorIcon() {
+ if (this._activeConnection) {
+ if (this._activeConnection.state === NM.ActiveConnectionState.UNKNOWN)
+ return '';
+ else if (this._activeConnection.state < NM.ActiveConnectionState.ACTIVATED)
+ return 'network-vpn-acquiring-symbolic';
+ else
+ return 'network-vpn-symbolic';
+ } else {
+ return '';
+ }
+ }
+};
+
var NMVpnConnectionItem = class extends NMConnectionItem {
isActive() {
if (this._activeConnection == null)
@@ -1577,6 +1641,9 @@ var NMVpnSection = class extends NMConnectionSection {
}
_makeConnectionItem(connection) {
+ if (connection.get_connection_type() === 'wireguard')
+ return new NMWireguardItem(this, connection);
+
return new NMVpnConnectionItem(this, connection);
}
@@ -1676,6 +1743,7 @@ class Indicator extends PanelMenu.SystemIndicator {
this._ctypes[NM.SETTING_CDMA_SETTING_NAME] = NMConnectionCategory.WWAN;
this._ctypes[NM.SETTING_GSM_SETTING_NAME] = NMConnectionCategory.WWAN;
this._ctypes[NM.SETTING_VPN_SETTING_NAME] = NMConnectionCategory.VPN;
+ this._ctypes[NM.SETTING_WIREGUARD_SETTING_NAME] = NMConnectionCategory.VPN;
this._getClient();
}
@@ -1913,7 +1981,7 @@ class Indicator extends PanelMenu.SystemIndicator {
_syncVpnConnections() {
let activeConnections = this._client.get_active_connections() || [];
let vpnConnections = activeConnections.filter(
- a => a instanceof NM.VpnConnection);
+ a => a instanceof NM.VpnConnection || a.get_connection_type() === 'wireguard');
vpnConnections.forEach(a => {
ensureActiveConnectionProps(a);
});
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]