OBS-URL: https://build.opensuse.org/package/show/GNOME:Factory/gnome-settings-daemon?expand=0&rev=439
This commit is contained in:
23
.gitattributes
vendored
Normal file
23
.gitattributes
vendored
Normal file
@@ -0,0 +1,23 @@
|
||||
## Default LFS
|
||||
*.7z filter=lfs diff=lfs merge=lfs -text
|
||||
*.bsp filter=lfs diff=lfs merge=lfs -text
|
||||
*.bz2 filter=lfs diff=lfs merge=lfs -text
|
||||
*.gem filter=lfs diff=lfs merge=lfs -text
|
||||
*.gz filter=lfs diff=lfs merge=lfs -text
|
||||
*.jar filter=lfs diff=lfs merge=lfs -text
|
||||
*.lz filter=lfs diff=lfs merge=lfs -text
|
||||
*.lzma filter=lfs diff=lfs merge=lfs -text
|
||||
*.obscpio filter=lfs diff=lfs merge=lfs -text
|
||||
*.oxt filter=lfs diff=lfs merge=lfs -text
|
||||
*.pdf filter=lfs diff=lfs merge=lfs -text
|
||||
*.png filter=lfs diff=lfs merge=lfs -text
|
||||
*.rpm filter=lfs diff=lfs merge=lfs -text
|
||||
*.tbz filter=lfs diff=lfs merge=lfs -text
|
||||
*.tbz2 filter=lfs diff=lfs merge=lfs -text
|
||||
*.tgz filter=lfs diff=lfs merge=lfs -text
|
||||
*.ttf filter=lfs diff=lfs merge=lfs -text
|
||||
*.txz filter=lfs diff=lfs merge=lfs -text
|
||||
*.whl filter=lfs diff=lfs merge=lfs -text
|
||||
*.xz filter=lfs diff=lfs merge=lfs -text
|
||||
*.zip filter=lfs diff=lfs merge=lfs -text
|
||||
*.zst filter=lfs diff=lfs merge=lfs -text
|
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
.osc
|
@@ -0,0 +1,98 @@
|
||||
From a3c62f442981e39186ce78c140921c4bedfd7b16 Mon Sep 17 00:00:00 2001
|
||||
From: Carlos Garnacho <carlosg@gnome.org>
|
||||
Date: Fri, 17 May 2024 11:35:41 +0200
|
||||
Subject: [PATCH] usb-protection: Treat hubs and HID devices like any other USB
|
||||
gadget
|
||||
|
||||
The checks on the classes offered by a USB device are pretty lax and
|
||||
uninformative from the kernel and UsbGuard levels, so our attempt at
|
||||
user friendliness with USB hubs and HID devices may result in everyone
|
||||
(lastly us) allowing maliciously crafted devices that present themselves
|
||||
as one of these devices, but implement other classes (e.g. mass storage).
|
||||
|
||||
We believe this is ultimately an issue in the lower layers if this
|
||||
may go through as good up to us and we cannot truly believe UsbGuard
|
||||
information, but it is definitely us being the front face of this issue.
|
||||
|
||||
Avoid treating USB hubs and HID devices different to any other USB
|
||||
gadget, this will require users to "enroll" them the same ways.
|
||||
---
|
||||
.../gsd-usb-protection-manager.c | 58 +++++--------------
|
||||
1 file changed, 15 insertions(+), 43 deletions(-)
|
||||
|
||||
Index: gnome-settings-daemon-48.alpha.1/plugins/usb-protection/gsd-usb-protection-manager.c
|
||||
===================================================================
|
||||
--- gnome-settings-daemon-48.alpha.1.orig/plugins/usb-protection/gsd-usb-protection-manager.c
|
||||
+++ gnome-settings-daemon-48.alpha.1/plugins/usb-protection/gsd-usb-protection-manager.c
|
||||
@@ -679,56 +679,28 @@ on_usbguard_signal (GDBusProxy *proxy,
|
||||
* If this device advertises also interfaces outside the HID class, or the
|
||||
* HUB class, it is suspect. It could be a false positive because this could
|
||||
* be a "smart" keyboard for example, but at this stage is better be safe. */
|
||||
- if (hid_or_hub && !has_other_classes) {
|
||||
- guint device_id;
|
||||
+ if (protection_level == G_DESKTOP_USB_PROTECTION_LOCKSCREEN) {
|
||||
show_notification (manager,
|
||||
- _("New device detected"),
|
||||
- _("Either one of your existing devices has been reconnected or a new one has been inserted. "
|
||||
- "If you did not do it, check your system for any suspicious device."));
|
||||
- g_variant_get_child (parameters, POLICY_APPLIED_DEVICE_ID, "u", &device_id);
|
||||
- authorize_device (manager, device_id);
|
||||
+ _("Reconnect USB device"),
|
||||
+ _("New device has been detected while you were away. "
|
||||
+ "Please disconnect and reconnect the device to start using it."));
|
||||
} else {
|
||||
- if (protection_level == G_DESKTOP_USB_PROTECTION_LOCKSCREEN) {
|
||||
- show_notification (manager,
|
||||
- _("Reconnect USB device"),
|
||||
- _("New device has been detected while you were away. "
|
||||
- "Please disconnect and reconnect the device to start using it."));
|
||||
- } else {
|
||||
- const char* name_for_notification = device_name ? device_name : "unknown name";
|
||||
- g_debug ("Showing notification for %s", name_for_notification);
|
||||
- show_notification (manager,
|
||||
- _("USB device blocked"),
|
||||
- _("New device has been detected while you were away. "
|
||||
- "It has been blocked because the USB protection is active."));
|
||||
- }
|
||||
+ const char* name_for_notification = device_name ? device_name : "unknown name";
|
||||
+ g_debug ("Showing notification for %s", name_for_notification);
|
||||
+ show_notification (manager,
|
||||
+ _("USB device blocked"),
|
||||
+ _("New device has been detected while you were away. "
|
||||
+ "It has been blocked because the USB protection is active."));
|
||||
}
|
||||
} else {
|
||||
/* If the protection level is "lockscreen" the device will be automatically
|
||||
* authorized by usbguard. */
|
||||
if (protection_level == G_DESKTOP_USB_PROTECTION_ALWAYS) {
|
||||
- /* We authorize the device if this is a HID,
|
||||
- * e.g. a keyboard or a mouse, or an HUB.
|
||||
- * We also lock the screen to prevent an attacker to plug malicious
|
||||
- * devices if the legitimate user forgot to lock his session.
|
||||
- *
|
||||
- * If this device advertises also interfaces outside the HID class, or the
|
||||
- * HUB class, it is suspect. It could be a false positive because this could
|
||||
- * be a "smart" keyboard for example, but at this stage is better be safe. */
|
||||
- if (hid_or_hub && !has_other_classes) {
|
||||
- ManagerDeviceId* manager_devid = g_malloc ( sizeof (ManagerDeviceId) );
|
||||
- manager_devid->manager = manager;
|
||||
- g_variant_get_child (parameters, POLICY_APPLIED_DEVICE_ID, "u", &(manager_devid->device_id));
|
||||
- gsd_screen_saver_call_lock (manager->screensaver_proxy,
|
||||
- manager->cancellable,
|
||||
- (GAsyncReadyCallback) on_screen_locked,
|
||||
- manager_devid);
|
||||
- } else {
|
||||
- show_notification (manager,
|
||||
- _("USB device blocked"),
|
||||
- _("The new inserted device has been blocked because the USB protection is active. "
|
||||
- "If you want to activate the device, disable the USB protection and re-insert "
|
||||
- "the device."));
|
||||
- }
|
||||
+ show_notification (manager,
|
||||
+ _("USB device blocked"),
|
||||
+ _("The new inserted device has been blocked because the USB protection is active. "
|
||||
+ "If you want to activate the device, disable the USB protection and re-plug "
|
||||
+ "the device."));
|
||||
} else {
|
||||
/* This is protection level == Lockscreen, so we allow everything when the session is unlocked.
|
||||
There should be a USBGuard rule that automatically allows all devices,
|
164
413.patch
Normal file
164
413.patch
Normal file
@@ -0,0 +1,164 @@
|
||||
From 216847a196bd407d6dda63053a28cb327d700188 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Keller <skeller@gnome.org>
|
||||
Date: Mon, 31 Mar 2025 14:05:18 +0200
|
||||
Subject: [PATCH] power: Avoid using uninitialized value when restoring
|
||||
brightness
|
||||
|
||||
On laptops with an external monitor that don't suspend when the lid is
|
||||
closed, display_backlight_dim() would get called while
|
||||
builtin_display_disabled is true which causes
|
||||
gsd_backlight_get_brightness() to return early without setting its out
|
||||
parameter. That out parameter however is stored by
|
||||
display_backlight_dim() as pre_dim_brightness to restore when the lid is
|
||||
opened again.
|
||||
|
||||
When this happens, the brightness value is most likely out of range of
|
||||
the min/max brightness percentage and thus PERCENTAGE_TO_ABS will return
|
||||
-1 which then gets clamped to the minimum brightness value in
|
||||
gsd_backlight_set_brightness_val_async().
|
||||
|
||||
Fix this separating the target brightness getter from
|
||||
gsd_backlight_get_brightness(), because the latter was only ever used
|
||||
to access one or the other, but never both values at the same time and
|
||||
there is no shared code. This new getter will now also return -1 for
|
||||
the target brightness when builtin_display_disabled is true. This will
|
||||
cause display_backlight_dim() to return before attempting to change the
|
||||
brightness and storing the previous brightness.
|
||||
|
||||
Closes: https://gitlab.gnome.org/GNOME/gnome-settings-daemon/-/issues/737
|
||||
---
|
||||
plugins/power/gsd-backlight.c | 32 ++++++++++++++++++++++++-------
|
||||
plugins/power/gsd-backlight.h | 5 +++--
|
||||
plugins/power/gsd-power-manager.c | 8 ++++----
|
||||
3 files changed, 32 insertions(+), 13 deletions(-)
|
||||
|
||||
diff --git a/plugins/power/gsd-backlight.c b/plugins/power/gsd-backlight.c
|
||||
index 84b339802..b018e519f 100644
|
||||
--- a/plugins/power/gsd-backlight.c
|
||||
+++ b/plugins/power/gsd-backlight.c
|
||||
@@ -441,7 +441,6 @@ gsd_backlight_mutter_find_monitor (GsdBacklight *backlight,
|
||||
/**
|
||||
* gsd_backlight_get_brightness
|
||||
* @backlight: a #GsdBacklight
|
||||
- * @target: Output parameter for the value the target value of pending set operations.
|
||||
*
|
||||
* The backlight value returns the last known stable value. This value will
|
||||
* only update once all pending operations to set a new value have finished.
|
||||
@@ -456,17 +455,36 @@ gsd_backlight_mutter_find_monitor (GsdBacklight *backlight,
|
||||
* Returns: The last stable backlight value or -1 if the internal display is disabled.
|
||||
**/
|
||||
gint
|
||||
-gsd_backlight_get_brightness (GsdBacklight *backlight, gint *target)
|
||||
+gsd_backlight_get_brightness (GsdBacklight *backlight)
|
||||
{
|
||||
if (backlight->builtin_display_disabled)
|
||||
return -1;
|
||||
|
||||
- if (target)
|
||||
- *target = ABS_TO_PERCENTAGE (backlight->brightness_min, backlight->brightness_max, backlight->brightness_target);
|
||||
-
|
||||
return ABS_TO_PERCENTAGE (backlight->brightness_min, backlight->brightness_max, backlight->brightness_val);
|
||||
}
|
||||
|
||||
+/**
|
||||
+ * gsd_backlight_get_target_brightness
|
||||
+ * @backlight: a #GsdBacklight
|
||||
+ *
|
||||
+ * This returns the target value of the pending operations, which might differ
|
||||
+ * from the last known stable value, but is identical to the last value set in
|
||||
+ * the async setter.
|
||||
+ *
|
||||
+ * If the internal display is detected as disabled, then the function will
|
||||
+ * instead return -1.
|
||||
+ *
|
||||
+ * Returns: The current target backlight value or -1 if the internal display is disabled.
|
||||
+ **/
|
||||
+gint
|
||||
+gsd_backlight_get_target_brightness (GsdBacklight *backlight)
|
||||
+{
|
||||
+ if (backlight->builtin_display_disabled)
|
||||
+ return -1;
|
||||
+
|
||||
+ return ABS_TO_PERCENTAGE (backlight->brightness_min, backlight->brightness_max, backlight->brightness_target);
|
||||
+}
|
||||
+
|
||||
static void
|
||||
gsd_backlight_set_brightness_val_async (GsdBacklight *backlight,
|
||||
int value,
|
||||
@@ -547,7 +565,7 @@ gsd_backlight_set_brightness_val_async (GsdBacklight *backlight,
|
||||
|
||||
backlight->brightness_val = value;
|
||||
g_object_notify_by_pspec (G_OBJECT (backlight), props[PROP_BRIGHTNESS]);
|
||||
- g_task_return_int (task, gsd_backlight_get_brightness (backlight, NULL));
|
||||
+ g_task_return_int (task, gsd_backlight_get_brightness (backlight));
|
||||
g_object_unref (task);
|
||||
|
||||
return;
|
||||
@@ -775,7 +793,7 @@ gsd_backlight_get_property (GObject *object,
|
||||
|
||||
switch (prop_id) {
|
||||
case PROP_BRIGHTNESS:
|
||||
- g_value_set_int (value, gsd_backlight_get_brightness (backlight, NULL));
|
||||
+ g_value_set_int (value, gsd_backlight_get_brightness (backlight));
|
||||
break;
|
||||
|
||||
default:
|
||||
diff --git a/plugins/power/gsd-backlight.h b/plugins/power/gsd-backlight.h
|
||||
index 56216b62f..9bef62bf7 100644
|
||||
--- a/plugins/power/gsd-backlight.h
|
||||
+++ b/plugins/power/gsd-backlight.h
|
||||
@@ -29,8 +29,9 @@ G_BEGIN_DECLS
|
||||
#define GSD_TYPE_BACKLIGHT gsd_backlight_get_type ()
|
||||
G_DECLARE_FINAL_TYPE (GsdBacklight, gsd_backlight, GSD, BACKLIGHT, GObject);
|
||||
|
||||
-gint gsd_backlight_get_brightness (GsdBacklight *backlight,
|
||||
- gint *target);
|
||||
+gint gsd_backlight_get_brightness (GsdBacklight *backlight);
|
||||
+
|
||||
+gint gsd_backlight_get_target_brightness (GsdBacklight *backlight);
|
||||
|
||||
void gsd_backlight_set_brightness_async (GsdBacklight *backlight,
|
||||
gint percentage,
|
||||
diff --git a/plugins/power/gsd-power-manager.c b/plugins/power/gsd-power-manager.c
|
||||
index 436364a47..d1efee969 100644
|
||||
--- a/plugins/power/gsd-power-manager.c
|
||||
+++ b/plugins/power/gsd-power-manager.c
|
||||
@@ -1640,7 +1640,7 @@ static void
|
||||
backlight_notify_brightness_cb (GsdPowerManager *manager, GParamSpec *pspec, GsdBacklight *backlight)
|
||||
{
|
||||
backlight_iface_emit_changed (manager, GSD_POWER_DBUS_INTERFACE_SCREEN,
|
||||
- gsd_backlight_get_brightness (backlight, NULL), NULL);
|
||||
+ gsd_backlight_get_brightness (backlight), NULL);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -1654,7 +1654,7 @@ display_backlight_dim (GsdPowerManager *manager,
|
||||
|
||||
/* Fetch the current target brightness (not the actual display brightness)
|
||||
* and return if it is already lower than the idle percentage. */
|
||||
- gsd_backlight_get_brightness (manager->backlight, &brightness);
|
||||
+ brightness = gsd_backlight_get_target_brightness (manager->backlight);
|
||||
if (brightness < idle_percentage)
|
||||
return;
|
||||
|
||||
@@ -3120,7 +3120,7 @@ gsd_power_manager_startup (GApplication *app)
|
||||
(likely, considering that to get here we need a reply from gnome-shell)
|
||||
*/
|
||||
if (manager->backlight) {
|
||||
- manager->ambient_percentage_old = gsd_backlight_get_brightness (manager->backlight, NULL);
|
||||
+ manager->ambient_percentage_old = gsd_backlight_get_brightness (manager->backlight);
|
||||
backlight_iface_emit_changed (manager, GSD_POWER_DBUS_INTERFACE_SCREEN,
|
||||
manager->ambient_percentage_old, NULL);
|
||||
} else {
|
||||
@@ -3404,7 +3404,7 @@ handle_get_property_other (GsdPowerManager *manager,
|
||||
}
|
||||
|
||||
if (manager->backlight)
|
||||
- value = gsd_backlight_get_brightness (manager->backlight, NULL);
|
||||
+ value = gsd_backlight_get_brightness (manager->backlight);
|
||||
else
|
||||
value = -1;
|
||||
|
||||
--
|
||||
GitLab
|
||||
|
18
_service
Normal file
18
_service
Normal file
@@ -0,0 +1,18 @@
|
||||
<?xml version="1.0"?>
|
||||
<services>
|
||||
<service name="obs_scm" mode="manual">
|
||||
<param name="scm">git</param>
|
||||
<param name="url">https://gitlab.gnome.org/GNOME/gnome-settings-daemon.git</param>
|
||||
<param name="revision">9e342142daf74e19fdc736beed19afd353c28016</param>
|
||||
<param name="versionformat">@PARENT_TAG@+@TAG_OFFSET@</param>
|
||||
<param name="versionrewrite-pattern">(.*)\+0</param>
|
||||
<param name="versionrewrite-replacement">\1</param>
|
||||
<param name="changesgenerate">enable</param>
|
||||
</service>
|
||||
<service name="tar" mode="buildtime"/>
|
||||
<service name="recompress" mode="buildtime">
|
||||
<param name="file">*.tar</param>
|
||||
<param name="compression">zst</param>
|
||||
</service>
|
||||
<service name="set_version" mode="manual" />
|
||||
</services>
|
4
_servicedata
Normal file
4
_servicedata
Normal file
@@ -0,0 +1,4 @@
|
||||
<servicedata>
|
||||
<service name="tar_scm">
|
||||
<param name="url">https://gitlab.gnome.org/GNOME/gnome-settings-daemon.git</param>
|
||||
<param name="changesrevision">9e342142daf74e19fdc736beed19afd353c28016</param></service></servicedata>
|
3
gnome-settings-daemon-46.0.obscpio
Normal file
3
gnome-settings-daemon-46.0.obscpio
Normal file
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:b72615c82b0c2957b1053271b42a8aa91021e45564034fdac79bc1f0203523b4
|
||||
size 15255565
|
BIN
gnome-settings-daemon-47.1.obscpio
(Stored with Git LFS)
Normal file
BIN
gnome-settings-daemon-47.1.obscpio
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
gnome-settings-daemon-47.2.obscpio
(Stored with Git LFS)
Normal file
BIN
gnome-settings-daemon-47.2.obscpio
(Stored with Git LFS)
Normal file
Binary file not shown.
3
gnome-settings-daemon-48.0+3.obscpio
Normal file
3
gnome-settings-daemon-48.0+3.obscpio
Normal file
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:3613ab3bfcd7f73ff83c78f110cafafbb4a323218e9667f9d0627805d1a3b543
|
||||
size 15332365
|
BIN
gnome-settings-daemon-48.0.obscpio
(Stored with Git LFS)
Normal file
BIN
gnome-settings-daemon-48.0.obscpio
(Stored with Git LFS)
Normal file
Binary file not shown.
48
gnome-settings-daemon-bgo793253.patch
Normal file
48
gnome-settings-daemon-bgo793253.patch
Normal file
@@ -0,0 +1,48 @@
|
||||
Index: gnome-settings-daemon-45.0/plugins/media-keys/gsd-media-keys-manager.c
|
||||
===================================================================
|
||||
--- gnome-settings-daemon-45.0.orig/plugins/media-keys/gsd-media-keys-manager.c
|
||||
+++ gnome-settings-daemon-45.0/plugins/media-keys/gsd-media-keys-manager.c
|
||||
@@ -350,7 +350,7 @@ get_key_string (MediaKey *key)
|
||||
else if (key->custom_path != NULL)
|
||||
return g_strdup_printf ("custom:%s", key->custom_path);
|
||||
else
|
||||
- g_assert_not_reached ();
|
||||
+ return NULL;
|
||||
}
|
||||
|
||||
static GStrv
|
||||
@@ -392,7 +392,7 @@ get_bindings (GsdMediaKeysManager *manag
|
||||
key->custom_path);
|
||||
binding = g_settings_get_string (settings, "binding");
|
||||
} else
|
||||
- g_assert_not_reached ();
|
||||
+ return NULL;
|
||||
|
||||
array = g_ptr_array_new ();
|
||||
g_ptr_array_add (array, binding);
|
||||
Index: gnome-settings-daemon-45.0/plugins/rfkill/rfkill-glib.c
|
||||
===================================================================
|
||||
--- gnome-settings-daemon-45.0.orig/plugins/rfkill/rfkill-glib.c
|
||||
+++ gnome-settings-daemon-45.0/plugins/rfkill/rfkill-glib.c
|
||||
@@ -268,7 +268,7 @@ op_to_string (unsigned int op)
|
||||
case RFKILL_OP_CHANGE_ALL:
|
||||
return "CHANGE_ALL";
|
||||
default:
|
||||
- g_assert_not_reached ();
|
||||
+ return "NULL";
|
||||
}
|
||||
}
|
||||
|
||||
Index: gnome-settings-daemon-45.0/plugins/xsettings/xsettings-manager.c
|
||||
===================================================================
|
||||
--- gnome-settings-daemon-45.0.orig/plugins/xsettings/xsettings-manager.c
|
||||
+++ gnome-settings-daemon-45.0/plugins/xsettings/xsettings-manager.c
|
||||
@@ -271,7 +271,7 @@ xsettings_get_typecode (GVariant *value)
|
||||
case G_VARIANT_CLASS_TUPLE:
|
||||
return XSETTINGS_TYPE_COLOR;
|
||||
default:
|
||||
- g_assert_not_reached ();
|
||||
+ return 0;
|
||||
}
|
||||
}
|
||||
|
131
gnome-settings-daemon-fix-stop-service.patch
Normal file
131
gnome-settings-daemon-fix-stop-service.patch
Normal file
@@ -0,0 +1,131 @@
|
||||
From ebd24abc59b18c09fb21905945e57c03a02caca6 Mon Sep 17 00:00:00 2001
|
||||
From: Joan Torres <joan.torres@suse.com>
|
||||
Date: Wed, 11 Dec 2024 15:29:17 +0100
|
||||
Subject: [PATCH 1/2] sharing: Stop assigned services properly on manager stop
|
||||
|
||||
Assigned services are started when sharing status is not offline.
|
||||
But they were being stopped only when status is available.
|
||||
To fix this, stop assigned services when status is not offline too.
|
||||
|
||||
This doesn't affect configurable services which weren't already started.
|
||||
---
|
||||
plugins/sharing/gsd-sharing-manager.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/plugins/sharing/gsd-sharing-manager.c b/plugins/sharing/gsd-sharing-manager.c
|
||||
index 40b2bcc51..26e31da05 100644
|
||||
--- a/plugins/sharing/gsd-sharing-manager.c
|
||||
+++ b/plugins/sharing/gsd-sharing-manager.c
|
||||
@@ -953,7 +953,7 @@ gsd_sharing_manager_shutdown (GApplication *app)
|
||||
|
||||
cancel_pending_wait_tasks (manager);
|
||||
|
||||
- if (manager->sharing_status == GSD_SHARING_STATUS_AVAILABLE &&
|
||||
+ if (manager->sharing_status != GSD_SHARING_STATUS_OFFLINE &&
|
||||
manager->connection != NULL) {
|
||||
manager->sharing_status = GSD_SHARING_STATUS_OFFLINE;
|
||||
gsd_sharing_manager_sync_services (manager);
|
||||
--
|
||||
GitLab
|
||||
|
||||
|
||||
From d0b0d3a6971f0174c873c45ae20b5bf3bd91481b Mon Sep 17 00:00:00 2001
|
||||
From: Joan Torres <joan.torres@suse.com>
|
||||
Date: Tue, 14 Jan 2025 19:20:10 +0100
|
||||
Subject: [PATCH 2/2] sharing: Wait for async service operations during
|
||||
shutdown
|
||||
|
||||
Make a synchronization mechanism using a counter and a main loop.
|
||||
|
||||
This ensures that all systemd service operations are properly handled
|
||||
before the sharing manager is fully stopped, preventing services from
|
||||
being left in an inconsistent state.
|
||||
|
||||
This fixes an issue where the gnome-remote-desktop-handover.service was
|
||||
not stopped on logout. Making the next user session use the same
|
||||
handover daemon which is still listening to the old handover iface with
|
||||
the old session id.
|
||||
---
|
||||
plugins/sharing/gsd-sharing-manager.c | 29 ++++++++++++++++++---------
|
||||
1 file changed, 20 insertions(+), 9 deletions(-)
|
||||
|
||||
diff --git a/plugins/sharing/gsd-sharing-manager.c b/plugins/sharing/gsd-sharing-manager.c
|
||||
index 26e31da05..9e44bd2c6 100644
|
||||
--- a/plugins/sharing/gsd-sharing-manager.c
|
||||
+++ b/plugins/sharing/gsd-sharing-manager.c
|
||||
@@ -83,6 +83,9 @@ struct _GsdSharingManager
|
||||
GsdSharingStatus sharing_status;
|
||||
|
||||
gboolean is_systemd_managed;
|
||||
+
|
||||
+ guint pending_sync_services;
|
||||
+ GMainLoop *wait_sync_services_loop;
|
||||
};
|
||||
|
||||
#define GSD_DBUS_NAME "org.gnome.SettingsDaemon"
|
||||
@@ -147,9 +150,9 @@ handle_unit_cb (GObject *source_object,
|
||||
GAsyncResult *res,
|
||||
gpointer user_data)
|
||||
{
|
||||
- GError *error = NULL;
|
||||
- GVariant *ret;
|
||||
- const char *operation = user_data;
|
||||
+ g_autoptr (GError) error = NULL;
|
||||
+ g_autoptr (GVariant) ret = NULL;
|
||||
+ GsdSharingManager *manager = user_data;
|
||||
|
||||
ret = g_dbus_connection_call_finish (G_DBUS_CONNECTION (source_object),
|
||||
res, &error);
|
||||
@@ -158,13 +161,13 @@ handle_unit_cb (GObject *source_object,
|
||||
|
||||
if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED) &&
|
||||
g_strcmp0 (remote_error, "org.freedesktop.systemd1.NoSuchUnit") != 0)
|
||||
- g_warning ("Failed to %s service: %s", operation, error->message);
|
||||
- g_error_free (error);
|
||||
- return;
|
||||
+ g_warning ("Failed to handle service: %s", error->message);
|
||||
}
|
||||
|
||||
- g_variant_unref (ret);
|
||||
-
|
||||
+ manager->pending_sync_services--;
|
||||
+ if (manager->pending_sync_services == 0 && manager->wait_sync_services_loop) {
|
||||
+ g_main_loop_quit (manager->wait_sync_services_loop);
|
||||
+ }
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -174,6 +177,8 @@ gsd_sharing_manager_handle_service (GsdSharingManager *manager,
|
||||
{
|
||||
char *service_file;
|
||||
|
||||
+ manager->pending_sync_services++;
|
||||
+
|
||||
service_file = g_strdup_printf ("%s.service", service_name);
|
||||
g_dbus_connection_call (manager->connection,
|
||||
"org.freedesktop.systemd1",
|
||||
@@ -186,7 +191,7 @@ gsd_sharing_manager_handle_service (GsdSharingManager *manager,
|
||||
-1,
|
||||
manager->cancellable,
|
||||
handle_unit_cb,
|
||||
- (gpointer) method);
|
||||
+ (gpointer) manager);
|
||||
g_free (service_file);
|
||||
}
|
||||
|
||||
@@ -959,6 +964,12 @@ gsd_sharing_manager_shutdown (GApplication *app)
|
||||
gsd_sharing_manager_sync_services (manager);
|
||||
}
|
||||
|
||||
+ if (manager->pending_sync_services > 0) {
|
||||
+ manager->wait_sync_services_loop = g_main_loop_new (NULL, FALSE);
|
||||
+ g_main_loop_run (manager->wait_sync_services_loop);
|
||||
+ g_clear_pointer (&manager->wait_sync_services_loop, g_main_loop_unref);
|
||||
+ }
|
||||
+
|
||||
if (manager->cancellable) {
|
||||
g_cancellable_cancel (manager->cancellable);
|
||||
g_clear_object (&manager->cancellable);
|
||||
--
|
||||
GitLab
|
||||
|
64
gnome-settings-daemon-initial-keyboard.patch
Normal file
64
gnome-settings-daemon-initial-keyboard.patch
Normal file
@@ -0,0 +1,64 @@
|
||||
From c2e0c03c03f47da9b117db0ba876732e84dcf0c4 Mon Sep 17 00:00:00 2001
|
||||
From: Federico Mena Quintero <federico@gnome.org>
|
||||
Date: Mon, 16 May 2016 19:18:43 -0500
|
||||
Subject: [PATCH] Resurrect the code from upstream to set the default keyboard
|
||||
from XKB if there is one.
|
||||
|
||||
Suse works differently than GNOME here; we set a default keyboard from
|
||||
the system's configuration instead of letting GNOME take care of
|
||||
everything itself.
|
||||
|
||||
https://bugzilla.suse.com/show_bug.cgi?id=979051
|
||||
---
|
||||
plugins/keyboard/gsd-keyboard-manager.c | 18 +++++++++++++-----
|
||||
1 file changed, 13 insertions(+), 5 deletions(-)
|
||||
|
||||
Index: gnome-settings-daemon-48.alpha.1/plugins/keyboard/gsd-keyboard-manager.c
|
||||
===================================================================
|
||||
--- gnome-settings-daemon-48.alpha.1.orig/plugins/keyboard/gsd-keyboard-manager.c
|
||||
+++ gnome-settings-daemon-48.alpha.1/plugins/keyboard/gsd-keyboard-manager.c
|
||||
@@ -207,7 +207,7 @@ settings_changed (GSettings *se
|
||||
}
|
||||
|
||||
static void
|
||||
-get_sources_from_xkb_config (GsdKeyboardManager *manager)
|
||||
+get_sources_from_xkb_config (GsdKeyboardManager *manager, gboolean running_under_gdm)
|
||||
{
|
||||
GVariantBuilder builder;
|
||||
GVariant *v;
|
||||
@@ -225,7 +225,7 @@ get_sources_from_xkb_config (GsdKeyboard
|
||||
|
||||
init_builder_with_sources (&builder, manager->input_sources_settings);
|
||||
|
||||
- if (!layouts) {
|
||||
+ if (!layouts && running_under_gdm) {
|
||||
g_variant_builder_add (&builder, "(ss)", INPUT_SOURCE_TYPE_XKB, DEFAULT_LAYOUT);
|
||||
goto out;
|
||||
}
|
||||
@@ -404,15 +404,23 @@ maybe_create_initial_settings (GsdKeyboa
|
||||
|
||||
settings = manager->input_sources_settings;
|
||||
|
||||
- if (g_getenv ("RUNNING_UNDER_GDM"))
|
||||
- return;
|
||||
+ if (g_getenv ("RUNNING_UNDER_GDM")) {
|
||||
+ GVariantBuilder builder;
|
||||
+ /* clean the settings and get them from the "system" */
|
||||
+ g_variant_builder_init (&builder, G_VARIANT_TYPE ("a(ss)"));
|
||||
+ g_settings_set_value (settings, KEY_INPUT_SOURCES, g_variant_builder_end (&builder));
|
||||
+ get_sources_from_xkb_config (manager, TRUE);
|
||||
+
|
||||
+ g_settings_set_strv (settings, KEY_KEYBOARD_OPTIONS, NULL);
|
||||
+ get_options_from_xkb_config (manager);
|
||||
+ }
|
||||
|
||||
maybe_convert_old_settings (settings);
|
||||
|
||||
/* if we still don't have anything do some educated guesses */
|
||||
sources = g_settings_get_value (settings, KEY_INPUT_SOURCES);
|
||||
if (g_variant_n_children (sources) < 1)
|
||||
- get_sources_from_xkb_config (manager);
|
||||
+ get_sources_from_xkb_config (manager, FALSE);
|
||||
g_variant_unref (sources);
|
||||
|
||||
options = g_settings_get_user_value (settings, KEY_KEYBOARD_OPTIONS);
|
24
gnome-settings-daemon-more-power-button-actions.patch
Normal file
24
gnome-settings-daemon-more-power-button-actions.patch
Normal file
@@ -0,0 +1,24 @@
|
||||
diff --unified --recursive --text --new-file --color -x subprojects gnome-settings-daemon-48.0.old/data/gnome-settings-daemon/gsd-enums.h gnome-settings-daemon-48.0.new/data/gnome-settings-daemon/gsd-enums.h
|
||||
--- gnome-settings-daemon-48.0.old/data/gnome-settings-daemon/gsd-enums.h 2025-03-17 21:08:20.000000000 +0800
|
||||
+++ gnome-settings-daemon-48.0.new/data/gnome-settings-daemon/gsd-enums.h 2025-03-20 13:04:44.137390428 +0800
|
||||
@@ -105,6 +105,7 @@
|
||||
typedef enum
|
||||
{
|
||||
GSD_POWER_BUTTON_ACTION_NOTHING,
|
||||
+ GSD_POWER_BUTTON_ACTION_SHUTDOWN,
|
||||
GSD_POWER_BUTTON_ACTION_SUSPEND,
|
||||
GSD_POWER_BUTTON_ACTION_HIBERNATE,
|
||||
GSD_POWER_BUTTON_ACTION_INTERACTIVE
|
||||
diff --unified --recursive --text --new-file --color -x subprojects gnome-settings-daemon-48.0.old/plugins/media-keys/gsd-media-keys-manager.c gnome-settings-daemon-48.0.new/plugins/media-keys/gsd-media-keys-manager.c
|
||||
--- gnome-settings-daemon-48.0.old/plugins/media-keys/gsd-media-keys-manager.c 2025-03-17 21:08:20.000000000 +0800
|
||||
+++ gnome-settings-daemon-48.0.new/plugins/media-keys/gsd-media-keys-manager.c 2025-03-20 13:04:44.143659944 +0800
|
||||
@@ -2137,6 +2137,9 @@
|
||||
}
|
||||
|
||||
switch (action_type) {
|
||||
+ case GSD_POWER_BUTTON_ACTION_SHUTDOWN:
|
||||
+ do_config_power_action (manager, GSD_POWER_ACTION_SHUTDOWN, in_lock_screen);
|
||||
+ break;
|
||||
case GSD_POWER_BUTTON_ACTION_SUSPEND:
|
||||
action = GSD_POWER_ACTION_SUSPEND;
|
||||
break;
|
106
gnome-settings-daemon-notify-idle-resumed.patch
Normal file
106
gnome-settings-daemon-notify-idle-resumed.patch
Normal file
@@ -0,0 +1,106 @@
|
||||
Index: gnome-settings-daemon-45.0/data/org.gnome.settings-daemon.plugins.power.gschema.xml.in
|
||||
===================================================================
|
||||
--- gnome-settings-daemon-45.0.orig/data/org.gnome.settings-daemon.plugins.power.gschema.xml.in
|
||||
+++ gnome-settings-daemon-45.0/data/org.gnome.settings-daemon.plugins.power.gschema.xml.in
|
||||
@@ -41,6 +41,11 @@
|
||||
<summary>Power button action</summary>
|
||||
<description>The action to take when the system power button is pressed. Virtual machines only honor the 'nothing' action, and will shutdown otherwise. Tablets always suspend, ignoring all the other action options.</description>
|
||||
</key>
|
||||
+ <key name="notify-idle-resumed" type="b">
|
||||
+ <default>true</default>
|
||||
+ <summary>If an information message should be displayed when returning from idle sleep.</summary>
|
||||
+ <description>If an information message should be displayed when returning from idle sleep.</description>
|
||||
+ </key>
|
||||
<key name="power-saver-profile-on-low-battery" type="b">
|
||||
<default>true</default>
|
||||
<summary>Enable power-saver profile when battery is low</summary>
|
||||
Index: gnome-settings-daemon-45.0/plugins/power/gsd-power-manager.c
|
||||
===================================================================
|
||||
--- gnome-settings-daemon-45.0.orig/plugins/power/gsd-power-manager.c
|
||||
+++ gnome-settings-daemon-45.0/plugins/power/gsd-power-manager.c
|
||||
@@ -165,6 +165,7 @@ struct _GsdPowerManager
|
||||
NotifyNotification *notification_ups_discharging;
|
||||
NotifyNotification *notification_low;
|
||||
NotifyNotification *notification_sleep_warning;
|
||||
+ NotifyNotification *notification_resumed;
|
||||
GsdPowerActionType sleep_action_type;
|
||||
GHashTable *devices_notified_ht; /* key = serial str, value = UpDeviceLevel */
|
||||
gboolean battery_is_low; /* battery low, or UPS discharging */
|
||||
@@ -206,6 +207,7 @@ struct _GsdPowerManager
|
||||
gboolean inhibit_suspend_taken;
|
||||
guint inhibit_lid_switch_timer_id;
|
||||
gboolean is_virtual_machine;
|
||||
+ GsdPowerActionType last_idle_power_action;
|
||||
|
||||
/* Idles */
|
||||
GnomeIdleMonitor *idle_monitor;
|
||||
@@ -1730,6 +1732,49 @@ is_session_active (GsdPowerManager *mana
|
||||
}
|
||||
|
||||
static void
|
||||
+show_resumed_notification (GsdPowerManager *manager)
|
||||
+{
|
||||
+ GError *error = NULL;
|
||||
+ gboolean ret;
|
||||
+
|
||||
+ /* don't show when running under GDM */
|
||||
+ if (g_getenv ("RUNNING_UNDER_GDM") != NULL) {
|
||||
+ g_debug ("running under gdm, so no notification");
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ ret = g_settings_get_boolean (manager->settings, "notify-idle-resumed");
|
||||
+ if (!ret)
|
||||
+ return;
|
||||
+
|
||||
+ /* close any existing notification of this class */
|
||||
+ notify_close_if_showing (&manager->notification_resumed);
|
||||
+
|
||||
+ /* create a new notification */
|
||||
+ create_notification (_("System resumed from sleep"),
|
||||
+ _("The system automatically went to sleep because the system was idle."),
|
||||
+ NULL, NOTIFICATION_PRIVACY_SYSTEM,
|
||||
+ &manager->notification_resumed);
|
||||
+ notify_notification_set_timeout (manager->notification_resumed,
|
||||
+ GSD_POWER_MANAGER_NOTIFY_TIMEOUT_SHORT);
|
||||
+ notify_notification_set_urgency (manager->notification_resumed,
|
||||
+ NOTIFY_URGENCY_NORMAL);
|
||||
+ /* TRANSLATORS: this is the notification application name */
|
||||
+ notify_notification_set_app_name (manager->notification_resumed, _("Power"));
|
||||
+ notify_notification_set_hint (manager->notification_resumed,
|
||||
+ "transient", g_variant_new_boolean (TRUE));
|
||||
+
|
||||
+ /* try to show */
|
||||
+ ret = notify_notification_show (manager->notification_resumed,
|
||||
+ &error);
|
||||
+ if (!ret) {
|
||||
+ g_warning ("failed to show notification: %s", error->message);
|
||||
+ g_error_free (error);
|
||||
+ g_object_unref (manager->notification_resumed);
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+static void
|
||||
idle_set_mode (GsdPowerManager *manager, GsdPowerIdleMode mode)
|
||||
{
|
||||
gboolean ret = FALSE;
|
||||
@@ -1810,6 +1855,7 @@ idle_set_mode (GsdPowerManager *manager,
|
||||
action_type = g_settings_get_enum (manager->settings,
|
||||
"sleep-inactive-ac-type");
|
||||
}
|
||||
+ manager->last_idle_power_action = action_type;
|
||||
do_power_action_type (manager, action_type);
|
||||
|
||||
/* turn on screen and restore user-selected brightness level */
|
||||
@@ -2784,6 +2830,11 @@ handle_suspend_actions (GsdPowerManager
|
||||
static void
|
||||
handle_resume_actions (GsdPowerManager *manager)
|
||||
{
|
||||
+ if (manager->last_idle_power_action == GSD_POWER_ACTION_SUSPEND ||
|
||||
+ manager->last_idle_power_action == GSD_POWER_ACTION_HIBERNATE)
|
||||
+ show_resumed_notification (manager);
|
||||
+
|
||||
+ manager->last_idle_power_action = GSD_POWER_ACTION_NOTHING;
|
||||
/* ensure we turn the panel back on after resume */
|
||||
backlight_enable (manager);
|
||||
|
42
gnome-settings-daemon-stop-service-when-no-network.patch
Normal file
42
gnome-settings-daemon-stop-service-when-no-network.patch
Normal file
@@ -0,0 +1,42 @@
|
||||
From 9a1c14127fd135a6bf6abbf5d57ae1a2961bf4d0 Mon Sep 17 00:00:00 2001
|
||||
From: Joan Torres <joan.torres@suse.com>
|
||||
Date: Thu, 4 Apr 2024 13:40:02 +0200
|
||||
Subject: [PATCH] sharing: Stop assigned services only when no network
|
||||
connection
|
||||
|
||||
This allows grd handover service to be started even with network access
|
||||
through a mobile device or when the network access is from Wi-Fi.
|
||||
---
|
||||
plugins/sharing/gsd-sharing-manager.c | 8 ++++----
|
||||
1 file changed, 4 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/plugins/sharing/gsd-sharing-manager.c b/plugins/sharing/gsd-sharing-manager.c
|
||||
index 7713569f..2ab2cb05 100644
|
||||
--- a/plugins/sharing/gsd-sharing-manager.c
|
||||
+++ b/plugins/sharing/gsd-sharing-manager.c
|
||||
@@ -297,7 +297,7 @@ start_assigned_service (GsdSharingManager *manager,
|
||||
{
|
||||
AssignedService *service;
|
||||
|
||||
- if (manager->sharing_status != GSD_SHARING_STATUS_AVAILABLE)
|
||||
+ if (manager->sharing_status == GSD_SHARING_STATUS_OFFLINE)
|
||||
return;
|
||||
|
||||
if (!info->system_service_running)
|
||||
@@ -414,10 +414,10 @@ gsd_sharing_manager_sync_assigned_services (GsdSharingManager *manager)
|
||||
for (l = services; l != NULL; l = l->next) {
|
||||
AssignedServiceInfo *info = l->data;
|
||||
|
||||
- if (manager->sharing_status == GSD_SHARING_STATUS_AVAILABLE)
|
||||
- start_assigned_service (manager, info);
|
||||
- else
|
||||
+ if (manager->sharing_status == GSD_SHARING_STATUS_OFFLINE)
|
||||
stop_assigned_service (manager, info);
|
||||
+ else
|
||||
+ start_assigned_service (manager, info);
|
||||
}
|
||||
g_list_free (services);
|
||||
}
|
||||
--
|
||||
2.44.0
|
||||
|
@@ -0,0 +1,17 @@
|
||||
Index: b/plugins/keyboard/gsd-keyboard-manager.c
|
||||
===================================================================
|
||||
--- a/plugins/keyboard/gsd-keyboard-manager.c
|
||||
+++ b/plugins/keyboard/gsd-keyboard-manager.c
|
||||
@@ -251,7 +251,11 @@ get_sources_from_xkb_config (GsdKeyboard
|
||||
else
|
||||
id = g_strdup (layouts[i]);
|
||||
|
||||
- g_variant_builder_add (&builder, "(ss)", INPUT_SOURCE_TYPE_XKB, id);
|
||||
+ if (!g_strcmp0 (id, "jp"))
|
||||
+ g_variant_builder_add (&builder, "(ss)", INPUT_SOURCE_TYPE_IBUS, "mozc-jp");
|
||||
+ else
|
||||
+ g_variant_builder_add (&builder, "(ss)", INPUT_SOURCE_TYPE_XKB, id);
|
||||
+
|
||||
g_free (id);
|
||||
}
|
||||
|
5463
gnome-settings-daemon.changes
Normal file
5463
gnome-settings-daemon.changes
Normal file
File diff suppressed because it is too large
Load Diff
4
gnome-settings-daemon.obsinfo
Normal file
4
gnome-settings-daemon.obsinfo
Normal file
@@ -0,0 +1,4 @@
|
||||
name: gnome-settings-daemon
|
||||
version: 48.0+3
|
||||
mtime: 1743239595
|
||||
commit: 9e342142daf74e19fdc736beed19afd353c28016
|
297
gnome-settings-daemon.spec
Normal file
297
gnome-settings-daemon.spec
Normal file
@@ -0,0 +1,297 @@
|
||||
#
|
||||
# spec file for package gnome-settings-daemon
|
||||
#
|
||||
# Copyright (c) 2025 SUSE LLC
|
||||
#
|
||||
# All modifications and additions to the file contributed by third parties
|
||||
# remain the property of their copyright owners, unless otherwise agreed
|
||||
# upon. The license for this file, and modifications and additions to the
|
||||
# file, is the same license as for the pristine package itself (unless the
|
||||
# license for the pristine package is not an Open Source License, in which
|
||||
# case the license is the MIT License). An "Open Source License" is a
|
||||
# license that conforms to the Open Source Definition (Version 1.9)
|
||||
# published by the Open Source Initiative.
|
||||
|
||||
# Please submit bugfixes or comments via https://bugs.opensuse.org/
|
||||
#
|
||||
|
||||
|
||||
# Allow to disable wayland components
|
||||
%bcond_without wayland
|
||||
# Smart-Card support was not available from version 3.7.3 to 3.9.5; allow to easily disable it
|
||||
%bcond_without smartcard
|
||||
# Wacom input support is not available on all platforms
|
||||
%ifarch s390 s390x
|
||||
%bcond_with wacom
|
||||
%else
|
||||
%bcond_without wacom
|
||||
%endif
|
||||
|
||||
%define base_ver 48
|
||||
|
||||
Name: gnome-settings-daemon
|
||||
Version: 48.0+3
|
||||
Release: 0
|
||||
Summary: Settings daemon for the GNOME desktop
|
||||
License: GPL-2.0-or-later AND LGPL-2.1-only
|
||||
Group: System/GUI/GNOME
|
||||
URL: https://gitlab.gnome.org/GNOME/gnome-settings-daemon
|
||||
Source0: %{name}-%{version}.tar.zst
|
||||
|
||||
# PATCH-FIX-OPENSUSE gnome-settings-daemon-initial-keyboard.patch bsc#979051 boo#1009515 federico@suse.com -- Deal with the default keyboard being set from xkb instead of GNOME
|
||||
Patch0: gnome-settings-daemon-initial-keyboard.patch
|
||||
# PATCH-FIX-OPENSUSE gnome-settings-daemon-switch-Japanese-default-input-to-mozc.patch bnc#1029083 boo#1056289 qzhao@suse.com -- Switch new user's default input engine from "anthy" to "mozc" in gnome-desktop with Japanese language and ibus input frame-work condition.
|
||||
Patch1: gnome-settings-daemon-switch-Japanese-default-input-to-mozc.patch
|
||||
# PATCH-FIX-UPSTREAM 0001-usb-protection-Treat-hubs-and-HID-devices-like-any-o.patch glgo#GNOME/gnome-settings-daemon#780, bsc#1226423, CVE-2024-38394 sckang@suse.com -- usb-protection: Treat hubs and HID devices like any other USB gadget
|
||||
Patch4: 0001-usb-protection-Treat-hubs-and-HID-devices-like-any-o.patch
|
||||
# PATCH-FIX-UPSTREAM gnome-settings-daemon-fix-stop-service.patch bsc#1233824 glgo#GNOME/gnome-settings-daemon!395-- sharing: Stop systemd service waiting when daemon is stopping
|
||||
Patch5: gnome-settings-daemon-fix-stop-service.patch
|
||||
# PATCH-FIX-UPSTREAM 411.patch -- power: Ensure backlight iface signal gets emited on startup
|
||||
Patch6: https://gitlab.gnome.org/GNOME/gnome-settings-daemon/-/merge_requests/411.patch
|
||||
# PATCH-FIX-UPSTREAM 413.patch -- power: Avoid using uninitialized value when restoring brightness
|
||||
Patch7: https://gitlab.gnome.org/GNOME/gnome-settings-daemon/-/merge_requests/413.patch
|
||||
|
||||
## SLE/LEAP-only patches start at 1000
|
||||
# PATCH-FEATURE-OPENSUSE gnome-settings-daemon-notify-idle-resumed.patch bnc#439018 bnc#708182 bgo#575467 hpj@suse.com -- notify user about auto suspend when returning from sleep
|
||||
Patch1000: gnome-settings-daemon-notify-idle-resumed.patch
|
||||
# PATCH-FIX-OPENSUSE gnome-settings-daemon-more-power-button-actions.patch bsc#996342 fezhang@suse.com -- Bring back the "shutdown" and "interactive" power button actions.
|
||||
Patch1001: gnome-settings-daemon-more-power-button-actions.patch
|
||||
|
||||
BuildRequires: cups-devel
|
||||
BuildRequires: fdupes
|
||||
BuildRequires: gtk-doc
|
||||
BuildRequires: meson >= 0.49.0
|
||||
BuildRequires: pkgconfig
|
||||
# For directory ownership; it's fine to BuildRequire it since it's also a Requires
|
||||
BuildRequires: polkit
|
||||
BuildRequires: xsltproc
|
||||
BuildRequires: pkgconfig(alsa)
|
||||
BuildRequires: pkgconfig(colord) >= 1.3.5
|
||||
BuildRequires: pkgconfig(fontconfig)
|
||||
BuildRequires: pkgconfig(gcr-4) >= 3.7.5
|
||||
BuildRequires: pkgconfig(geoclue-2.0) >= 2.1.2
|
||||
BuildRequires: pkgconfig(geocode-glib-2.0) >= 3.10.0
|
||||
BuildRequires: pkgconfig(gio-2.0)
|
||||
BuildRequires: pkgconfig(gio-unix-2.0)
|
||||
BuildRequires: pkgconfig(glib-2.0) >= 2.70
|
||||
BuildRequires: pkgconfig(gnome-desktop-3.0) >= 3.11.1
|
||||
BuildRequires: pkgconfig(gsettings-desktop-schemas) >= 46.beta
|
||||
BuildRequires: pkgconfig(gtk+-3.0) >= 3.15.3
|
||||
BuildRequires: pkgconfig(gudev-1.0)
|
||||
BuildRequires: pkgconfig(gweather4)
|
||||
BuildRequires: pkgconfig(kbproto)
|
||||
BuildRequires: pkgconfig(lcms2)
|
||||
BuildRequires: pkgconfig(libcanberra-gtk3)
|
||||
BuildRequires: pkgconfig(libgeoclue-2.0) >= 2.3.1
|
||||
BuildRequires: pkgconfig(libnm) >= 1.0
|
||||
BuildRequires: pkgconfig(libnotify) >= 0.7.3
|
||||
BuildRequires: pkgconfig(libpulse) >= 2.0
|
||||
BuildRequires: pkgconfig(libpulse-mainloop-glib) >= 2.0
|
||||
BuildRequires: pkgconfig(librsvg-2.0) >= 2.36.2
|
||||
BuildRequires: pkgconfig(mm-glib) >= 1.0
|
||||
BuildRequires: pkgconfig(pango) >= 1.20.0
|
||||
BuildRequires: pkgconfig(polkit-gobject-1) >= 0.114
|
||||
BuildRequires: pkgconfig(systemd) >= 243
|
||||
BuildRequires: pkgconfig(udev)
|
||||
BuildRequires: pkgconfig(upower-glib) >= 0.99.12
|
||||
BuildRequires: pkgconfig(x11)
|
||||
BuildRequires: pkgconfig(xext)
|
||||
BuildRequires: pkgconfig(xfixes) >= 6.0
|
||||
BuildRequires: pkgconfig(xi)
|
||||
BuildRequires: pkgconfig(xkbfile)
|
||||
# Needed for tests
|
||||
BuildRequires: python3-gobject-devel
|
||||
BuildRequires: python3-python-dbusmock
|
||||
#
|
||||
Requires: gsettings-desktop-schemas
|
||||
# g-s-d uses the pkexec binary
|
||||
Requires: /usr/bin/pkexec
|
||||
# For housekeeping plugin, that uses the nautilus dbus service
|
||||
Recommends: nautilus
|
||||
%if %{with smartcard}
|
||||
BuildRequires: pkgconfig(gck-2)
|
||||
%endif
|
||||
%if %{with wacom}
|
||||
BuildRequires: pkgconfig(libwacom) >= 0.7
|
||||
%endif
|
||||
%if %{with wayland}
|
||||
BuildRequires: pkgconfig(wayland-client)
|
||||
%endif
|
||||
Recommends: iio-sensor-proxy
|
||||
# g-s-d only support configurtion of libinput based pointer drivers now.
|
||||
Recommends: (xf86-input-libinput if xorg-x11-server)
|
||||
|
||||
%description
|
||||
gnome-settings-daemon provides a daemon run by all GNOME sessions to
|
||||
provide live access to configuration settings and the changes done to
|
||||
them as well as basic services like a clipboard manager, controlling
|
||||
the startup of the screensaver, etc.
|
||||
|
||||
This module was previously part of GNOME Control Center, but has been
|
||||
split for a more general use.
|
||||
|
||||
%package devel
|
||||
Summary: Development package for the GNOME settings daemon
|
||||
Group: Development/Languages/C and C++
|
||||
Requires: %{name} = %{version}
|
||||
|
||||
%description devel
|
||||
gnome-settings-daemon provides a daemon run by all GNOME sessions to
|
||||
provide live access to configuration settings and the changes done to
|
||||
them as well as basic services like a clipboard manager, controlling
|
||||
the startup of the screensaver, etc.
|
||||
|
||||
This package includes header files used for client applications to
|
||||
contact the settings daemon via its DBus interface.
|
||||
|
||||
%lang_package
|
||||
|
||||
%prep
|
||||
%autosetup -N
|
||||
|
||||
%if 0%{?is_opensuse}
|
||||
%autopatch -p1 -M 999
|
||||
%else
|
||||
%autopatch -p1
|
||||
%endif
|
||||
|
||||
%build
|
||||
%meson \
|
||||
-Dalsa=true \
|
||||
%{!?with_wayland: -D wayland=false} \
|
||||
%{!?with_smartcard: -D smartcard=false} \
|
||||
%{nil}
|
||||
%meson_build
|
||||
|
||||
%install
|
||||
%meson_install
|
||||
|
||||
%if %{without wacom}
|
||||
rm %{buildroot}%{_sysconfdir}/xdg/autostart/org.gnome.SettingsDaemon.Wacom.desktop
|
||||
%endif
|
||||
|
||||
%find_lang %{name} %{?no_lang_C}
|
||||
%fdupes %{buildroot}/%{_prefix}
|
||||
|
||||
%check
|
||||
%meson_test
|
||||
|
||||
%files
|
||||
%license COPYING COPYING.LIB
|
||||
%doc NEWS
|
||||
%{_datadir}/gnome-settings-daemon/
|
||||
%{_libexecdir}/gsd-backlight-helper
|
||||
%{_libexecdir}/gsd-printer
|
||||
%dir %{_libdir}/gnome-settings-daemon-%{base_ver}/
|
||||
%{_libdir}/gnome-settings-daemon-%{base_ver}/libgsd.so
|
||||
# Explicitly list all the plugins so we know we don't lose any
|
||||
|
||||
%{_libexecdir}/gsd-a11y-settings
|
||||
%{_sysconfdir}/xdg/autostart/org.gnome.SettingsDaemon.A11ySettings.desktop
|
||||
%{_userunitdir}/org.gnome.SettingsDaemon.A11ySettings.service
|
||||
%{_userunitdir}/org.gnome.SettingsDaemon.A11ySettings.target
|
||||
%{_libexecdir}/gsd-color
|
||||
%{_sysconfdir}/xdg/autostart/org.gnome.SettingsDaemon.Color.desktop
|
||||
%{_userunitdir}/org.gnome.SettingsDaemon.Color.service
|
||||
%{_userunitdir}/org.gnome.SettingsDaemon.Color.target
|
||||
%{_libexecdir}/gsd-datetime
|
||||
%{_sysconfdir}/xdg/autostart/org.gnome.SettingsDaemon.Datetime.desktop
|
||||
%{_userunitdir}/org.gnome.SettingsDaemon.Datetime.service
|
||||
%{_userunitdir}/org.gnome.SettingsDaemon.Datetime.target
|
||||
%{_libexecdir}/gsd-housekeeping
|
||||
%{_sysconfdir}/xdg/autostart/org.gnome.SettingsDaemon.Housekeeping.desktop
|
||||
%{_userunitdir}/org.gnome.SettingsDaemon.Housekeeping.service
|
||||
%{_userunitdir}/org.gnome.SettingsDaemon.Housekeeping.target
|
||||
%{_libexecdir}/gsd-keyboard
|
||||
%{_sysconfdir}/xdg/autostart/org.gnome.SettingsDaemon.Keyboard.desktop
|
||||
%{_userunitdir}/org.gnome.SettingsDaemon.Keyboard.service
|
||||
%{_userunitdir}/org.gnome.SettingsDaemon.Keyboard.target
|
||||
%{_libexecdir}/gsd-media-keys
|
||||
%{_sysconfdir}/xdg/autostart/org.gnome.SettingsDaemon.MediaKeys.desktop
|
||||
%{_userunitdir}/org.gnome.SettingsDaemon.MediaKeys.service
|
||||
%{_userunitdir}/org.gnome.SettingsDaemon.MediaKeys.target
|
||||
%{_libexecdir}/gsd-power
|
||||
%{_sysconfdir}/xdg/autostart/org.gnome.SettingsDaemon.Power.desktop
|
||||
%{_userunitdir}/org.gnome.SettingsDaemon.Power.service
|
||||
%{_userunitdir}/org.gnome.SettingsDaemon.Power.target
|
||||
%{_libexecdir}/gsd-print-notifications
|
||||
%{_sysconfdir}/xdg/autostart/org.gnome.SettingsDaemon.PrintNotifications.desktop
|
||||
%{_userunitdir}/org.gnome.SettingsDaemon.PrintNotifications.service
|
||||
%{_userunitdir}/org.gnome.SettingsDaemon.PrintNotifications.target
|
||||
%{_libexecdir}/gsd-rfkill
|
||||
%{_sysconfdir}/xdg/autostart/org.gnome.SettingsDaemon.Rfkill.desktop
|
||||
%{_userunitdir}/org.gnome.SettingsDaemon.Rfkill.service
|
||||
%{_userunitdir}/org.gnome.SettingsDaemon.Rfkill.target
|
||||
%{_libexecdir}/gsd-screensaver-proxy
|
||||
%{_sysconfdir}/xdg/autostart/org.gnome.SettingsDaemon.ScreensaverProxy.desktop
|
||||
%{_userunitdir}/org.gnome.SettingsDaemon.ScreensaverProxy.service
|
||||
%{_userunitdir}/org.gnome.SettingsDaemon.ScreensaverProxy.target
|
||||
%{_libexecdir}/gsd-sharing
|
||||
%{_sysconfdir}/xdg/autostart/org.gnome.SettingsDaemon.Sharing.desktop
|
||||
%{_userunitdir}/org.gnome.SettingsDaemon.Sharing.service
|
||||
%{_userunitdir}/org.gnome.SettingsDaemon.Sharing.target
|
||||
%if %{with smartcard}
|
||||
%{_libexecdir}/gsd-smartcard
|
||||
%{_sysconfdir}/xdg/autostart/org.gnome.SettingsDaemon.Smartcard.desktop
|
||||
%{_userunitdir}/org.gnome.SettingsDaemon.Smartcard.service
|
||||
%{_userunitdir}/org.gnome.SettingsDaemon.Smartcard.target
|
||||
%endif
|
||||
%{_libexecdir}/gsd-sound
|
||||
%{_sysconfdir}/xdg/autostart/org.gnome.SettingsDaemon.Sound.desktop
|
||||
%{_userunitdir}/org.gnome.SettingsDaemon.Sound.service
|
||||
%{_userunitdir}/org.gnome.SettingsDaemon.Sound.target
|
||||
%{_libexecdir}/gsd-wwan
|
||||
%{_sysconfdir}/xdg/autostart/org.gnome.SettingsDaemon.Wwan.desktop
|
||||
%{_userunitdir}/org.gnome.SettingsDaemon.Wwan.service
|
||||
%{_userunitdir}/org.gnome.SettingsDaemon.Wwan.target
|
||||
%{_libexecdir}/gsd-xsettings
|
||||
%{_sysconfdir}/xdg/autostart/org.gnome.SettingsDaemon.XSettings.desktop
|
||||
%{_userunitdir}/org.gnome.SettingsDaemon.XSettings.service
|
||||
%{_userunitdir}/org.gnome.SettingsDaemon.XSettings.target
|
||||
%{_datadir}/glib-2.0/schemas/org.gnome.settings-daemon.enums.xml
|
||||
%{_datadir}/glib-2.0/schemas/org.gnome.settings-daemon.global-shortcuts.gschema.xml
|
||||
%{_datadir}/glib-2.0/schemas/org.gnome.settings-daemon.peripherals.gschema.xml
|
||||
%{_datadir}/glib-2.0/schemas/org.gnome.settings-daemon.peripherals.wacom.gschema.xml
|
||||
%{_datadir}/glib-2.0/schemas/org.gnome.settings-daemon.plugins.color.gschema.xml
|
||||
%{_datadir}/glib-2.0/schemas/org.gnome.settings-daemon.plugins.gschema.xml
|
||||
%{_datadir}/glib-2.0/schemas/org.gnome.settings-daemon.plugins.housekeeping.gschema.xml
|
||||
%{_datadir}/glib-2.0/schemas/org.gnome.settings-daemon.plugins.media-keys.gschema.xml
|
||||
%{_datadir}/glib-2.0/schemas/org.gnome.settings-daemon.plugins.power.gschema.xml
|
||||
%{_datadir}/glib-2.0/schemas/org.gnome.settings-daemon.plugins.sharing.gschema.xml
|
||||
%{_datadir}/glib-2.0/schemas/org.gnome.settings-daemon.plugins.wwan.gschema.xml
|
||||
%{_datadir}/glib-2.0/schemas/org.gnome.settings-daemon.plugins.xsettings.gschema.xml
|
||||
%{_datadir}/polkit-1/actions/org.gnome.settings-daemon.plugins.power.policy
|
||||
# Own the directory since we can't depend on gconf providing them
|
||||
%dir %{_datadir}/GConf
|
||||
%dir %{_datadir}/GConf/gsettings
|
||||
%{_datadir}/GConf/gsettings/gnome-settings-daemon.convert
|
||||
%if %{with wacom}
|
||||
%{_datadir}/polkit-1/actions/org.gnome.settings-daemon.plugins.wacom.policy
|
||||
%{_libexecdir}/gsd-wacom-oled-helper
|
||||
%{_libexecdir}/gsd-wacom
|
||||
%{_sysconfdir}/xdg/autostart/org.gnome.SettingsDaemon.Wacom.desktop
|
||||
%{_userunitdir}/org.gnome.SettingsDaemon.Wacom.service
|
||||
%{_userunitdir}/org.gnome.SettingsDaemon.Wacom.target
|
||||
%endif
|
||||
%if %{with wayland}
|
||||
%dir %{_sysconfdir}/xdg/Xwayland-session.d
|
||||
%{_sysconfdir}/xdg/Xwayland-session.d/00-xrdb
|
||||
%endif
|
||||
%{_udevrulesdir}/61-gnome-settings-daemon-rfkill.rules
|
||||
%dir %{_userunitdir}/gnome-session-x11-services.target.wants/
|
||||
%{_userunitdir}/gnome-session-x11-services.target.wants/org.gnome.SettingsDaemon.XSettings.service
|
||||
%dir %{_userunitdir}/gnome-session-x11-services-ready.target.wants/
|
||||
%{_userunitdir}/gnome-session-x11-services-ready.target.wants/org.gnome.SettingsDaemon.XSettings.service
|
||||
%{_sysconfdir}/xdg/autostart/org.gnome.SettingsDaemon.UsbProtection.desktop
|
||||
%{_userunitdir}/org.gnome.SettingsDaemon.UsbProtection.service
|
||||
%{_userunitdir}/org.gnome.SettingsDaemon.UsbProtection.target
|
||||
%{_libexecdir}/gsd-usb-protection
|
||||
|
||||
%files devel
|
||||
%doc AUTHORS ChangeLog
|
||||
%{_includedir}/gnome-settings-daemon-%{base_ver}/
|
||||
%{_libdir}/pkgconfig/gnome-settings-daemon.pc
|
||||
|
||||
%files lang -f %{name}.lang
|
||||
|
||||
%changelog
|
Reference in New Issue
Block a user