Sync from SUSE:ALP:Source:Standard:1.0 gnome-settings-daemon revision f687c93d5b89871af7ed7f64561f8400

This commit is contained in:
Adrian Schröter 2025-01-23 15:48:05 +01:00
commit c70a701cce
11 changed files with 5906 additions and 0 deletions

23
.gitattributes vendored Normal file
View 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

View File

@ -0,0 +1,94 @@
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-44.1/plugins/usb-protection/gsd-usb-protection-manager.c
===================================================================
--- gnome-settings-daemon-44.1.orig/plugins/usb-protection/gsd-usb-protection-manager.c
+++ gnome-settings-daemon-44.1/plugins/usb-protection/gsd-usb-protection-manager.c
@@ -595,52 +595,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 plugged in. "
- "If you did not do it, check your system for any suspicious device."));
- g_variant_get_child (parameters, POLICY_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) {
- g_variant_get_child (parameters, POLICY_DEVICE_ID, "u", &(manager->last_device_id));
- gsd_screen_saver_call_lock (manager->screensaver_proxy,
- manager->cancellable,
- (GAsyncReadyCallback) on_screen_locked,
- manager);
- } else {
- show_notification (manager,
- _("USB device blocked"),
- _("The new inserted device has been blocked because the USB protection is active."));
- }
+ 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."));
}
}
}

BIN
gnome-settings-daemon-44.1.tar.xz (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,45 @@
diff -urp gnome-settings-daemon-3.33.90.orig/plugins/media-keys/gsd-media-keys-manager.c gnome-settings-daemon-3.33.90/plugins/media-keys/gsd-media-keys-manager.c
--- gnome-settings-daemon-3.33.90.orig/plugins/media-keys/gsd-media-keys-manager.c 2019-08-05 18:40:19.000000000 -0500
+++ gnome-settings-daemon-3.33.90/plugins/media-keys/gsd-media-keys-manager.c 2019-08-31 06:38:56.889827801 -0500
@@ -374,7 +374,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
@@ -416,7 +416,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);
diff -urp gnome-settings-daemon-3.33.90.orig/plugins/rfkill/rfkill-glib.c gnome-settings-daemon-3.33.90/plugins/rfkill/rfkill-glib.c
--- gnome-settings-daemon-3.33.90.orig/plugins/rfkill/rfkill-glib.c 2019-08-05 18:40:19.000000000 -0500
+++ gnome-settings-daemon-3.33.90/plugins/rfkill/rfkill-glib.c 2019-08-31 06:39:55.674139424 -0500
@@ -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";
}
}
diff -urp gnome-settings-daemon-3.33.90.orig/plugins/xsettings/xsettings-manager.c gnome-settings-daemon-3.33.90/plugins/xsettings/xsettings-manager.c
--- gnome-settings-daemon-3.33.90.orig/plugins/xsettings/xsettings-manager.c 2019-08-05 18:40:19.000000000 -0500
+++ gnome-settings-daemon-3.33.90/plugins/xsettings/xsettings-manager.c 2019-08-31 06:40:54.030448794 -0500
@@ -268,7 +268,7 @@ xsettings_get_typecode (GVariant *value)
case G_VARIANT_CLASS_TUPLE:
return XSETTINGS_TYPE_COLOR;
default:
- g_assert_not_reached ();
+ return NULL;
}
}

View File

