diff --git a/data/24/network-cellular-signal-excellent-secure-symbolic.svg b/data/24/network-cellular-signal-excellent-secure-symbolic.svg
deleted file mode 100644
index 12990e37a..000000000
--- a/data/24/network-cellular-signal-excellent-secure-symbolic.svg
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
diff --git a/data/24/network-cellular-signal-good-secure-symbolic.svg b/data/24/network-cellular-signal-good-secure-symbolic.svg
deleted file mode 100644
index 0291318c3..000000000
--- a/data/24/network-cellular-signal-good-secure-symbolic.svg
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
diff --git a/data/24/network-cellular-signal-none-secure-symbolic.svg b/data/24/network-cellular-signal-none-secure-symbolic.svg
deleted file mode 100644
index 076fb28b4..000000000
--- a/data/24/network-cellular-signal-none-secure-symbolic.svg
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
diff --git a/data/24/network-cellular-signal-ok-secure-symbolic.svg b/data/24/network-cellular-signal-ok-secure-symbolic.svg
deleted file mode 100644
index 7ce7017bd..000000000
--- a/data/24/network-cellular-signal-ok-secure-symbolic.svg
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
diff --git a/data/24/network-cellular-signal-weak-secure-symbolic.svg b/data/24/network-cellular-signal-weak-secure-symbolic.svg
deleted file mode 100644
index d38fe12d9..000000000
--- a/data/24/network-cellular-signal-weak-secure-symbolic.svg
+++ /dev/null
@@ -1,25 +0,0 @@
-
-
diff --git a/data/24/network-wired-secure-symbolic.svg b/data/24/network-wired-secure-symbolic.svg
deleted file mode 100644
index 40ae55358..000000000
--- a/data/24/network-wired-secure-symbolic.svg
+++ /dev/null
@@ -1,30 +0,0 @@
-
-
diff --git a/data/24/network-wireless-signal-excellent-secure-symbolic.svg b/data/24/network-wireless-signal-excellent-secure-symbolic.svg
deleted file mode 100644
index a20eb3612..000000000
--- a/data/24/network-wireless-signal-excellent-secure-symbolic.svg
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
diff --git a/data/24/network-wireless-signal-good-secure-symbolic.svg b/data/24/network-wireless-signal-good-secure-symbolic.svg
deleted file mode 100644
index 27575dd76..000000000
--- a/data/24/network-wireless-signal-good-secure-symbolic.svg
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
diff --git a/data/24/network-wireless-signal-ok-secure-symbolic.svg b/data/24/network-wireless-signal-ok-secure-symbolic.svg
deleted file mode 100644
index 1a2c1f8e6..000000000
--- a/data/24/network-wireless-signal-ok-secure-symbolic.svg
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
diff --git a/data/24/network-wireless-signal-weak-secure-symbolic.svg b/data/24/network-wireless-signal-weak-secure-symbolic.svg
deleted file mode 100644
index b77752b01..000000000
--- a/data/24/network-wireless-signal-weak-secure-symbolic.svg
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
diff --git a/data/network.gresource.xml b/data/network.gresource.xml
index 0a4332597..597231290 100644
--- a/data/network.gresource.xml
+++ b/data/network.gresource.xml
@@ -16,25 +16,15 @@
24/network-cellular-no-route-symbolic.svg
24/network-cellular-offline-symbolic.svg
- 24/network-cellular-signal-excellent-secure-symbolic.svg
24/network-cellular-signal-excellent-symbolic.svg
- 24/network-cellular-signal-good-secure-symbolic.svg
24/network-cellular-signal-good-symbolic.svg
- 24/network-cellular-signal-none-secure-symbolic.svg
24/network-cellular-signal-none-symbolic.svg
- 24/network-cellular-signal-ok-secure-symbolic.svg
24/network-cellular-signal-ok-symbolic.svg
- 24/network-cellular-signal-weak-secure-symbolic.svg
24/network-cellular-signal-weak-symbolic.svg
- 24/network-cellular-signal-excellent-secure-symbolic.svg
24/network-cellular-signal-excellent-symbolic.svg
- 24/network-cellular-signal-good-secure-symbolic.svg
24/network-cellular-signal-good-symbolic.svg
- 24/network-cellular-signal-none-secure-symbolic.svg
24/network-cellular-signal-none-symbolic.svg
- 24/network-cellular-signal-ok-secure-symbolic.svg
24/network-cellular-signal-ok-symbolic.svg
- 24/network-cellular-signal-weak-secure-symbolic.svg
24/network-cellular-signal-weak-symbolic.svg
16/network-vpn-acquiring-symbolic.svg
@@ -57,7 +47,6 @@
24/network-wired-connected-symbolic.svg
24/network-wired-no-route-symbolic.svg
24/network-wired-offline-symbolic.svg
- 24/network-wired-secure-symbolic.svg
24/network-wireless-no-route-symbolic.svg
24/network-wireless-offline-symbolic.svg
@@ -69,21 +58,13 @@
16/network-wireless-signal-ok-symbolic.svg
16/network-wireless-signal-weak-symbolic.svg
- 24/network-wireless-signal-excellent-secure-symbolic.svg
24/network-wireless-signal-excellent-symbolic.svg
- 24/network-wireless-signal-good-secure-symbolic.svg
24/network-wireless-signal-good-symbolic.svg
- 24/network-wireless-signal-ok-secure-symbolic.svg
24/network-wireless-signal-ok-symbolic.svg
- 24/network-wireless-signal-weak-secure-symbolic.svg
24/network-wireless-signal-weak-symbolic.svg
- 24/network-wireless-signal-excellent-secure-symbolic.svg
24/network-wireless-signal-excellent-symbolic.svg
- 24/network-wireless-signal-good-secure-symbolic.svg
24/network-wireless-signal-good-symbolic.svg
- 24/network-wireless-signal-ok-secure-symbolic.svg
24/network-wireless-signal-ok-symbolic.svg
- 24/network-wireless-signal-weak-secure-symbolic.svg
24/network-wireless-signal-weak-symbolic.svg
diff --git a/data/network.metainfo.xml.in b/data/network.metainfo.xml.in
index db2f4154f..dfcea1761 100644
--- a/data/network.metainfo.xml.in
+++ b/data/network.metainfo.xml.in
@@ -109,6 +109,7 @@
+ Separate VPN icon from network icon
VPN switch jumps due to WiFi list height change
Network adapter names aren't truncated
Disabled wireless inconsistent
diff --git a/src/Indicator.vala b/src/Indicator.vala
index eda2b30e3..0aa75762f 100644
--- a/src/Indicator.vala
+++ b/src/Indicator.vala
@@ -52,7 +52,6 @@ public class Network.Indicator : Wingpanel.Indicator {
popover_widget = new Widgets.PopoverWidget (is_in_session);
popover_widget.notify["state"].connect (on_state_changed);
- popover_widget.notify["secure"].connect (on_state_changed);
popover_widget.notify["extra-info"].connect (on_state_changed);
popover_widget.settings_shown.connect (() => { close (); });
@@ -98,7 +97,7 @@ public class Network.Indicator : Wingpanel.Indicator {
assert (popover_widget != null);
assert (display_widget != null);
- display_widget.update_state (popover_widget.state, popover_widget.secure, popover_widget.extra_info);
+ display_widget.update_state (popover_widget.state, popover_widget.extra_info);
update_tooltip ();
}
diff --git a/src/Widgets/DisplayWidget.vala b/src/Widgets/DisplayWidget.vala
index 6d958f37a..bd9b6f066 100644
--- a/src/Widgets/DisplayWidget.vala
+++ b/src/Widgets/DisplayWidget.vala
@@ -7,6 +7,9 @@ public class Network.Widgets.DisplayWidget : Gtk.Box {
private Gtk.Image image;
private Gtk.Label extra_info_label;
private Gtk.Revealer extra_info_revealer;
+ private Gtk.Revealer vpn_revealer;
+ private NM.Client nm_client;
+ private NM.VpnConnection? active_vpn_connection = null;
private uint wifi_animation_timeout;
private int wifi_animation_state = 0;
@@ -29,11 +32,29 @@ public class Network.Widgets.DisplayWidget : Gtk.Box {
transition_type = SLIDE_LEFT
};
+ var vpn_image = new Gtk.Image.from_icon_name ("network-vpn-connected-symbolic", Gtk.IconSize.MENU) {
+ margin_start = 6
+ };
+
+ vpn_revealer = new Gtk.Revealer () {
+ transition_type = Gtk.RevealerTransitionType.SLIDE_LEFT
+ };
+ vpn_revealer.add (vpn_image);
+
add (image);
add (extra_info_revealer);
+
+ try {
+ nm_client = new NM.Client ();
+
+ update_vpn_connection ();
+ nm_client.notify["active-connections"].connect (update_vpn_connection);
+ } catch (Error e) {
+ critical (e.message);
+ }
}
- public void update_state (Network.State state, bool secure, string? extra_info = null) {
+ public void update_state (Network.State state, string? extra_info = null) {
extra_info_revealer.reveal_child = extra_info != null;
extra_info_label.label = extra_info;
@@ -55,19 +76,19 @@ public class Network.Widgets.DisplayWidget : Gtk.Box {
image.icon_name = "panel-network-wired-acquiring-symbolic";
break;
case Network.State.CONNECTED_WIRED:
- image.icon_name = "panel-network-wired-%ssymbolic".printf (secure? "secure-" : "connected-");
+ image.icon_name = "panel-network-wired-connected-symbolic";
break;
case Network.State.CONNECTED_WIFI_WEAK:
- image.icon_name = "panel-network-wireless-signal-weak-%ssymbolic".printf (secure? "secure-" : "");
+ image.icon_name = "panel-network-wireless-signal-weak-symbolic";
break;
case Network.State.CONNECTED_WIFI_OK:
- image.icon_name = "panel-network-wireless-signal-ok-%ssymbolic".printf (secure? "secure-" : "");
+ image.icon_name = "panel-network-wireless-signal-ok-symbolic";
break;
case Network.State.CONNECTED_WIFI_GOOD:
- image.icon_name = "panel-network-wireless-signal-good-%ssymbolic".printf (secure? "secure-" : "");
+ image.icon_name = "panel-network-wireless-signal-good-symbolic";
break;
case Network.State.CONNECTED_WIFI_EXCELLENT:
- image.icon_name = "panel-network-wireless-signal-excellent-%ssymbolic".printf (secure? "secure-" : "");
+ image.icon_name = "panel-network-wireless-signal-excellent-symbolic";
break;
case Network.State.CONNECTING_WIFI:
wifi_animation_timeout = Timeout.add (300, () => {
@@ -87,21 +108,21 @@ public class Network.Widgets.DisplayWidget : Gtk.Box {
strength = "excellent";
break;
}
- image.icon_name = "panel-network-wireless-signal-" + strength + (secure? "-secure" : "") + "-symbolic";
+ image.icon_name = "panel-network-wireless-signal-%s-symbolic".printf (strength);
return true;
});
break;
case Network.State.CONNECTED_MOBILE_WEAK:
- image.icon_name = "panel-network-cellular-signal-weak-%ssymbolic".printf (secure ? "secure-" : "");
+ image.icon_name = "panel-network-cellular-signal-weak-symbolic";
break;
case Network.State.CONNECTED_MOBILE_OK:
- image.icon_name = "panel-network-cellular-signal-ok-%ssymbolic".printf (secure ? "secure-" : "");
+ image.icon_name = "panel-network-cellular-signal-ok-symbolic";
break;
case Network.State.CONNECTED_MOBILE_GOOD:
- image.icon_name = "panel-network-cellular-signal-good-%ssymbolic".printf (secure ? "secure-" : "");
+ image.icon_name = "panel-network-cellular-signal-good-symbolic";
break;
case Network.State.CONNECTED_MOBILE_EXCELLENT:
- image.icon_name = "panel-network-cellular-signal-excellent-%ssymbolic".printf (secure ? "secure-" : "");
+ image.icon_name = "panel-network-cellular-signal-excellent-symbolic";
break;
case Network.State.CONNECTING_MOBILE:
cellular_animation_timeout = Timeout.add (300, () => {
@@ -122,7 +143,7 @@ public class Network.Widgets.DisplayWidget : Gtk.Box {
break;
}
- image.icon_name = "panel-network-cellular-signal-" + strength + (secure ? "secure-" : "") + "-symbolic";
+ image.icon_name = "panel-network-cellular-signal-%s-symbolic".printf (strength);
return true;
});
break;
@@ -143,4 +164,26 @@ public class Network.Widgets.DisplayWidget : Gtk.Box {
break;
}
}
+
+ private void update_vpn_connection () {
+ active_vpn_connection.vpn_state_changed.disconnect (reveal_vpn);
+ active_vpn_connection = null;
+
+ nm_client.get_active_connections ().foreach ((connection) => {
+ if (active_vpn_connection == null && connection.vpn) {
+ active_vpn_connection = (NM.VpnConnection) connection;
+ active_vpn_connection.vpn_state_changed.connect (reveal_vpn);
+ }
+ });
+
+ reveal_vpn ();
+ }
+
+ private void reveal_vpn () {
+ if (active_vpn_connection != null && active_vpn_connection.get_vpn_state () == NM.VpnConnectionState.ACTIVATED) {
+ vpn_revealer.reveal_child = true;
+ } else {
+ vpn_revealer.reveal_child = false;
+ }
+ }
}
diff --git a/src/Widgets/PopoverWidget.vala b/src/Widgets/PopoverWidget.vala
index e056d5197..0f948b4e3 100644
--- a/src/Widgets/PopoverWidget.vala
+++ b/src/Widgets/PopoverWidget.vala
@@ -8,7 +8,6 @@ public class Network.Widgets.PopoverWidget : Gtk.Box {
public GLib.List? network_interface { get; private owned set; }
- public bool secure { private set; get; default = false; }
public string? extra_info { private set; get; default = null; }
public Network.State state { private set; get; default = Network.State.CONNECTING_WIRED; }
@@ -125,7 +124,6 @@ public class Network.Widgets.PopoverWidget : Gtk.Box {
toggle_revealer.reveal_child = other_box.get_child_at_index (0) != null;
show_all ();
- update_vpn_connection ();
hidden_item.clicked.connect (() => {
bool found = false;
@@ -140,7 +138,6 @@ public class Network.Widgets.PopoverWidget : Gtk.Box {
/* Monitor network manager */
nm_client.device_added.connect (device_added_cb);
nm_client.device_removed.connect (device_removed_cb);
- nm_client.notify["active-connections"].connect (update_vpn_connection);
nm_client.notify["networking-enabled"].connect (update_state);
vpn_interface.notify["state"].connect (update_state);
@@ -312,28 +309,4 @@ public class Network.Widgets.PopoverWidget : Gtk.Box {
state = next_state;
}
}
-
- private void update_vpn_connection () {
- /* Stupid heuristic for now: at least one connection must be secure to
- * display the secure badge. */
- // Reset the current status
- secure = false;
- nm_client.get_active_connections ().foreach ((ac) => {
- unowned string connection_type = ac.get_connection_type ();
- if (connection_type == NM.SettingVpn.SETTING_NAME) {
- /* We cannot rely on the sole state_changed signal, as it will
- * silently ignore sub-vpn specific states, like tun/tap
- * interface connection etc. That's why we keep a separate
- * implementation for the signal handlers. */
- var _connection = (NM.VpnConnection) ac;
- secure = secure || (_connection.get_vpn_state () == NM.VpnConnectionState.ACTIVATED);
- _connection.vpn_state_changed.disconnect (update_vpn_connection);
- _connection.vpn_state_changed.connect (update_vpn_connection);
- } else if (connection_type == NM.SettingWireGuard.SETTING_NAME) {
- secure = secure || (ac.get_state () == NM.ActiveConnectionState.ACTIVATED);
- ac.state_changed.disconnect (update_vpn_connection);
- ac.state_changed.connect (update_vpn_connection);
- }
- });
- }
}