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

openSUSE Build Service is sponsored by