@ -0,0 +1,32 @@
From fd0df3003ba7c0ae4d04a8314358db7f82dd2ab1 Mon Sep 17 00:00:00 2001
From: Felix Zhang <fezhang@suse.com>
Date: Tue, 6 May 2014 16:13:04 +0800
Subject: [PATCH] hide warnings
---
diff -urp gnome-settings-daemon-3.33.90.orig/plugins/color/gsd-color-profiles.c gnome-settings-daemon-3.33.90/plugins/color/gsd-color-profiles.c
--- gnome-settings-daemon-3.33.90.orig/plugins/color/gsd-color-profiles.c 2019-08-05 18:40:19.000000000 -0500
+++ gnome-settings-daemon-3.33.90/plugins/color/gsd-color-profiles.c 2019-08-31 19:41:32.942733480 -0500
@@ -71,7 +71,9 @@ gcm_session_client_connect_cb (GObject *
profiles = GSD_COLOR_PROFILES (user_data);
ret = cd_client_get_has_server (profiles->client);
if (!ret) {
+ /* hide this warning for SLES
g_warning ("There is no colord server available");
+ */
return;
}
diff -urp gnome-settings-daemon-3.33.90.orig/plugins/color/gsd-color-state.c gnome-settings-daemon-3.33.90/plugins/color/gsd-color-state.c
--- gnome-settings-daemon-3.33.90.orig/plugins/color/gsd-color-state.c 2019-08-05 18:40:19.000000000 -0500
+++ gnome-settings-daemon-3.33.90/plugins/color/gsd-color-state.c 2019-08-31 19:42:00.470879362 -0500
@@ -1359,7 +1359,9 @@ gcm_session_client_connect_cb (GObject *
/* is there an available colord instance? */
ret = cd_client_get_has_server (state->client);
if (!ret) {
+ /* hide this warning for SLES
g_warning ("There is no colord server available");
+ */
return;
}

View File

@ -0,0 +1,63 @@
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(-)
diff -urp gnome-settings-daemon-3.33.90.orig/plugins/keyboard/gsd-keyboard-manager.c gnome-settings-daemon-3.33.90/plugins/keyboard/gsd-keyboard-manager.c
--- gnome-settings-daemon-3.33.90.orig/plugins/keyboard/gsd-keyboard-manager.c 2019-08-05 18:40:19.000000000 -0500
+++ gnome-settings-daemon-3.33.90/plugins/keyboard/gsd-keyboard-manager.c 2019-08-31 06:29:26.930806593 -0500
@@ -331,7 +331,7 @@ update_gtk_im_module (GsdKeyboardManager
}
static void
-get_sources_from_xkb_config (GsdKeyboardManager *manager)
+get_sources_from_xkb_config (GsdKeyboardManager *manager, gboolean running_under_gdm)
{
GVariantBuilder builder;
GVariant *v;
@@ -349,7 +349,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;
}
@@ -528,15 +528,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_strv (settings, KEY_KEYBOARD_OPTIONS);

View File

@ -0,0 +1,34 @@
From 3d9c3ecda9c68039c309bfb6bfc93830c4a0e20e Mon Sep 17 00:00:00 2001
From: Felix Zhang <fezhang@suse.com>
Date: Mon, 12 Sep 2016 18:00:07 +0800
Subject: [PATCH] more power button actions
---
data/gsd-enums.h | 2 ++
plugins/media-keys/gsd-media-keys-manager.c | 6 ++++++
2 files changed, 8 insertions(+)
diff -urp gnome-settings-daemon-3.33.90.orig/data/gsd-enums.h gnome-settings-daemon-3.33.90/data/gsd-enums.h
--- gnome-settings-daemon-3.33.90.orig/data/gsd-enums.h 2019-08-05 18:40:19.000000000 -0500
+++ gnome-settings-daemon-3.33.90/data/gsd-enums.h 2019-08-31 19:45:22.123948132 -0500
@@ -105,6 +105,7 @@ typedef enum
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 -urp gnome-settings-daemon-3.33.90.orig/plugins/media-keys/gsd-media-keys-manager.c gnome-settings-daemon-3.33.90/plugins/media-keys/gsd-media-keys-manager.c
--- gnome-settings-daemon-3.33.90.orig/plugins/media-keys/gsd-media-keys-manager.c 2019-08-31 19:31:09.939430941 -0500
+++ gnome-settings-daemon-3.33.90/plugins/media-keys/gsd-media-keys-manager.c 2019-08-31 19:45:22.127948152 -0500
@@ -2230,6 +2230,9 @@ do_config_power_button_action (GsdMediaK
action_type = g_settings_get_enum (priv->power_settings, "power-button-action");
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;

View File

@ -0,0 +1,107 @@
Index: gnome-settings-daemon-41.0/data/org.gnome.settings-daemon.plugins.power.gschema.xml.in
===================================================================
--- gnome-settings-daemon-41.0.orig/data/org.gnome.settings-daemon.plugins.power.gschema.xml.in
+++ gnome-settings-daemon-41.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. This action is hard-coded (and the setting ignored) on virtual machines (power off) and tablets (suspend).</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-41.0/plugins/power/gsd-power-manager.c
===================================================================
--- gnome-settings-daemon-41.0.orig/plugins/power/gsd-power-manager.c
+++ gnome-settings-daemon-41.0/plugins/power/gsd-power-manager.c
@@ -164,6 +164,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 */
@@ -205,6 +206,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;
@@ -1744,6 +1746,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;
@@ -1824,6 +1869,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 */
@@ -2777,6 +2823,12 @@ 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);

View File

@ -0,0 +1,17 @@
Index: gnome-settings-daemon-3.32.1/plugins/keyboard/gsd-keyboard-manager.c
===================================================================
--- gnome-settings-daemon-3.32.1.orig/plugins/keyboard/gsd-keyboard-manager.c
+++ gnome-settings-daemon-3.32.1/plugins/keyboard/gsd-keyboard-manager.c
@@ -524,7 +524,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);
}

File diff suppressed because it is too large Load Diff

292
gnome-settings-daemon.spec Normal file
View File

@ -0,0 +1,292 @@
#
# spec file for package gnome-settings-daemon
#
# Copyright (c) 2023 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 44
Name: gnome-settings-daemon
Version: 44.1
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: https://download.gnome.org/sources/gnome-settings-daemon/44/%{name}-%{version}.tar.xz
# 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
Patch1: 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.
Patch2: gnome-settings-daemon-switch-Japanese-default-input-to-mozc.patch
# PATCH-FIX-UPSTREAM gnome-settings-daemon-bgo793253.patch bgo#793253 dimstar@opensuse.org -- Fix no-return-in-nonvoid-function
Patch3: gnome-settings-daemon-bgo793253.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
## 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-bnc873545-hide-warnings.patch bnc#873545 fezhang@suse.com -- hide the warnings when g-s-d cannot find colord running, which is expected on SLES
Patch1001: gnome-settings-daemon-bnc873545-hide-warnings.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.
Patch1002: 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.58
BuildRequires: pkgconfig(gnome-desktop-3.0) >= 3.11.1
BuildRequires: pkgconfig(gsettings-desktop-schemas) >= 42
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(nss)
BuildRequires: pkgconfig(pango) >= 1.20.0
BuildRequires: pkgconfig(polkit-gobject-1) >= 0.114
BuildRequires: pkgconfig(systemd)
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 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
%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
%autopatch -p1 -M 999
# Enable the patches for both Leap 15 and SLE 15, please find the clarification at bsc#1158476.
%if 0%{?sle_version} >= 150000
%autopatch -p1 -m 1000
%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.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