From 94dc038e2b56cb2b0409bc801026012bcdd1fab4 Mon Sep 17 00:00:00 2001 From: Lucy Date: Mon, 7 Feb 2022 16:24:11 -0500 Subject: [PATCH] WiFi will now change if something else changes it --- applets/cosmic-applet-network/Cargo.toml | 2 +- applets/cosmic-applet-network/src/ui/toggles.rs | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/applets/cosmic-applet-network/Cargo.toml b/applets/cosmic-applet-network/Cargo.toml index 5ce627ec..f511e5bf 100644 --- a/applets/cosmic-applet-network/Cargo.toml +++ b/applets/cosmic-applet-network/Cargo.toml @@ -6,7 +6,7 @@ license = "LGPL-3.0-or-later" [dependencies] cosmic-dbus-networkmanager = { git = "https://github.com/pop-os/dbus-settings-bindings" } -futures-util = "0.3.19" +futures-util = "0.3.21" gtk4 = "0.4.6" itertools = "0.10.3" once_cell = "1.9.0" diff --git a/applets/cosmic-applet-network/src/ui/toggles.rs b/applets/cosmic-applet-network/src/ui/toggles.rs index d215ef9c..805ec619 100644 --- a/applets/cosmic-applet-network/src/ui/toggles.rs +++ b/applets/cosmic-applet-network/src/ui/toggles.rs @@ -1,5 +1,6 @@ use crate::{task, widgets::SettingsEntry}; use cosmic_dbus_networkmanager::nm::NetworkManager; +use futures_util::StreamExt; use gtk4::{ glib::{self, clone, source::PRIORITY_DEFAULT, MainContext, Sender}, prelude::*, @@ -53,6 +54,18 @@ async fn get_wifi_mode(tx: Sender) -> zbus::Result<()> { let wireless_enabled = network_manager.wireless_enabled().await?; tx.send(wireless_enabled) .expect("Failed to send wifi enablement back to main thread"); + tokio::spawn(async move { + let connection = Connection::system().await?; + let network_manager = NetworkManager::new(&connection).await?; + let mut stream = network_manager.receive_wireless_enabled_changed().await; + while let Some(wireless_enabled) = stream.next().await { + if let Ok(wireless_enabled) = wireless_enabled.get().await { + tx.send(wireless_enabled) + .expect("Failed to send wifi enablement back to main thread"); + } + } + zbus::Result::Ok(()) + }); Ok(()) }