From 6415083d3913e8f0da43161fb8c493ff3bfdfcee Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Fri, 14 Mar 2014 11:04:49 -0400 Subject: [PATCH 1/2] systemd: clear terminal after starting This helps with flicker when the X server shuts down. --- data/gdm.service.in | 1 + 1 file changed, 1 insertion(+) diff --git a/data/gdm.service.in b/data/gdm.service.in index 9090cf4..87785b8 100644 --- a/data/gdm.service.in +++ b/data/gdm.service.in @@ -1,32 +1,33 @@ [Unit] Description=GNOME Display Manager # replaces the getty Conflicts=getty@tty@GDM_INITIAL_VT@.service After=getty@tty@GDM_INITIAL_VT@.service # replaces plymouth-quit since it quits plymouth on its own Conflicts=plymouth-quit.service After=plymouth-quit.service # Needs all the dependencies of the services it's replacing # pulled from getty@.service and plymouth-quit.service # (except for plymouth-quit-wait.service since it waits until # plymouth is quit, which we do) After=rc-local.service plymouth-start.service systemd-user-sessions.service # GDM takes responsibility for stopping plymouth, so if it fails # for any reason, make sure plymouth still stops OnFailure=plymouth-quit.service [Service] ExecStart=@sbindir@/gdm +ExecStartPost=-/bin/bash -c "TERM=linux /usr/bin/clear > /dev/tty1" Restart=always IgnoreSIGPIPE=no BusName=org.gnome.DisplayManager StandardOutput=syslog StandardError=inherit EnvironmentFile=-@LANG_CONFIG_FILE@ [Install] Alias=display-manager.service -- 2.3.7 From 729d74412cee774c5ccd2b8a7d82eda6e3fc65b2 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Mon, 30 Mar 2015 21:53:33 -0400 Subject: [PATCH 2/2] systemd: change to KillMode=mixed By default systemd will kill the entire control-group in one fell swoop. The problem is, things don't get shutdown in the right order then, and there's a race where GDM will begin restarting X servers as soon as they're killed. This commit tells systemd to just kill the main GDM process, and let it handle killing all its children on its own. https://bugzilla.gnome.org/show_bug.cgi?id=747088 --- data/gdm.service.in | 1 + 1 file changed, 1 insertion(+) diff --git a/data/gdm.service.in b/data/gdm.service.in index 87785b8..47cdcf2 100644 --- a/data/gdm.service.in +++ b/data/gdm.service.in @@ -1,33 +1,34 @@ [Unit] Description=GNOME Display Manager # replaces the getty Conflicts=getty@tty@GDM_INITIAL_VT@.service After=getty@tty@GDM_INITIAL_VT@.service # replaces plymouth-quit since it quits plymouth on its own Conflicts=plymouth-quit.service After=plymouth-quit.service # Needs all the dependencies of the services it's replacing # pulled from getty@.service and plymouth-quit.service # (except for plymouth-quit-wait.service since it waits until # plymouth is quit, which we do) After=rc-local.service plymouth-start.service systemd-user-sessions.service # GDM takes responsibility for stopping plymouth, so if it fails # for any reason, make sure plymouth still stops OnFailure=plymouth-quit.service [Service] ExecStart=@sbindir@/gdm ExecStartPost=-/bin/bash -c "TERM=linux /usr/bin/clear > /dev/tty1" +KillMode=mixed Restart=always IgnoreSIGPIPE=no BusName=org.gnome.DisplayManager StandardOutput=syslog StandardError=inherit EnvironmentFile=-@LANG_CONFIG_FILE@ [Install] Alias=display-manager.service -- 2.3.7