File 0001-rfkill-Sync-Network-Manager-WirelessEnabled-state.patch of Package gnome-settings-daemon
From a47ebd099a1fbd5371540ba5eb60a67c71433f06 Mon Sep 17 00:00:00 2001
From: Alynx Zhou <alynx.zhou@gmail.com>
Date: Mon, 4 Aug 2025 20:05:12 +0800
Subject: [PATCH] rfkill: Sync Network Manager WirelessEnabled state
Network Manager will load state from file on startup, if we don't sync
WirelessEnabled state, it will turn off Wi-Fi and break previous
airplane state after reboot.
---
plugins/rfkill/gsd-rfkill-manager.c | 31 +++++++++++++++++++++++++++++
1 file changed, 31 insertions(+)
diff --git a/plugins/rfkill/gsd-rfkill-manager.c b/plugins/rfkill/gsd-rfkill-manager.c
index 1b92fd17..2fefd2c9 100644
--- a/plugins/rfkill/gsd-rfkill-manager.c
+++ b/plugins/rfkill/gsd-rfkill-manager.c
@@ -423,6 +423,27 @@ rfkill_set_cb (GObject *source_object,
}
}
+static void
+set_wireless_complete (GObject *object,
+ GAsyncResult *result,
+ gpointer user_data)
+{
+ GError *error;
+ GVariant *variant;
+
+ error = NULL;
+ variant = g_dbus_proxy_call_finish (G_DBUS_PROXY (object), result, &error);
+
+ if (variant == NULL) {
+ if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
+ g_warning ("Failed to set wireless power status: %s", error->message);
+
+ g_error_free (error);
+ } else {
+ g_variant_unref (variant);
+ }
+}
+
static void
set_wwan_complete (GObject *object,
GAsyncResult *result,
@@ -487,6 +508,16 @@ engine_set_airplane_mode (GsdRfkillManager *manager,
/* Note: we set the the NM property even if there are no modems, so we don't
need to resync when one is plugged in */
if (manager->nm_client) {
+ g_dbus_proxy_call (manager->nm_client,
+ "org.freedesktop.DBus.Properties.Set",
+ g_variant_new ("(ssv)",
+ "org.freedesktop.NetworkManager",
+ "WirelessEnabled",
+ g_variant_new_boolean (!enable)),
+ G_DBUS_CALL_FLAGS_NONE,
+ -1, /* timeout */
+ manager->cancellable,
+ set_wireless_complete, NULL);
g_dbus_proxy_call (manager->nm_client,
"org.freedesktop.DBus.Properties.Set",
g_variant_new ("(ssv)",
--
2.50.1