Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| dcc45eb70c | |||
| d711fdd99b | |||
|
|
20e6d931e2 |
2
.gitignore
vendored
2
.gitignore
vendored
@ -1 +1 @@
|
||||
SOURCES/gnome-settings-daemon-3.32.0.tar.xz
|
||||
gnome-settings-daemon-47.2.tar.xz
|
||||
|
||||
@ -1 +0,0 @@
|
||||
92145a7a5714ebf3aeb90baaacb7e6955335731b SOURCES/gnome-settings-daemon-3.32.0.tar.xz
|
||||
@ -0,0 +1,79 @@
|
||||
From 88e90f2748f08f14d3f635939f3f85f05f66ecb3 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Marco=20Trevisan=20=28Trevi=C3=B1o=29?= <mail@3v1n0.net>
|
||||
Date: Fri, 7 Feb 2025 18:05:51 +0100
|
||||
Subject: [PATCH] smartcard/manager: Consider modules with no slots as
|
||||
removable devices
|
||||
|
||||
Some smartcard modules support removable slots but they don't advertise
|
||||
them until a smartcard device is actually plugged.
|
||||
|
||||
In such case we can't know preventively if the module provides
|
||||
removable-token (e.g. smartcard) support, so we can just assume that it
|
||||
does or we won't be able to catch the token insertion when this happens.
|
||||
|
||||
Closes: #782
|
||||
|
||||
Part-of: <https://gitlab.gnome.org/GNOME/gnome-settings-daemon/-/merge_requests/405>
|
||||
---
|
||||
plugins/smartcard/gsd-smartcard-manager.c | 27 ++++++++++++++++++++---
|
||||
1 file changed, 24 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/plugins/smartcard/gsd-smartcard-manager.c b/plugins/smartcard/gsd-smartcard-manager.c
|
||||
index c049f492..4def3137 100644
|
||||
--- a/plugins/smartcard/gsd-smartcard-manager.c
|
||||
+++ b/plugins/smartcard/gsd-smartcard-manager.c
|
||||
@@ -520,13 +520,31 @@ on_smartcards_from_module_watched (GsdSmartcardManager *self,
|
||||
}
|
||||
|
||||
static gboolean
|
||||
-module_has_removable_slot (GckModule *module)
|
||||
+module_should_be_watched (GckModule *module)
|
||||
{
|
||||
g_autolist(GckSlot) slots = NULL;
|
||||
GList *l;
|
||||
|
||||
slots = gck_module_get_slots (module, FALSE);
|
||||
|
||||
+ if (slots == NULL) {
|
||||
+ CK_FUNCTION_LIST_PTR p11_module;
|
||||
+ g_autofree char *module_name = NULL;
|
||||
+
|
||||
+ p11_module = gck_module_get_functions (module);
|
||||
+ module_name = p11_kit_module_get_name (p11_module);
|
||||
+
|
||||
+ /* No slot is currently available, so we can't make assumptions
|
||||
+ * whether the module supports or not removable devices.
|
||||
+ * So let's be conservative here and let's just assume that the
|
||||
+ * module does support removable devices, so that we will monitor
|
||||
+ * it for changes.
|
||||
+ */
|
||||
+ g_debug ("No slot found for module %s, let's assume it supports "
|
||||
+ "removable devices", module_name);
|
||||
+ return TRUE;
|
||||
+ }
|
||||
+
|
||||
for (l = slots; l; l = l->next) {
|
||||
GckSlot *slot = l->data;
|
||||
|
||||
@@ -562,13 +580,16 @@ on_modules_initialized (GObject *source_object,
|
||||
GckModule *module = l->data;
|
||||
CK_FUNCTION_LIST_PTR p11_module;
|
||||
g_autofree char *module_name = NULL;
|
||||
+ gboolean should_watch;
|
||||
|
||||
p11_module = gck_module_get_functions (module);
|
||||
module_name = p11_kit_module_get_name (p11_module);
|
||||
+ should_watch = module_should_be_watched (module);
|
||||
|
||||
- g_debug ("Found p11-kit module %s", module_name);
|
||||
+ g_debug ("Found p11-kit module %s (watched: %d)", module_name,
|
||||
+ should_watch);
|
||||
|
||||
- if (!module_has_removable_slot (module))
|
||||
+ if (!should_watch)
|
||||
continue;
|
||||
|
||||
self->smartcard_modules = g_list_prepend (self->smartcard_modules,
|
||||
--
|
||||
2.53.0
|
||||
|
||||
@ -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,252 +0,0 @@
|
||||
From 197eab664af1cbd6bc507c81cf5775c97f626df2 Mon Sep 17 00:00:00 2001
|
||||
From: Christian Hergert <chergert@redhat.com>
|
||||
Date: Fri, 21 Nov 2025 12:49:25 -0800
|
||||
Subject: [PATCH 1/4] plugins/housekeeping: only make has_trash() call once
|
||||
|
||||
We don't need to call this twice, it is only called in these two places
|
||||
so just pass in the value from the previous call.
|
||||
|
||||
(cherry picked from commit a66871d63abc68fc4f9a9880a33d4cc35b665877)
|
||||
---
|
||||
plugins/housekeeping/gsd-disk-space.c | 8 +++-----
|
||||
1 file changed, 3 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/plugins/housekeeping/gsd-disk-space.c b/plugins/housekeeping/gsd-disk-space.c
|
||||
index bd3437e5..0628425e 100644
|
||||
--- a/plugins/housekeeping/gsd-disk-space.c
|
||||
+++ b/plugins/housekeeping/gsd-disk-space.c
|
||||
@@ -556,11 +556,11 @@ on_notification_closed (NotifyNotification *n)
|
||||
static void
|
||||
ldsm_notify (const char *summary,
|
||||
const char *body,
|
||||
- const char *mount_path)
|
||||
+ const char *mount_path,
|
||||
+ gboolean has_trash)
|
||||
{
|
||||
gchar *program;
|
||||
gboolean has_disk_analyzer;
|
||||
- gboolean has_trash;
|
||||
|
||||
/* Don't show a notice if one is already displayed */
|
||||
if (notification != NULL)
|
||||
@@ -591,8 +591,6 @@ ldsm_notify (const char *summary,
|
||||
g_free);
|
||||
}
|
||||
|
||||
- has_trash = ldsm_mount_has_trash (mount_path);
|
||||
-
|
||||
if (has_trash) {
|
||||
notify_notification_add_action (notification,
|
||||
"empty-trash",
|
||||
@@ -656,7 +654,7 @@ ldsm_notify_for_mount (LdsmMountInfo *mount,
|
||||
}
|
||||
}
|
||||
|
||||
- ldsm_notify (summary, body, path);
|
||||
+ ldsm_notify (summary, body, path, has_trash);
|
||||
|
||||
g_free (free_space_str);
|
||||
g_free (summary);
|
||||
--
|
||||
2.34.1
|
||||
|
||||
|
||||
From 4a0ebf20b0cbc117210f8ec2692d17a47e9b93af Mon Sep 17 00:00:00 2001
|
||||
From: Christian Hergert <chergert@redhat.com>
|
||||
Date: Fri, 21 Nov 2025 12:53:56 -0800
|
||||
Subject: [PATCH 2/4] plugins/housekeeping: track changes to ignored mounts in
|
||||
glib
|
||||
|
||||
This mirrors the changes in GNOME/glib!4916 which adds the following
|
||||
system mounts:
|
||||
|
||||
* binfmt_misc
|
||||
* bpf
|
||||
* efivarfs
|
||||
* tracefs
|
||||
|
||||
(cherry picked from commit cfe8049a6de68a988c5fd6cefa837d11807f4846)
|
||||
---
|
||||
plugins/housekeeping/gsd-disk-space-helper.c | 4 ++++
|
||||
1 file changed, 4 insertions(+)
|
||||
|
||||
diff --git a/plugins/housekeeping/gsd-disk-space-helper.c b/plugins/housekeeping/gsd-disk-space-helper.c
|
||||
index 56e054ca..36f4b3b1 100644
|
||||
--- a/plugins/housekeeping/gsd-disk-space-helper.c
|
||||
+++ b/plugins/housekeeping/gsd-disk-space-helper.c
|
||||
@@ -50,6 +50,8 @@ gsd_should_ignore_unix_mount (GUnixMountEntry *mount)
|
||||
"auto",
|
||||
"autofs",
|
||||
"autofs4",
|
||||
+ "binfmt_misc",
|
||||
+ "bpf",
|
||||
"cgroup",
|
||||
"configfs",
|
||||
"cxfs",
|
||||
@@ -58,6 +60,7 @@ gsd_should_ignore_unix_mount (GUnixMountEntry *mount)
|
||||
"devpts",
|
||||
"devtmpfs",
|
||||
"ecryptfs",
|
||||
+ "efivarfs",
|
||||
"fdescfs",
|
||||
"fusectl",
|
||||
"gfs",
|
||||
@@ -86,6 +89,7 @@ gsd_should_ignore_unix_mount (GUnixMountEntry *mount)
|
||||
"selinuxfs",
|
||||
"sysfs",
|
||||
"tmpfs",
|
||||
+ "tracefs",
|
||||
"usbfs",
|
||||
"zfs",
|
||||
NULL
|
||||
--
|
||||
2.34.1
|
||||
|
||||
|
||||
From 90318eec1e60665d39b6c5841cb1a01b11e96363 Mon Sep 17 00:00:00 2001
|
||||
From: Christian Hergert <chergert@redhat.com>
|
||||
Date: Fri, 21 Nov 2025 13:40:53 -0800
|
||||
Subject: [PATCH 3/4] plugins/housekeeping: check user-data-dir fs::id once
|
||||
|
||||
We don't, as a platform, really support changing out your entire file
|
||||
system out from underneath a running session. So only check the
|
||||
file-system identifier for the user trash directory once at startup.
|
||||
|
||||
(cherry picked from commit 4cc8891b43ffacd378155b6d838dcd279e85144f)
|
||||
---
|
||||
plugins/housekeeping/gsd-disk-space.c | 8 +++-----
|
||||
1 file changed, 3 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/plugins/housekeeping/gsd-disk-space.c b/plugins/housekeeping/gsd-disk-space.c
|
||||
index 0628425e..1be45465 100644
|
||||
--- a/plugins/housekeeping/gsd-disk-space.c
|
||||
+++ b/plugins/housekeeping/gsd-disk-space.c
|
||||
@@ -73,6 +73,7 @@ static GSList *ignore_paths = NULL;
|
||||
static GSettings *settings = NULL;
|
||||
static GSettings *privacy_settings = NULL;
|
||||
static NotifyNotification *notification = NULL;
|
||||
+static char *user_data_attr_id_fs;
|
||||
|
||||
static guint64 *time_read;
|
||||
|
||||
@@ -106,17 +107,12 @@ ldsm_get_fs_id_for_path (const gchar *path)
|
||||
static gboolean
|
||||
ldsm_mount_has_trash (const char *path)
|
||||
{
|
||||
- const gchar *user_data_dir;
|
||||
- gchar *user_data_attr_id_fs;
|
||||
gchar *path_attr_id_fs;
|
||||
gboolean mount_uses_user_trash = FALSE;
|
||||
gchar *trash_files_dir;
|
||||
gboolean has_trash = FALSE;
|
||||
GDir *dir;
|
||||
|
||||
- user_data_dir = g_get_user_data_dir ();
|
||||
- user_data_attr_id_fs = ldsm_get_fs_id_for_path (user_data_dir);
|
||||
-
|
||||
path_attr_id_fs = ldsm_get_fs_id_for_path (path);
|
||||
|
||||
if (g_strcmp0 (user_data_attr_id_fs, path_attr_id_fs) == 0) {
|
||||
@@ -977,6 +973,8 @@ gsd_ldsm_setup (gboolean check_now)
|
||||
g_free,
|
||||
ldsm_free_mount_info);
|
||||
|
||||
+ user_data_attr_id_fs = ldsm_get_fs_id_for_path (g_get_user_data_dir ());
|
||||
+
|
||||
settings = g_settings_new (SETTINGS_HOUSEKEEPING_DIR);
|
||||
privacy_settings = g_settings_new (PRIVACY_SETTINGS);
|
||||
gsd_ldsm_get_config ();
|
||||
--
|
||||
2.34.1
|
||||
|
||||
|
||||
From bb697b6810715c55d4027946a55e5aee010694b8 Mon Sep 17 00:00:00 2001
|
||||
From: Felipe Borges <felipeborges@gnome.org>
|
||||
Date: Fri, 9 Jan 2026 11:05:14 +0100
|
||||
Subject: [PATCH 4/4] housekeeping: Debounce mount checks in Low Disk Space
|
||||
monitoring
|
||||
|
||||
When an environment triggers too many mount events, the Low Disk Space
|
||||
monitor will parse the mount table with g_unix_mounts_get() too many times,
|
||||
causing gsd-housekeeping to consume excessive CPU.
|
||||
|
||||
These changes prevent mount change events from triggering too many expensive
|
||||
mount checks by adding a rate-limiting timeout with random delay (50-500ms)
|
||||
and ensuring only one pending check is queued at a time.
|
||||
|
||||
https://issues.redhat.com/browse/RHEL-127715
|
||||
---
|
||||
plugins/housekeeping/gsd-disk-space.c | 26 +++++++++++++++++++++++---
|
||||
1 file changed, 23 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/plugins/housekeeping/gsd-disk-space.c b/plugins/housekeeping/gsd-disk-space.c
|
||||
index 1be45465..541fbf5d 100644
|
||||
--- a/plugins/housekeeping/gsd-disk-space.c
|
||||
+++ b/plugins/housekeeping/gsd-disk-space.c
|
||||
@@ -41,6 +41,8 @@
|
||||
|
||||
#define CHECK_EVERY_X_SECONDS 60
|
||||
|
||||
+#define UPDATE_TIMEOUT 100 /* ms */
|
||||
+
|
||||
#define DISK_SPACE_ANALYZER "baobab"
|
||||
|
||||
#define SETTINGS_HOUSEKEEPING_DIR "org.gnome.settings-daemon.plugins.housekeeping"
|
||||
@@ -64,6 +66,7 @@ typedef struct
|
||||
|
||||
static GHashTable *ldsm_notified_hash = NULL;
|
||||
static unsigned int ldsm_timeout_id = 0;
|
||||
+static guint ldsm_update_id = 0;
|
||||
static GUnixMountMonitor *ldsm_monitor = NULL;
|
||||
static double free_percent_notify = 0.05;
|
||||
static double free_percent_notify_again = 0.01;
|
||||
@@ -887,12 +890,13 @@ ldsm_is_hash_item_not_in_mounts (gpointer key,
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
-static void
|
||||
-ldsm_mounts_changed (GObject *monitor,
|
||||
- gpointer data)
|
||||
+static gboolean
|
||||
+ldsm_mounts_changed_timeout (gpointer user_data)
|
||||
{
|
||||
GList *mounts;
|
||||
|
||||
+ ldsm_update_id = 0;
|
||||
+
|
||||
/* remove the saved data for mounts that got removed */
|
||||
mounts = g_unix_mounts_get (time_read);
|
||||
g_hash_table_foreach_remove (ldsm_notified_hash,
|
||||
@@ -908,6 +912,20 @@ ldsm_mounts_changed (GObject *monitor,
|
||||
ldsm_timeout_id = g_timeout_add_seconds (CHECK_EVERY_X_SECONDS,
|
||||
ldsm_check_all_mounts, NULL);
|
||||
g_source_set_name_by_id (ldsm_timeout_id, "[gnome-settings-daemon] ldsm_check_all_mounts");
|
||||
+
|
||||
+ return G_SOURCE_REMOVE;
|
||||
+}
|
||||
+
|
||||
+static void
|
||||
+ldsm_mounts_changed (GObject *monitor,
|
||||
+ gpointer data)
|
||||
+{
|
||||
+ if (ldsm_update_id != 0)
|
||||
+ return;
|
||||
+
|
||||
+ ldsm_update_id = g_timeout_add (UPDATE_TIMEOUT * g_random_double_range (0.5, 5),
|
||||
+ ldsm_mounts_changed_timeout,
|
||||
+ NULL);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
@@ -1007,6 +1025,8 @@ gsd_ldsm_clean (void)
|
||||
g_source_remove (purge_temp_id);
|
||||
purge_temp_id = 0;
|
||||
|
||||
+ g_clear_handle_id (&ldsm_update_id, g_source_remove);
|
||||
+
|
||||
if (ldsm_timeout_id)
|
||||
g_source_remove (ldsm_timeout_id);
|
||||
ldsm_timeout_id = 0;
|
||||
--
|
||||
2.34.1
|
||||
|
||||
@ -1,3 +0,0 @@
|
||||
[org.gnome.settings-daemon.plugins.power]
|
||||
sleep-inactive-ac-timeout=0
|
||||
sleep-inactive-battery-timeout=0
|
||||
486
fix-auto-brightness.patch
Normal file
486
fix-auto-brightness.patch
Normal file
@ -0,0 +1,486 @@
|
||||
From 000316a46ae7a91ff4e1a3d23b5b290caa7558c1 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Wick <sebastian.wick@redhat.com>
|
||||
Date: Wed, 15 Oct 2025 19:40:19 +0200
|
||||
Subject: [PATCH 1/7] power: Disable auto brightness when we release the light
|
||||
sensor
|
||||
|
||||
---
|
||||
plugins/power/gsd-power-manager.c | 7 ++++---
|
||||
1 file changed, 4 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/plugins/power/gsd-power-manager.c b/plugins/power/gsd-power-manager.c
|
||||
index b7b5b642..a8995bd5 100644
|
||||
--- a/plugins/power/gsd-power-manager.c
|
||||
+++ b/plugins/power/gsd-power-manager.c
|
||||
@@ -1293,16 +1293,17 @@ light_released_cb (GObject *source_object,
|
||||
GAsyncResult *res,
|
||||
gpointer user_data)
|
||||
{
|
||||
+ GsdPowerManager *manager = GSD_POWER_MANAGER (user_data);
|
||||
g_autoptr(GError) error = NULL;
|
||||
g_autoptr(GVariant) result = NULL;
|
||||
|
||||
result = g_dbus_proxy_call_finish (G_DBUS_PROXY (source_object),
|
||||
res,
|
||||
&error);
|
||||
- if (result == NULL) {
|
||||
+ if (result == NULL)
|
||||
g_warning ("Release of light sensors failed: %s", error->message);
|
||||
- return;
|
||||
- }
|
||||
+
|
||||
+ shell_brightness_set_auto_target (manager, -1.0);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
--
|
||||
2.53.0
|
||||
|
||||
|
||||
From 69219b30bdef704d891b3278d03ae758dde07821 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Wick <sebastian.wick@redhat.com>
|
||||
Date: Wed, 15 Oct 2025 20:35:17 +0200
|
||||
Subject: [PATCH 2/7] power: Take double in set_auto_target because we send a
|
||||
double
|
||||
|
||||
---
|
||||
plugins/power/gsd-power-manager.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/plugins/power/gsd-power-manager.c b/plugins/power/gsd-power-manager.c
|
||||
index a8995bd5..c8d3ef8e 100644
|
||||
--- a/plugins/power/gsd-power-manager.c
|
||||
+++ b/plugins/power/gsd-power-manager.c
|
||||
@@ -1219,7 +1219,7 @@ shell_brightness_set_auto_target_cb (GObject *source_object,
|
||||
|
||||
static void
|
||||
shell_brightness_set_auto_target (GsdPowerManager *manager,
|
||||
- float target)
|
||||
+ double target)
|
||||
{
|
||||
if (!manager->shell_brightness_proxy)
|
||||
return;
|
||||
--
|
||||
2.53.0
|
||||
|
||||
|
||||
From 9f596d601b68231d1364247ffb14f686fce2ed7b Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Wick <sebastian.wick@redhat.com>
|
||||
Date: Wed, 15 Oct 2025 20:37:03 +0200
|
||||
Subject: [PATCH 3/7] power: Use autoptrs in iio_proxy_changed
|
||||
|
||||
---
|
||||
plugins/power/gsd-power-manager.c | 13 +++++--------
|
||||
1 file changed, 5 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/plugins/power/gsd-power-manager.c b/plugins/power/gsd-power-manager.c
|
||||
index c8d3ef8e..c9831222 100644
|
||||
--- a/plugins/power/gsd-power-manager.c
|
||||
+++ b/plugins/power/gsd-power-manager.c
|
||||
@@ -2884,8 +2884,8 @@ logind_proxy_signal_cb (GDBusProxy *proxy,
|
||||
static void
|
||||
iio_proxy_changed (GsdPowerManager *manager)
|
||||
{
|
||||
- GVariant *val_has = NULL;
|
||||
- GVariant *val_als = NULL;
|
||||
+ g_autoptr (GVariant) val_has = NULL;
|
||||
+ g_autoptr (GVariant) val_als = NULL;
|
||||
gdouble brightness;
|
||||
gdouble alpha;
|
||||
gint64 current_time;
|
||||
@@ -2902,10 +2902,10 @@ iio_proxy_changed (GsdPowerManager *manager)
|
||||
/* get latest results, which do not have to be Lux */
|
||||
val_has = g_dbus_proxy_get_cached_property (manager->iio_proxy, "HasAmbientLight");
|
||||
if (val_has == NULL || !g_variant_get_boolean (val_has))
|
||||
- goto out;
|
||||
+ return;
|
||||
val_als = g_dbus_proxy_get_cached_property (manager->iio_proxy, "LightLevel");
|
||||
if (val_als == NULL || g_variant_get_double (val_als) == 0.0)
|
||||
- goto out;
|
||||
+ return;
|
||||
manager->ambient_last_absolute = g_variant_get_double (val_als);
|
||||
g_debug ("Read last absolute light level: %f", manager->ambient_last_absolute);
|
||||
|
||||
@@ -2935,7 +2935,7 @@ iio_proxy_changed (GsdPowerManager *manager)
|
||||
|
||||
/* no valid readings yet */
|
||||
if (manager->ambient_accumulator < 0.f)
|
||||
- goto out;
|
||||
+ return;
|
||||
|
||||
/* set new value */
|
||||
g_debug ("Setting brightness from ambient %.1f%%",
|
||||
@@ -2946,9 +2946,6 @@ iio_proxy_changed (GsdPowerManager *manager)
|
||||
|
||||
/* Assume setting worked. */
|
||||
manager->ambient_percentage_old = pc;
|
||||
-out:
|
||||
- g_clear_pointer (&val_has, g_variant_unref);
|
||||
- g_clear_pointer (&val_als, g_variant_unref);
|
||||
}
|
||||
|
||||
static void
|
||||
--
|
||||
2.53.0
|
||||
|
||||
|
||||
From 7e27736fe9a2c0b2b914569da5ad7d7fdc7b4d1d Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Wick <sebastian.wick@redhat.com>
|
||||
Date: Wed, 15 Oct 2025 20:41:22 +0200
|
||||
Subject: [PATCH 4/7] power: Rename ambient_last_time to
|
||||
ambient_update_last_time
|
||||
|
||||
We will track another last_time later, so rename it in advance.
|
||||
---
|
||||
plugins/power/gsd-power-manager.c | 10 +++++-----
|
||||
1 file changed, 5 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/plugins/power/gsd-power-manager.c b/plugins/power/gsd-power-manager.c
|
||||
index c9831222..fbc48ab3 100644
|
||||
--- a/plugins/power/gsd-power-manager.c
|
||||
+++ b/plugins/power/gsd-power-manager.c
|
||||
@@ -176,7 +176,7 @@ struct _GsdPowerManager
|
||||
gdouble ambient_norm_value;
|
||||
gdouble ambient_percentage_old;
|
||||
gdouble ambient_last_absolute;
|
||||
- gint64 ambient_last_time;
|
||||
+ gint64 ambient_update_last_time;
|
||||
|
||||
/* Power Profiles */
|
||||
GDBusProxy *power_profiles_proxy;
|
||||
@@ -2919,11 +2919,11 @@ iio_proxy_changed (GsdPowerManager *manager)
|
||||
|
||||
/* time-weighted constant for moving average */
|
||||
current_time = g_get_monotonic_time();
|
||||
- if (manager->ambient_last_time)
|
||||
- alpha = 1.0f / (1.0f + (GSD_AMBIENT_TIME_CONSTANT / (current_time - manager->ambient_last_time)));
|
||||
+ if (manager->ambient_update_last_time)
|
||||
+ alpha = 1.0f / (1.0f + (GSD_AMBIENT_TIME_CONSTANT / (current_time - manager->ambient_update_last_time)));
|
||||
else
|
||||
alpha = 0.0f;
|
||||
- manager->ambient_last_time = current_time;
|
||||
+ manager->ambient_update_last_time = current_time;
|
||||
|
||||
/* calculate exponential weighted moving average */
|
||||
brightness = manager->ambient_last_absolute * 100.f / manager->ambient_norm_value;
|
||||
@@ -3046,7 +3046,7 @@ gsd_power_manager_start (GsdPowerManager *manager,
|
||||
manager->ambient_norm_value = -1.f;
|
||||
manager->ambient_percentage_old = -1.f;
|
||||
manager->ambient_last_absolute = -1.f;
|
||||
- manager->ambient_last_time = 0;
|
||||
+ manager->ambient_update_last_time = 0;
|
||||
|
||||
/* Set up a delay inhibitor to be informed about suspend attempts */
|
||||
g_signal_connect (manager->logind_proxy, "g-signal",
|
||||
--
|
||||
2.53.0
|
||||
|
||||
|
||||
From 64d268883b060b1f8e2719ef4fcd80dc987b270e Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Wick <sebastian.wick@redhat.com>
|
||||
Date: Wed, 15 Oct 2025 20:43:45 +0200
|
||||
Subject: [PATCH 5/7] power: Rework ambient light sensor normalization
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
This reworks the normalization and fixes two things in particular:
|
||||
|
||||
The percentage `pc` is an int so if we want values different
|
||||
from `0` and `1` we need to use floating point division.
|
||||
|
||||
When gsd-power controlled the backlight it would init that value from
|
||||
the backlight on startup but we don't have that available anymore so
|
||||
can only pick an arbitrary value.
|
||||
|
||||
Co-authored-by: Guido Günther <agx@sigxcpu.org>
|
||||
Fixes: 08ae6461 ("power: Switch from direct mutter backlight handling to Shell.Brightness")
|
||||
---
|
||||
plugins/power/gsd-power-manager.c | 52 +++++++++++--------------------
|
||||
1 file changed, 19 insertions(+), 33 deletions(-)
|
||||
|
||||
diff --git a/plugins/power/gsd-power-manager.c b/plugins/power/gsd-power-manager.c
|
||||
index fbc48ab3..10dfe601 100644
|
||||
--- a/plugins/power/gsd-power-manager.c
|
||||
+++ b/plugins/power/gsd-power-manager.c
|
||||
@@ -94,6 +94,10 @@
|
||||
/* Convert bandwidth to time constant. Units of constant are microseconds. */
|
||||
#define GSD_AMBIENT_TIME_CONSTANT (G_USEC_PER_SEC * 1.0f / (2.0f * G_PI * GSD_AMBIENT_BANDWIDTH_HZ))
|
||||
|
||||
+/* Normalize against this factor of the current absolute reading.
|
||||
+ * The value has been chosen arbitrarily but seems to work in practice. */
|
||||
+#define GSD_AMBIENT_NORMALIZE_CONSTANT (1.5f)
|
||||
+
|
||||
static const gchar introspection_xml[] =
|
||||
"<node>"
|
||||
" <interface name='org.gnome.SettingsDaemon.Power.Keyboard'>"
|
||||
@@ -174,8 +178,6 @@ struct _GsdPowerManager
|
||||
gboolean ambient_norm_required;
|
||||
gdouble ambient_accumulator;
|
||||
gdouble ambient_norm_value;
|
||||
- gdouble ambient_percentage_old;
|
||||
- gdouble ambient_last_absolute;
|
||||
gint64 ambient_update_last_time;
|
||||
|
||||
/* Power Profiles */
|
||||
@@ -2609,19 +2611,6 @@ idle_became_active_cb (GnomeIdleMonitor *monitor,
|
||||
manager->user_active_id = 0;
|
||||
}
|
||||
|
||||
-static void
|
||||
-ch_backlight_renormalize (GsdPowerManager *manager)
|
||||
-{
|
||||
- if (manager->ambient_percentage_old < 0)
|
||||
- return;
|
||||
- if (manager->ambient_last_absolute < 0)
|
||||
- return;
|
||||
- manager->ambient_norm_value = manager->ambient_last_absolute /
|
||||
- (gdouble) manager->ambient_percentage_old;
|
||||
- manager->ambient_norm_value *= 100.f;
|
||||
- manager->ambient_norm_required = FALSE;
|
||||
-}
|
||||
-
|
||||
static void
|
||||
engine_settings_key_changed_cb (GSettings *settings,
|
||||
const gchar *key,
|
||||
@@ -2886,10 +2875,10 @@ iio_proxy_changed (GsdPowerManager *manager)
|
||||
{
|
||||
g_autoptr (GVariant) val_has = NULL;
|
||||
g_autoptr (GVariant) val_als = NULL;
|
||||
+ gdouble ambient_last_absolute;
|
||||
gdouble brightness;
|
||||
gdouble alpha;
|
||||
gint64 current_time;
|
||||
- gint pc;
|
||||
|
||||
/* no display hardware */
|
||||
if (!shell_brightness_has_control (manager))
|
||||
@@ -2904,17 +2893,20 @@ iio_proxy_changed (GsdPowerManager *manager)
|
||||
if (val_has == NULL || !g_variant_get_boolean (val_has))
|
||||
return;
|
||||
val_als = g_dbus_proxy_get_cached_property (manager->iio_proxy, "LightLevel");
|
||||
- if (val_als == NULL || g_variant_get_double (val_als) == 0.0)
|
||||
+ if (val_als == NULL || g_variant_get_double (val_als) <= 0.f)
|
||||
return;
|
||||
- manager->ambient_last_absolute = g_variant_get_double (val_als);
|
||||
- g_debug ("Read last absolute light level: %f", manager->ambient_last_absolute);
|
||||
+ ambient_last_absolute = g_variant_get_double (val_als);
|
||||
+ g_debug ("Read absolute light level: %f", ambient_last_absolute);
|
||||
|
||||
/* the user has asked to renormalize */
|
||||
if (manager->ambient_norm_required) {
|
||||
- g_debug ("Renormalizing light level from old light percentage: %.1f%%",
|
||||
- manager->ambient_percentage_old);
|
||||
- manager->ambient_accumulator = manager->ambient_percentage_old;
|
||||
- ch_backlight_renormalize (manager);
|
||||
+ g_debug ("Normalizing light level");
|
||||
+
|
||||
+ manager->ambient_norm_value = ambient_last_absolute * GSD_AMBIENT_NORMALIZE_CONSTANT;
|
||||
+ if (manager->ambient_accumulator <= 0.f)
|
||||
+ manager->ambient_accumulator = 100.f / GSD_AMBIENT_NORMALIZE_CONSTANT;
|
||||
+
|
||||
+ manager->ambient_norm_required = FALSE;
|
||||
}
|
||||
|
||||
/* time-weighted constant for moving average */
|
||||
@@ -2926,7 +2918,7 @@ iio_proxy_changed (GsdPowerManager *manager)
|
||||
manager->ambient_update_last_time = current_time;
|
||||
|
||||
/* calculate exponential weighted moving average */
|
||||
- brightness = manager->ambient_last_absolute * 100.f / manager->ambient_norm_value;
|
||||
+ brightness = ambient_last_absolute * 100.f / manager->ambient_norm_value;
|
||||
brightness = MIN (brightness, 100.f);
|
||||
brightness = MAX (brightness, 0.f);
|
||||
|
||||
@@ -2937,15 +2929,11 @@ iio_proxy_changed (GsdPowerManager *manager)
|
||||
if (manager->ambient_accumulator < 0.f)
|
||||
return;
|
||||
|
||||
- /* set new value */
|
||||
- g_debug ("Setting brightness from ambient %.1f%%",
|
||||
+ g_debug ("Calculated new target brightness from ambient: %.1f%%",
|
||||
manager->ambient_accumulator);
|
||||
- pc = manager->ambient_accumulator;
|
||||
-
|
||||
- shell_brightness_set_auto_target (manager, pc / 100);
|
||||
|
||||
- /* Assume setting worked. */
|
||||
- manager->ambient_percentage_old = pc;
|
||||
+ shell_brightness_set_auto_target (manager,
|
||||
+ manager->ambient_accumulator / 100.0);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -3044,8 +3032,6 @@ gsd_power_manager_start (GsdPowerManager *manager,
|
||||
manager->ambient_norm_required = TRUE;
|
||||
manager->ambient_accumulator = -1.f;
|
||||
manager->ambient_norm_value = -1.f;
|
||||
- manager->ambient_percentage_old = -1.f;
|
||||
- manager->ambient_last_absolute = -1.f;
|
||||
manager->ambient_update_last_time = 0;
|
||||
|
||||
/* Set up a delay inhibitor to be informed about suspend attempts */
|
||||
--
|
||||
2.53.0
|
||||
|
||||
|
||||
From 9e5d7fee78d98aef62b70f4b4f3ce6209bab97af Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Wick <sebastian.wick@redhat.com>
|
||||
Date: Wed, 15 Oct 2025 20:44:11 +0200
|
||||
Subject: [PATCH 6/7] power: Throttle target brightness updates to shell
|
||||
|
||||
This limits the auto brightness updates to shell to 10 times per second.
|
||||
In the future, shell should be able to smoothly animate between targets
|
||||
which should allow us to decrease the value.
|
||||
---
|
||||
plugins/power/gsd-power-manager.c | 14 ++++++++++++--
|
||||
1 file changed, 12 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/plugins/power/gsd-power-manager.c b/plugins/power/gsd-power-manager.c
|
||||
index 10dfe601..fc7d780b 100644
|
||||
--- a/plugins/power/gsd-power-manager.c
|
||||
+++ b/plugins/power/gsd-power-manager.c
|
||||
@@ -94,6 +94,11 @@
|
||||
/* Convert bandwidth to time constant. Units of constant are microseconds. */
|
||||
#define GSD_AMBIENT_TIME_CONSTANT (G_USEC_PER_SEC * 1.0f / (2.0f * G_PI * GSD_AMBIENT_BANDWIDTH_HZ))
|
||||
|
||||
+/* How often to send target brightness updates to the shell.
|
||||
+ * This is currently 10 times a second; but the shell should handle animating
|
||||
+ * for us in the future so we can drop this value to ~1 time per second. */
|
||||
+#define GSD_AMBIENT_SEND_UPDATE_INTERVAL (G_USEC_PER_SEC * 0.1f)
|
||||
+
|
||||
/* Normalize against this factor of the current absolute reading.
|
||||
* The value has been chosen arbitrarily but seems to work in practice. */
|
||||
#define GSD_AMBIENT_NORMALIZE_CONSTANT (1.5f)
|
||||
@@ -179,6 +184,7 @@ struct _GsdPowerManager
|
||||
gdouble ambient_accumulator;
|
||||
gdouble ambient_norm_value;
|
||||
gint64 ambient_update_last_time;
|
||||
+ gint64 ambient_set_last_time;
|
||||
|
||||
/* Power Profiles */
|
||||
GDBusProxy *power_profiles_proxy;
|
||||
@@ -2932,8 +2938,11 @@ iio_proxy_changed (GsdPowerManager *manager)
|
||||
g_debug ("Calculated new target brightness from ambient: %.1f%%",
|
||||
manager->ambient_accumulator);
|
||||
|
||||
- shell_brightness_set_auto_target (manager,
|
||||
- manager->ambient_accumulator / 100.0);
|
||||
+ if (current_time - manager->ambient_set_last_time >= GSD_AMBIENT_SEND_UPDATE_INTERVAL) {
|
||||
+ shell_brightness_set_auto_target (manager,
|
||||
+ manager->ambient_accumulator / 100.0);
|
||||
+ manager->ambient_set_last_time = current_time;
|
||||
+ }
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -3033,6 +3042,7 @@ gsd_power_manager_start (GsdPowerManager *manager,
|
||||
manager->ambient_accumulator = -1.f;
|
||||
manager->ambient_norm_value = -1.f;
|
||||
manager->ambient_update_last_time = 0;
|
||||
+ manager->ambient_set_last_time = 0;
|
||||
|
||||
/* Set up a delay inhibitor to be informed about suspend attempts */
|
||||
g_signal_connect (manager->logind_proxy, "g-signal",
|
||||
--
|
||||
2.53.0
|
||||
|
||||
|
||||
From 7db4b35548b7cebbdceb08e89cfcece072485a8b Mon Sep 17 00:00:00 2001
|
||||
From: Carlos Garnacho <carlosg@gnome.org>
|
||||
Date: Mon, 24 Nov 2025 17:19:45 +0100
|
||||
Subject: [PATCH 7/7] power: Trigger re-normalization on out-of-band brightness
|
||||
changes
|
||||
|
||||
When brightness is auto-managed by ALS, we still have two situations
|
||||
where the brightness changes do not come from it:
|
||||
|
||||
- User changes to the display brightness, either through keybindings,
|
||||
or the sliders in the shell menu being changed.
|
||||
- Dimming requests on user inactivity.
|
||||
|
||||
The response to both should be similar, the abrupt brightness change
|
||||
can alter ALS readings, so the brightness resulting of the change must
|
||||
be used as a new baseline for normalization.
|
||||
|
||||
Tracking of user-triggered changes is done through a new BrightnessChanged
|
||||
signal in the org.gnome.Shell.Brightness D-Bus interface. This will do
|
||||
nothing on older versions of GNOME Shell without the signal, so effectively
|
||||
brightness changes would not trigger a re-normalization there, as before.
|
||||
If the signal exists and is emitted, then it will be used.
|
||||
|
||||
(cherry picked from commit 5af04e7742701849e4f1ac04b340a3acf3a3345f)
|
||||
---
|
||||
plugins/power/gsd-power-manager.c | 27 +++++++++++++++++++++------
|
||||
1 file changed, 21 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/plugins/power/gsd-power-manager.c b/plugins/power/gsd-power-manager.c
|
||||
index fc7d780b..a7a9dc6c 100644
|
||||
--- a/plugins/power/gsd-power-manager.c
|
||||
+++ b/plugins/power/gsd-power-manager.c
|
||||
@@ -1245,19 +1245,19 @@ shell_brightness_set_dimming_cb (GObject *source_object,
|
||||
GAsyncResult *res,
|
||||
gpointer user_data)
|
||||
{
|
||||
+ GsdPowerManager *manager = user_data;
|
||||
g_autoptr (GVariant) result = NULL;
|
||||
g_autoptr (GError) error = NULL;
|
||||
- gboolean enable = !!GPOINTER_TO_UINT (user_data);
|
||||
|
||||
result = g_dbus_proxy_call_finish (G_DBUS_PROXY (source_object),
|
||||
res,
|
||||
&error);
|
||||
- if (result)
|
||||
+ if (result) {
|
||||
+ manager->ambient_norm_required = TRUE;
|
||||
return;
|
||||
+ }
|
||||
|
||||
- g_warning ("couldn't %s dimming: %s",
|
||||
- enable ? "enable" : "disable",
|
||||
- error->message);
|
||||
+ g_warning ("couldn't change dimming: %s", error->message);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -1273,7 +1273,7 @@ shell_brightness_set_dimming (GsdPowerManager *manager,
|
||||
G_DBUS_CALL_FLAGS_NONE,
|
||||
-1, NULL,
|
||||
shell_brightness_set_dimming_cb,
|
||||
- GUINT_TO_POINTER (enable));
|
||||
+ manager);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -2982,6 +2982,16 @@ iio_proxy_vanished_cb (GDBusConnection *connection,
|
||||
g_clear_object (&manager->iio_proxy);
|
||||
}
|
||||
|
||||
+static void
|
||||
+on_brightness_changed_by_user (GsdPowerManager *manager)
|
||||
+{
|
||||
+ /* Brightness was changed by the user, we need a new baseline
|
||||
+ * for the normalization being applied.
|
||||
+ */
|
||||
+ g_debug ("User brightness change detected, re-normalizing");
|
||||
+ manager->ambient_norm_required = TRUE;
|
||||
+}
|
||||
+
|
||||
gboolean
|
||||
gsd_power_manager_start (GsdPowerManager *manager,
|
||||
GError **error)
|
||||
@@ -3126,6 +3136,11 @@ gsd_power_manager_start (GsdPowerManager *manager,
|
||||
g_clear_error (error);
|
||||
}
|
||||
|
||||
+ g_signal_connect_swapped (manager->shell_brightness_proxy,
|
||||
+ "g-signal::BrightnessChanged",
|
||||
+ G_CALLBACK (on_brightness_changed_by_user),
|
||||
+ manager);
|
||||
+
|
||||
manager->devices_array = g_ptr_array_new_with_free_func (g_object_unref);
|
||||
manager->devices_notified_ht = g_hash_table_new_full (g_str_hash, g_str_equal,
|
||||
g_free, NULL);
|
||||
--
|
||||
2.53.0
|
||||
|
||||
@ -1,45 +1,77 @@
|
||||
%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
|
||||
## START: Set by rpmautospec
|
||||
## (rpmautospec version 0.6.5)
|
||||
## RPMAUTOSPEC: autorelease, autochangelog
|
||||
%define autorelease(e:s:pb:n) %{?-p:0.}%{lua:
|
||||
release_number = 10;
|
||||
base_release_number = tonumber(rpm.expand("%{?-b*}%{!?-b:1}"));
|
||||
print(release_number + base_release_number - 1);
|
||||
}%{?-e:.%{-e*}}%{?-s:.%{-s*}}%{!?-n:%{?dist}}.alma.1
|
||||
## END: Set by rpmautospec
|
||||
|
||||
%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 libgweather_version 3.9.5
|
||||
%global geoclue_version 2.3.1
|
||||
|
||||
%if %{undefined centos}
|
||||
%bcond_without subman
|
||||
%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: 3.32.0
|
||||
Release: 22%{?dist}
|
||||
Version: 47.2
|
||||
Release: %autorelease
|
||||
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
|
||||
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
|
||||
|
||||
# https://issues.redhat.com/browse/RHEL-144940
|
||||
# https://issues.redhat.com/browse/RHEL-144375
|
||||
Patch4: fix-auto-brightness.patch
|
||||
|
||||
# https://redhat.atlassian.net/browse/RHEL-169813
|
||||
Patch5: 0001-smartcard-manager-Consider-modules-with-no-slots-as-.patch
|
||||
|
||||
BuildRequires: meson >= 0.44.0
|
||||
BuildRequires: gcc
|
||||
BuildRequires: cups-devel
|
||||
BuildRequires: gettext
|
||||
BuildRequires: meson >= 0.49.0
|
||||
BuildRequires: perl-interpreter
|
||||
BuildRequires: git
|
||||
BuildRequires: systemd-rpm-macros
|
||||
BuildRequires: pkgconfig(alsa)
|
||||
BuildRequires: pkgconfig(colord) >= 1.0.2
|
||||
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-1.0) >= %{geocode_glib_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(gweather-3.0) >= %{libgweather_version}
|
||||
%if %{with subman}
|
||||
BuildRequires: pkgconfig(json-glib-1.0)
|
||||
%endif
|
||||
BuildRequires: pkgconfig(gweather4)
|
||||
BuildRequires: pkgconfig(lcms2) >= 2.2
|
||||
BuildRequires: pkgconfig(libcanberra-gtk3)
|
||||
BuildRequires: pkgconfig(libgeoclue-2.0)
|
||||
@ -48,6 +80,7 @@ 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)
|
||||
@ -56,87 +89,17 @@ BuildRequires: pkgconfig(xi)
|
||||
BuildRequires: pkgconfig(wayland-client)
|
||||
%ifnarch s390 s390x
|
||||
BuildRequires: pkgconfig(libwacom) >= 0.7
|
||||
BuildRequires: pkgconfig(xorg-wacom)
|
||||
%endif
|
||||
|
||||
Requires: colord
|
||||
Requires: colord >= %{colord_version}
|
||||
Requires: iio-sensor-proxy
|
||||
Requires: geoclue2 >= %{geoclue_version}
|
||||
Requires: geocode-glib%{?_isa} >= %{geocode_glib_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: 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
|
||||
|
||||
Patch80001: housekeeping-debounce-mount-checks.patch
|
||||
Requires: libgweather4%{?_isa}
|
||||
|
||||
%description
|
||||
A daemon to share settings from GNOME to other applications. It also
|
||||
@ -150,18 +113,19 @@ Requires: %{name}%{?_isa} = %{version}-%{release}
|
||||
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 -S git
|
||||
%autosetup -p1 -n %{name}-%{tarball_version}
|
||||
|
||||
%build
|
||||
%meson \
|
||||
%if %{with subman}
|
||||
-Dsubscription_manager=true
|
||||
%else
|
||||
-Dsubscription_manager=false
|
||||
%endif
|
||||
|
||||
|
||||
%meson
|
||||
%meson_build
|
||||
|
||||
%install
|
||||
@ -171,26 +135,21 @@ 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
|
||||
%post
|
||||
%systemd_user_post %{systemd_units}
|
||||
|
||||
%preun
|
||||
%systemd_user_preun %{systemd_units}
|
||||
|
||||
%files -f %{name}.lang
|
||||
%license COPYING
|
||||
%doc AUTHORS NEWS
|
||||
%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-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
|
||||
@ -202,16 +161,9 @@ mkdir $RPM_BUILD_ROOT%{_libdir}/gnome-settings-daemon-3.0/gtk-modules
|
||||
%{_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
|
||||
@ -229,13 +181,15 @@ mkdir $RPM_BUILD_ROOT%{_libdir}/gnome-settings-daemon-3.0/gtk-modules
|
||||
%{_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-led-helper
|
||||
%{_libexecdir}/gsd-wacom-oled-helper
|
||||
%{_datadir}/polkit-1/actions/org.gnome.settings-daemon.plugins.wacom.policy
|
||||
%endif
|
||||
@ -255,130 +209,349 @@ mkdir $RPM_BUILD_ROOT%{_libdir}/gnome-settings-daemon-3.0/gtk-modules
|
||||
%{_sysconfdir}/xdg/autostart/org.gnome.SettingsDaemon.Sharing.desktop
|
||||
%{_datadir}/glib-2.0/schemas/org.gnome.settings-daemon.plugins.sharing.gschema.xml
|
||||
|
||||
%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
|
||||
%{_sysconfdir}/xdg/autostart/org.gnome.SettingsDaemon.Wwan.desktop
|
||||
%{_libexecdir}/gsd-wwan
|
||||
%{_datadir}/glib-2.0/schemas/org.gnome.settings-daemon.plugins.wwan.gschema.xml
|
||||
|
||||
%{_libdir}/gnome-settings-daemon-3.0/libgsd.so
|
||||
%dir %{_libdir}/gnome-settings-daemon-%{major_version}
|
||||
%{_libdir}/gnome-settings-daemon-%{major_version}/libgsd.so
|
||||
|
||||
/usr/lib/udev/rules.d/*.rules
|
||||
%{_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-3.0
|
||||
%{_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
|
||||
* Fri Jan 09 2026 Felupe Borges <feborges@redhat.com> - 3.32.0-22
|
||||
- Debounce mount checks in Low Disk Space monitoring
|
||||
Resolves: RHEL-127805
|
||||
* Wed May 20 2026 Andrew Lukoshko <alukoshko@almalinux.org> - 47.2-10.alma.1
|
||||
- Disable subman plugin
|
||||
|
||||
* Mon Nov 03 2025 Felipe Borges <feborges@redhat.com> - 3.32.0-21
|
||||
- Add icon to subman notifications
|
||||
Resolves: RHEL-5074
|
||||
## START: Generated by rpmautospec
|
||||
* Tue Apr 21 2026 Joan Torres Lopez <joantolo@redhat.com> - 47.2-10
|
||||
- Consider special modules for smartcard detection
|
||||
|
||||
* 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
|
||||
* Wed Feb 18 2026 Florian Müllner <fmuellner@redhat.com> - 47.2-9
|
||||
- Backport more auto-brightness related fixes
|
||||
|
||||
* 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 Feb 10 2026 Florian Müllner <fmuellner@redhat.com> - 47.2-8
|
||||
- Fix auto-brightness with gnome-shell 49.x
|
||||
|
||||
* Tue Jan 24 2023 Felipe Borges <feborges@redhat.com> - 3.32.0-18
|
||||
- Prevent automatic logout warning in greeter sessions
|
||||
- Resolves: #2018606
|
||||
* Thu Nov 20 2025 Florian Müllner <fmuellner@redhat.com> - 47.2-7
|
||||
- Use gnome-shell interface for brightness control
|
||||
|
||||
* 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
|
||||
* Wed Nov 12 2025 Felipe Borges <felipeborges@gnome.org> - 47.2-6
|
||||
- subman: Delay startup notification by 30 minutes
|
||||
|
||||
* Fri Sep 10 2021 Kalev Lember <klember@redhat.com> - 3.32.0-16
|
||||
- Update pt_BR translations
|
||||
- Resolves: #2003069
|
||||
* Fri Feb 07 2025 Felipe Borges <feborges@redhat.com> - 47.2-5
|
||||
- Add subscription manager plugin
|
||||
|
||||
* Fri Aug 06 2021 Carlos Garnacho <cgarnach@redhat.com> - 3.32.0-15
|
||||
- Keep auto-logout working inside VMs
|
||||
Resolves: #1904139
|
||||
* Mon Feb 03 2025 Felipe Borges <feborges@redhat.com> - 47.2-4
|
||||
- Add g-s-d-server-defaults subpackage for "Server with GUI" overrides
|
||||
|
||||
* Mon Mar 01 2021 Kalev Lember <klember@redhat.com> - 3.32.0-14
|
||||
- Update fr, ja, zh_CN translations
|
||||
- Resolves: #1876291
|
||||
* Fri Jan 31 2025 Felipe Borges <feborges@redhat.com> - 47.2-3
|
||||
- Revert "Add downstream default suspend setting for servers"
|
||||
|
||||
* Thu Jan 21 2021 Ray Strode <rstrode@redhat.com> - 3.32.0-13
|
||||
- Add back subscription-manager plugin
|
||||
Related: #1870837
|
||||
* Mon Jan 20 2025 Felipe Borges <feborges@redhat.com> - 47.2-2
|
||||
- Disambiguate mount points with same name on "Low Disk Space"
|
||||
notifications
|
||||
|
||||
* Tue Jan 05 2021 Jonas Ådahl <jadahl@redhat.com> - 3.32.0-12
|
||||
- Handle org.gnome.Shell.Screencast Stopped signal
|
||||
Related: #1705392
|
||||
* Fri Jan 17 2025 Felipe Borges <feborges@redhat.com> - 47.2-1
|
||||
- Update to 47.2
|
||||
|
||||
* Wed Sep 02 2020 Ray Strode <rstrode@redhat.com> - 3.32.0-11
|
||||
- Remove subman plugin for now
|
||||
Resolves: #1872457
|
||||
* Tue Oct 29 2024 Troy Dawson <tdawson@redhat.com> - 46.0-3
|
||||
- Bump release for October 2024 mass rebuild:
|
||||
|
||||
* Thu Aug 13 2020 Carl George <carl@redhat.com> - 3.32.0-10
|
||||
- Disable subman plugin on CentOS
|
||||
Resolves: #1827030
|
||||
* Thu Aug 08 2024 Felipe Borges <feborges@redhat.com> - 46.0-2
|
||||
- Add downstream default suspend setting for servers
|
||||
|
||||
* Fri Nov 22 2019 Benjamin Otte <otte@redhat.com> - 3.32.0-9
|
||||
- Update gsettings-deskto-schemas dependency for new setting
|
||||
Resolves: #1775683, #1723462
|
||||
* Tue Jul 02 2024 Felipe Borges <felipeborges@gnome.org> - 46.0-1
|
||||
- Update to 46.0
|
||||
|
||||
* Thu Nov 21 2019 Benjamin Otte <otte@redhat.com> - 3.32.0-8
|
||||
- Add upstream setting for overlay scrolling
|
||||
Resolves: #1723462
|
||||
* Mon Jun 24 2024 Troy Dawson <tdawson@redhat.com> - 46~alpha-3
|
||||
- Bump release for June 2024 mass rebuild
|
||||
|
||||
* Mon Nov 18 2019 Kalev Lember <klember@redhat.com> - 3.32.0-7
|
||||
- Add a new plugin to provide system subscription information
|
||||
- Resolves: #1720249
|
||||
* Tue Apr 09 2024 Tomas Pelka <tpelka@redhat.com> - 46~alpha-2
|
||||
- enable gating
|
||||
|
||||
* 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
|
||||
* Thu Jan 25 2024 Nieves Montero <nmontero@redhat.com> - 46~alpha-1
|
||||
- Update to 46~alpha
|
||||
|
||||
* Mon Nov 04 2019 Marek Kasik <mkasik@redhat.com> - 3.32.0-5
|
||||
- Cancel cancellable when stopping smartcard plugin to avoid crash
|
||||
- Resolves: #1742710
|
||||
* Wed Jan 24 2024 Fedora Release Engineering <releng@fedoraproject.org> - 45.1-4
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
|
||||
|
||||
* 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
|
||||
* Wed Jan 24 2024 Nieves Montero <nmontero@redhat.com> - 45.1-3
|
||||
- Update to 46~alpha
|
||||
|
||||
* Mon Jun 17 2019 Richard Hughes <rhughes@redhat.com> - 3.32.0-3
|
||||
- Add a new plugin to provide system subscription information
|
||||
- Resolves: #1720249
|
||||
* Fri Jan 19 2024 Fedora Release Engineering <releng@fedoraproject.org> - 45.1-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
|
||||
|
||||
* Mon Jun 10 2019 Ray Strode <rstrode@redhat.com> - 3.32.0-2
|
||||
- Add dropped patches
|
||||
Related: #1674382
|
||||
* Wed Jan 03 2024 Kalev Lember <klember@redhat.com> - 45.1-1
|
||||
- Update to 45.1
|
||||
|
||||
* Thu May 23 2019 Florian Müllner <fmuellner@redhat.com> - 3.32.0-1
|
||||
* Thu Dec 07 2023 Yaakov Selkowitz <yselkowi@redhat.com> - 45.0-2
|
||||
- Drop unused xorg-wacom dependency
|
||||
|
||||
* Tue Sep 19 2023 Kalev Lember <klember@redhat.com> - 45.0-1
|
||||
- Update to 45.0
|
||||
|
||||
* Wed Sep 06 2023 Kalev Lember <klember@redhat.com> - 45~rc-1
|
||||
- Update to 45.rc
|
||||
|
||||
* Fri Aug 11 2023 Kalev Lember <klember@redhat.com> - 45~beta-1
|
||||
- Update to 45.beta
|
||||
|
||||
* Wed Jul 19 2023 Fedora Release Engineering <releng@fedoraproject.org> - 45~alpha-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
|
||||
|
||||
* Tue Jul 04 2023 Kalev Lember <klember@redhat.com> - 45~alpha-1
|
||||
- Update to 45.alpha
|
||||
|
||||
* Mon Jun 19 2023 Kalev Lember <klember@redhat.com> - 44.1-2
|
||||
- Rebuilt for gcr soname bump
|
||||
|
||||
* Wed Apr 19 2023 David King <amigadave@amigadave.com> - 44.1-1
|
||||
- Update to 44.1
|
||||
|
||||
* Wed Mar 22 2023 Adam Williamson <awilliam@redhat.com> - 44.0-2
|
||||
- Backport MR #325 to avoid auto-suspend on VMs (#2180047)
|
||||
|
||||
* Mon Mar 20 2023 David King <amigadave@amigadave.com> - 44.0-1
|
||||
- Update to 44.0
|
||||
|
||||
* Mon Mar 06 2023 David King <amigadave@amigadave.com> - 44~rc-1
|
||||
- Update to 44.rc
|
||||
|
||||
* Wed Feb 22 2023 Michael Catanzaro <mcatanzaro@redhat.com> - 44~beta-4
|
||||
- Fix file list
|
||||
|
||||
* Wed Feb 22 2023 Michael Catanzaro <mcatanzaro@redhat.com> - 44~beta-3
|
||||
- Remove power settings override
|
||||
|
||||
* Wed Feb 15 2023 David King <amigadave@amigadave.com> - 44~beta-1
|
||||
- Update to 44.beta
|
||||
|
||||
* Thu Jan 19 2023 Fedora Release Engineering <releng@fedoraproject.org> - 43.0-3
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
|
||||
|
||||
* Fri Sep 30 2022 Kalev Lember <klember@redhat.com> - 43.0-2
|
||||
- Backport upstream patch to default to ibus for X11 clients (#2128423)
|
||||
|
||||
* Tue Sep 20 2022 Kalev Lember <klember@redhat.com> - 43.0-1
|
||||
- Update to 43.0
|
||||
|
||||
* Tue Sep 06 2022 Kalev Lember <klember@redhat.com> - 43~rc-1
|
||||
- Update to 43.rc
|
||||
|
||||
* Wed Aug 10 2022 Kalev Lember <klember@redhat.com> - 43~beta-1
|
||||
- Update to 43.beta
|
||||
|
||||
* Thu Jul 21 2022 Fedora Release Engineering <releng@fedoraproject.org> - 43~alpha-4
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
|
||||
|
||||
* Tue Jul 19 2022 Milan Crha <mcrha@redhat.com> - 43~alpha-3
|
||||
- Build against gcr-4 due to other depencencies use it
|
||||
|
||||
* Mon Jul 18 2022 Kalev Lember <klember@redhat.com> - 43~alpha-2
|
||||
- Build against geocode-glib2 for libsoup3 support
|
||||
|
||||
* Fri Jul 15 2022 Kalev Lember <klember@redhat.com> - 43~alpha-1
|
||||
- Update to 43.alpha
|
||||
|
||||
* Thu Jun 16 2022 David King <amigadave@amigadave.com> - 42.2-1
|
||||
- Update to 42.2
|
||||
|
||||
* Sun Mar 20 2022 David King <amigadave@amigadave.com> - 42.1-1
|
||||
- Update to 42.1
|
||||
|
||||
* Tue Mar 08 2022 David King <amigadave@amigadave.com> - 42~rc-1
|
||||
- Update to 42.rc
|
||||
|
||||
* Mon Feb 14 2022 David King <amigadave@amigadave.com> - 42~beta-1
|
||||
- Update to 42.beta
|
||||
|
||||
* Thu Jan 20 2022 Fedora Release Engineering <releng@fedoraproject.org> - 42~alpha-3
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
|
||||
|
||||
* Tue Jan 11 2022 Stephen Gallagher <sgallagh@redhat.com> - 42~alpha-2
|
||||
- Lessen dependency on gsettings-desktop-schemas
|
||||
|
||||
* 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
|
||||
@ -1526,3 +1699,4 @@ 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
|
||||
|
||||
## END: Generated by rpmautospec
|
||||
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
|
||||
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