|
|
ee5bfe |
From 15be30033e5b24a8c84a4d4338da0e8a3930303a Mon Sep 17 00:00:00 2001
|
|
|
ee5bfe |
From: Hans de Goede <hdegoede@redhat.com>
|
|
|
ee5bfe |
Date: Tue, 14 Aug 2018 14:49:59 +0200
|
|
|
ee5bfe |
Subject: [PATCH] Fedora: Set grub boot-flags on shutdown / reboot
|
|
|
ee5bfe |
|
|
|
ee5bfe |
Fedora's grub will automatically hide the boot-menu if the previous
|
|
|
ee5bfe |
boot has set the boot_success flag in grub's environment. This happens
|
|
|
ee5bfe |
automatically 30 seconds after login.
|
|
|
ee5bfe |
|
|
|
ee5bfe |
But if the user shuts down or reboots from the system-menu before then
|
|
|
ee5bfe |
(e.g. directly from gdm) then the boot_success flag gets not set. If
|
|
|
ee5bfe |
a reboot / shutdown is initiated through gnome-session then the user
|
|
|
ee5bfe |
is successfully interacting with the system, so set the boot_success
|
|
|
ee5bfe |
flag from gnome_session for this case to fix reboot from gdm leading to
|
|
|
ee5bfe |
the boot-menu not being hidden.
|
|
|
ee5bfe |
---
|
|
|
ee5bfe |
gnome-session/gsm-manager.c | 12 ++++++++++++
|
|
|
ee5bfe |
1 file changed, 12 insertions(+)
|
|
|
ee5bfe |
|
|
|
ee5bfe |
diff --git a/gnome-session/gsm-manager.c b/gnome-session/gsm-manager.c
|
|
|
ee5bfe |
index 3cf421cd..924767af 100644
|
|
|
ee5bfe |
--- a/gnome-session/gsm-manager.c
|
|
|
ee5bfe |
+++ b/gnome-session/gsm-manager.c
|
|
|
ee5bfe |
@@ -3629,51 +3629,63 @@ on_shutdown_prepared (GsmSystem *system,
|
|
|
ee5bfe |
gboolean success,
|
|
|
ee5bfe |
GsmManager *manager)
|
|
|
ee5bfe |
{
|
|
|
ee5bfe |
g_debug ("GsmManager: on_shutdown_prepared, success: %d", success);
|
|
|
ee5bfe |
g_signal_handlers_disconnect_by_func (system, on_shutdown_prepared, manager);
|
|
|
ee5bfe |
|
|
|
ee5bfe |
if (success) {
|
|
|
ee5bfe |
/* move to end-session phase */
|
|
|
ee5bfe |
g_assert (manager->priv->phase == GSM_MANAGER_PHASE_QUERY_END_SESSION);
|
|
|
ee5bfe |
manager->priv->phase++;
|
|
|
ee5bfe |
start_phase (manager);
|
|
|
ee5bfe |
} else {
|
|
|
ee5bfe |
disconnect_shell_dialog_signals (manager);
|
|
|
ee5bfe |
gsm_shell_close_end_session_dialog (manager->priv->shell);
|
|
|
ee5bfe |
/* back to running phase */
|
|
|
ee5bfe |
cancel_end_session (manager);
|
|
|
ee5bfe |
}
|
|
|
ee5bfe |
}
|
|
|
ee5bfe |
|
|
|
ee5bfe |
static gboolean
|
|
|
ee5bfe |
do_query_end_session_exit (GsmManager *manager)
|
|
|
ee5bfe |
{
|
|
|
ee5bfe |
gboolean reboot = FALSE;
|
|
|
ee5bfe |
gboolean shutdown = FALSE;
|
|
|
ee5bfe |
|
|
|
ee5bfe |
switch (manager->priv->logout_type) {
|
|
|
ee5bfe |
case GSM_MANAGER_LOGOUT_LOGOUT:
|
|
|
ee5bfe |
break;
|
|
|
ee5bfe |
case GSM_MANAGER_LOGOUT_REBOOT:
|
|
|
ee5bfe |
case GSM_MANAGER_LOGOUT_REBOOT_INTERACT:
|
|
|
ee5bfe |
+ /*
|
|
|
ee5bfe |
+ * Fedora specific patch to make sure the boot-menu does not
|
|
|
ee5bfe |
+ * show when it is configured to auto-hide and a reboot is
|
|
|
ee5bfe |
+ * initiated directly from gdm.
|
|
|
ee5bfe |
+ */
|
|
|
ee5bfe |
+ system("/usr/sbin/grub2-set-bootflag boot_success");
|
|
|
ee5bfe |
reboot = TRUE;
|
|
|
ee5bfe |
break;
|
|
|
ee5bfe |
case GSM_MANAGER_LOGOUT_SHUTDOWN:
|
|
|
ee5bfe |
case GSM_MANAGER_LOGOUT_SHUTDOWN_INTERACT:
|
|
|
ee5bfe |
+ /*
|
|
|
ee5bfe |
+ * Fedora specific patch to make sure the boot-menu does not
|
|
|
ee5bfe |
+ * show when it is configured to auto-hide and a shutdown is
|
|
|
ee5bfe |
+ * initiated directly from gdm.
|
|
|
ee5bfe |
+ */
|
|
|
ee5bfe |
+ system("/usr/sbin/grub2-set-bootflag boot_success");
|
|
|
ee5bfe |
shutdown = TRUE;
|
|
|
ee5bfe |
break;
|
|
|
ee5bfe |
default:
|
|
|
ee5bfe |
g_warning ("Unexpected logout type %d in do_query_end_session_exit()",
|
|
|
ee5bfe |
manager->priv->logout_type);
|
|
|
ee5bfe |
break;
|
|
|
ee5bfe |
}
|
|
|
ee5bfe |
|
|
|
ee5bfe |
if (reboot || shutdown) {
|
|
|
ee5bfe |
g_signal_connect (manager->priv->system, "shutdown-prepared",
|
|
|
ee5bfe |
G_CALLBACK (on_shutdown_prepared), manager);
|
|
|
ee5bfe |
gsm_system_prepare_shutdown (manager->priv->system, reboot);
|
|
|
ee5bfe |
return FALSE; /* don't leave query end session yet */
|
|
|
ee5bfe |
}
|
|
|
ee5bfe |
|
|
|
ee5bfe |
return TRUE; /* go to end session phase */
|
|
|
ee5bfe |
}
|
|
|
ee5bfe |
--
|
|
|
ee5bfe |
2.31.1
|
|
|
ee5bfe |
|