gnome-settings-daemon/power-server-sleep-type-default.patch
Felipe Borges b5d72f0220 Update to 47.2
Related: RHEL-74269
2025-01-17 12:50:03 +01:00

106 lines
4.7 KiB
Diff

From 9ea243434ed471df0563dae6f3f5148c7a095e36 Mon Sep 17 00:00:00 2001
From: Felipe Borges <felipeborges@gnome.org>
Date: Thu, 16 Jan 2025 14:44:39 +0100
Subject: [PATCH] power: Add "sleep-inactive-ac-type-server" as a side setting
for servers
This avoids servers having the defaults from other chassis types.
A "server" is determined by hostnamed chassis-type server.
---
...ttings-daemon.plugins.power.gschema.xml.in | 5 +++++
plugins/power/gsd-power-manager.c | 19 ++++++++++++++-----
2 files changed, 19 insertions(+), 5 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 051bcf70..438cd62b 100644
--- a/data/org.gnome.settings-daemon.plugins.power.gschema.xml.in
+++ b/data/org.gnome.settings-daemon.plugins.power.gschema.xml.in
@@ -21,6 +21,11 @@
<summary>Whether to hibernate, suspend or do nothing when inactive</summary>
<description>The type of sleeping that should be performed when the computer is inactive.</description>
</key>
+ <key name="sleep-inactive-ac-type-server" enum="org.gnome.settings-daemon.GsdPowerActionType">
+ <default>'nothing'</default>
+ <summary>Whether to hibernate, suspend or do nothing when inactive</summary>
+ <description>The type of sleeping that should be performed when a server is inactive. A server is defined by hostnamed chassis-type.</description>
+ </key>
<key name="sleep-inactive-battery-timeout" type="i">
<default>900</default>
<summary>Sleep timeout computer when on battery</summary>
diff --git a/plugins/power/gsd-power-manager.c b/plugins/power/gsd-power-manager.c
index 449f283a..8da0dca5 100644
--- a/plugins/power/gsd-power-manager.c
+++ b/plugins/power/gsd-power-manager.c
@@ -226,6 +226,9 @@ struct _GsdPowerManager
/* Screens */
GsdDisplayConfig *display_config;
+
+ /* hostnamed chassis-type */
+ gchar *chassis_type;
};
enum {
@@ -1913,6 +1916,7 @@ idle_configure (GsdPowerManager *manager)
guint timeout_sleep;
guint timeout_dim;
gboolean on_battery;
+ gboolean on_server = FALSE;
if (!idle_is_session_inhibited (manager,
GSM_INHIBITOR_FLAG_IDLE,
@@ -1959,8 +1963,11 @@ idle_configure (GsdPowerManager *manager)
/* only do the sleep timeout when the session is idle
* and we aren't inhibited from sleeping (or logging out, etc.) */
on_battery = up_client_get_on_battery (manager->up_client);
- action_type = g_settings_get_enum (manager->settings, on_battery ?
- "sleep-inactive-battery-type" : "sleep-inactive-ac-type");
+ on_server = g_strcmp0 (manager->chassis_type, "server") == 0;
+ action_type = g_settings_get_enum (manager->settings,
+ /* Read from "sleep-inactive-ac-type-server when hostnamed chassis-type = "server" */
+ on_server ? "sleep-inactive-ac-type-server" :
+ on_battery ? "sleep-inactive-battery-type" : "sleep-inactive-ac-type");
timeout_sleep = 0;
if (!is_action_inhibited (manager, action_type)) {
gint timeout_sleep_;
@@ -2927,7 +2934,6 @@ gboolean
gsd_power_manager_start (GsdPowerManager *manager,
GError **error)
{
- g_autofree char *chassis_type = NULL;
g_debug ("Starting power manager");
gnome_settings_profile_start (NULL);
@@ -2960,8 +2966,7 @@ gsd_power_manager_start (GsdPowerManager *manager,
return FALSE;
}
- chassis_type = gnome_settings_get_chassis_type ();
- if (g_strcmp0 (chassis_type, "tablet") == 0 || g_strcmp0 (chassis_type, "handset") == 0) {
+ if (g_strcmp0 (manager->chassis_type, "tablet") == 0 || g_strcmp0 (manager->chassis_type, "handset") == 0) {
manager->show_sleep_warnings = FALSE;
} else {
manager->show_sleep_warnings = TRUE;
@@ -3170,6 +3175,8 @@ gsd_power_manager_stop (GsdPowerManager *manager)
g_source_remove (manager->xscreensaver_watchdog_timer_id);
manager->xscreensaver_watchdog_timer_id = 0;
}
+
+ g_clear_pointer (&manager->chassis_type, g_free);
}
static void
@@ -3178,6 +3185,8 @@ gsd_power_manager_init (GsdPowerManager *manager)
manager->inhibit_lid_switch_fd = -1;
manager->inhibit_suspend_fd = -1;
manager->cancellable = g_cancellable_new ();
+
+ manager->chassis_type = gnome_settings_get_chassis_type ();
}
/* returns new level */
--
2.46.2