Compare commits
No commits in common. "c8" and "a10s" have entirely different histories.
2
.gitignore
vendored
2
.gitignore
vendored
@ -1 +1 @@
|
||||
SOURCES/gnome-settings-daemon-3.32.0.tar.xz
|
||||
/gnome-settings-daemon-*.tar.xz
|
||||
|
||||
@ -1 +0,0 @@
|
||||
92145a7a5714ebf3aeb90baaacb7e6955335731b SOURCES/gnome-settings-daemon-3.32.0.tar.xz
|
||||
@ -1,47 +0,0 @@
|
||||
From bd0488fe501bae74fae1fbb21566aa35f38aa6fc Mon Sep 17 00:00:00 2001
|
||||
From: Felipe Borges <felipeborges@gnome.org>
|
||||
Date: Wed, 15 Feb 2023 15:27:59 +0100
|
||||
Subject: [PATCH] Make power-button-action always power off when chassis=server
|
||||
|
||||
Servers often don't support hibernation/suspend.
|
||||
---
|
||||
...rg.gnome.settings-daemon.plugins.power.gschema.xml.in | 2 +-
|
||||
plugins/media-keys/gsd-media-keys-manager.c | 9 ++++++---
|
||||
2 files changed, 7 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/data/org.gnome.settings-daemon.plugins.power.gschema.xml.in b/data/org.gnome.settings-daemon.plugins.power.gschema.xml.in
|
||||
index fc61d133..952104ed 100644
|
||||
--- a/data/org.gnome.settings-daemon.plugins.power.gschema.xml.in
|
||||
+++ b/data/org.gnome.settings-daemon.plugins.power.gschema.xml.in
|
||||
@@ -39,7 +39,7 @@
|
||||
<key name="power-button-action" enum="org.gnome.settings-daemon.GsdPowerButtonActionType">
|
||||
<default>'suspend'</default>
|
||||
<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>
|
||||
+ <description>The action to take when the system power button is pressed. Virtual machines and servers only honor the 'nothing' action, and will shutdown otherwise. Tablets always suspend, ignoring all the other action options.</description>
|
||||
</key>
|
||||
</schema>
|
||||
</schemalist>
|
||||
diff --git a/plugins/media-keys/gsd-media-keys-manager.c b/plugins/media-keys/gsd-media-keys-manager.c
|
||||
index ac6f7ab4..46bdade6 100644
|
||||
--- a/plugins/media-keys/gsd-media-keys-manager.c
|
||||
+++ b/plugins/media-keys/gsd-media-keys-manager.c
|
||||
@@ -2083,9 +2083,12 @@ do_config_power_button_action (GsdMediaKeysManager *manager,
|
||||
if (manager->priv->power_button_disabled)
|
||||
return;
|
||||
|
||||
- action_type = g_settings_get_enum (manager->priv->power_settings, "power-button-action");
|
||||
- /* Always power off VMs, except when power-button-action is "nothing" */
|
||||
- if (g_strcmp0 (manager->priv->chassis_type, "vm") == 0) {
|
||||
+ action_type = g_settings_get_enum (manager->priv->power_settings, "power-button-action");
|
||||
+ /* Always power off VMs and servers, except when power-button-action is "nothing" */
|
||||
+ if (g_strcmp0 (manager->priv->chassis_type, "vm") == 0 ||
|
||||
+ g_strcmp0 (manager->priv->chassis_type, "server")) {
|
||||
+ g_warning ("Virtual machines and servers only honor the 'nothing' power-button-action, and will shutdown otherwise");
|
||||
+
|
||||
if (action_type != GSD_POWER_BUTTON_ACTION_NOTHING)
|
||||
power_action (manager, "PowerOff", !in_lock_screen);
|
||||
|
||||
--
|
||||
2.37.1
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,125 +0,0 @@
|
||||
From a8115378fd876bfd4c3871428cdc16134ed484b1 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Jonas=20=C3=85dahl?= <jadahl@gmail.com>
|
||||
Date: Tue, 5 Jan 2021 11:11:18 +0100
|
||||
Subject: [PATCH] media-keys: Mark screen cast as stopped if it was signalled
|
||||
as such
|
||||
|
||||
gnome-shell now sends a 'Stopped' signal if it was stopped without
|
||||
gsd-media-keys itself being the stopper.
|
||||
---
|
||||
plugins/media-keys/gsd-media-keys-manager.c | 52 +++++++++++++++++++--
|
||||
1 file changed, 49 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/plugins/media-keys/gsd-media-keys-manager.c b/plugins/media-keys/gsd-media-keys-manager.c
|
||||
index 4d251f08..a526d5cf 100644
|
||||
--- a/plugins/media-keys/gsd-media-keys-manager.c
|
||||
+++ b/plugins/media-keys/gsd-media-keys-manager.c
|
||||
@@ -210,6 +210,7 @@ struct GsdMediaKeysManagerPrivate
|
||||
guint screencast_timeout_id;
|
||||
gboolean screencast_recording;
|
||||
GCancellable *screencast_cancellable;
|
||||
+ guint screencast_stopped_signal_id;
|
||||
|
||||
/* Rotation */
|
||||
guint iio_sensor_watch_id;
|
||||
@@ -2346,20 +2347,26 @@ do_rfkill_action (GsdMediaKeysManager *manager,
|
||||
}
|
||||
|
||||
static void
|
||||
-screencast_stop (GsdMediaKeysManager *manager)
|
||||
+screencast_stopped (GsdMediaKeysManager *manager)
|
||||
{
|
||||
if (manager->priv->screencast_timeout_id > 0) {
|
||||
g_source_remove (manager->priv->screencast_timeout_id);
|
||||
manager->priv->screencast_timeout_id = 0;
|
||||
}
|
||||
|
||||
+ manager->priv->screencast_recording = FALSE;
|
||||
+}
|
||||
+
|
||||
+static void
|
||||
+screencast_stop (GsdMediaKeysManager *manager)
|
||||
+{
|
||||
+ screencast_stopped (manager);
|
||||
+
|
||||
g_dbus_proxy_call (manager->priv->screencast_proxy,
|
||||
"StopScreencast", NULL,
|
||||
G_DBUS_CALL_FLAGS_NONE, -1,
|
||||
manager->priv->screencast_cancellable,
|
||||
NULL, NULL);
|
||||
-
|
||||
- manager->priv->screencast_recording = FALSE;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
@@ -2835,6 +2842,21 @@ initialize_volume_handler (GsdMediaKeysManager *manager)
|
||||
gnome_settings_profile_end ("gvc_mixer_control_new");
|
||||
}
|
||||
|
||||
+
|
||||
+static void
|
||||
+on_screencast_stopped (GDBusConnection *connection,
|
||||
+ const gchar *sender_name,
|
||||
+ const gchar *object_path,
|
||||
+ const gchar *interface_name,
|
||||
+ const gchar *signal_name,
|
||||
+ GVariant *parameters,
|
||||
+ gpointer data)
|
||||
+{
|
||||
+ GsdMediaKeysManager *manager = data;
|
||||
+
|
||||
+ screencast_stopped (manager);
|
||||
+}
|
||||
+
|
||||
static void
|
||||
on_screencast_proxy_ready (GObject *source,
|
||||
GAsyncResult *result,
|
||||
@@ -2850,7 +2872,20 @@ on_screencast_proxy_ready (GObject *source,
|
||||
if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
|
||||
g_warning ("Failed to create proxy for screencast: %s", error->message);
|
||||
g_error_free (error);
|
||||
+ return;
|
||||
}
|
||||
+
|
||||
+ manager->priv->screencast_stopped_signal_id =
|
||||
+ g_dbus_connection_signal_subscribe (manager->priv->connection,
|
||||
+ SHELL_DBUS_NAME ".Screencast",
|
||||
+ SHELL_DBUS_NAME ".Screencast",
|
||||
+ "Stopped",
|
||||
+ SHELL_DBUS_PATH "/Screencast",
|
||||
+ NULL,
|
||||
+ G_DBUS_SIGNAL_FLAGS_NONE,
|
||||
+ on_screencast_stopped,
|
||||
+ manager,
|
||||
+ NULL);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -2901,6 +2936,11 @@ shell_presence_changed (GsdMediaKeysManager *manager)
|
||||
on_screencast_proxy_ready, manager);
|
||||
g_free (name_owner);
|
||||
} else {
|
||||
+ if (manager->priv->screencast_stopped_signal_id)
|
||||
+ g_dbus_connection_signal_unsubscribe (manager->priv->connection,
|
||||
+ manager->priv->screencast_stopped_signal_id);
|
||||
+ manager->priv->screencast_stopped_signal_id = 0;
|
||||
+
|
||||
g_ptr_array_set_size (manager->priv->keys, 0);
|
||||
g_clear_object (&manager->priv->key_grabber);
|
||||
g_clear_object (&manager->priv->screencast_proxy);
|
||||
@@ -3091,6 +3131,12 @@ gsd_media_keys_manager_stop (GsdMediaKeysManager *manager)
|
||||
priv->reenable_power_button_timer_id = 0;
|
||||
}
|
||||
|
||||
+ if (priv->screencast_stopped_signal_id) {
|
||||
+ g_dbus_connection_signal_unsubscribe (priv->connection,
|
||||
+ priv->screencast_stopped_signal_id);
|
||||
+ priv->screencast_stopped_signal_id = 0;
|
||||
+ }
|
||||
+
|
||||
g_clear_pointer (&manager->priv->ca, ca_context_destroy);
|
||||
|
||||
#if HAVE_GUDEV
|
||||
--
|
||||
2.27.0
|
||||
|
||||
@ -1,34 +0,0 @@
|
||||
From 77b52a04c9154a7e7b2434f6c70ba6b4fd84c9f1 Mon Sep 17 00:00:00 2001
|
||||
From: Benjamin Berg <bberg@redhat.com>
|
||||
Date: Thu, 15 Oct 2020 15:18:35 +0200
|
||||
Subject: [PATCH] power: Avoid automatic logout in GDM/greeter
|
||||
|
||||
In GDM sessions (greeter, initial-setup), it does not make sense to
|
||||
automatically logout. This can happen if the system wide default is
|
||||
changed to default to the "logout" action.
|
||||
|
||||
Note that we already use the RUNNING_UNDER_GDM environment variable in
|
||||
the keyboard plugin currently. So doing this is likely sane, even if we
|
||||
probably want a more elegant strategy to detect whether we are in a
|
||||
"login" session.
|
||||
---
|
||||
plugins/power/gsd-power-manager.c | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
diff --git a/plugins/power/gsd-power-manager.c b/plugins/power/gsd-power-manager.c
|
||||
index e103a8a7..b100ff9e 100644
|
||||
--- a/plugins/power/gsd-power-manager.c
|
||||
+++ b/plugins/power/gsd-power-manager.c
|
||||
@@ -872,6 +872,9 @@ static void
|
||||
gnome_session_logout (GsdPowerManager *manager,
|
||||
guint logout_mode)
|
||||
{
|
||||
+ if (g_getenv("RUNNING_UNDER_GDM"))
|
||||
+ return;
|
||||
+
|
||||
g_dbus_proxy_call (G_DBUS_PROXY (manager->priv->session),
|
||||
"Logout",
|
||||
g_variant_new ("(u)", logout_mode),
|
||||
--
|
||||
2.26.2
|
||||
|
||||
@ -1,53 +0,0 @@
|
||||
From fbe9b7dba44cb284f649a1e916b2cf3ce8281211 Mon Sep 17 00:00:00 2001
|
||||
From: Benjamin Berg <bberg@redhat.com>
|
||||
Date: Tue, 7 May 2019 15:40:20 +0200
|
||||
Subject: [PATCH] power: Only disable Suspend/Hibernate actions inside VM
|
||||
|
||||
While we theoretically only want a different default value inside a VM,
|
||||
we currently hack this by never doing a suspend action inside VMs.
|
||||
However, that also breaks automatic logout, which is an unintended side
|
||||
effect.
|
||||
|
||||
Move the check to not install the corresponding timeout (preventing
|
||||
sleep warnings from being displayed) and also only enforce the VM
|
||||
specific hack for the Suspend and Hibernate actions.
|
||||
---
|
||||
plugins/power/gsd-power-manager.c | 15 ++++++++-------
|
||||
1 file changed, 8 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/plugins/power/gsd-power-manager.c b/plugins/power/gsd-power-manager.c
|
||||
index f965f6f..dbaa262 100644
|
||||
--- a/plugins/power/gsd-power-manager.c
|
||||
+++ b/plugins/power/gsd-power-manager.c
|
||||
@@ -1520,13 +1520,6 @@ idle_set_mode (GsdPowerManager *manager, GsdPowerIdleMode mode)
|
||||
return;
|
||||
}
|
||||
|
||||
- /* don't do any power saving if we're a VM */
|
||||
- if (manager->priv->is_virtual_machine) {
|
||||
- g_debug ("ignoring state transition to %s as virtual machine",
|
||||
- idle_mode_to_string (mode));
|
||||
- return;
|
||||
- }
|
||||
-
|
||||
manager->priv->current_idle_mode = mode;
|
||||
g_debug ("Doing a state transition: %s", idle_mode_to_string (mode));
|
||||
|
||||
@@ -1727,6 +1720,14 @@ idle_configure (GsdPowerManager *manager)
|
||||
clear_idle_watch (manager->priv->idle_monitor,
|
||||
&manager->priv->idle_sleep_warning_id);
|
||||
|
||||
+ /* don't do any power saving if we're a VM */
|
||||
+ if (manager->priv->is_virtual_machine &&
|
||||
+ (action_type == GSD_POWER_ACTION_SUSPEND ||
|
||||
+ action_type == GSD_POWER_ACTION_HIBERNATE)) {
|
||||
+ g_debug ("Ignoring sleep timeout with suspend action inside VM");
|
||||
+ timeout_sleep = 0;
|
||||
+ }
|
||||
+
|
||||
if (timeout_sleep != 0) {
|
||||
g_debug ("setting up sleep callback %is", timeout_sleep);
|
||||
|
||||
--
|
||||
2.31.1
|
||||
|
||||
@ -1,59 +0,0 @@
|
||||
From 0e2c4aec104b65d2f8ea7167269e91c303908a6f Mon Sep 17 00:00:00 2001
|
||||
From: Felipe Borges <felipeborges@gnome.org>
|
||||
Date: Wed, 4 Jan 2023 15:30:15 +0100
|
||||
Subject: [PATCH] power: Respect the "nothing" power-button-action for VMs
|
||||
|
||||
There are use-cases when one wants to forcefully make the guest ignore
|
||||
poweroff requests from the hypervisor.
|
||||
|
||||
See https://bugzilla.redhat.com/2062051
|
||||
|
||||
See also https://gitlab.gnome.org/GNOME/gnome-settings-daemon/-/issues/46
|
||||
---
|
||||
...org.gnome.settings-daemon.plugins.power.gschema.xml.in | 2 +-
|
||||
plugins/media-keys/gsd-media-keys-manager.c | 8 +++++---
|
||||
2 files changed, 6 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/data/org.gnome.settings-daemon.plugins.power.gschema.xml.in b/data/org.gnome.settings-daemon.plugins.power.gschema.xml.in
|
||||
index 93c704e9..fc61d133 100644
|
||||
--- a/data/org.gnome.settings-daemon.plugins.power.gschema.xml.in
|
||||
+++ b/data/org.gnome.settings-daemon.plugins.power.gschema.xml.in
|
||||
@@ -39,7 +39,7 @@
|
||||
<key name="power-button-action" enum="org.gnome.settings-daemon.GsdPowerButtonActionType">
|
||||
<default>'suspend'</default>
|
||||
<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>
|
||||
+ <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>
|
||||
</schema>
|
||||
</schemalist>
|
||||
diff --git a/plugins/media-keys/gsd-media-keys-manager.c b/plugins/media-keys/gsd-media-keys-manager.c
|
||||
index a526d5cf..ac6f7ab4 100644
|
||||
--- a/plugins/media-keys/gsd-media-keys-manager.c
|
||||
+++ b/plugins/media-keys/gsd-media-keys-manager.c
|
||||
@@ -2083,9 +2083,12 @@ do_config_power_button_action (GsdMediaKeysManager *manager,
|
||||
if (manager->priv->power_button_disabled)
|
||||
return;
|
||||
|
||||
- /* Always power off VMs when power off is pressed in the menus */
|
||||
+ action_type = g_settings_get_enum (manager->priv->power_settings, "power-button-action");
|
||||
+ /* Always power off VMs, except when power-button-action is "nothing" */
|
||||
if (g_strcmp0 (manager->priv->chassis_type, "vm") == 0) {
|
||||
- power_action (manager, "PowerOff", !in_lock_screen);
|
||||
+ if (action_type != GSD_POWER_BUTTON_ACTION_NOTHING)
|
||||
+ power_action (manager, "PowerOff", !in_lock_screen);
|
||||
+
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -2095,7 +2098,6 @@ do_config_power_button_action (GsdMediaKeysManager *manager,
|
||||
return;
|
||||
}
|
||||
|
||||
- action_type = g_settings_get_enum (manager->priv->power_settings, "power-button-action");
|
||||
switch (action_type) {
|
||||
case GSD_POWER_BUTTON_ACTION_SUSPEND:
|
||||
action = GSD_POWER_ACTION_SUSPEND;
|
||||
--
|
||||
2.37.1
|
||||
|
||||
@ -1,168 +0,0 @@
|
||||
From b0fb67c05e19a1a8715c1045f02657055d9e2578 Mon Sep 17 00:00:00 2001
|
||||
From: Marek Kasik <mkasik@redhat.com>
|
||||
Date: Wed, 22 May 2019 14:56:42 +0200
|
||||
Subject: [PATCH 1/4] smartcard: Cancel cancellable when stopping
|
||||
|
||||
self->cancellable in GsdSmartcardManager is not cancelled
|
||||
at gsd_smartcard_manager_stop() and hence some callbacks are
|
||||
still called after unload_nss() which clears SECMODListLock
|
||||
which is used by SECMOD_GetReadLock() / SECMOD_ReleaseReadLock().
|
||||
|
||||
This leads to crashes in NSSRWLock_LockRead_Util() and
|
||||
NSSRWLock_UnlockRead_Util() probably.
|
||||
|
||||
Also check for return value of g_cancellable_connect()
|
||||
and initialize pointer to PK11SlotInfo.
|
||||
|
||||
See https://bugzilla.redhat.com/show_bug.cgi?id=1646359,
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=1688791 and
|
||||
their duplicates for additional info.
|
||||
---
|
||||
plugins/smartcard/gsd-smartcard-manager.c | 7 +++++--
|
||||
1 file changed, 5 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/plugins/smartcard/gsd-smartcard-manager.c b/plugins/smartcard/gsd-smartcard-manager.c
|
||||
index 94ffdd90..09ccecc0 100644
|
||||
--- a/plugins/smartcard/gsd-smartcard-manager.c
|
||||
+++ b/plugins/smartcard/gsd-smartcard-manager.c
|
||||
@@ -157,71 +157,72 @@ unload_nss (GsdSmartcardManager *self)
|
||||
if (self->priv->nss_context != NULL) {
|
||||
g_clear_pointer (&self->priv->nss_context,
|
||||
NSS_ShutdownContext);
|
||||
g_debug ("NSS database '%s' unloaded", GSD_SMARTCARD_MANAGER_NSS_DB);
|
||||
} else {
|
||||
g_debug ("NSS database '%s' already not loaded", GSD_SMARTCARD_MANAGER_NSS_DB);
|
||||
}
|
||||
}
|
||||
|
||||
typedef struct
|
||||
{
|
||||
SECMODModule *driver;
|
||||
GHashTable *smartcards;
|
||||
int number_of_consecutive_errors;
|
||||
} WatchSmartcardsOperation;
|
||||
|
||||
static void
|
||||
on_watch_cancelled (GCancellable *cancellable,
|
||||
WatchSmartcardsOperation *operation)
|
||||
{
|
||||
SECMOD_CancelWait (operation->driver);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
watch_one_event_from_driver (GsdSmartcardManager *self,
|
||||
WatchSmartcardsOperation *operation,
|
||||
GCancellable *cancellable,
|
||||
GError **error)
|
||||
{
|
||||
GsdSmartcardManagerPrivate *priv = self->priv;
|
||||
- PK11SlotInfo *card, *old_card;
|
||||
+ PK11SlotInfo *card = NULL, *old_card;
|
||||
CK_SLOT_ID slot_id;
|
||||
gulong handler_id;
|
||||
int old_slot_series = -1, slot_series;
|
||||
|
||||
handler_id = g_cancellable_connect (cancellable,
|
||||
G_CALLBACK (on_watch_cancelled),
|
||||
operation,
|
||||
NULL);
|
||||
|
||||
- card = SECMOD_WaitForAnyTokenEvent (operation->driver, 0, PR_SecondsToInterval (1));
|
||||
+ if (handler_id != 0)
|
||||
+ card = SECMOD_WaitForAnyTokenEvent (operation->driver, 0, PR_SecondsToInterval (1));
|
||||
|
||||
g_cancellable_disconnect (cancellable, handler_id);
|
||||
|
||||
if (g_cancellable_set_error_if_cancelled (cancellable, error)) {
|
||||
g_warning ("smartcard event function cancelled");
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (card == NULL) {
|
||||
int error_code;
|
||||
|
||||
error_code = PORT_GetError ();
|
||||
|
||||
operation->number_of_consecutive_errors++;
|
||||
if (operation->number_of_consecutive_errors > 10) {
|
||||
g_warning ("Got %d consecutive smartcard errors, so giving up.",
|
||||
operation->number_of_consecutive_errors);
|
||||
|
||||
g_set_error (error,
|
||||
GSD_SMARTCARD_MANAGER_ERROR,
|
||||
GSD_SMARTCARD_MANAGER_ERROR_WITH_NSS,
|
||||
"encountered unexpected error while "
|
||||
"waiting for smartcard events (error %x)",
|
||||
error_code);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
g_warning ("Got potentially spurious smartcard event error: %x.", error_code);
|
||||
|
||||
g_usleep (0.5 * G_USEC_PER_SEC);
|
||||
@@ -764,60 +765,62 @@ gsd_smartcard_manager_idle_cb (GsdSmartcardManager *self)
|
||||
|
||||
gnome_settings_profile_end (NULL);
|
||||
|
||||
priv->start_idle_id = 0;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
gboolean
|
||||
gsd_smartcard_manager_start (GsdSmartcardManager *self,
|
||||
GError **error)
|
||||
{
|
||||
GsdSmartcardManagerPrivate *priv = self->priv;
|
||||
|
||||
gnome_settings_profile_start (NULL);
|
||||
|
||||
priv->start_idle_id = g_idle_add ((GSourceFunc) gsd_smartcard_manager_idle_cb, self);
|
||||
g_source_set_name_by_id (priv->start_idle_id, "[gnome-settings-daemon] gsd_smartcard_manager_idle_cb");
|
||||
|
||||
gnome_settings_profile_end (NULL);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void
|
||||
gsd_smartcard_manager_stop (GsdSmartcardManager *self)
|
||||
{
|
||||
GsdSmartcardManagerPrivate *priv = self->priv;
|
||||
|
||||
g_debug ("Stopping smartcard manager");
|
||||
|
||||
+ g_cancellable_cancel (priv->cancellable);
|
||||
+
|
||||
unload_nss (self);
|
||||
|
||||
g_clear_object (&priv->settings);
|
||||
g_clear_object (&priv->cancellable);
|
||||
g_clear_object (&priv->session_manager);
|
||||
g_clear_object (&priv->screen_saver);
|
||||
}
|
||||
|
||||
static void
|
||||
on_screen_locked (GsdScreenSaver *screen_saver,
|
||||
GAsyncResult *result,
|
||||
GsdSmartcardManager *self)
|
||||
{
|
||||
gboolean is_locked;
|
||||
GError *error = NULL;
|
||||
|
||||
is_locked = gsd_screen_saver_call_lock_finish (screen_saver, result, &error);
|
||||
|
||||
if (!is_locked) {
|
||||
g_warning ("Couldn't lock screen: %s", error->message);
|
||||
g_error_free (error);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
lock_screen (GsdSmartcardManager *self)
|
||||
{
|
||||
GsdSmartcardManagerPrivate *priv = self->priv;
|
||||
|
||||
--
|
||||
2.39.2
|
||||
|
||||
@ -1,25 +0,0 @@
|
||||
From 6e790966c2b6e1db8dd2c145119d3fdd19e0c18f Mon Sep 17 00:00:00 2001
|
||||
From: Matthias Clasen <mclasen@redhat.com>
|
||||
Date: Wed, 22 May 2019 16:04:42 -0400
|
||||
Subject: [PATCH] xsettings: Add an entry for the overlay scrolling setting
|
||||
|
||||
This will be used by GTK.
|
||||
---
|
||||
plugins/xsettings/gsd-xsettings-manager.c | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/plugins/xsettings/gsd-xsettings-manager.c b/plugins/xsettings/gsd-xsettings-manager.c
|
||||
index c3ac7892..4164de40 100644
|
||||
--- a/plugins/xsettings/gsd-xsettings-manager.c
|
||||
+++ b/plugins/xsettings/gsd-xsettings-manager.c
|
||||
@@ -478,6 +478,7 @@ static TranslationEntry translations [] = {
|
||||
{ "org.gnome.desktop.interface", "icon-theme", "Net/IconThemeName", translate_string_string },
|
||||
{ "org.gnome.desktop.interface", "cursor-theme", "Gtk/CursorThemeName", translate_string_string },
|
||||
{ "org.gnome.desktop.interface", "gtk-enable-primary-paste", "Gtk/EnablePrimaryPaste", translate_bool_int },
|
||||
+ { "org.gnome.desktop.interface", "overlay-scrolling", "Gtk/OverlayScrolling", translate_bool_int },
|
||||
/* cursor-size is handled via the Xft side as it needs the scaling factor */
|
||||
|
||||
{ "org.gnome.desktop.sound", "theme-name", "Net/SoundThemeName", translate_string_string },
|
||||
--
|
||||
2.23.0
|
||||
|
||||
@ -1,271 +0,0 @@
|
||||
From ad0fd6c905011b7bb9eac9fa8cb91f58d71e4a29 Mon Sep 17 00:00:00 2001
|
||||
From: Ray Strode <rstrode@redhat.com>
|
||||
Date: Mon, 6 Nov 2017 15:49:58 -0500
|
||||
Subject: [PATCH 2/4] account: reshow the notification when screen unlocks
|
||||
|
||||
---
|
||||
plugins/account/gsd-account-manager.c | 48 ++++++++++++++++++++++++---
|
||||
1 file changed, 43 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/plugins/account/gsd-account-manager.c b/plugins/account/gsd-account-manager.c
|
||||
index 40b91cb6..cb37f466 100644
|
||||
--- a/plugins/account/gsd-account-manager.c
|
||||
+++ b/plugins/account/gsd-account-manager.c
|
||||
@@ -11,72 +11,75 @@
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <sys/wait.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <unistd.h>
|
||||
#include <string.h>
|
||||
#include <errno.h>
|
||||
|
||||
#include <locale.h>
|
||||
|
||||
#include <glib.h>
|
||||
#include <glib/gi18n.h>
|
||||
#include <glib/gstdio.h>
|
||||
|
||||
#include <cups/cups.h>
|
||||
#include <cups/ppd.h>
|
||||
#include <libnotify/notify.h>
|
||||
|
||||
#include "gnome-settings-profile.h"
|
||||
+#include "gnome-settings-bus.h"
|
||||
#include "gsd-account-manager.h"
|
||||
#include "org.freedesktop.Accounts.h"
|
||||
#include "org.freedesktop.Accounts.User.h"
|
||||
|
||||
#define GSD_ACCOUNT_MANAGER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GSD_TYPE_ACCOUNT_MANAGER, GsdAccountManagerPrivate))
|
||||
|
||||
struct GsdAccountManagerPrivate
|
||||
{
|
||||
GsdAccounts *accounts_proxy;
|
||||
GsdAccountsUser *accounts_user_proxy;
|
||||
GCancellable *cancellable;
|
||||
|
||||
+ GsdScreenSaver *screensaver_proxy;
|
||||
+
|
||||
gint64 expiration_time;
|
||||
gint64 last_change_time;
|
||||
gint64 min_days_between_changes;
|
||||
gint64 max_days_between_changes;
|
||||
gint64 days_to_warn;
|
||||
gint64 days_after_expiration_until_lock;
|
||||
|
||||
NotifyNotification *notification;
|
||||
};
|
||||
|
||||
static void gsd_account_manager_class_init (GsdAccountManagerClass *klass);
|
||||
static void gsd_account_manager_init (GsdAccountManager *account_manager);
|
||||
static void gsd_account_manager_finalize (GObject *object);
|
||||
|
||||
G_DEFINE_TYPE (GsdAccountManager, gsd_account_manager, G_TYPE_OBJECT)
|
||||
|
||||
static gpointer manager_object = NULL;
|
||||
|
||||
static void
|
||||
on_notification_closed (NotifyNotification *notification,
|
||||
gpointer user_data)
|
||||
{
|
||||
GsdAccountManager *manager = user_data;
|
||||
|
||||
g_clear_object (&manager->priv->notification);
|
||||
}
|
||||
|
||||
static void
|
||||
hide_notification (GsdAccountManager *manager)
|
||||
{
|
||||
@@ -221,77 +224,111 @@ on_got_password_expiration_policy (GsdAccountsUser *accounts_user_proxy,
|
||||
gint64 days_after_expiration_until_lock;
|
||||
|
||||
gnome_settings_profile_start (NULL);
|
||||
succeeded = gsd_accounts_user_call_get_password_expiration_policy_finish (accounts_user_proxy,
|
||||
&expiration_time,
|
||||
&last_change_time,
|
||||
&min_days_between_changes,
|
||||
&max_days_between_changes,
|
||||
&days_to_warn,
|
||||
&days_after_expiration_until_lock,
|
||||
res,
|
||||
&error);
|
||||
|
||||
if (!succeeded) {
|
||||
g_warning ("Failed to get password expiration policy for user: %s", error->message);
|
||||
goto out;
|
||||
}
|
||||
|
||||
set_policy_number (&manager->priv->expiration_time, expiration_time);
|
||||
set_policy_number (&manager->priv->last_change_time, last_change_time);
|
||||
set_policy_number (&manager->priv->min_days_between_changes, min_days_between_changes);
|
||||
set_policy_number (&manager->priv->max_days_between_changes, max_days_between_changes);
|
||||
set_policy_number (&manager->priv->days_to_warn, days_to_warn);
|
||||
set_policy_number (&manager->priv->days_after_expiration_until_lock, days_after_expiration_until_lock);
|
||||
|
||||
update_password_notification (manager);
|
||||
out:
|
||||
gnome_settings_profile_end (NULL);
|
||||
}
|
||||
|
||||
+static void
|
||||
+fetch_password_expiration_policy (GsdAccountManager *manager)
|
||||
+{
|
||||
+ gsd_accounts_user_call_get_password_expiration_policy (manager->priv->accounts_user_proxy,
|
||||
+ manager->priv->cancellable,
|
||||
+ (GAsyncReadyCallback)
|
||||
+ on_got_password_expiration_policy,
|
||||
+ manager);
|
||||
+}
|
||||
+
|
||||
+static void
|
||||
+on_screensaver_signal (GDBusProxy *proxy,
|
||||
+ const gchar *sender_name,
|
||||
+ const gchar *signal_name,
|
||||
+ GVariant *parameters,
|
||||
+ gpointer user_data)
|
||||
+{
|
||||
+ GsdAccountManager *manager = user_data;
|
||||
+
|
||||
+ if (g_strcmp0 (signal_name, "ActiveChanged") == 0) {
|
||||
+ gboolean active;
|
||||
+
|
||||
+ g_variant_get (parameters, "(b)", &active);
|
||||
+
|
||||
+ if (!active) {
|
||||
+ fetch_password_expiration_policy (manager);
|
||||
+ }
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
static void
|
||||
on_got_accounts_user_proxy (GObject *source_object,
|
||||
GAsyncResult *res,
|
||||
gpointer user_data)
|
||||
{
|
||||
GsdAccountManager *manager = user_data;
|
||||
g_autoptr(GError) error = NULL;
|
||||
|
||||
gnome_settings_profile_start (NULL);
|
||||
manager->priv->accounts_user_proxy = gsd_accounts_user_proxy_new_finish (res, &error);
|
||||
|
||||
if (manager->priv->accounts_user_proxy != NULL) {
|
||||
- gsd_accounts_user_call_get_password_expiration_policy (manager->priv->accounts_user_proxy,
|
||||
- manager->priv->cancellable,
|
||||
- (GAsyncReadyCallback)
|
||||
- on_got_password_expiration_policy,
|
||||
- manager);
|
||||
+ fetch_password_expiration_policy (manager);
|
||||
+
|
||||
+ manager->priv->screensaver_proxy = gnome_settings_bus_get_screen_saver_proxy ();
|
||||
+
|
||||
+ g_signal_connect (manager->priv->screensaver_proxy,
|
||||
+ "g-signal",
|
||||
+ G_CALLBACK (on_screensaver_signal),
|
||||
+ manager);
|
||||
+
|
||||
} else {
|
||||
g_warning ("Failed to get user proxy to accounts service: %s", error->message);
|
||||
goto out;
|
||||
}
|
||||
|
||||
out:
|
||||
gnome_settings_profile_end (NULL);
|
||||
}
|
||||
|
||||
static void
|
||||
on_got_user_object_path (GsdAccounts *accounts_proxy,
|
||||
GAsyncResult *res,
|
||||
gpointer user_data)
|
||||
{
|
||||
GsdAccountManager *manager = user_data;
|
||||
g_autoptr(GError) error = NULL;
|
||||
gboolean succeeded;
|
||||
gchar *object_path;
|
||||
GDBusConnection *connection;
|
||||
|
||||
gnome_settings_profile_start (NULL);
|
||||
|
||||
succeeded = gsd_accounts_call_find_user_by_id_finish (accounts_proxy,
|
||||
&object_path,
|
||||
res,
|
||||
&error);
|
||||
|
||||
if (!succeeded) {
|
||||
g_warning ("Unable to find current user in accounts service: %s",
|
||||
error->message);
|
||||
@@ -343,60 +380,61 @@ gsd_account_manager_start (GsdAccountManager *manager,
|
||||
g_debug ("Starting accounts manager");
|
||||
|
||||
gnome_settings_profile_start (NULL);
|
||||
manager->priv->cancellable = g_cancellable_new ();
|
||||
gsd_accounts_proxy_new_for_bus (G_BUS_TYPE_SYSTEM,
|
||||
G_DBUS_PROXY_FLAGS_NONE,
|
||||
"org.freedesktop.Accounts",
|
||||
"/org/freedesktop/Accounts",
|
||||
manager->priv->cancellable,
|
||||
(GAsyncReadyCallback)
|
||||
on_got_accounts_proxy,
|
||||
manager);
|
||||
gnome_settings_profile_end (NULL);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void
|
||||
gsd_account_manager_stop (GsdAccountManager *manager)
|
||||
{
|
||||
g_debug ("Stopping accounts manager");
|
||||
|
||||
if (manager->priv->cancellable != NULL) {
|
||||
g_cancellable_cancel (manager->priv->cancellable);
|
||||
g_clear_object (&manager->priv->cancellable);
|
||||
}
|
||||
|
||||
g_clear_object (&manager->priv->accounts_proxy);
|
||||
g_clear_object (&manager->priv->accounts_user_proxy);
|
||||
g_clear_object (&manager->priv->notification);
|
||||
+ g_clear_object (&manager->priv->screensaver_proxy);
|
||||
}
|
||||
|
||||
static void
|
||||
gsd_account_manager_class_init (GsdAccountManagerClass *klass)
|
||||
{
|
||||
GObjectClass *object_class = G_OBJECT_CLASS (klass);
|
||||
|
||||
object_class->finalize = gsd_account_manager_finalize;
|
||||
|
||||
notify_init ("gnome-settings-daemon");
|
||||
|
||||
g_type_class_add_private (klass, sizeof (GsdAccountManagerPrivate));
|
||||
}
|
||||
|
||||
static void
|
||||
gsd_account_manager_init (GsdAccountManager *manager)
|
||||
{
|
||||
manager->priv = GSD_ACCOUNT_MANAGER_GET_PRIVATE (manager);
|
||||
}
|
||||
|
||||
static void
|
||||
gsd_account_manager_finalize (GObject *object)
|
||||
{
|
||||
GsdAccountManager *manager;
|
||||
|
||||
g_return_if_fail (object != NULL);
|
||||
g_return_if_fail (GSD_IS_ACCOUNT_MANAGER (object));
|
||||
|
||||
manager = GSD_ACCOUNT_MANAGER (object);
|
||||
|
||||
--
|
||||
2.21.0
|
||||
|
||||
@ -1,49 +0,0 @@
|
||||
From f2cd5fb30892e3868732fca1d38fc15fdb73ec18 Mon Sep 17 00:00:00 2001
|
||||
From: Benjamin Berg <bberg@redhat.com>
|
||||
Date: Tue, 27 Oct 2020 10:20:34 +0100
|
||||
Subject: [PATCH 2/2] power: Never register sleep timeout for logout in GDM
|
||||
|
||||
We already suppress logout actions in GDM (10aa1714b05b, power: Avoid
|
||||
automatic logout in GDM/greeter). However, while this prevents the
|
||||
action, we may still warn.
|
||||
|
||||
Change it so that the corresponding timeouts will never be registered.
|
||||
Leave the guard in gnome_session_logout but add a warning as we should
|
||||
never be hitting that code path.
|
||||
---
|
||||
plugins/power/gsd-power-manager.c | 11 ++++++++++-
|
||||
1 file changed, 10 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/plugins/power/gsd-power-manager.c b/plugins/power/gsd-power-manager.c
|
||||
index 9f2e858e..ed855b6b 100644
|
||||
--- a/plugins/power/gsd-power-manager.c
|
||||
+++ b/plugins/power/gsd-power-manager.c
|
||||
@@ -872,8 +872,10 @@ static void
|
||||
gnome_session_logout (GsdPowerManager *manager,
|
||||
guint logout_mode)
|
||||
{
|
||||
- if (g_getenv("RUNNING_UNDER_GDM"))
|
||||
+ if (g_getenv ("RUNNING_UNDER_GDM")) {
|
||||
+ g_warning ("Prevented logout from GDM session! This indicates an issue in gsd-power.");
|
||||
return;
|
||||
+ }
|
||||
|
||||
g_dbus_proxy_call (G_DBUS_PROXY (manager->priv->session),
|
||||
"Logout",
|
||||
@@ -1773,6 +1775,13 @@ idle_configure (GsdPowerManager *manager)
|
||||
timeout_sleep = 0;
|
||||
}
|
||||
|
||||
+ /* don't do any automatic logout if we are in GDM */
|
||||
+ if (g_getenv ("RUNNING_UNDER_GDM") &&
|
||||
+ (action_type == GSD_POWER_ACTION_LOGOUT)) {
|
||||
+ g_debug ("Ignoring sleep timeout with logout action inside GDM");
|
||||
+ timeout_sleep = 0;
|
||||
+ }
|
||||
+
|
||||
if (timeout_sleep != 0) {
|
||||
g_debug ("setting up sleep callback %is", timeout_sleep);
|
||||
|
||||
--
|
||||
2.26.2
|
||||
|
||||
@ -1,124 +0,0 @@
|
||||
From 65d854c690cad1ccef6544a8c571bbb723ff9be0 Mon Sep 17 00:00:00 2001
|
||||
From: Jack Massey <jacknmassey@gmail.com>
|
||||
Date: Tue, 17 Sep 2019 09:39:56 +1000
|
||||
Subject: [PATCH 2/4] smartcard: Change manager to non-blocking
|
||||
|
||||
NSS's SECMOND_WaitForAnyTokenEvent uses the pkcs11 C_WaitForSlotEvent,
|
||||
and by default NSS will use p11-kit, at least on Fedora and Ubuntu.
|
||||
p11-kit doesn't support the blocking call for C_WaitForSlotEvent so NSS
|
||||
falls back to a polling simulation of the C_WaitForSlotEvent. This
|
||||
causes the LED on the smartcard to blink constantly as the card is
|
||||
polled.
|
||||
|
||||
If we instead use the non-blocking version of the call, which p11-kit
|
||||
supports, NSS doesn't poll the card. The downside of this is that the
|
||||
application will wake up every second to check for events even if there
|
||||
hasn't been any, plus the fact that there could be up to a second delay
|
||||
between the event and it being picked up by gsd-smartcard. However, NSS
|
||||
is polling anyway so this is consistent with existing behaviour.
|
||||
|
||||
The reason a one second delay was chosen was because this is what was
|
||||
currently used in NSS. nss/lib/dev/devslot.c:17
|
||||
|
||||
/* measured in seconds */
|
||||
#define NSSSLOT_TOKEN_DELAY_TIME 1
|
||||
---
|
||||
plugins/smartcard/gsd-smartcard-manager.c | 15 +++++++++++++--
|
||||
1 file changed, 13 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/plugins/smartcard/gsd-smartcard-manager.c b/plugins/smartcard/gsd-smartcard-manager.c
|
||||
index 09ccecc0..77650643 100644
|
||||
--- a/plugins/smartcard/gsd-smartcard-manager.c
|
||||
+++ b/plugins/smartcard/gsd-smartcard-manager.c
|
||||
@@ -167,75 +167,86 @@ typedef struct
|
||||
{
|
||||
SECMODModule *driver;
|
||||
GHashTable *smartcards;
|
||||
int number_of_consecutive_errors;
|
||||
} WatchSmartcardsOperation;
|
||||
|
||||
static void
|
||||
on_watch_cancelled (GCancellable *cancellable,
|
||||
WatchSmartcardsOperation *operation)
|
||||
{
|
||||
SECMOD_CancelWait (operation->driver);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
watch_one_event_from_driver (GsdSmartcardManager *self,
|
||||
WatchSmartcardsOperation *operation,
|
||||
GCancellable *cancellable,
|
||||
GError **error)
|
||||
{
|
||||
GsdSmartcardManagerPrivate *priv = self->priv;
|
||||
PK11SlotInfo *card = NULL, *old_card;
|
||||
CK_SLOT_ID slot_id;
|
||||
gulong handler_id;
|
||||
int old_slot_series = -1, slot_series;
|
||||
|
||||
handler_id = g_cancellable_connect (cancellable,
|
||||
G_CALLBACK (on_watch_cancelled),
|
||||
operation,
|
||||
NULL);
|
||||
|
||||
- if (handler_id != 0)
|
||||
- card = SECMOD_WaitForAnyTokenEvent (operation->driver, 0, PR_SecondsToInterval (1));
|
||||
+ if (handler_id != 0) {
|
||||
+ /* Use the non-blocking version of the call as p11-kit, which
|
||||
+ * is used on both Fedora and Ubuntu, doesn't support the
|
||||
+ * blocking version of the call.
|
||||
+ */
|
||||
+ card = SECMOD_WaitForAnyTokenEvent (operation->driver, CKF_DONT_BLOCK, PR_SecondsToInterval (1));
|
||||
+ }
|
||||
|
||||
g_cancellable_disconnect (cancellable, handler_id);
|
||||
|
||||
if (g_cancellable_set_error_if_cancelled (cancellable, error)) {
|
||||
g_warning ("smartcard event function cancelled");
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (card == NULL) {
|
||||
int error_code;
|
||||
|
||||
error_code = PORT_GetError ();
|
||||
|
||||
+ if (error_code == SEC_ERROR_NO_EVENT) {
|
||||
+ g_usleep (1 * G_USEC_PER_SEC);
|
||||
+
|
||||
+ return TRUE;
|
||||
+ }
|
||||
+
|
||||
operation->number_of_consecutive_errors++;
|
||||
if (operation->number_of_consecutive_errors > 10) {
|
||||
g_warning ("Got %d consecutive smartcard errors, so giving up.",
|
||||
operation->number_of_consecutive_errors);
|
||||
|
||||
g_set_error (error,
|
||||
GSD_SMARTCARD_MANAGER_ERROR,
|
||||
GSD_SMARTCARD_MANAGER_ERROR_WITH_NSS,
|
||||
"encountered unexpected error while "
|
||||
"waiting for smartcard events (error %x)",
|
||||
error_code);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
g_warning ("Got potentially spurious smartcard event error: %x.", error_code);
|
||||
|
||||
g_usleep (0.5 * G_USEC_PER_SEC);
|
||||
return TRUE;
|
||||
}
|
||||
operation->number_of_consecutive_errors = 0;
|
||||
|
||||
slot_id = PK11_GetSlotID (card);
|
||||
slot_series = PK11_GetSlotSeries (card);
|
||||
|
||||
old_card = g_hash_table_lookup (operation->smartcards, GINT_TO_POINTER ((int) slot_id));
|
||||
|
||||
/* If there is a different card in the slot now than
|
||||
* there was before, then we need to emit a removed signal
|
||||
* for the old card
|
||||
*/
|
||||
--
|
||||
2.39.2
|
||||
|
||||
@ -1,451 +0,0 @@
|
||||
From 31844edad70876e26ab995179bc67fb3b23a1793 Mon Sep 17 00:00:00 2001
|
||||
From: Ray Strode <rstrode@redhat.com>
|
||||
Date: Mon, 6 Nov 2017 16:39:55 -0500
|
||||
Subject: [PATCH 3/4] account: display nag screen periodically
|
||||
|
||||
This is configurable via a gsettings key.
|
||||
---
|
||||
data/meson.build | 1 +
|
||||
...ings-daemon.plugins.account.gschema.xml.in | 9 +++
|
||||
plugins/account/gsd-account-manager.c | 55 +++++++++++++++++++
|
||||
3 files changed, 65 insertions(+)
|
||||
create mode 100644 data/org.gnome.settings-daemon.plugins.account.gschema.xml.in
|
||||
|
||||
diff --git a/data/meson.build b/data/meson.build
|
||||
index e93ba641..5a2cd5a7 100644
|
||||
--- a/data/meson.build
|
||||
+++ b/data/meson.build
|
||||
@@ -1,36 +1,37 @@
|
||||
data_inc = include_directories('.')
|
||||
|
||||
schemas = [
|
||||
'org.gnome.settings-daemon.peripherals.gschema.xml',
|
||||
'org.gnome.settings-daemon.peripherals.wacom.gschema.xml',
|
||||
'org.gnome.settings-daemon.plugins.gschema.xml',
|
||||
+ 'org.gnome.settings-daemon.plugins.account.gschema.xml',
|
||||
'org.gnome.settings-daemon.plugins.color.gschema.xml',
|
||||
'org.gnome.settings-daemon.plugins.housekeeping.gschema.xml',
|
||||
'org.gnome.settings-daemon.plugins.media-keys.gschema.xml',
|
||||
'org.gnome.settings-daemon.plugins.power.gschema.xml',
|
||||
'org.gnome.settings-daemon.plugins.sharing.gschema.xml',
|
||||
'org.gnome.settings-daemon.plugins.xsettings.gschema.xml'
|
||||
]
|
||||
|
||||
schema_conf = configuration_data()
|
||||
schema_conf.set('GETTEXT_PACKAGE', meson.project_name())
|
||||
|
||||
schemas_xml = []
|
||||
foreach schema: schemas
|
||||
schemas_xml += [configure_file(
|
||||
input: schema + '.in',
|
||||
output: schema,
|
||||
configuration: schema_conf,
|
||||
install: true,
|
||||
install_dir: gsd_schemadir
|
||||
)]
|
||||
endforeach
|
||||
|
||||
enums_header = files('gsd-enums.h')
|
||||
|
||||
mkenums = gnome.mkenums(
|
||||
'org.gnome.settings-daemon.enums.xml',
|
||||
sources: enums_header,
|
||||
comments: '<!-- @comment@ -->',
|
||||
fhead: '<schemalist>',
|
||||
vhead: ' <@type@ id="org.gnome.settings-daemon.@EnumName@">',
|
||||
diff --git a/data/org.gnome.settings-daemon.plugins.account.gschema.xml.in b/data/org.gnome.settings-daemon.plugins.account.gschema.xml.in
|
||||
new file mode 100644
|
||||
index 00000000..f3d59e81
|
||||
--- /dev/null
|
||||
+++ b/data/org.gnome.settings-daemon.plugins.account.gschema.xml.in
|
||||
@@ -0,0 +1,9 @@
|
||||
+<schemalist>
|
||||
+ <schema gettext-domain="@GETTEXT_PACKAGE@" id="org.gnome.settings-daemon.plugins.account" path="/org/gnome/settings-daemon/plugins/account/">
|
||||
+ <key name="notify-period" type="i">
|
||||
+ <default>1440</default>
|
||||
+ <summary>Time before repeated warning about account password expiration</summary>
|
||||
+ <description>If a user's account is expiring, a notification will get displayed periodically after the specified number of minutes</description>
|
||||
+ </key>
|
||||
+ </schema>
|
||||
+</schemalist>
|
||||
diff --git a/plugins/account/gsd-account-manager.c b/plugins/account/gsd-account-manager.c
|
||||
index cb37f466..ff054edd 100644
|
||||
--- a/plugins/account/gsd-account-manager.c
|
||||
+++ b/plugins/account/gsd-account-manager.c
|
||||
@@ -20,126 +20,135 @@
|
||||
#include "config.h"
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <sys/wait.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <unistd.h>
|
||||
#include <string.h>
|
||||
#include <errno.h>
|
||||
|
||||
#include <locale.h>
|
||||
|
||||
#include <glib.h>
|
||||
#include <glib/gi18n.h>
|
||||
#include <glib/gstdio.h>
|
||||
|
||||
#include <cups/cups.h>
|
||||
#include <cups/ppd.h>
|
||||
#include <libnotify/notify.h>
|
||||
|
||||
#include "gnome-settings-profile.h"
|
||||
#include "gnome-settings-bus.h"
|
||||
#include "gsd-account-manager.h"
|
||||
#include "org.freedesktop.Accounts.h"
|
||||
#include "org.freedesktop.Accounts.User.h"
|
||||
|
||||
#define GSD_ACCOUNT_MANAGER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GSD_TYPE_ACCOUNT_MANAGER, GsdAccountManagerPrivate))
|
||||
|
||||
struct GsdAccountManagerPrivate
|
||||
{
|
||||
+ GSettings *settings;
|
||||
+
|
||||
GsdAccounts *accounts_proxy;
|
||||
GsdAccountsUser *accounts_user_proxy;
|
||||
GCancellable *cancellable;
|
||||
|
||||
GsdScreenSaver *screensaver_proxy;
|
||||
|
||||
gint64 expiration_time;
|
||||
gint64 last_change_time;
|
||||
gint64 min_days_between_changes;
|
||||
gint64 max_days_between_changes;
|
||||
gint64 days_to_warn;
|
||||
gint64 days_after_expiration_until_lock;
|
||||
|
||||
NotifyNotification *notification;
|
||||
+
|
||||
+ gint64 last_notify_time;
|
||||
+ int notify_period;
|
||||
+ guint notify_period_timeout_id;
|
||||
};
|
||||
|
||||
static void gsd_account_manager_class_init (GsdAccountManagerClass *klass);
|
||||
static void gsd_account_manager_init (GsdAccountManager *account_manager);
|
||||
static void gsd_account_manager_finalize (GObject *object);
|
||||
+static void fetch_password_expiration_policy (GsdAccountManager *manager);
|
||||
|
||||
G_DEFINE_TYPE (GsdAccountManager, gsd_account_manager, G_TYPE_OBJECT)
|
||||
|
||||
static gpointer manager_object = NULL;
|
||||
|
||||
static void
|
||||
on_notification_closed (NotifyNotification *notification,
|
||||
gpointer user_data)
|
||||
{
|
||||
GsdAccountManager *manager = user_data;
|
||||
|
||||
g_clear_object (&manager->priv->notification);
|
||||
}
|
||||
|
||||
static void
|
||||
hide_notification (GsdAccountManager *manager)
|
||||
{
|
||||
if (manager->priv->notification == NULL)
|
||||
return;
|
||||
|
||||
notify_notification_close (manager->priv->notification, NULL);
|
||||
g_clear_object (&manager->priv->notification);
|
||||
}
|
||||
|
||||
static void
|
||||
show_notification (GsdAccountManager *manager,
|
||||
const char *primary_text,
|
||||
const char *secondary_text)
|
||||
{
|
||||
g_assert (manager->priv->notification == NULL);
|
||||
|
||||
manager->priv->notification = notify_notification_new (primary_text,
|
||||
secondary_text,
|
||||
"avatar-default-symbolic");
|
||||
notify_notification_set_app_name (manager->priv->notification, _("User Account"));
|
||||
notify_notification_set_hint (manager->priv->notification,
|
||||
"resident",
|
||||
g_variant_new_boolean (TRUE));
|
||||
notify_notification_set_timeout (manager->priv->notification,
|
||||
NOTIFY_EXPIRES_NEVER);
|
||||
|
||||
g_signal_connect (manager->priv->notification,
|
||||
"closed",
|
||||
G_CALLBACK (on_notification_closed),
|
||||
manager);
|
||||
|
||||
notify_notification_show (manager->priv->notification, NULL);
|
||||
+
|
||||
+ manager->priv->last_notify_time = g_get_monotonic_time ();
|
||||
}
|
||||
|
||||
static void
|
||||
update_password_notification (GsdAccountManager *manager)
|
||||
{
|
||||
gint64 days_since_epoch;
|
||||
gint64 days_until_expiration = -1;
|
||||
gint64 days_since_last_change = -1;
|
||||
gint64 days_left = -1;
|
||||
g_autofree char *primary_text = NULL;
|
||||
g_autofree char *secondary_text = NULL;
|
||||
gboolean password_already_expired = FALSE;
|
||||
|
||||
hide_notification (manager);
|
||||
|
||||
days_since_epoch = g_get_real_time () / G_USEC_PER_SEC / 60 / 60 / 24;
|
||||
|
||||
if (manager->priv->expiration_time > 0) {
|
||||
days_until_expiration = manager->priv->expiration_time - days_since_epoch;
|
||||
|
||||
if (days_until_expiration <= 0) {
|
||||
password_already_expired = TRUE;
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
|
||||
if (manager->priv->last_change_time == 0) {
|
||||
password_already_expired = TRUE;
|
||||
goto out;
|
||||
}
|
||||
@@ -181,99 +190,127 @@ out:
|
||||
primary_text = g_strdup_printf (_("Password Expired"));
|
||||
secondary_text = g_strdup_printf (_("Your password is expired. Please update it."));
|
||||
} else if (days_left >= 0) {
|
||||
primary_text = g_strdup_printf (_("Password Expiring Soon"));
|
||||
if (days_left == 0)
|
||||
secondary_text = g_strdup_printf (_("Your password is expiring today."));
|
||||
else if (days_left == 1)
|
||||
secondary_text = g_strdup_printf (_("Your password is expiring in a day."));
|
||||
else
|
||||
secondary_text = g_strdup_printf (_("Your password is expiring in %ld days."),
|
||||
days_left);
|
||||
}
|
||||
|
||||
if (primary_text != NULL && secondary_text != NULL)
|
||||
show_notification (manager,
|
||||
primary_text,
|
||||
secondary_text);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
set_policy_number (gint64 *destination,
|
||||
gint64 source)
|
||||
{
|
||||
if (*destination == source)
|
||||
return FALSE;
|
||||
|
||||
*destination = source;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
+static gboolean
|
||||
+on_notify_period_elapsed (GsdAccountManager *manager)
|
||||
+{
|
||||
+ manager->priv->notify_period_timeout_id = 0;
|
||||
+ fetch_password_expiration_policy (manager);
|
||||
+ return G_SOURCE_REMOVE;
|
||||
+}
|
||||
+
|
||||
+static void
|
||||
+queue_periodic_timeout (GsdAccountManager *manager)
|
||||
+{
|
||||
+ if (manager->priv->notify_period_timeout_id != 0) {
|
||||
+ g_source_remove (manager->priv->notify_period_timeout_id);
|
||||
+ manager->priv->notify_period_timeout_id = 0;
|
||||
+ }
|
||||
+
|
||||
+ if (manager->priv->notify_period > 0) {
|
||||
+ gint64 already_elapsed_time;
|
||||
+
|
||||
+ already_elapsed_time = MAX (0, (g_get_monotonic_time () - manager->priv->last_notify_time) / G_USEC_PER_SEC);
|
||||
+
|
||||
+ manager->priv->notify_period_timeout_id = g_timeout_add_seconds (MAX (0, manager->priv->notify_period * 60 - already_elapsed_time),
|
||||
+ (GSourceFunc) on_notify_period_elapsed,
|
||||
+ manager);
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
static void
|
||||
on_got_password_expiration_policy (GsdAccountsUser *accounts_user_proxy,
|
||||
GAsyncResult *res,
|
||||
gpointer user_data)
|
||||
{
|
||||
GsdAccountManager *manager = user_data;
|
||||
g_autoptr(GError) error = NULL;
|
||||
gboolean succeeded;
|
||||
gint64 expiration_time;
|
||||
gint64 last_change_time;
|
||||
gint64 min_days_between_changes;
|
||||
gint64 max_days_between_changes;
|
||||
gint64 days_to_warn;
|
||||
gint64 days_after_expiration_until_lock;
|
||||
|
||||
gnome_settings_profile_start (NULL);
|
||||
succeeded = gsd_accounts_user_call_get_password_expiration_policy_finish (accounts_user_proxy,
|
||||
&expiration_time,
|
||||
&last_change_time,
|
||||
&min_days_between_changes,
|
||||
&max_days_between_changes,
|
||||
&days_to_warn,
|
||||
&days_after_expiration_until_lock,
|
||||
res,
|
||||
&error);
|
||||
|
||||
if (!succeeded) {
|
||||
g_warning ("Failed to get password expiration policy for user: %s", error->message);
|
||||
goto out;
|
||||
}
|
||||
|
||||
set_policy_number (&manager->priv->expiration_time, expiration_time);
|
||||
set_policy_number (&manager->priv->last_change_time, last_change_time);
|
||||
set_policy_number (&manager->priv->min_days_between_changes, min_days_between_changes);
|
||||
set_policy_number (&manager->priv->max_days_between_changes, max_days_between_changes);
|
||||
set_policy_number (&manager->priv->days_to_warn, days_to_warn);
|
||||
set_policy_number (&manager->priv->days_after_expiration_until_lock, days_after_expiration_until_lock);
|
||||
|
||||
update_password_notification (manager);
|
||||
+ queue_periodic_timeout (manager);
|
||||
out:
|
||||
gnome_settings_profile_end (NULL);
|
||||
}
|
||||
|
||||
static void
|
||||
fetch_password_expiration_policy (GsdAccountManager *manager)
|
||||
{
|
||||
gsd_accounts_user_call_get_password_expiration_policy (manager->priv->accounts_user_proxy,
|
||||
manager->priv->cancellable,
|
||||
(GAsyncReadyCallback)
|
||||
on_got_password_expiration_policy,
|
||||
manager);
|
||||
}
|
||||
|
||||
static void
|
||||
on_screensaver_signal (GDBusProxy *proxy,
|
||||
const gchar *sender_name,
|
||||
const gchar *signal_name,
|
||||
GVariant *parameters,
|
||||
gpointer user_data)
|
||||
{
|
||||
GsdAccountManager *manager = user_data;
|
||||
|
||||
if (g_strcmp0 (signal_name, "ActiveChanged") == 0) {
|
||||
gboolean active;
|
||||
|
||||
g_variant_get (parameters, "(b)", &active);
|
||||
|
||||
if (!active) {
|
||||
fetch_password_expiration_policy (manager);
|
||||
@@ -346,91 +383,109 @@ on_got_user_object_path (GsdAccounts *accounts_proxy,
|
||||
manager);
|
||||
|
||||
out:
|
||||
gnome_settings_profile_end (NULL);
|
||||
}
|
||||
|
||||
static void
|
||||
on_got_accounts_proxy (GObject *source_object,
|
||||
GAsyncResult *res,
|
||||
gpointer user_data)
|
||||
{
|
||||
GsdAccountManager *manager = user_data;
|
||||
g_autoptr(GError) error = NULL;
|
||||
|
||||
gnome_settings_profile_start (NULL);
|
||||
manager->priv->accounts_proxy = gsd_accounts_proxy_new_for_bus_finish (res, &error);
|
||||
|
||||
if (manager->priv->accounts_proxy != NULL) {
|
||||
gsd_accounts_call_find_user_by_id (manager->priv->accounts_proxy,
|
||||
getuid (),
|
||||
manager->priv->cancellable,
|
||||
(GAsyncReadyCallback)
|
||||
on_got_user_object_path,
|
||||
manager);
|
||||
} else {
|
||||
g_warning ("Failed to get proxy to accounts service: %s", error->message);
|
||||
}
|
||||
gnome_settings_profile_end (NULL);
|
||||
}
|
||||
|
||||
+static void
|
||||
+on_notify_period_changed (GsdAccountManager *manager)
|
||||
+{
|
||||
+ manager->priv->notify_period = g_settings_get_int (manager->priv->settings, "notify-period");
|
||||
+
|
||||
+ queue_periodic_timeout (manager);
|
||||
+}
|
||||
+
|
||||
gboolean
|
||||
gsd_account_manager_start (GsdAccountManager *manager,
|
||||
GError **error)
|
||||
{
|
||||
g_debug ("Starting accounts manager");
|
||||
|
||||
gnome_settings_profile_start (NULL);
|
||||
manager->priv->cancellable = g_cancellable_new ();
|
||||
+ manager->priv->settings = g_settings_new ("org.gnome.settings-daemon.plugins.account");
|
||||
+
|
||||
+ manager->priv->notify_period = g_settings_get_int (manager->priv->settings, "notify-period");
|
||||
+ g_signal_connect_object (G_OBJECT (manager->priv->settings),
|
||||
+ "changed::notify-period",
|
||||
+ G_CALLBACK (on_notify_period_changed),
|
||||
+ manager,
|
||||
+ G_CONNECT_SWAPPED);
|
||||
+
|
||||
gsd_accounts_proxy_new_for_bus (G_BUS_TYPE_SYSTEM,
|
||||
G_DBUS_PROXY_FLAGS_NONE,
|
||||
"org.freedesktop.Accounts",
|
||||
"/org/freedesktop/Accounts",
|
||||
manager->priv->cancellable,
|
||||
(GAsyncReadyCallback)
|
||||
on_got_accounts_proxy,
|
||||
manager);
|
||||
gnome_settings_profile_end (NULL);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void
|
||||
gsd_account_manager_stop (GsdAccountManager *manager)
|
||||
{
|
||||
g_debug ("Stopping accounts manager");
|
||||
|
||||
if (manager->priv->cancellable != NULL) {
|
||||
g_cancellable_cancel (manager->priv->cancellable);
|
||||
g_clear_object (&manager->priv->cancellable);
|
||||
}
|
||||
|
||||
+ g_clear_object (&manager->priv->settings);
|
||||
g_clear_object (&manager->priv->accounts_proxy);
|
||||
g_clear_object (&manager->priv->accounts_user_proxy);
|
||||
g_clear_object (&manager->priv->notification);
|
||||
g_clear_object (&manager->priv->screensaver_proxy);
|
||||
}
|
||||
|
||||
static void
|
||||
gsd_account_manager_class_init (GsdAccountManagerClass *klass)
|
||||
{
|
||||
GObjectClass *object_class = G_OBJECT_CLASS (klass);
|
||||
|
||||
object_class->finalize = gsd_account_manager_finalize;
|
||||
|
||||
notify_init ("gnome-settings-daemon");
|
||||
|
||||
g_type_class_add_private (klass, sizeof (GsdAccountManagerPrivate));
|
||||
}
|
||||
|
||||
static void
|
||||
gsd_account_manager_init (GsdAccountManager *manager)
|
||||
{
|
||||
manager->priv = GSD_ACCOUNT_MANAGER_GET_PRIVATE (manager);
|
||||
}
|
||||
|
||||
static void
|
||||
gsd_account_manager_finalize (GObject *object)
|
||||
{
|
||||
GsdAccountManager *manager;
|
||||
|
||||
g_return_if_fail (object != NULL);
|
||||
--
|
||||
2.21.0
|
||||
|
||||
@ -1,83 +0,0 @@
|
||||
From 5da276e4559d5c3b072a9870db6d78a1fe788339 Mon Sep 17 00:00:00 2001
|
||||
From: Jack Massey <jacknmassey@gmail.com>
|
||||
Date: Tue, 17 Sep 2019 09:39:59 +1000
|
||||
Subject: [PATCH 3/4] smartcard: Change timeout on spurious event error
|
||||
|
||||
The 0.5s timeout was probably based on the fact that the
|
||||
SECMOD_WaitForAnyTokenEvent call was blocking, it doesn't make sense to
|
||||
have the timeout on the error case less than the timeout on the normal
|
||||
case.
|
||||
---
|
||||
plugins/smartcard/gsd-smartcard-manager.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/plugins/smartcard/gsd-smartcard-manager.c b/plugins/smartcard/gsd-smartcard-manager.c
|
||||
index 77650643..a29df3e0 100644
|
||||
--- a/plugins/smartcard/gsd-smartcard-manager.c
|
||||
+++ b/plugins/smartcard/gsd-smartcard-manager.c
|
||||
@@ -209,61 +209,61 @@ watch_one_event_from_driver (GsdSmartcardManager *self,
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (card == NULL) {
|
||||
int error_code;
|
||||
|
||||
error_code = PORT_GetError ();
|
||||
|
||||
if (error_code == SEC_ERROR_NO_EVENT) {
|
||||
g_usleep (1 * G_USEC_PER_SEC);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
operation->number_of_consecutive_errors++;
|
||||
if (operation->number_of_consecutive_errors > 10) {
|
||||
g_warning ("Got %d consecutive smartcard errors, so giving up.",
|
||||
operation->number_of_consecutive_errors);
|
||||
|
||||
g_set_error (error,
|
||||
GSD_SMARTCARD_MANAGER_ERROR,
|
||||
GSD_SMARTCARD_MANAGER_ERROR_WITH_NSS,
|
||||
"encountered unexpected error while "
|
||||
"waiting for smartcard events (error %x)",
|
||||
error_code);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
g_warning ("Got potentially spurious smartcard event error: %x.", error_code);
|
||||
|
||||
- g_usleep (0.5 * G_USEC_PER_SEC);
|
||||
+ g_usleep (1 * G_USEC_PER_SEC);
|
||||
return TRUE;
|
||||
}
|
||||
operation->number_of_consecutive_errors = 0;
|
||||
|
||||
slot_id = PK11_GetSlotID (card);
|
||||
slot_series = PK11_GetSlotSeries (card);
|
||||
|
||||
old_card = g_hash_table_lookup (operation->smartcards, GINT_TO_POINTER ((int) slot_id));
|
||||
|
||||
/* If there is a different card in the slot now than
|
||||
* there was before, then we need to emit a removed signal
|
||||
* for the old card
|
||||
*/
|
||||
if (old_card != NULL) {
|
||||
old_slot_series = PK11_GetSlotSeries (old_card);
|
||||
|
||||
if (old_slot_series != slot_series) {
|
||||
/* Card registered with slot previously is
|
||||
* different than this card, so update its
|
||||
* exported state to track the implicit missed
|
||||
* removal
|
||||
*/
|
||||
gsd_smartcard_service_sync_token (priv->service, old_card, cancellable);
|
||||
}
|
||||
|
||||
g_hash_table_remove (operation->smartcards, GINT_TO_POINTER ((int) slot_id));
|
||||
}
|
||||
|
||||
if (PK11_IsPresent (card)) {
|
||||
g_debug ("Detected smartcard insertion event in slot %d", (int) slot_id);
|
||||
--
|
||||
2.39.2
|
||||
|
||||
@ -1,110 +0,0 @@
|
||||
From ff98c03c88e53041dcc861de3b3a3351d55297fe Mon Sep 17 00:00:00 2001
|
||||
From: Ray Strode <rstrode@redhat.com>
|
||||
Date: Fri, 9 Nov 2018 10:39:11 -0500
|
||||
Subject: [PATCH 4/4] account: don't poll more frequently than notification
|
||||
period
|
||||
|
||||
At the moment, if an account has no reason to receive a notification,
|
||||
the account plugin ends up polling continuously, desperately,
|
||||
and unsuccessfully trying to find a reason to notify. That leads
|
||||
to unnecessary CPU utilization.
|
||||
|
||||
The reason is an apparent think-o in the code. The code tracks
|
||||
the last time a notification was shown, so it knows when to show
|
||||
the next notification later, even if the notification period, or
|
||||
account policy is updated by the admin in the interim.
|
||||
|
||||
The problem is that it's wrong to look at the last notification
|
||||
time if there's no reason to show a notification. In that case
|
||||
the wakeup is merely to poll updates on the account policy.
|
||||
|
||||
This commit addresses the problem by only looking at the previous
|
||||
notification time, if it was within the current notification period.
|
||||
---
|
||||
plugins/account/gsd-account-manager.c | 14 +++++++++++---
|
||||
1 file changed, 11 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/plugins/account/gsd-account-manager.c b/plugins/account/gsd-account-manager.c
|
||||
index ff054edd..b48c0fe8 100644
|
||||
--- a/plugins/account/gsd-account-manager.c
|
||||
+++ b/plugins/account/gsd-account-manager.c
|
||||
@@ -207,65 +207,73 @@ out:
|
||||
}
|
||||
|
||||
static gboolean
|
||||
set_policy_number (gint64 *destination,
|
||||
gint64 source)
|
||||
{
|
||||
if (*destination == source)
|
||||
return FALSE;
|
||||
|
||||
*destination = source;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
on_notify_period_elapsed (GsdAccountManager *manager)
|
||||
{
|
||||
manager->priv->notify_period_timeout_id = 0;
|
||||
fetch_password_expiration_policy (manager);
|
||||
return G_SOURCE_REMOVE;
|
||||
}
|
||||
|
||||
static void
|
||||
queue_periodic_timeout (GsdAccountManager *manager)
|
||||
{
|
||||
if (manager->priv->notify_period_timeout_id != 0) {
|
||||
g_source_remove (manager->priv->notify_period_timeout_id);
|
||||
manager->priv->notify_period_timeout_id = 0;
|
||||
}
|
||||
|
||||
if (manager->priv->notify_period > 0) {
|
||||
- gint64 already_elapsed_time;
|
||||
+ gint64 seconds_since_last_notification;
|
||||
+ guint seconds_between_notifications;
|
||||
+ guint seconds_until_next_notification;
|
||||
|
||||
- already_elapsed_time = MAX (0, (g_get_monotonic_time () - manager->priv->last_notify_time) / G_USEC_PER_SEC);
|
||||
+ seconds_since_last_notification = MAX (0, (g_get_monotonic_time () - manager->priv->last_notify_time) / G_USEC_PER_SEC);
|
||||
+ seconds_between_notifications = manager->priv->notify_period * 60;
|
||||
|
||||
- manager->priv->notify_period_timeout_id = g_timeout_add_seconds (MAX (0, manager->priv->notify_period * 60 - already_elapsed_time),
|
||||
+ if (seconds_since_last_notification > seconds_between_notifications)
|
||||
+ seconds_until_next_notification = seconds_between_notifications;
|
||||
+ else
|
||||
+ seconds_until_next_notification = seconds_between_notifications - seconds_since_last_notification;
|
||||
+
|
||||
+ manager->priv->notify_period_timeout_id = g_timeout_add_seconds (seconds_until_next_notification,
|
||||
(GSourceFunc) on_notify_period_elapsed,
|
||||
manager);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
on_got_password_expiration_policy (GsdAccountsUser *accounts_user_proxy,
|
||||
GAsyncResult *res,
|
||||
gpointer user_data)
|
||||
{
|
||||
GsdAccountManager *manager = user_data;
|
||||
g_autoptr(GError) error = NULL;
|
||||
gboolean succeeded;
|
||||
gint64 expiration_time;
|
||||
gint64 last_change_time;
|
||||
gint64 min_days_between_changes;
|
||||
gint64 max_days_between_changes;
|
||||
gint64 days_to_warn;
|
||||
gint64 days_after_expiration_until_lock;
|
||||
|
||||
gnome_settings_profile_start (NULL);
|
||||
succeeded = gsd_accounts_user_call_get_password_expiration_policy_finish (accounts_user_proxy,
|
||||
&expiration_time,
|
||||
&last_change_time,
|
||||
&min_days_between_changes,
|
||||
&max_days_between_changes,
|
||||
&days_to_warn,
|
||||
&days_after_expiration_until_lock,
|
||||
res,
|
||||
&error);
|
||||
--
|
||||
2.21.0
|
||||
|
||||
@ -1,94 +0,0 @@
|
||||
From 2b0b62d8b04a2c3d6e1d4fccacfd29dd3da2d04c Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?David=20H=C3=A4rdeman?= <david@hardeman.nu>
|
||||
Date: Wed, 12 Apr 2023 22:23:51 +0200
|
||||
Subject: [PATCH 4/4] smartcard: check for the addition of new smartcard
|
||||
readers
|
||||
|
||||
gsd-smartcard currently checks for the insertion/removal of smartcards
|
||||
in reader devices which where present at the time gsd-smartcard was
|
||||
started, but does not account for new smartcard readers appearing
|
||||
after gsd-smartcard was started.
|
||||
|
||||
This patch adds support for checking for the addition of new slots
|
||||
(i.e. smartcard readers), which is necessary to support devices
|
||||
like the Yubikey (a "reader" and a smartcard) which may be inserted
|
||||
after gsd-smartcard was started.
|
||||
---
|
||||
plugins/smartcard/gsd-smartcard-manager.c | 7 ++++++-
|
||||
1 file changed, 6 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/plugins/smartcard/gsd-smartcard-manager.c b/plugins/smartcard/gsd-smartcard-manager.c
|
||||
index a29df3e0..fbb9b260 100644
|
||||
--- a/plugins/smartcard/gsd-smartcard-manager.c
|
||||
+++ b/plugins/smartcard/gsd-smartcard-manager.c
|
||||
@@ -188,61 +188,66 @@ watch_one_event_from_driver (GsdSmartcardManager *self,
|
||||
CK_SLOT_ID slot_id;
|
||||
gulong handler_id;
|
||||
int old_slot_series = -1, slot_series;
|
||||
|
||||
handler_id = g_cancellable_connect (cancellable,
|
||||
G_CALLBACK (on_watch_cancelled),
|
||||
operation,
|
||||
NULL);
|
||||
|
||||
if (handler_id != 0) {
|
||||
/* Use the non-blocking version of the call as p11-kit, which
|
||||
* is used on both Fedora and Ubuntu, doesn't support the
|
||||
* blocking version of the call.
|
||||
*/
|
||||
card = SECMOD_WaitForAnyTokenEvent (operation->driver, CKF_DONT_BLOCK, PR_SecondsToInterval (1));
|
||||
}
|
||||
|
||||
g_cancellable_disconnect (cancellable, handler_id);
|
||||
|
||||
if (g_cancellable_set_error_if_cancelled (cancellable, error)) {
|
||||
g_warning ("smartcard event function cancelled");
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (card == NULL) {
|
||||
int error_code;
|
||||
|
||||
error_code = PORT_GetError ();
|
||||
|
||||
if (error_code == SEC_ERROR_NO_EVENT) {
|
||||
- g_usleep (1 * G_USEC_PER_SEC);
|
||||
+ int old_slot_count = operation->driver->slotCount;
|
||||
+ SECMOD_UpdateSlotList (operation->driver);
|
||||
+ if (operation->driver->slotCount != old_slot_count)
|
||||
+ g_debug ("Slot count change %i -> %i", old_slot_count, operation->driver->slotCount);
|
||||
+ else
|
||||
+ g_usleep (1 * G_USEC_PER_SEC);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
operation->number_of_consecutive_errors++;
|
||||
if (operation->number_of_consecutive_errors > 10) {
|
||||
g_warning ("Got %d consecutive smartcard errors, so giving up.",
|
||||
operation->number_of_consecutive_errors);
|
||||
|
||||
g_set_error (error,
|
||||
GSD_SMARTCARD_MANAGER_ERROR,
|
||||
GSD_SMARTCARD_MANAGER_ERROR_WITH_NSS,
|
||||
"encountered unexpected error while "
|
||||
"waiting for smartcard events (error %x)",
|
||||
error_code);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
g_warning ("Got potentially spurious smartcard event error: %x.", error_code);
|
||||
|
||||
g_usleep (1 * G_USEC_PER_SEC);
|
||||
return TRUE;
|
||||
}
|
||||
operation->number_of_consecutive_errors = 0;
|
||||
|
||||
slot_id = PK11_GetSlotID (card);
|
||||
slot_series = PK11_GetSlotSeries (card);
|
||||
|
||||
old_card = g_hash_table_lookup (operation->smartcards, GINT_TO_POINTER ((int) slot_id));
|
||||
|
||||
--
|
||||
2.39.2
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -1,3 +0,0 @@
|
||||
[org.gnome.settings-daemon.plugins.power]
|
||||
sleep-inactive-ac-timeout=0
|
||||
sleep-inactive-battery-timeout=0
|
||||
@ -1,378 +1,214 @@
|
||||
%global glib2_version 2.56
|
||||
%global geocode_glib_version 3.10.0
|
||||
%global gnome_desktop_version 3.27.90
|
||||
%global gsettings_desktop_schemas_version 3.32.0-4
|
||||
%global gtk3_version 3.15.3
|
||||
%global libgweather_version 3.9.5
|
||||
%global geoclue_version 2.3.1
|
||||
|
||||
%if %{undefined centos}
|
||||
%bcond_without subman
|
||||
%endif
|
||||
|
||||
Name: gnome-settings-daemon
|
||||
Version: 3.32.0
|
||||
Release: 21%{?dist}
|
||||
Summary: The daemon sharing settings from GNOME to GTK+/KDE applications
|
||||
|
||||
License: GPLv2+
|
||||
URL: https://download.gnome.org/sources/%{name}
|
||||
Source0: https://download.gnome.org/sources/%{name}/3.32/%{name}-%{version}.tar.xz
|
||||
Source1: org.gnome.settings-daemon.plugins.power.gschema.override
|
||||
|
||||
BuildRequires: meson >= 0.44.0
|
||||
BuildRequires: gcc
|
||||
BuildRequires: cups-devel
|
||||
BuildRequires: gettext
|
||||
BuildRequires: perl-interpreter
|
||||
BuildRequires: git
|
||||
BuildRequires: pkgconfig(alsa)
|
||||
BuildRequires: pkgconfig(colord) >= 1.0.2
|
||||
BuildRequires: pkgconfig(fontconfig)
|
||||
BuildRequires: pkgconfig(geoclue-2.0) >= %{geoclue_version}
|
||||
BuildRequires: pkgconfig(geocode-glib-1.0) >= %{geocode_glib_version}
|
||||
BuildRequires: pkgconfig(glib-2.0) >= %{glib2_version}
|
||||
BuildRequires: pkgconfig(gnome-desktop-3.0) >= %{gnome_desktop_version}
|
||||
BuildRequires: pkgconfig(gsettings-desktop-schemas) >= %{gsettings_desktop_schemas_version}
|
||||
BuildRequires: pkgconfig(gtk+-3.0) >= %{gtk3_version}
|
||||
BuildRequires: pkgconfig(gudev-1.0)
|
||||
BuildRequires: pkgconfig(gweather-3.0) >= %{libgweather_version}
|
||||
%if %{with subman}
|
||||
BuildRequires: pkgconfig(json-glib-1.0)
|
||||
%endif
|
||||
BuildRequires: pkgconfig(lcms2) >= 2.2
|
||||
BuildRequires: pkgconfig(libcanberra-gtk3)
|
||||
BuildRequires: pkgconfig(libgeoclue-2.0)
|
||||
BuildRequires: pkgconfig(libnm)
|
||||
BuildRequires: pkgconfig(libnotify)
|
||||
BuildRequires: pkgconfig(libpulse)
|
||||
BuildRequires: pkgconfig(libpulse-mainloop-glib)
|
||||
BuildRequires: pkgconfig(librsvg-2.0)
|
||||
BuildRequires: pkgconfig(nss)
|
||||
BuildRequires: pkgconfig(polkit-gobject-1)
|
||||
BuildRequires: pkgconfig(upower-glib)
|
||||
BuildRequires: pkgconfig(x11)
|
||||
BuildRequires: pkgconfig(xi)
|
||||
BuildRequires: pkgconfig(wayland-client)
|
||||
%ifnarch s390 s390x
|
||||
BuildRequires: pkgconfig(libwacom) >= 0.7
|
||||
BuildRequires: pkgconfig(xorg-wacom)
|
||||
%endif
|
||||
|
||||
Requires: colord
|
||||
Requires: iio-sensor-proxy
|
||||
Requires: geoclue2 >= %{geoclue_version}
|
||||
Requires: geocode-glib%{?_isa} >= %{geocode_glib_version}
|
||||
Requires: glib2%{?_isa} >= %{glib2_version}
|
||||
Requires: gnome-desktop3%{?_isa} >= %{gnome_desktop_version}
|
||||
Requires: gsettings-desktop-schemas%{?_isa} >= %{gsettings_desktop_schemas_version}
|
||||
Requires: gtk3%{?_isa} >= %{gtk3_version}
|
||||
Requires: libgweather%{?_isa} >= %{libgweather_version}
|
||||
|
||||
Obsoletes: %{name}-updates < 3.13.1
|
||||
Obsoletes: drwright < 3.5.0-3
|
||||
Obsoletes: gnome-settings-daemon-devel < 3.23.1
|
||||
|
||||
# The "org.gnome.SettingsDaemon.A11yKeyboard" has been been removed, now
|
||||
# handled in gnome-shell/mutter instead; this conflict here makes sure not to
|
||||
# break older gdm and gnome-session releases that expect the functionality
|
||||
Conflicts: gdm < 1:3.27.90
|
||||
Conflicts: gnome-session < 3.27.90
|
||||
# The orientation and xrandr plugins were removed in 3.25.4 and their
|
||||
# functionality was moved to mutter; this conflict here makes sure not to break
|
||||
# older gdm, gnome-session and gnome-shell releases that expect the functionality
|
||||
Conflicts: gnome-shell < 3.25.4
|
||||
|
||||
# account plugin
|
||||
Patch00001: 0001-account-first-cut-at-account-plugin.patch
|
||||
Patch00002: 0002-account-reshow-the-notification-when-screen-unlocks.patch
|
||||
Patch00003: 0003-account-display-nag-screen-periodically.patch
|
||||
Patch00004: 0004-account-don-t-poll-more-frequently-than-notification.patch
|
||||
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=1796190
|
||||
Patch10001: 0001-smartcard-Cancel-cancellable-when-stopping.patch
|
||||
Patch10002: 0002-smartcard-Change-manager-to-non-blocking.patch
|
||||
Patch10003: 0003-smartcard-Change-timeout-on-spurious-event-error.patch
|
||||
Patch10004: 0004-smartcard-check-for-the-addition-of-new-smartcard-re.patch
|
||||
|
||||
Patch20001: 0001-xsettings-Add-an-entry-for-the-overlay-scrolling-set.patch
|
||||
|
||||
# Handle org.gnome.Shell.Screencast Stopped signal (#1705392)
|
||||
Patch30001: 0001-media-keys-Mark-screen-cast-as-stopped-if-it-was-sig.patch
|
||||
|
||||
Patch40001: 0001-housekeeping-Add-a-GPU-memory-usage-notification.patch
|
||||
|
||||
# subscription manager integration
|
||||
%if %{with subman}
|
||||
Patch50001: 0001-subman-Add-a-new-plugin-to-provide-system-subscripti.patch
|
||||
Patch50002: 0002-subman-Add-InstalledProducts-dbus-property-for-g-c-c.patch
|
||||
Patch50003: 0003-subman-Increase-RHSM-dbus-call-timeouts.patch
|
||||
Patch50004: 0004-subman-Drop-userlang-field.patch
|
||||
Patch50005: 0005-subman-Use-user-locale-for-registration-subscription.patch
|
||||
Patch50006: 0006-subman-Handle-subscription-manager-giving-invalid-st.patch
|
||||
Patch50007: 0007-subman-Force-re-subscribe-if-the-admin-already-subsc.patch
|
||||
Patch50008: 0008-subman-Don-t-send-secrets-through-command-line.patch
|
||||
Patch50009: 0009-subman-Don-t-treat-failure-to-attach-as-fatal.patch
|
||||
Patch50010: 0010-subman-Add-new-no-installed-products-state.patch
|
||||
Patch50011: 0011-subman-Fix-some-build-warnings.patch
|
||||
Patch50012: 0012-subman-Add-DBus-API-to-subscribe-for-updates-on-alre.patch
|
||||
Patch50013: 0013-subman-Improve-subscription-status-handling.patch
|
||||
Patch50014: 0014-subman-Drop-LAST-from-status-enum.patch
|
||||
Patch50015: 0015-subman-Clean-up-notification-behavior.patch
|
||||
Patch50016: 0016-subman-Update-POTFILES.in.patch
|
||||
# https://issues.redhat.com/browse/RHEL-5074
|
||||
Patch50018: subman-set-notification-icon.patch
|
||||
%endif
|
||||
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=1876291
|
||||
Patch50017: 0017-Update-translations.patch
|
||||
|
||||
Patch60001: 0001-power-Only-disable-Suspend-Hibernate-actions-inside-.patch
|
||||
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=2062051
|
||||
Patch70001: 0001-power-Respect-the-nothing-power-button-action-for-VM.patch
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=2018606
|
||||
Patch70002: 0001-power-Avoid-automatic-logout-in-GDM-greeter.patch
|
||||
Patch70003: 0002-power-Never-register-sleep-timeout-for-logout-in-GDM.patch
|
||||
Patch70004: 0001-Make-power-button-action-always-power-off-when-chass.patch
|
||||
|
||||
%description
|
||||
A daemon to share settings from GNOME to other applications. It also
|
||||
handles global keybindings, as well as a number of desktop-wide settings.
|
||||
|
||||
%package devel
|
||||
Summary: Development files for %{name}
|
||||
Requires: %{name}%{?_isa} = %{version}-%{release}
|
||||
|
||||
%description devel
|
||||
The %{name}-devel package contains libraries and header files for
|
||||
developing applications that use %{name}.
|
||||
|
||||
%prep
|
||||
%autosetup -S git
|
||||
|
||||
%build
|
||||
%meson \
|
||||
%if %{with subman}
|
||||
-Dsubscription_manager=true
|
||||
%else
|
||||
-Dsubscription_manager=false
|
||||
%endif
|
||||
|
||||
|
||||
%meson_build
|
||||
|
||||
%install
|
||||
%meson_install
|
||||
|
||||
cp %{SOURCE1} $RPM_BUILD_ROOT%{_datadir}/glib-2.0/schemas
|
||||
|
||||
%find_lang %{name} --with-gnome
|
||||
|
||||
mkdir $RPM_BUILD_ROOT%{_libdir}/gnome-settings-daemon-3.0/gtk-modules
|
||||
|
||||
%files -f %{name}.lang
|
||||
%license COPYING
|
||||
%doc AUTHORS NEWS
|
||||
|
||||
# list daemons explicitly, so we notice if one goes missing
|
||||
# some of these don't have a separate gschema
|
||||
%{_libexecdir}/gsd-account
|
||||
%{_sysconfdir}/xdg/autostart/org.gnome.SettingsDaemon.Account.desktop
|
||||
%{_datadir}/glib-2.0/schemas/org.gnome.settings-daemon.plugins.account.gschema.xml
|
||||
|
||||
%{_libexecdir}/gsd-clipboard
|
||||
%{_sysconfdir}/xdg/autostart/org.gnome.SettingsDaemon.Clipboard.desktop
|
||||
|
||||
%{_libexecdir}/gsd-datetime
|
||||
%{_sysconfdir}/xdg/autostart/org.gnome.SettingsDaemon.Datetime.desktop
|
||||
|
||||
%{_libexecdir}/gsd-dummy
|
||||
|
||||
%{_libexecdir}/gsd-housekeeping
|
||||
%{_sysconfdir}/xdg/autostart/org.gnome.SettingsDaemon.Housekeeping.desktop
|
||||
%{_datadir}/glib-2.0/schemas/org.gnome.settings-daemon.plugins.housekeeping.gschema.xml
|
||||
|
||||
%{_libexecdir}/gsd-keyboard
|
||||
%{_sysconfdir}/xdg/autostart/org.gnome.SettingsDaemon.Keyboard.desktop
|
||||
|
||||
%{_libexecdir}/gsd-media-keys
|
||||
%{_sysconfdir}/xdg/autostart/org.gnome.SettingsDaemon.MediaKeys.desktop
|
||||
%{_datadir}/glib-2.0/schemas/org.gnome.settings-daemon.plugins.media-keys.gschema.xml
|
||||
|
||||
%{_libexecdir}/gsd-mouse
|
||||
%{_sysconfdir}/xdg/autostart/org.gnome.SettingsDaemon.Mouse.desktop
|
||||
%{_libexecdir}/gsd-locate-pointer
|
||||
|
||||
%{_libexecdir}/gsd-backlight-helper
|
||||
%{_datadir}/polkit-1/actions/org.gnome.settings-daemon.plugins.power.policy
|
||||
%{_libexecdir}/gsd-power
|
||||
%{_sysconfdir}/xdg/autostart/org.gnome.SettingsDaemon.Power.desktop
|
||||
%{_datadir}/glib-2.0/schemas/org.gnome.settings-daemon.plugins.power.gschema.xml
|
||||
%{_datadir}/glib-2.0/schemas/org.gnome.settings-daemon.plugins.power.gschema.override
|
||||
|
||||
%{_libexecdir}/gsd-print-notifications
|
||||
%{_sysconfdir}/xdg/autostart/org.gnome.SettingsDaemon.PrintNotifications.desktop
|
||||
%{_libexecdir}/gsd-printer
|
||||
* Wed Feb 15 2023 David King <amigadave@amigadave.com> - 44~beta-1
|
||||
- Update to 44.beta
|
||||
|
||||
%{_libexecdir}/gsd-rfkill
|
||||
%{_sysconfdir}/xdg/autostart/org.gnome.SettingsDaemon.Rfkill.desktop
|
||||
* Thu Jan 19 2023 Fedora Release Engineering <releng@fedoraproject.org> - 43.0-3
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
|
||||
|
||||
%{_libexecdir}/gsd-screensaver-proxy
|
||||
%{_sysconfdir}/xdg/autostart/org.gnome.SettingsDaemon.ScreensaverProxy.desktop
|
||||
* Fri Sep 30 2022 Kalev Lember <klember@redhat.com> - 43.0-2
|
||||
- Backport upstream patch to default to ibus for X11 clients (#2128423)
|
||||
|
||||
%{_libexecdir}/gsd-smartcard
|
||||
%{_sysconfdir}/xdg/autostart/org.gnome.SettingsDaemon.Smartcard.desktop
|
||||
* Tue Sep 20 2022 Kalev Lember <klember@redhat.com> - 43.0-1
|
||||
- Update to 43.0
|
||||
|
||||
%{_libexecdir}/gsd-sound
|
||||
%{_sysconfdir}/xdg/autostart/org.gnome.SettingsDaemon.Sound.desktop
|
||||
* Tue Sep 06 2022 Kalev Lember <klember@redhat.com> - 43~rc-1
|
||||
- Update to 43.rc
|
||||
|
||||
%{_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
|
||||
%{_sysconfdir}/xdg/autostart/org.gnome.SettingsDaemon.Wacom.desktop
|
||||
* Wed Aug 10 2022 Kalev Lember <klember@redhat.com> - 43~beta-1
|
||||
- Update to 43.beta
|
||||
|
||||
%ifnarch s390 s390x
|
||||
%{_libexecdir}/gsd-wacom
|
||||
%{_libexecdir}/gsd-wacom-led-helper
|
||||
%{_libexecdir}/gsd-wacom-oled-helper
|
||||
%{_datadir}/polkit-1/actions/org.gnome.settings-daemon.plugins.wacom.policy
|
||||
%endif
|
||||
* Thu Jul 21 2022 Fedora Release Engineering <releng@fedoraproject.org> - 43~alpha-4
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
|
||||
|
||||
%{_libexecdir}/gsd-xsettings
|
||||
%{_sysconfdir}/xdg/autostart/org.gnome.SettingsDaemon.XSettings.desktop
|
||||
%{_datadir}/glib-2.0/schemas/org.gnome.settings-daemon.plugins.xsettings.gschema.xml
|
||||
* Tue Jul 19 2022 Milan Crha <mcrha@redhat.com> - 43~alpha-3
|
||||
- Build against gcr-4 due to other depencencies use it
|
||||
|
||||
%{_libexecdir}/gsd-a11y-settings
|
||||
%{_sysconfdir}/xdg/autostart/org.gnome.SettingsDaemon.A11ySettings.desktop
|
||||
* Mon Jul 18 2022 Kalev Lember <klember@redhat.com> - 43~alpha-2
|
||||
- Build against geocode-glib2 for libsoup3 support
|
||||
|
||||
%{_libexecdir}/gsd-color
|
||||
%{_sysconfdir}/xdg/autostart/org.gnome.SettingsDaemon.Color.desktop
|
||||
%{_datadir}/glib-2.0/schemas/org.gnome.settings-daemon.plugins.color.gschema.xml
|
||||
* Fri Jul 15 2022 Kalev Lember <klember@redhat.com> - 43~alpha-1
|
||||
- Update to 43.alpha
|
||||
|
||||
%{_libexecdir}/gsd-sharing
|
||||
%{_sysconfdir}/xdg/autostart/org.gnome.SettingsDaemon.Sharing.desktop
|
||||
%{_datadir}/glib-2.0/schemas/org.gnome.settings-daemon.plugins.sharing.gschema.xml
|
||||
* Thu Jun 16 2022 David King <amigadave@amigadave.com> - 42.2-1
|
||||
- Update to 42.2
|
||||
|
||||
%if %{with subman}
|
||||
%{_sysconfdir}/xdg/autostart/org.gnome.SettingsDaemon.Subscription.desktop
|
||||
%{_libexecdir}/gsd-subman
|
||||
%{_libexecdir}/gsd-subman-helper
|
||||
%{_datadir}/polkit-1/actions/org.gnome.settings-daemon.plugins.subman.policy
|
||||
%{_datadir}/polkit-1/rules.d/org.gnome.settings-daemon.plugins.subman.rules
|
||||
%endif
|
||||
* Sun Mar 20 2022 David King <amigadave@amigadave.com> - 42.1-1
|
||||
- Update to 42.1
|
||||
|
||||
%{_libdir}/gnome-settings-daemon-3.0/libgsd.so
|
||||
* Tue Mar 08 2022 David King <amigadave@amigadave.com> - 42~rc-1
|
||||
- Update to 42.rc
|
||||
|
||||
/usr/lib/udev/rules.d/*.rules
|
||||
%{_datadir}/gnome-settings-daemon/
|
||||
%{_datadir}/GConf/gsettings/gnome-settings-daemon.convert
|
||||
* Mon Feb 14 2022 David King <amigadave@amigadave.com> - 42~beta-1
|
||||
- Update to 42.beta
|
||||
|
||||
%{_datadir}/glib-2.0/schemas/org.gnome.settings-daemon.enums.xml
|
||||
%{_datadir}/glib-2.0/schemas/org.gnome.settings-daemon.plugins.gschema.xml
|
||||
|
||||
%files devel
|
||||
%{_includedir}/gnome-settings-daemon-3.0
|
||||
%{_libdir}/pkgconfig/gnome-settings-daemon.pc
|
||||
|
||||
%changelog
|
||||
* Mon Nov 03 2025 Felipe Borges <feborges@redhat.com> - 3.32.0-21
|
||||
- Add icon to subman notifications
|
||||
Resolves: RHEL-5074
|
||||
* Thu Jan 20 2022 Fedora Release Engineering <releng@fedoraproject.org> - 42~alpha-3
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
|
||||
|
||||
* Mon Jul 24 2023 Ray Strode <rstrode@redhat.com> - 3.32.0-20
|
||||
- Backport some upstream smartcard changes that make it work
|
||||
better with p11-kit
|
||||
Resolves: #1796190
|
||||
- Rework how subscription-manager plugin is conditionalized so
|
||||
it doens't get built on centos 8 stream
|
||||
|
||||
* Fri Feb 17 2023 Felipe Borges <feborges@redhat.com> - 4.32.0-19
|
||||
- Make power-button-action default to poweroff on servers
|
||||
- Resolves: #1920829
|
||||
|
||||
* Tue Jan 24 2023 Felipe Borges <feborges@redhat.com> - 3.32.0-18
|
||||
- Prevent automatic logout warning in greeter sessions
|
||||
- Resolves: #2018606
|
||||
|
||||
* Wed Jan 04 2023 Felipe Borges <feborges@redhat.com> - 3.32.0-17
|
||||
- Make power-button-action respect the "nothing" action on VMs
|
||||
- Resolves: #2062051
|
||||
|
||||
* Fri Sep 10 2021 Kalev Lember <klember@redhat.com> - 3.32.0-16
|
||||
- Update pt_BR translations
|
||||
- Resolves: #2003069
|
||||
|
||||
* Fri Aug 06 2021 Carlos Garnacho <cgarnach@redhat.com> - 3.32.0-15
|
||||
- Keep auto-logout working inside VMs
|
||||
Resolves: #1904139
|
||||
|
||||
* Mon Mar 01 2021 Kalev Lember <klember@redhat.com> - 3.32.0-14
|
||||
- Update fr, ja, zh_CN translations
|
||||
- Resolves: #1876291
|
||||
|
||||
* Thu Jan 21 2021 Ray Strode <rstrode@redhat.com> - 3.32.0-13
|
||||
- Add back subscription-manager plugin
|
||||
Related: #1870837
|
||||
|
||||
* Tue Jan 05 2021 Jonas Ådahl <jadahl@redhat.com> - 3.32.0-12
|
||||
- Handle org.gnome.Shell.Screencast Stopped signal
|
||||
Related: #1705392
|
||||
|
||||
* Wed Sep 02 2020 Ray Strode <rstrode@redhat.com> - 3.32.0-11
|
||||
- Remove subman plugin for now
|
||||
Resolves: #1872457
|
||||
|
||||
* Thu Aug 13 2020 Carl George <carl@redhat.com> - 3.32.0-10
|
||||
- Disable subman plugin on CentOS
|
||||
Resolves: #1827030
|
||||
|
||||
* Fri Nov 22 2019 Benjamin Otte <otte@redhat.com> - 3.32.0-9
|
||||
- Update gsettings-deskto-schemas dependency for new setting
|
||||
Resolves: #1775683, #1723462
|
||||
|
||||
* Thu Nov 21 2019 Benjamin Otte <otte@redhat.com> - 3.32.0-8
|
||||
- Add upstream setting for overlay scrolling
|
||||
Resolves: #1723462
|
||||
|
||||
* Mon Nov 18 2019 Kalev Lember <klember@redhat.com> - 3.32.0-7
|
||||
- Add a new plugin to provide system subscription information
|
||||
- Resolves: #1720249
|
||||
|
||||
* Mon Nov 04 2019 Marek Kasik <mkasik@redhat.com> - 3.32.0-6
|
||||
- Initialize a variable from previous commit.
|
||||
- Previous commit made it possible to use uninitialized variable.
|
||||
- Detected by Coverity.
|
||||
- Related: #1742710
|
||||
|
||||
* Mon Nov 04 2019 Marek Kasik <mkasik@redhat.com> - 3.32.0-5
|
||||
- Cancel cancellable when stopping smartcard plugin to avoid crash
|
||||
- Resolves: #1742710
|
||||
|
||||
* Tue Jul 09 2019 Richard Hughes <rhughes@redhat.com> - 3.32.0-4
|
||||
- Remove the subman plugin -- move to a 8.2 feature instead.
|
||||
- Resolves: #1720249
|
||||
|
||||
* Mon Jun 17 2019 Richard Hughes <rhughes@redhat.com> - 3.32.0-3
|
||||
- Add a new plugin to provide system subscription information
|
||||
- Resolves: #1720249
|
||||
|
||||
* Mon Jun 10 2019 Ray Strode <rstrode@redhat.com> - 3.32.0-2
|
||||
- Add dropped patches
|
||||
Related: #1674382
|
||||
* Tue Jan 11 2022 Stephen Gallagher <sgallagh@redhat.com> - 42~alpha-2
|
||||
- Lessen dependency on gsettings-desktop-schemas
|
||||
|
||||
* Thu May 23 2019 Florian Müllner <fmuellner@redhat.com> - 3.32.0-1
|
||||
* Mon Jan 10 2022 David King <amigadave@amigadave.com> - 42~alpha-1
|
||||
- Update to 42.alpha
|
||||
|
||||
* Mon Dec 13 2021 Peter Hutterer <peter.hutterer@redhat.com> - 41.0-2
|
||||
- Rebuild for libwacom soname bump
|
||||
|
||||
* Sat Sep 18 2021 Kalev Lember <klember@redhat.com> - 41.0-1
|
||||
- Update to 41.0
|
||||
|
||||
* Mon Aug 30 2021 Adam Williamson <awilliam@redhat.com> - 41~rc-2
|
||||
- Rebuild with no changes for update wrangling reasons (#1998700)
|
||||
|
||||
* Mon Aug 30 2021 Bastien Nocera <bnocera@redhat.com> - 41~rc-1
|
||||
+ gnome-settings-daemon-41~rc-1
|
||||
- Update to 41.rc
|
||||
|
||||
* Thu Jul 22 2021 Fedora Release Engineering <releng@fedoraproject.org> - 40.0.1-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
|
||||
|
||||
* Wed Apr 14 2021 Kalev Lember <klember@redhat.com> - 40.0.1-1
|
||||
- Update to 40.0.1
|
||||
|
||||
* Mon Mar 22 2021 Kalev Lember <klember@redhat.com> - 40.0-1
|
||||
- Update to 40.0
|
||||
- Drop old obsoletes/conflicts
|
||||
|
||||
* Mon Mar 15 2021 Kalev Lember <klember@redhat.com> - 40~rc-1
|
||||
- Update to 40.rc
|
||||
|
||||
* Mon Feb 15 2021 Kalev Lember <klember@redhat.com> - 40~beta-2
|
||||
- Fix loading gtk modules
|
||||
- Update versioned dependencies
|
||||
|
||||
* Mon Feb 15 2021 Florian Müllner <fmuellner@redhat.com> - 40~beta-1
|
||||
- Update to 40.beta
|
||||
|
||||
* Mon Feb 15 2021 Florian Müllner <fmuellner@redhat.com> - 40~alpha.1-1
|
||||
- Update to 40.alpha.1
|
||||
|
||||
* Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org> - 3.38.1-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
|
||||
|
||||
* Fri Oct 9 2020 Kalev Lember <klember@redhat.com> - 3.38.1-1
|
||||
- Update to 3.38.1
|
||||
|
||||
* Mon Sep 14 2020 Kalev Lember <klember@redhat.com> - 3.38.0-1
|
||||
- Update to 3.38.0
|
||||
|
||||
* Mon Sep 07 2020 Kalev Lember <klember@redhat.com> - 3.37.92-1
|
||||
- Update to 3.37.92
|
||||
|
||||
* Sat Aug 29 2020 Kalev Lember <klember@redhat.com> - 3.37.1-1
|
||||
- Update to 3.37.1
|
||||
|
||||
* Mon Aug 17 2020 Kalev Lember <klember@redhat.com> - 3.37.0-1
|
||||
- Update to 3.37.0
|
||||
|
||||
* Sat Aug 01 2020 Fedora Release Engineering <releng@fedoraproject.org> - 3.36.1-3
|
||||
- Second attempt - Rebuilt for
|
||||
https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
|
||||
|
||||
* Mon Jul 27 2020 Fedora Release Engineering <releng@fedoraproject.org> - 3.36.1-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
|
||||
|
||||
* Thu Apr 30 2020 Kalev Lember <klember@redhat.com> - 3.36.1-1
|
||||
- Update to 3.36.1
|
||||
|
||||
* Mon Mar 09 2020 Kalev Lember <klember@redhat.com> - 3.36.0-1
|
||||
- Update to 3.36.0
|
||||
|
||||
* Mon Mar 02 2020 Kalev Lember <klember@redhat.com> - 3.35.92-1
|
||||
- Update to 3.35.92
|
||||
|
||||
* Tue Feb 18 2020 Kalev Lember <klember@redhat.com> - 3.35.91-1
|
||||
- Update to 3.35.91
|
||||
|
||||
* Tue Jan 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 3.35.0-3
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
|
||||
|
||||
* Thu Jan 16 2020 Kalev Lember <klember@redhat.com> - 3.35.0-2
|
||||
- Rebuilt for libgnome-desktop soname bump
|
||||
|
||||
* Tue Jan 07 2020 Kalev Lember <klember@redhat.com> - 3.35.0-1
|
||||
- Update to 3.35.0
|
||||
|
||||
* Mon Oct 14 2019 Kalev Lember <klember@redhat.com> - 3.34.1-1
|
||||
- Update to 3.34.1
|
||||
|
||||
* Mon Sep 09 2019 Kalev Lember <klember@redhat.com> - 3.34.0-1
|
||||
- Update to 3.34.0
|
||||
|
||||
* Fri Sep 06 2019 Kalev Lember <klember@redhat.com> - 3.33.92-1
|
||||
- Update to 3.33.92
|
||||
|
||||
* Mon Aug 26 2019 Kalev Lember <klember@redhat.com> - 3.33.90-1
|
||||
- Update to 3.33.90
|
||||
- Drop old versioned conflicts
|
||||
|
||||
* Thu Jul 25 2019 Fedora Release Engineering <releng@fedoraproject.org> - 3.33.0-4
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
|
||||
|
||||
* Sun Jul 21 2019 Kalev Lember <klember@redhat.com> - 3.33.0-3
|
||||
- Rebuilt for libgnome-desktop soname bump
|
||||
|
||||
* Mon Jul 08 2019 Kalev Lember <klember@redhat.com> - 3.33.0-2
|
||||
- Rebuilt for libgweather soname bump
|
||||
|
||||
* Tue Jun 25 2019 Kalev Lember <klember@redhat.com> - 3.33.0-1
|
||||
- Update to 3.33.0
|
||||
|
||||
* Wed Jun 19 2019 Kalev Lember <klember@redhat.com> - 3.32.1-1
|
||||
- Update to 3.32.1
|
||||
|
||||
* Tue May 28 2019 Marek Kasik <mkasik@redhat.com> - 3.32.0-2
|
||||
- Fix NSS crash at smartcard plugin (#1688791)
|
||||
|
||||
* Mon Mar 11 2019 Kalev Lember <klember@redhat.com> - 3.32.0-1
|
||||
- Update to 3.32.0
|
||||
Resolves: #1698929
|
||||
|
||||
* Mon Jan 14 2019 Carlos Garnacho <cgarnach@redhat.com> - 3.28.1-2
|
||||
- Enable IBus for OSK purposes, necessary for focus tracking
|
||||
Resolves: #1626105
|
||||
* Wed Mar 06 2019 Kalev Lember <klember@redhat.com> - 3.31.92-1
|
||||
- Update to 3.31.92
|
||||
|
||||
* Wed Feb 20 2019 Kalev Lember <klember@redhat.com> - 3.31.91-1
|
||||
- Update to 3.31.91
|
||||
|
||||
* Wed Feb 06 2019 Kalev Lember <klember@redhat.com> - 3.31.90-1
|
||||
- Update to 3.31.90
|
||||
|
||||
* Thu Jan 31 2019 Fedora Release Engineering <releng@fedoraproject.org> - 3.31.2-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
|
||||
|
||||
* Wed Jan 09 2019 Kalev Lember <klember@redhat.com> - 3.31.2-1
|
||||
- Update to 3.31.2
|
||||
|
||||
* Tue Nov 20 2018 Pete Walter <pwalter@fedoraproject.org> - 3.30.1.2-3
|
||||
- Move gnome-remote-desktop recommends to gnome-control-center
|
||||
|
||||
* Fri Nov 09 2018 Ray Strode <rstrode@redhat.com> - 3.30.1.2-2
|
||||
- Add recommends for gnome-remote-desktop after irc discussion
|
||||
|
||||
* Thu Oct 04 2018 Kalev Lember <klember@redhat.com> - 3.30.1.2-1
|
||||
- Update to 3.30.1.2
|
||||
|
||||
* Fri Sep 28 2018 Kalev Lember <klember@redhat.com> - 3.30.1.1-1
|
||||
- Update to 3.30.1.1
|
||||
|
||||
* Thu Sep 06 2018 Kalev Lember <klember@redhat.com> - 3.30.0-1
|
||||
- Update to 3.30.0
|
||||
|
||||
* Sun Aug 12 2018 Kalev Lember <klember@redhat.com> - 3.29.90.1-1
|
||||
- Update to 3.29.90.1
|
||||
|
||||
* Tue Jul 31 2018 Florian Weimer <fweimer@redhat.com> - 3.28.1-3
|
||||
- Rebuild with fixed binutils
|
||||
|
||||
* Fri Jul 13 2018 Fedora Release Engineering <releng@fedoraproject.org> - 3.28.1-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
|
||||
|
||||
* Thu Apr 12 2018 Kalev Lember <klember@redhat.com> - 3.28.1-1
|
||||
- Update to 3.28.1
|
||||
|
||||
* Tue Apr 10 2018 Michael Catanzaro <mcatanzaro@gnome.org> - 3.28.0-2
|
||||
- Disable automatic suspend
|
||||
- Disable automatic suspend, except when on battery power
|
||||
|
||||
* Mon Mar 12 2018 Kalev Lember <klember@redhat.com> - 3.28.0-1
|
||||
- Update to 3.28.0
|
||||
@ -1519,4 +1355,3 @@ http://bugzilla.gnome.org/show_bug.cgi?id=580761 for details
|
||||
|
||||
* Thu Dec 06 2007 - Bastien Nocera <bnocera@redhat.com> - 2.21.5-1
|
||||
- First package
|
||||
|
||||
6
gating.yaml
Normal file
6
gating.yaml
Normal file
@ -0,0 +1,6 @@
|
||||
--- !Policy
|
||||
product_versions:
|
||||
- rhel-10
|
||||
decision_context: osci_compose_gate
|
||||
rules:
|
||||
- !PassingTestCaseRule {test_case_name: desktop-qe.desktop-ci.tier1-gating.functional}
|
||||
223
gnome-settings-daemon.spec
Normal file
223
gnome-settings-daemon.spec
Normal file
@ -0,0 +1,223 @@
|
||||
%global glib2_version 2.58
|
||||
%global colord_version 1.4.5
|
||||
%global geocode_glib_version 3.26.3
|
||||
%global gnome_desktop_version 3.37.1
|
||||
%global gsettings_desktop_schemas_version 42
|
||||
%global gtk3_version 3.15.3
|
||||
%global geoclue_version 2.3.1
|
||||
|
||||
%ifnarch s390 s390x
|
||||
%global wacom_unit org.gnome.SettingsDaemon.Wacom.service
|
||||
%else
|
||||
%global wacom_unit %{nil}
|
||||
%endif
|
||||
%global systemd_units org.gnome.SettingsDaemon.A11ySettings.service org.gnome.SettingsDaemon.Color.service org.gnome.SettingsDaemon.Datetime.service org.gnome.SettingsDaemon.Housekeeping.service org.gnome.SettingsDaemon.Keyboard.service org.gnome.SettingsDaemon.MediaKeys.service org.gnome.SettingsDaemon.Power.service org.gnome.SettingsDaemon.PrintNotifications.service org.gnome.SettingsDaemon.Rfkill.service org.gnome.SettingsDaemon.ScreensaverProxy.service org.gnome.SettingsDaemon.Sharing.service org.gnome.SettingsDaemon.Smartcard.service org.gnome.SettingsDaemon.Sound.service org.gnome.SettingsDaemon.UsbProtection.service org.gnome.SettingsDaemon.Wwan.service org.gnome.SettingsDaemon.XSettings.service %%{wacom_unit}
|
||||
|
||||
%global tarball_version %%(echo %{version} | tr '~' '.')
|
||||
%global major_version %%(echo %{version} | cut -f 1 -d '~' | cut -f 1 -d '.')
|
||||
|
||||
Name: gnome-settings-daemon
|
||||
Version: 47.2
|
||||
Release: %autorelease
|
||||
Summary: The daemon sharing settings from GNOME to GTK+/KDE applications
|
||||
|
||||
License: GPL-2.0-or-later AND LGPL-2.1-or-later
|
||||
URL: https://gitlab.gnome.org/GNOME/gnome-settings-daemon
|
||||
Source0: https://download.gnome.org/sources/%{name}/%{major_version}/%{name}-%{tarball_version}.tar.xz
|
||||
|
||||
# gsetting overrides for the "Server with GUI" installation
|
||||
Source1: org.gnome.settings-daemon.plugins.power.gschema.override
|
||||
|
||||
# https://issues.redhat.com/browse/RHEL-74248
|
||||
Patch0: housekeeping-disambiguate-mount-names-in-notifications.patch
|
||||
|
||||
|
||||
|
||||
# https://issues.redhat.com/browse/RHEL-124242
|
||||
Patch3: use-shell-brightness.patch
|
||||
|
||||
BuildRequires: gcc
|
||||
BuildRequires: gettext
|
||||
BuildRequires: meson >= 0.49.0
|
||||
BuildRequires: perl-interpreter
|
||||
BuildRequires: systemd-rpm-macros
|
||||
BuildRequires: pkgconfig(alsa)
|
||||
BuildRequires: pkgconfig(colord) >= %{colord_version}
|
||||
BuildRequires: pkgconfig(cups)
|
||||
BuildRequires: pkgconfig(fontconfig)
|
||||
BuildRequires: pkgconfig(gck-2)
|
||||
BuildRequires: pkgconfig(gcr-4)
|
||||
BuildRequires: pkgconfig(geoclue-2.0) >= %{geoclue_version}
|
||||
BuildRequires: pkgconfig(geocode-glib-2.0) >= %{geocode_glib_version}
|
||||
BuildRequires: pkgconfig(glib-2.0) >= %{glib2_version}
|
||||
BuildRequires: pkgconfig(gnome-desktop-3.0) >= %{gnome_desktop_version}
|
||||
BuildRequires: pkgconfig(gsettings-desktop-schemas) >= %{gsettings_desktop_schemas_version}
|
||||
BuildRequires: pkgconfig(gtk+-3.0) >= %{gtk3_version}
|
||||
BuildRequires: pkgconfig(gudev-1.0)
|
||||
BuildRequires: pkgconfig(gweather4)
|
||||
BuildRequires: pkgconfig(lcms2) >= 2.2
|
||||
BuildRequires: pkgconfig(libcanberra-gtk3)
|
||||
BuildRequires: pkgconfig(libgeoclue-2.0)
|
||||
BuildRequires: pkgconfig(libnm)
|
||||
BuildRequires: pkgconfig(libnotify)
|
||||
BuildRequires: pkgconfig(libpulse)
|
||||
BuildRequires: pkgconfig(libpulse-mainloop-glib)
|
||||
BuildRequires: pkgconfig(librsvg-2.0)
|
||||
BuildRequires: pkgconfig(mm-glib)
|
||||
BuildRequires: pkgconfig(nss)
|
||||
BuildRequires: pkgconfig(polkit-gobject-1)
|
||||
BuildRequires: pkgconfig(upower-glib)
|
||||
BuildRequires: pkgconfig(x11)
|
||||
BuildRequires: pkgconfig(xi)
|
||||
BuildRequires: pkgconfig(wayland-client)
|
||||
%ifnarch s390 s390x
|
||||
BuildRequires: pkgconfig(libwacom) >= 0.7
|
||||
%endif
|
||||
|
||||
Requires: colord >= %{colord_version}
|
||||
Requires: iio-sensor-proxy
|
||||
Requires: geoclue2 >= %{geoclue_version}
|
||||
Requires: geocode-glib2%{?_isa} >= %{geocode_glib_version}
|
||||
Requires: glib2%{?_isa} >= %{glib2_version}
|
||||
Requires: gnome-desktop3%{?_isa} >= %{gnome_desktop_version}
|
||||
Requires: gsettings-desktop-schemas%{?_isa} >= %{gsettings_desktop_schemas_version}
|
||||
Requires: gtk3%{?_isa} >= %{gtk3_version}
|
||||
Requires: libgweather4%{?_isa}
|
||||
|
||||
%description
|
||||
A daemon to share settings from GNOME to other applications. It also
|
||||
handles global keybindings, as well as a number of desktop-wide settings.
|
||||
|
||||
%package devel
|
||||
Summary: Development files for %{name}
|
||||
Requires: %{name}%{?_isa} = %{version}-%{release}
|
||||
|
||||
%description devel
|
||||
The %{name}-devel package contains libraries and header files for
|
||||
developing applications that use %{name}.
|
||||
|
||||
%package server-defaults
|
||||
Summary: Workstation settings overrides for Server with GUI
|
||||
Requires: %{name}%{?_isa} = %{version}-%{release}
|
||||
|
||||
%description server-defaults
|
||||
The {%name}-server-defaults package contains gsettings schema overrides
|
||||
for the default behavior of Workstation in the Server with GUI product.
|
||||
|
||||
%prep
|
||||
%autosetup -p1 -n %{name}-%{tarball_version}
|
||||
|
||||
%build
|
||||
%meson
|
||||
%meson_build
|
||||
|
||||
%install
|
||||
%meson_install
|
||||
|
||||
cp %{SOURCE1} $RPM_BUILD_ROOT%{_datadir}/glib-2.0/schemas
|
||||
|
||||
%find_lang %{name} --with-gnome
|
||||
|
||||
%post
|
||||
%systemd_user_post %{systemd_units}
|
||||
|
||||
%preun
|
||||
%systemd_user_preun %{systemd_units}
|
||||
|
||||
%files -f %{name}.lang
|
||||
%license COPYING COPYING.LIB
|
||||
%doc AUTHORS NEWS README
|
||||
|
||||
# list daemons explicitly, so we notice if one goes missing
|
||||
# some of these don't have a separate gschema
|
||||
%{_libexecdir}/gsd-datetime
|
||||
%{_sysconfdir}/xdg/autostart/org.gnome.SettingsDaemon.Datetime.desktop
|
||||
|
||||
%{_libexecdir}/gsd-housekeeping
|
||||
%{_sysconfdir}/xdg/autostart/org.gnome.SettingsDaemon.Housekeeping.desktop
|
||||
%{_datadir}/glib-2.0/schemas/org.gnome.settings-daemon.plugins.housekeeping.gschema.xml
|
||||
|
||||
%{_libexecdir}/gsd-keyboard
|
||||
%{_sysconfdir}/xdg/autostart/org.gnome.SettingsDaemon.Keyboard.desktop
|
||||
|
||||
%{_libexecdir}/gsd-media-keys
|
||||
%{_sysconfdir}/xdg/autostart/org.gnome.SettingsDaemon.MediaKeys.desktop
|
||||
%{_datadir}/glib-2.0/schemas/org.gnome.settings-daemon.plugins.media-keys.gschema.xml
|
||||
|
||||
%{_libexecdir}/gsd-power
|
||||
%{_sysconfdir}/xdg/autostart/org.gnome.SettingsDaemon.Power.desktop
|
||||
%{_datadir}/glib-2.0/schemas/org.gnome.settings-daemon.plugins.power.gschema.xml
|
||||
|
||||
%{_libexecdir}/gsd-print-notifications
|
||||
%{_sysconfdir}/xdg/autostart/org.gnome.SettingsDaemon.PrintNotifications.desktop
|
||||
%{_libexecdir}/gsd-printer
|
||||
|
||||
%{_libexecdir}/gsd-rfkill
|
||||
%{_sysconfdir}/xdg/autostart/org.gnome.SettingsDaemon.Rfkill.desktop
|
||||
|
||||
%{_libexecdir}/gsd-screensaver-proxy
|
||||
%{_sysconfdir}/xdg/autostart/org.gnome.SettingsDaemon.ScreensaverProxy.desktop
|
||||
|
||||
%{_libexecdir}/gsd-smartcard
|
||||
%{_sysconfdir}/xdg/autostart/org.gnome.SettingsDaemon.Smartcard.desktop
|
||||
|
||||
%{_libexecdir}/gsd-sound
|
||||
%{_sysconfdir}/xdg/autostart/org.gnome.SettingsDaemon.Sound.desktop
|
||||
|
||||
%{_libexecdir}/gsd-usb-protection
|
||||
%{_sysconfdir}/xdg/autostart/org.gnome.SettingsDaemon.UsbProtection.desktop
|
||||
|
||||
%{_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
|
||||
%{_sysconfdir}/xdg/autostart/org.gnome.SettingsDaemon.Wacom.desktop
|
||||
|
||||
%ifnarch s390 s390x
|
||||
%{_libexecdir}/gsd-wacom
|
||||
%{_libexecdir}/gsd-wacom-oled-helper
|
||||
%{_datadir}/polkit-1/actions/org.gnome.settings-daemon.plugins.wacom.policy
|
||||
%endif
|
||||
|
||||
%{_libexecdir}/gsd-xsettings
|
||||
%{_sysconfdir}/xdg/autostart/org.gnome.SettingsDaemon.XSettings.desktop
|
||||
%{_datadir}/glib-2.0/schemas/org.gnome.settings-daemon.plugins.xsettings.gschema.xml
|
||||
|
||||
%{_libexecdir}/gsd-a11y-settings
|
||||
%{_sysconfdir}/xdg/autostart/org.gnome.SettingsDaemon.A11ySettings.desktop
|
||||
|
||||
%{_libexecdir}/gsd-color
|
||||
%{_sysconfdir}/xdg/autostart/org.gnome.SettingsDaemon.Color.desktop
|
||||
%{_datadir}/glib-2.0/schemas/org.gnome.settings-daemon.plugins.color.gschema.xml
|
||||
|
||||
%{_libexecdir}/gsd-sharing
|
||||
%{_sysconfdir}/xdg/autostart/org.gnome.SettingsDaemon.Sharing.desktop
|
||||
%{_datadir}/glib-2.0/schemas/org.gnome.settings-daemon.plugins.sharing.gschema.xml
|
||||
|
||||
%{_sysconfdir}/xdg/autostart/org.gnome.SettingsDaemon.Wwan.desktop
|
||||
%{_libexecdir}/gsd-wwan
|
||||
%{_datadir}/glib-2.0/schemas/org.gnome.settings-daemon.plugins.wwan.gschema.xml
|
||||
|
||||
%dir %{_libdir}/gnome-settings-daemon-%{major_version}
|
||||
%{_libdir}/gnome-settings-daemon-%{major_version}/libgsd.so
|
||||
|
||||
%{_sysconfdir}/xdg/Xwayland-session.d/00-xrdb
|
||||
%{_userunitdir}/gnome-session-x11-services-ready.target.wants/
|
||||
%{_userunitdir}/gnome-session-x11-services.target.wants/
|
||||
%{lua: for service in string.gmatch(rpm.expand('%{systemd_units}'), "[^%s]+") do print(rpm.expand('%{_userunitdir}/')..service..'\n') end}
|
||||
%{_userunitdir}/*.target
|
||||
%{_udevrulesdir}/61-gnome-settings-daemon-rfkill.rules
|
||||
%{_datadir}/gnome-settings-daemon/
|
||||
%{_datadir}/GConf/gsettings/gnome-settings-daemon.convert
|
||||
|
||||
%{_datadir}/glib-2.0/schemas/org.gnome.settings-daemon.enums.xml
|
||||
%{_datadir}/glib-2.0/schemas/org.gnome.settings-daemon.plugins.gschema.xml
|
||||
|
||||
|
||||
%files devel
|
||||
%{_includedir}/gnome-settings-daemon-%{major_version}
|
||||
%{_libdir}/pkgconfig/gnome-settings-daemon.pc
|
||||
|
||||
%files server-defaults
|
||||
%{_datadir}/glib-2.0/schemas/org.gnome.settings-daemon.plugins.power.gschema.override
|
||||
|
||||
%changelog
|
||||
%autochangelog
|
||||
71
housekeeping-disambiguate-mount-names-in-notifications.patch
Normal file
71
housekeeping-disambiguate-mount-names-in-notifications.patch
Normal file
@ -0,0 +1,71 @@
|
||||
From 0d6208bfaceaa9f27d30ff0f38e3accf7bd56f95 Mon Sep 17 00:00:00 2001
|
||||
From: Felipe Borges <felipeborges@gnome.org>
|
||||
Date: Wed, 15 Jan 2025 15:26:19 +0100
|
||||
Subject: [PATCH] housekeeping: Disambiguate mount point names in notifications
|
||||
|
||||
There might be mount-points with same name, so when that's the case,
|
||||
let's show the path instead.
|
||||
|
||||
Related: RHEL-11910
|
||||
---
|
||||
plugins/housekeeping/gsd-disk-space.c | 18 +++++++++++++++---
|
||||
1 file changed, 15 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/plugins/housekeeping/gsd-disk-space.c b/plugins/housekeeping/gsd-disk-space.c
|
||||
index c5ae8f6b..aff85205 100644
|
||||
--- a/plugins/housekeeping/gsd-disk-space.c
|
||||
+++ b/plugins/housekeeping/gsd-disk-space.c
|
||||
@@ -670,7 +670,8 @@ ldsm_notify (const char *summary,
|
||||
|
||||
static void
|
||||
ldsm_notify_for_mount (LdsmMountInfo *mount,
|
||||
- gboolean multiple_volumes)
|
||||
+ gboolean multiple_volumes,
|
||||
+ gboolean is_ambiguous_name)
|
||||
{
|
||||
gboolean has_trash;
|
||||
gchar *name;
|
||||
@@ -688,7 +689,7 @@ ldsm_notify_for_mount (LdsmMountInfo *mount,
|
||||
free_space_str = g_format_size (free_space);
|
||||
|
||||
if (multiple_volumes) {
|
||||
- summary = g_strdup_printf (_("Low Disk Space on “%s”"), name);
|
||||
+ summary = g_strdup_printf (_("Low Disk Space on “%s”"), is_ambiguous_name ? path : name);
|
||||
if (has_trash) {
|
||||
body = g_strdup_printf (_("The volume “%s” has only %s disk space remaining. You may free up some space by emptying the trash."),
|
||||
name,
|
||||
@@ -778,8 +779,10 @@ ldsm_maybe_warn_mounts (GList *mounts,
|
||||
gboolean multiple_volumes)
|
||||
{
|
||||
GList *l;
|
||||
+ GHashTable *mount_names;
|
||||
gboolean done = FALSE;
|
||||
|
||||
+ mount_names = g_hash_table_new (g_str_hash, g_str_equal);
|
||||
for (l = mounts; l != NULL; l = l->next) {
|
||||
LdsmMountInfo *mount_info = l->data;
|
||||
LdsmMountInfo *previous_mount_info;
|
||||
@@ -832,10 +835,19 @@ ldsm_maybe_warn_mounts (GList *mounts,
|
||||
}
|
||||
|
||||
if (show_notify) {
|
||||
- ldsm_notify_for_mount (mount_info, multiple_volumes);
|
||||
+ g_autofree gchar *mount_name = NULL;
|
||||
+ gboolean is_ambiguous_name = FALSE;
|
||||
+
|
||||
+ mount_name = g_unix_mount_guess_name (mount_info->mount);
|
||||
+ is_ambiguous_name = g_hash_table_contains (mount_names, mount_name);
|
||||
+ g_hash_table_add (mount_names, mount_name);
|
||||
+
|
||||
+ ldsm_notify_for_mount (mount_info, multiple_volumes, is_ambiguous_name);
|
||||
done = TRUE;
|
||||
}
|
||||
}
|
||||
+
|
||||
+ g_hash_table_destroy (mount_names);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
--
|
||||
2.37.1
|
||||
|
||||
5
org.gnome.settings-daemon.plugins.power.gschema.override
Normal file
5
org.gnome.settings-daemon.plugins.power.gschema.override
Normal file
@ -0,0 +1,5 @@
|
||||
[org.gnome.settings-daemon.plugins.power]
|
||||
sleep-inactive-ac-timeout=0
|
||||
|
||||
[org.gnome.settings-daemon.plugins.power]
|
||||
power-button-action=nothing
|
||||
1
sources
Normal file
1
sources
Normal file
@ -0,0 +1 @@
|
||||
SHA512 (gnome-settings-daemon-47.2.tar.xz) = fd3e358aa1f6a317dc49436965135dde204bd55fee9c96127d1208aafb60af3667fcc344a1667be1596892987f67ebab3fc7eefaeeefce82e1c65635e36c126f
|
||||
84
subman-delay-startup-notification-by-30min.patch
Normal file
84
subman-delay-startup-notification-by-30min.patch
Normal file
@ -0,0 +1,84 @@
|
||||
From 0b7f0aa63629a406921ecf1f0b56367456a42581 Mon Sep 17 00:00:00 2001
|
||||
From: Felipe Borges <felipeborges@gnome.org>
|
||||
Date: Wed, 12 Nov 2025 12:50:32 +0100
|
||||
Subject: [PATCH] subman: Delay startup notification by 30 minutes
|
||||
|
||||
We don't want to disturb users during their first login, initial
|
||||
setup, and/or onboarding.
|
||||
|
||||
Let's show the notification 30 minutes later.
|
||||
|
||||
Resolves: RHEL-127784
|
||||
---
|
||||
plugins/subman/gsd-subscription-manager.c | 27 ++++++++++++++++++++++-
|
||||
1 file changed, 26 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/plugins/subman/gsd-subscription-manager.c b/plugins/subman/gsd-subscription-manager.c
|
||||
index eb45e367..e2acba37 100644
|
||||
--- a/plugins/subman/gsd-subscription-manager.c
|
||||
+++ b/plugins/subman/gsd-subscription-manager.c
|
||||
@@ -39,6 +39,8 @@
|
||||
#define GSD_SUBSCRIPTION_DBUS_PATH GSD_DBUS_PATH "/Subscription"
|
||||
#define GSD_SUBSCRIPTION_DBUS_INTERFACE GSD_DBUS_BASE_INTERFACE ".Subscription"
|
||||
|
||||
+#define STARTUP_NOTIFICATION_DELAY (30 * 60)
|
||||
+
|
||||
static const gchar introspection_xml[] =
|
||||
"<node>"
|
||||
" <interface name='org.gnome.SettingsDaemon.Subscription'>"
|
||||
@@ -84,6 +86,8 @@ typedef struct
|
||||
NotifyNotification *notification_registration_required;
|
||||
GsdSubmanSubscriptionStatus subscription_status;
|
||||
GsdSubmanSubscriptionStatus subscription_status_last;
|
||||
+
|
||||
+ guint startup_registration_required_notification_id;
|
||||
} GsdSubscriptionManagerPrivate;
|
||||
|
||||
enum {
|
||||
@@ -510,6 +514,15 @@ _show_notification (GsdSubscriptionManager *manager, _NotifyKind notify_kind)
|
||||
g_timer_reset (priv->timer_last_notified);
|
||||
}
|
||||
|
||||
+static void _client_maybe__show_notification (GsdSubscriptionManager *manager);
|
||||
+static gboolean
|
||||
+_startup_registration_required_notification_cb (GsdSubscriptionManager *manager)
|
||||
+{
|
||||
+ _client_maybe__show_notification (manager);
|
||||
+
|
||||
+ return FALSE;
|
||||
+}
|
||||
+
|
||||
static void
|
||||
_client_maybe__show_notification (GsdSubscriptionManager *manager)
|
||||
{
|
||||
@@ -603,7 +616,14 @@ _client_maybe__show_notification (GsdSubscriptionManager *manager)
|
||||
|
||||
/* startup */
|
||||
if (!was_read && is_read && priv->subscription_status == GSD_SUBMAN_SUBSCRIPTION_STATUS_UNKNOWN) {
|
||||
- _show_notification (manager, _NOTIFY_REGISTRATION_REQUIRED);
|
||||
+ if (priv->startup_registration_required_notification_id == 0) {
|
||||
+ priv->startup_registration_required_notification_id =
|
||||
+ g_timeout_add_seconds (STARTUP_NOTIFICATION_DELAY,
|
||||
+ (GSourceFunc) _startup_registration_required_notification_cb, manager);
|
||||
+ } else {
|
||||
+ _show_notification (manager, _NOTIFY_REGISTRATION_REQUIRED);
|
||||
+ }
|
||||
+
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1175,6 +1195,11 @@ gsd_subscription_manager_finalize (GObject *object)
|
||||
g_clear_object (&priv->bus_cancellable);
|
||||
}
|
||||
|
||||
+ if (priv->startup_registration_required_notification_id) {
|
||||
+ g_source_remove (priv->startup_registration_required_notification_id);
|
||||
+ priv->startup_registration_required_notification_id = 0;
|
||||
+ }
|
||||
+
|
||||
g_clear_pointer (&priv->installed_products, g_ptr_array_unref);
|
||||
g_clear_pointer (&priv->introspection_data, g_dbus_node_info_unref);
|
||||
g_clear_object (&priv->connection);
|
||||
--
|
||||
2.51.0
|
||||
|
||||
3651
use-shell-brightness.patch
Normal file
3651
use-shell-brightness.patch
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user