guibuilder_pel7x64builder0
6 years ago
14 changed files with 4490 additions and 0 deletions
@ -0,0 +1,210 @@ |
|||||||
|
From d4f6b620c4c1b56e7e6421cc470eb711d7faa0eb Mon Sep 17 00:00:00 2001 |
||||||
|
From: Rui Matos <tiagomatos@gmail.com> |
||||||
|
Date: Mon, 23 Jan 2017 20:19:51 +0100 |
||||||
|
Subject: [PATCH] Honor initial setup being disabled by distro installer |
||||||
|
|
||||||
|
Sysadmins might want to disable any kind of initial setup for their |
||||||
|
users, perhaps because they pre-configure their environments. We |
||||||
|
already provide a configuration file option for this but distro |
||||||
|
installers might have their own way of requesting this. |
||||||
|
|
||||||
|
At least the anaconda installer provides an option to skip any kind |
||||||
|
post-install setup tools so, for now we're only adding support for |
||||||
|
that but more might be added in the future. |
||||||
|
|
||||||
|
https://bugzilla.gnome.org/show_bug.cgi?id=777708 |
||||||
|
--- |
||||||
|
daemon/Makefile.am | 1 + |
||||||
|
daemon/gdm-display.c | 29 +++++++++++++++++++++++++++++ |
||||||
|
2 files changed, 30 insertions(+) |
||||||
|
|
||||||
|
diff --git a/daemon/Makefile.am b/daemon/Makefile.am |
||||||
|
index 5e9eb5e0..3b1b1512 100644 |
||||||
|
--- a/daemon/Makefile.am |
||||||
|
+++ b/daemon/Makefile.am |
||||||
|
@@ -1,47 +1,48 @@ |
||||||
|
NULL = |
||||||
|
|
||||||
|
AM_CPPFLAGS = \ |
||||||
|
-I. \ |
||||||
|
-I.. \ |
||||||
|
-I$(top_srcdir)/common \ |
||||||
|
-I$(top_srcdir)/pam-extensions \ |
||||||
|
-I$(top_builddir)/common \ |
||||||
|
-DBINDIR=\"$(bindir)\" \ |
||||||
|
-DDATADIR=\"$(datadir)\" \ |
||||||
|
-DDMCONFDIR=\"$(dmconfdir)\" \ |
||||||
|
-DGDMCONFDIR=\"$(gdmconfdir)\" \ |
||||||
|
-DLIBDIR=\"$(libdir)\" \ |
||||||
|
-DLIBEXECDIR=\"$(libexecdir)\" \ |
||||||
|
-DLOCALSTATEDIR=\"$(localstatedir)\" \ |
||||||
|
-DLOGDIR=\"$(logdir)\" \ |
||||||
|
-DSBINDIR=\"$(sbindir)\" \ |
||||||
|
+ -DSYSCONFDIR=\"$(sysconfdir)\" \ |
||||||
|
-DGNOMELOCALEDIR=\""$(datadir)/locale"\" \ |
||||||
|
-DGDM_RUN_DIR=\"$(GDM_RUN_DIR)\" \ |
||||||
|
-DGDM_XAUTH_DIR=\"$(GDM_XAUTH_DIR)\" \ |
||||||
|
-DGDM_SCREENSHOT_DIR=\"$(GDM_SCREENSHOT_DIR)\" \ |
||||||
|
-DGDM_CACHE_DIR=\""$(localstatedir)/cache/gdm"\" \ |
||||||
|
-DGDM_SESSION_DEFAULT_PATH=\"$(GDM_SESSION_DEFAULT_PATH)\" \ |
||||||
|
$(DISABLE_DEPRECATED_CFLAGS) \ |
||||||
|
$(DAEMON_CFLAGS) \ |
||||||
|
$(XLIB_CFLAGS) \ |
||||||
|
$(WARN_CFLAGS) \ |
||||||
|
$(DEBUG_CFLAGS) \ |
||||||
|
$(SYSTEMD_CFLAGS) \ |
||||||
|
$(JOURNALD_CFLAGS) \ |
||||||
|
$(LIBSELINUX_CFLAGS) \ |
||||||
|
-DLANG_CONFIG_FILE=\"$(LANG_CONFIG_FILE)\" \ |
||||||
|
$(NULL) |
||||||
|
|
||||||
|
BUILT_SOURCES = \ |
||||||
|
gdm-display-glue.h \ |
||||||
|
gdm-manager-glue.h \ |
||||||
|
gdm-local-display-glue.h \ |
||||||
|
gdm-local-display-factory-glue.h \ |
||||||
|
gdm-session-glue.h \ |
||||||
|
gdm-session-worker-glue.h \ |
||||||
|
gdm-session-enum-types.h \ |
||||||
|
$(NULL) |
||||||
|
|
||||||
|
gdm-session-enum-types.h: gdm-session-enum-types.h.in gdm-session.h |
||||||
|
$(AM_V_GEN) glib-mkenums --template $^ > $@ |
||||||
|
|
||||||
|
diff --git a/daemon/gdm-display.c b/daemon/gdm-display.c |
||||||
|
index 6a3984a9..30723da0 100644 |
||||||
|
--- a/daemon/gdm-display.c |
||||||
|
+++ b/daemon/gdm-display.c |
||||||
|
@@ -1522,100 +1522,129 @@ kernel_cmdline_initial_setup_force_state (gboolean *force_state) |
||||||
|
GError *error = NULL; |
||||||
|
gchar *contents = NULL; |
||||||
|
gchar *setup_argument = NULL; |
||||||
|
|
||||||
|
g_return_val_if_fail (force_state != NULL, FALSE); |
||||||
|
|
||||||
|
if (!g_file_get_contents ("/proc/cmdline", &contents, NULL, &error)) { |
||||||
|
g_debug ("GdmDisplay: Could not check kernel parameters, not forcing initial setup: %s", |
||||||
|
error->message); |
||||||
|
g_clear_error (&error); |
||||||
|
return FALSE; |
||||||
|
} |
||||||
|
|
||||||
|
g_debug ("GdmDisplay: Checking kernel command buffer %s", contents); |
||||||
|
|
||||||
|
if (!kernel_cmdline_initial_setup_argument (contents, &setup_argument, &error)) { |
||||||
|
g_debug ("GdmDisplay: Failed to read kernel commandline: %s", error->message); |
||||||
|
g_clear_pointer (&contents, g_free); |
||||||
|
return FALSE; |
||||||
|
} |
||||||
|
|
||||||
|
g_clear_pointer (&contents, g_free); |
||||||
|
|
||||||
|
/* Poor-man's check for truthy or falsey values */ |
||||||
|
*force_state = setup_argument[0] == '1'; |
||||||
|
|
||||||
|
g_free (setup_argument); |
||||||
|
return TRUE; |
||||||
|
} |
||||||
|
|
||||||
|
+static gboolean |
||||||
|
+initial_setup_disabled_by_anaconda (void) |
||||||
|
+{ |
||||||
|
+ GKeyFile *key_file; |
||||||
|
+ const gchar *file_name = SYSCONFDIR "/sysconfig/anaconda"; |
||||||
|
+ gboolean disabled = FALSE; |
||||||
|
+ GError *error = NULL; |
||||||
|
+ |
||||||
|
+ key_file = g_key_file_new (); |
||||||
|
+ if (!g_key_file_load_from_file (key_file, file_name, G_KEY_FILE_NONE, &error)) { |
||||||
|
+ if (!g_error_matches (error, G_FILE_ERROR, G_FILE_ERROR_NOENT) && |
||||||
|
+ !g_error_matches (error, G_KEY_FILE_ERROR, G_KEY_FILE_ERROR_NOT_FOUND)) { |
||||||
|
+ g_warning ("Could not read %s: %s", file_name, error->message); |
||||||
|
+ } |
||||||
|
+ g_error_free (error); |
||||||
|
+ goto out; |
||||||
|
+ } |
||||||
|
+ |
||||||
|
+ disabled = g_key_file_get_boolean (key_file, "General", |
||||||
|
+ "post_install_tools_disabled", NULL); |
||||||
|
+ out: |
||||||
|
+ g_key_file_unref (key_file); |
||||||
|
+ return disabled; |
||||||
|
+} |
||||||
|
+ |
||||||
|
static gboolean |
||||||
|
wants_initial_setup (GdmDisplay *self) |
||||||
|
{ |
||||||
|
gboolean enabled = FALSE; |
||||||
|
gboolean forced = FALSE; |
||||||
|
|
||||||
|
if (already_done_initial_setup_on_this_boot ()) { |
||||||
|
return FALSE; |
||||||
|
} |
||||||
|
|
||||||
|
if (kernel_cmdline_initial_setup_force_state (&forced)) { |
||||||
|
if (forced) { |
||||||
|
g_debug ("GdmDisplay: Forcing gnome-initial-setup"); |
||||||
|
return TRUE; |
||||||
|
} |
||||||
|
|
||||||
|
g_debug ("GdmDisplay: Forceing no gnome-initial-setup"); |
||||||
|
return FALSE; |
||||||
|
} |
||||||
|
|
||||||
|
/* don't run initial-setup on remote displays |
||||||
|
*/ |
||||||
|
if (!self->priv->is_local) { |
||||||
|
return FALSE; |
||||||
|
} |
||||||
|
|
||||||
|
/* don't run if the system has existing users */ |
||||||
|
if (self->priv->have_existing_user_accounts) { |
||||||
|
return FALSE; |
||||||
|
} |
||||||
|
|
||||||
|
/* don't run if initial-setup is unavailable */ |
||||||
|
if (!can_create_environment ("gnome-initial-setup")) { |
||||||
|
return FALSE; |
||||||
|
} |
||||||
|
|
||||||
|
if (!gdm_settings_direct_get_boolean (GDM_KEY_INITIAL_SETUP_ENABLE, &enabled)) { |
||||||
|
return FALSE; |
||||||
|
} |
||||||
|
|
||||||
|
+ if (initial_setup_disabled_by_anaconda ()) { |
||||||
|
+ return FALSE; |
||||||
|
+ } |
||||||
|
+ |
||||||
|
return enabled; |
||||||
|
} |
||||||
|
|
||||||
|
void |
||||||
|
gdm_display_start_greeter_session (GdmDisplay *self) |
||||||
|
{ |
||||||
|
GdmSession *session; |
||||||
|
char *display_name; |
||||||
|
char *seat_id; |
||||||
|
char *hostname; |
||||||
|
char *auth_file = NULL; |
||||||
|
|
||||||
|
g_return_if_fail (g_strcmp0 (self->priv->session_class, "greeter") == 0); |
||||||
|
|
||||||
|
g_debug ("GdmDisplay: Running greeter"); |
||||||
|
|
||||||
|
display_name = NULL; |
||||||
|
seat_id = NULL; |
||||||
|
hostname = NULL; |
||||||
|
|
||||||
|
g_object_get (self, |
||||||
|
"x11-display-name", &display_name, |
||||||
|
"seat-id", &seat_id, |
||||||
|
"remote-hostname", &hostname, |
||||||
|
NULL); |
||||||
|
if (self->priv->access_file != NULL) { |
||||||
|
auth_file = gdm_display_access_file_get_path (self->priv->access_file); |
||||||
|
} |
||||||
|
|
||||||
|
g_debug ("GdmDisplay: Creating greeter for %s %s", display_name, hostname); |
||||||
|
-- |
||||||
|
2.14.2 |
||||||
|
|
@ -0,0 +1,212 @@ |
|||||||
|
From cbddcc7c8cc8dcccc8c9a616e1decf8a3ed1cb87 Mon Sep 17 00:00:00 2001 |
||||||
|
From: Ray Strode <rstrode@redhat.com> |
||||||
|
Date: Fri, 13 Oct 2017 13:56:22 -0400 |
||||||
|
Subject: [PATCH] Revert "data: Add gnome-login.session" |
||||||
|
|
||||||
|
This reverts commit 1073f0e792d9d5bf9d53bddb6e51177c8024c2b3. |
||||||
|
--- |
||||||
|
data/Makefile.am | 12 ------------ |
||||||
|
data/dconf/defaults/00-upstream-settings | 2 +- |
||||||
|
data/gnome-login.session.in | 3 --- |
||||||
|
3 files changed, 1 insertion(+), 16 deletions(-) |
||||||
|
delete mode 100644 data/gnome-login.session.in |
||||||
|
|
||||||
|
diff --git a/data/Makefile.am b/data/Makefile.am |
||||||
|
index c10c9151..f2875fcb 100644 |
||||||
|
--- a/data/Makefile.am |
||||||
|
+++ b/data/Makefile.am |
||||||
|
@@ -59,74 +59,63 @@ schemas_in_files = gdm.schemas.in |
||||||
|
schemas_DATA = $(schemas_in_files:.schemas.in=.schemas) |
||||||
|
|
||||||
|
gdm.schemas.in: $(srcdir)/gdm.schemas.in.in |
||||||
|
sed -e 's,[@]GDMPREFETCHCMD[@],$(GDMPREFETCHCMD),g' \ |
||||||
|
-e 's,[@]GDM_CUSTOM_CONF[@],$(GDM_CUSTOM_CONF),g' \ |
||||||
|
-e 's,[@]GDM_USER_PATH[@],$(GDM_USER_PATH),g' \ |
||||||
|
-e 's,[@]GDM_USERNAME[@],$(GDM_USERNAME),g' \ |
||||||
|
-e 's,[@]GDM_GROUPNAME[@],$(GDM_GROUPNAME),g' \ |
||||||
|
-e 's,[@]HALT_COMMAND[@],$(HALT_COMMAND),g' \ |
||||||
|
-e 's,[@]REBOOT_COMMAND[@],$(REBOOT_COMMAND),g' \ |
||||||
|
-e 's,[@]SOUND_PROGRAM[@],$(SOUND_PROGRAM),g' \ |
||||||
|
-e 's,[@]SUSPEND_COMMAND[@],$(SUSPEND_COMMAND),g' \ |
||||||
|
-e 's,[@]XEVIE_OPTION[@],$(XEVIE_OPTION),g' \ |
||||||
|
-e 's,[@]ALWAYS_RESTART_SERVER[@],$(ALWAYS_RESTART_SERVER),g' \ |
||||||
|
-e 's,[@]X_CONFIG_OPTIONS[@],$(X_CONFIG_OPTIONS),g' \ |
||||||
|
-e 's,[@]X_SERVER[@],$(X_SERVER),g' \ |
||||||
|
-e 's,[@]X_XNEST_CMD[@],$(X_XNEST_CMD),g' \ |
||||||
|
-e 's,[@]X_XNEST_CONFIG_OPTIONS[@],$(X_XNEST_CONFIG_OPTIONS),g' \ |
||||||
|
-e 's,[@]X_XNEST_UNSCALED_FONTPATH[@],$(X_XNEST_UNSCALED_FONTPATH),g' \ |
||||||
|
-e 's,[@]GDM_RBAC_SYSCMD_KEYS[@],$(GDM_RBAC_SYSCMD_KEYS),g' \ |
||||||
|
-e 's,[@]datadir[@],$(datadir),g' \ |
||||||
|
-e 's,[@]gdmconfdir[@],$(gdmconfdir),g' \ |
||||||
|
-e 's,[@]libdir[@],$(libdir),g' \ |
||||||
|
-e 's,[@]libexecdir[@],$(libexecdir),g' \ |
||||||
|
-e 's,[@]gdmlocaledir[@],$(gdmlocaledir),g' \ |
||||||
|
-e 's,[@]logdir[@],$(logdir),g' \ |
||||||
|
-e 's,[@]pixmapdir[@],$(pixmapdir),g' \ |
||||||
|
-e 's,[@]sbindir[@],$(sbindir),g' \ |
||||||
|
<$(srcdir)/gdm.schemas.in.in >gdm.schemas.in |
||||||
|
|
||||||
|
- |
||||||
|
-EXTRA_DIST += gnome-login.session.in |
||||||
|
- |
||||||
|
-gnome-login.session: $(srcdir)/gnome-login.session.in |
||||||
|
- sed -e 's,[@]libexecdir[@],$(libexecdir),g' \ |
||||||
|
- -e 's,[@]CHECK_ACCELERATED_DIR[@],$(CHECK_ACCELERATED_DIR),g' \ |
||||||
|
- < $< > $@.tmp && mv $@.tmp $@ |
||||||
|
- |
||||||
|
localealiasdir = $(datadir)/gdm |
||||||
|
localealias_DATA = locale.alias |
||||||
|
|
||||||
|
-sessiondir = $(datadir)/gnome-session/sessions |
||||||
|
-session_DATA = gnome-login.session |
||||||
|
- |
||||||
|
pam_redhat_files = \ |
||||||
|
pam-redhat/gdm-autologin.pam \ |
||||||
|
pam-redhat/gdm-launch-environment.pam \ |
||||||
|
pam-redhat/gdm-fingerprint.pam \ |
||||||
|
pam-redhat/gdm-smartcard.pam \ |
||||||
|
pam-redhat/gdm-password.pam \ |
||||||
|
pam-redhat/gdm-pin.pam \ |
||||||
|
$(NULL) |
||||||
|
EXTRA_DIST += $(pam_redhat_files) |
||||||
|
|
||||||
|
pam_openembedded_files = pam-openembedded/gdm-password.pam \ |
||||||
|
pam-openembedded/gdm-autologin.pam \ |
||||||
|
pam-openembedded/gdm-launch-environment.pam \ |
||||||
|
pam-openembedded/gdm-pin.pam \ |
||||||
|
$(NULL) |
||||||
|
EXTRA_DIST += $(pam_openembedded_files) |
||||||
|
|
||||||
|
pam_exherbo_files = pam-exherbo/gdm-autologin.pam \ |
||||||
|
pam-exherbo/gdm-launch-environment.pam \ |
||||||
|
pam-exherbo/gdm-fingerprint.pam \ |
||||||
|
pam-exherbo/gdm-smartcard.pam \ |
||||||
|
pam-exherbo/gdm-password.pam \ |
||||||
|
pam-exherbo/gdm-pin.pam \ |
||||||
|
$(NULL) |
||||||
|
EXTRA_DIST += $(pam_exherbo_files) |
||||||
|
|
||||||
|
pam_lfs_files = \ |
||||||
|
pam-lfs/gdm-autologin.pam \ |
||||||
|
pam-lfs/gdm-launch-environment.pam \ |
||||||
|
pam-lfs/gdm-fingerprint.pam \ |
||||||
|
@@ -163,61 +152,60 @@ endif |
||||||
|
|
||||||
|
EXTRA_DIST += \ |
||||||
|
$(dconf_db_files) \ |
||||||
|
$(schemas_in_files) \ |
||||||
|
$(schemas_DATA) \ |
||||||
|
$(dbusconf_in_files) \ |
||||||
|
$(localealias_DATA) \ |
||||||
|
gdm.schemas.in.in \ |
||||||
|
gdm.conf-custom.in \ |
||||||
|
Xsession.in \ |
||||||
|
Init.in \ |
||||||
|
PreSession.in \ |
||||||
|
PostSession.in \ |
||||||
|
PostLogin \ |
||||||
|
org.gnome.login-screen.gschema.xml.in \ |
||||||
|
$(NULL) |
||||||
|
|
||||||
|
CLEANFILES = \ |
||||||
|
Xsession \ |
||||||
|
gdm.conf-custom \ |
||||||
|
Init \ |
||||||
|
PreSession \ |
||||||
|
PostSession \ |
||||||
|
$(gsettings_SCHEMAS) \ |
||||||
|
greeter-dconf-defaults \ |
||||||
|
$(NULL) |
||||||
|
|
||||||
|
DISTCLEANFILES = \ |
||||||
|
$(dbusconf_DATA) \ |
||||||
|
gdm.schemas \ |
||||||
|
- gnome-login.session \ |
||||||
|
$(NULL) |
||||||
|
|
||||||
|
MAINTAINERCLEANFILES = \ |
||||||
|
*~ \ |
||||||
|
Makefile.in |
||||||
|
|
||||||
|
systemdsystemunit = |
||||||
|
|
||||||
|
gdm.service: $(srcdir)/gdm.service.in |
||||||
|
$(AM_V_GEN)sed \ |
||||||
|
-e 's,[@]sbindir[@],$(sbindir),g' \ |
||||||
|
-e 's,[@]GDM_INITIAL_VT[@],$(GDM_INITIAL_VT),g' \ |
||||||
|
-e 's,[@]LANG_CONFIG_FILE[@],$(LANG_CONFIG_FILE),g' \ |
||||||
|
-e 's,[@]PLYMOUTH_QUIT_SERVICE[@],$(PLYMOUTH_QUIT_SERVICE),g' \ |
||||||
|
-e 's, *$$,,g' \ |
||||||
|
< $< > $@ |
||||||
|
systemdsystemunit += gdm.service |
||||||
|
CLEANFILES += gdm.service |
||||||
|
|
||||||
|
if INSTALL_SYSTEMD_UNITS |
||||||
|
systemdsystemunit_DATA=$(systemdsystemunit) |
||||||
|
systemdsystemunitdir=$(SYSTEMD_SYSTEM_UNIT_DIR) |
||||||
|
endif |
||||||
|
|
||||||
|
Xsession_files = |
||||||
|
if ENABLE_GDM_XSESSION |
||||||
|
|
||||||
|
Xsession: $(srcdir)/Xsession.in |
||||||
|
sed -e 's,[@]XSESSION_SHELL[@],$(XSESSION_SHELL),g' \ |
||||||
|
-e 's,[@]libexecdir[@],$(libexecdir),g' \ |
||||||
|
diff --git a/data/dconf/defaults/00-upstream-settings b/data/dconf/defaults/00-upstream-settings |
||||||
|
index 603903e6..f109e0a9 100644 |
||||||
|
--- a/data/dconf/defaults/00-upstream-settings |
||||||
|
+++ b/data/dconf/defaults/00-upstream-settings |
||||||
|
@@ -1,40 +1,40 @@ |
||||||
|
# This file is part of the GDM packaging and should not be changed. |
||||||
|
# |
||||||
|
# Instead create your own file next to it with a higher numbered prefix, |
||||||
|
# and run |
||||||
|
# |
||||||
|
# dconf update |
||||||
|
# |
||||||
|
|
||||||
|
[org/gnome/desktop/session] |
||||||
|
-session-name='gnome-login' |
||||||
|
+session-name='gnome' |
||||||
|
|
||||||
|
[org/gnome/desktop/a11y] |
||||||
|
always-show-universal-access-status=true |
||||||
|
|
||||||
|
[org/gnome/desktop/background] |
||||||
|
show-desktop-icons=false |
||||||
|
|
||||||
|
[org/gnome/desktop/default-applications/terminal] |
||||||
|
exec='true' |
||||||
|
|
||||||
|
[org/gnome/desktop/lockdown] |
||||||
|
disable-application-handlers=true |
||||||
|
disable-command-line=true |
||||||
|
disable-lock-screen=true |
||||||
|
disable-log-out=false |
||||||
|
disable-printing=true |
||||||
|
disable-print-setup=true |
||||||
|
disable-save-to-disk=true |
||||||
|
disable-user-switching=true |
||||||
|
|
||||||
|
[org/gnome/desktop/sound] |
||||||
|
event-sounds=true |
||||||
|
|
||||||
|
[org/gnome/settings-daemon/plugins/media-keys] |
||||||
|
calculator='' |
||||||
|
eject='' |
||||||
|
email='' |
||||||
|
help='' |
||||||
|
home='' |
||||||
|
media='' |
||||||
|
diff --git a/data/gnome-login.session.in b/data/gnome-login.session.in |
||||||
|
deleted file mode 100644 |
||||||
|
index 764afd15..00000000 |
||||||
|
--- a/data/gnome-login.session.in |
||||||
|
+++ /dev/null |
||||||
|
@@ -1,3 +0,0 @@ |
||||||
|
-[GNOME Session] |
||||||
|
-Name=Display Manager |
||||||
|
-RequiredComponents=org.gnome.Shell;org.gnome.SettingsDaemon.A11yKeyboard;org.gnome.SettingsDaemon.A11ySettings;org.gnome.SettingsDaemon.Clipboard;org.gnome.SettingsDaemon.Color;org.gnome.SettingsDaemon.Datetime;org.gnome.SettingsDaemon.Housekeeping;org.gnome.SettingsDaemon.Keyboard;org.gnome.SettingsDaemon.MediaKeys;org.gnome.SettingsDaemon.Mouse;org.gnome.SettingsDaemon.Power;org.gnome.SettingsDaemon.PrintNotifications;org.gnome.SettingsDaemon.Rfkill;org.gnome.SettingsDaemon.ScreensaverProxy;org.gnome.SettingsDaemon.Sharing;org.gnome.SettingsDaemon.Smartcard;org.gnome.SettingsDaemon.Sound;org.gnome.SettingsDaemon.Wacom;org.gnome.SettingsDaemon.XSettings; |
||||||
|
-- |
||||||
|
2.14.2 |
||||||
|
|
@ -0,0 +1,86 @@ |
|||||||
|
From 5c86f9731ed715bcf603c9dd93dced002f11b996 Mon Sep 17 00:00:00 2001 |
||||||
|
From: Ray Strode <rstrode@redhat.com> |
||||||
|
Date: Tue, 17 Oct 2017 10:06:22 -0400 |
||||||
|
Subject: [PATCH] Revert "gdm-sessions: force a session bus for non-seat0 |
||||||
|
session" |
||||||
|
|
||||||
|
This reverts commit 2b52d8933c8ab38e7ee83318da2363d00d8c5581. |
||||||
|
--- |
||||||
|
daemon/gdm-session.c | 7 +------ |
||||||
|
1 file changed, 1 insertion(+), 6 deletions(-) |
||||||
|
|
||||||
|
diff --git a/daemon/gdm-session.c b/daemon/gdm-session.c |
||||||
|
index 3e71ad2f..3a1b7f23 100644 |
||||||
|
--- a/daemon/gdm-session.c |
||||||
|
+++ b/daemon/gdm-session.c |
||||||
|
@@ -2870,66 +2870,61 @@ gdm_session_start_session (GdmSession *self, |
||||||
|
allow_remote_connections = TRUE; |
||||||
|
} |
||||||
|
|
||||||
|
if (run_launcher) { |
||||||
|
if (is_x11) { |
||||||
|
program = g_strdup_printf (LIBEXECDIR "/gdm-x-session %s %s\"%s\"", |
||||||
|
run_xsession_script? "--run-script " : "", |
||||||
|
allow_remote_connections? "--allow-remote-connections " : "", |
||||||
|
command); |
||||||
|
} else { |
||||||
|
program = g_strdup_printf (LIBEXECDIR "/gdm-wayland-session \"%s\"", |
||||||
|
command); |
||||||
|
} |
||||||
|
} else if (run_xsession_script) { |
||||||
|
program = g_strdup_printf (GDMCONFDIR "/Xsession \"%s\"", command); |
||||||
|
} else { |
||||||
|
program = g_strdup (command); |
||||||
|
} |
||||||
|
|
||||||
|
g_free (command); |
||||||
|
} else { |
||||||
|
if (run_launcher) { |
||||||
|
if (is_x11) { |
||||||
|
program = g_strdup_printf (LIBEXECDIR "/gdm-x-session \"%s\"", |
||||||
|
self->priv->selected_program); |
||||||
|
} else { |
||||||
|
program = g_strdup_printf (LIBEXECDIR "/gdm-wayland-session \"%s\"", |
||||||
|
self->priv->selected_program); |
||||||
|
} |
||||||
|
} else { |
||||||
|
- if (g_strcmp0 (self->priv->display_seat_id, "seat0") != 0) { |
||||||
|
- program = g_strdup_printf ("dbus-run-session -- %s", |
||||||
|
- self->priv->selected_program); |
||||||
|
- } else { |
||||||
|
- program = g_strdup (self->priv->selected_program); |
||||||
|
- } |
||||||
|
+ program = g_strdup (self->priv->selected_program); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
set_up_session_environment (self); |
||||||
|
send_environment (self, conversation); |
||||||
|
|
||||||
|
gdm_dbus_worker_call_start_program (conversation->worker_proxy, |
||||||
|
program, |
||||||
|
conversation->worker_cancellable, |
||||||
|
(GAsyncReadyCallback) on_start_program_cb, |
||||||
|
conversation); |
||||||
|
g_free (program); |
||||||
|
} |
||||||
|
|
||||||
|
static void |
||||||
|
stop_all_conversations (GdmSession *self) |
||||||
|
{ |
||||||
|
stop_all_other_conversations (self, NULL, TRUE); |
||||||
|
} |
||||||
|
|
||||||
|
static void |
||||||
|
do_reset (GdmSession *self) |
||||||
|
{ |
||||||
|
stop_all_conversations (self); |
||||||
|
|
||||||
|
g_list_free_full (self->priv->pending_worker_connections, g_object_unref); |
||||||
|
self->priv->pending_worker_connections = NULL; |
||||||
|
|
||||||
|
g_free (self->priv->selected_user); |
||||||
|
self->priv->selected_user = NULL; |
||||||
|
-- |
||||||
|
2.14.2 |
||||||
|
|
@ -0,0 +1,103 @@ |
|||||||
|
From 0012497171500090b55e4c8e967809a5b2daaa94 Mon Sep 17 00:00:00 2001 |
||||||
|
From: Ray Strode <rstrode@redhat.com> |
||||||
|
Date: Wed, 14 Feb 2018 16:07:15 -0500 |
||||||
|
Subject: [PATCH] Revert "session: don't call gdm_session_defaults_changed from |
||||||
|
setup" |
||||||
|
|
||||||
|
This reverts commit 572a19324b75cc1f1b2db4908e2d7c9f06e4e335. |
||||||
|
|
||||||
|
It turns out we need this call for more than just the session type, |
||||||
|
we also need to it to inform the greeter about the default session |
||||||
|
to use. |
||||||
|
--- |
||||||
|
daemon/gdm-session.c | 2 ++ |
||||||
|
1 file changed, 2 insertions(+) |
||||||
|
|
||||||
|
diff --git a/daemon/gdm-session.c b/daemon/gdm-session.c |
||||||
|
index 3a1b7f23..e9cbd0ec 100644 |
||||||
|
--- a/daemon/gdm-session.c |
||||||
|
+++ b/daemon/gdm-session.c |
||||||
|
@@ -2368,78 +2368,80 @@ initialize (GdmSession *self, |
||||||
|
g_variant_builder_add_parsed (&details, "{'seat-id', <%s>}", self->priv->display_seat_id); |
||||||
|
|
||||||
|
if (self->priv->display_x11_authority_file != NULL) |
||||||
|
g_variant_builder_add_parsed (&details, "{'x11-authority-file', <%s>}", self->priv->display_x11_authority_file); |
||||||
|
|
||||||
|
g_debug ("GdmSession: Beginning initialization"); |
||||||
|
|
||||||
|
conversation = find_conversation_by_name (self, service_name); |
||||||
|
if (conversation != NULL) { |
||||||
|
gdm_dbus_worker_call_initialize (conversation->worker_proxy, |
||||||
|
g_variant_builder_end (&details), |
||||||
|
|
||||||
|
conversation->worker_cancellable, |
||||||
|
(GAsyncReadyCallback) on_initialization_complete_cb, |
||||||
|
conversation); |
||||||
|
} |
||||||
|
|
||||||
|
g_free (extensions); |
||||||
|
} |
||||||
|
|
||||||
|
void |
||||||
|
gdm_session_setup (GdmSession *self, |
||||||
|
const char *service_name) |
||||||
|
{ |
||||||
|
|
||||||
|
g_return_if_fail (GDM_IS_SESSION (self)); |
||||||
|
|
||||||
|
update_session_type (self); |
||||||
|
|
||||||
|
initialize (self, service_name, NULL, NULL); |
||||||
|
+ gdm_session_defaults_changed (self); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
void |
||||||
|
gdm_session_setup_for_user (GdmSession *self, |
||||||
|
const char *service_name, |
||||||
|
const char *username) |
||||||
|
{ |
||||||
|
|
||||||
|
g_return_if_fail (GDM_IS_SESSION (self)); |
||||||
|
g_return_if_fail (username != NULL); |
||||||
|
|
||||||
|
update_session_type (self); |
||||||
|
|
||||||
|
gdm_session_select_user (self, username); |
||||||
|
|
||||||
|
self->priv->is_program_session = FALSE; |
||||||
|
initialize (self, service_name, self->priv->selected_user, NULL); |
||||||
|
+ gdm_session_defaults_changed (self); |
||||||
|
} |
||||||
|
|
||||||
|
void |
||||||
|
gdm_session_setup_for_program (GdmSession *self, |
||||||
|
const char *service_name, |
||||||
|
const char *username, |
||||||
|
const char *log_file) |
||||||
|
{ |
||||||
|
|
||||||
|
g_return_if_fail (GDM_IS_SESSION (self)); |
||||||
|
|
||||||
|
self->priv->is_program_session = TRUE; |
||||||
|
initialize (self, service_name, username, log_file); |
||||||
|
} |
||||||
|
|
||||||
|
void |
||||||
|
gdm_session_authenticate (GdmSession *self, |
||||||
|
const char *service_name) |
||||||
|
{ |
||||||
|
GdmSessionConversation *conversation; |
||||||
|
|
||||||
|
g_return_if_fail (GDM_IS_SESSION (self)); |
||||||
|
|
||||||
|
conversation = find_conversation_by_name (self, service_name); |
||||||
|
if (conversation != NULL) { |
||||||
|
gdm_dbus_worker_call_authenticate (conversation->worker_proxy, |
||||||
|
conversation->worker_cancellable, |
||||||
|
(GAsyncReadyCallback) on_authenticate_cb, |
||||||
|
conversation); |
||||||
|
} |
||||||
|
-- |
||||||
|
2.14.3 |
||||||
|
|
@ -0,0 +1,280 @@ |
|||||||
|
From 0522f061f30baeecff958e0deee89934baff3776 Mon Sep 17 00:00:00 2001 |
||||||
|
From: Ray Strode <rstrode@redhat.com> |
||||||
|
Date: Fri, 12 May 2017 10:11:09 -0400 |
||||||
|
Subject: [PATCH] Revert "session: forward is-initial from display to worker" |
||||||
|
MIME-Version: 1.0 |
||||||
|
Content-Type: text/plain; charset=UTF-8 |
||||||
|
Content-Transfer-Encoding: 8bit |
||||||
|
|
||||||
|
This reverts commit 7a4e34049c79e907d1a027390c5d3a8dcdc11977. |
||||||
|
|
||||||
|
It breaks login screen until reboot on 7.3→7.4 upgrade. |
||||||
|
--- |
||||||
|
daemon/gdm-session-worker.c | 10 ++-------- |
||||||
|
daemon/gdm-session-worker.xml | 3 --- |
||||||
|
2 files changed, 2 insertions(+), 11 deletions(-) |
||||||
|
|
||||||
|
diff --git a/daemon/gdm-session-worker.c b/daemon/gdm-session-worker.c |
||||||
|
index 34b3bf7f..10ecccb0 100644 |
||||||
|
--- a/daemon/gdm-session-worker.c |
||||||
|
+++ b/daemon/gdm-session-worker.c |
||||||
|
@@ -3033,166 +3033,160 @@ gdm_session_worker_handle_initialize (GdmDBusWorker *object, |
||||||
|
|
||||||
|
if (worker->priv->username) { |
||||||
|
wait_for_settings = !gdm_session_settings_load (worker->priv->user_settings, |
||||||
|
worker->priv->username); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
if (wait_for_settings) { |
||||||
|
/* Load settings from accounts daemon before continuing |
||||||
|
*/ |
||||||
|
g_signal_connect (G_OBJECT (worker->priv->user_settings), |
||||||
|
"notify::is-loaded", |
||||||
|
G_CALLBACK (on_settings_is_loaded_changed), |
||||||
|
worker); |
||||||
|
} else { |
||||||
|
queue_state_change (worker); |
||||||
|
} |
||||||
|
|
||||||
|
return TRUE; |
||||||
|
} |
||||||
|
|
||||||
|
static gboolean |
||||||
|
gdm_session_worker_handle_setup (GdmDBusWorker *object, |
||||||
|
GDBusMethodInvocation *invocation, |
||||||
|
const char *service, |
||||||
|
const char *x11_display_name, |
||||||
|
const char *x11_authority_file, |
||||||
|
const char *console, |
||||||
|
const char *seat_id, |
||||||
|
const char *hostname, |
||||||
|
- gboolean display_is_local, |
||||||
|
- gboolean display_is_initial) |
||||||
|
+ gboolean display_is_local) |
||||||
|
{ |
||||||
|
GdmSessionWorker *worker = GDM_SESSION_WORKER (object); |
||||||
|
validate_and_queue_state_change (worker, invocation, GDM_SESSION_WORKER_STATE_SETUP_COMPLETE); |
||||||
|
|
||||||
|
worker->priv->service = g_strdup (service); |
||||||
|
worker->priv->x11_display_name = g_strdup (x11_display_name); |
||||||
|
worker->priv->x11_authority_file = g_strdup (x11_authority_file); |
||||||
|
worker->priv->display_device = g_strdup (console); |
||||||
|
worker->priv->display_seat_id = g_strdup (seat_id); |
||||||
|
worker->priv->hostname = g_strdup (hostname); |
||||||
|
worker->priv->display_is_local = display_is_local; |
||||||
|
- worker->priv->display_is_initial = display_is_initial; |
||||||
|
worker->priv->username = NULL; |
||||||
|
|
||||||
|
g_signal_connect_swapped (worker->priv->user_settings, |
||||||
|
"notify::language-name", |
||||||
|
G_CALLBACK (on_saved_language_name_read), |
||||||
|
worker); |
||||||
|
|
||||||
|
g_signal_connect_swapped (worker->priv->user_settings, |
||||||
|
"notify::session-name", |
||||||
|
G_CALLBACK (on_saved_session_name_read), |
||||||
|
worker); |
||||||
|
return TRUE; |
||||||
|
} |
||||||
|
|
||||||
|
static gboolean |
||||||
|
gdm_session_worker_handle_setup_for_user (GdmDBusWorker *object, |
||||||
|
GDBusMethodInvocation *invocation, |
||||||
|
const char *service, |
||||||
|
const char *username, |
||||||
|
const char *x11_display_name, |
||||||
|
const char *x11_authority_file, |
||||||
|
const char *console, |
||||||
|
const char *seat_id, |
||||||
|
const char *hostname, |
||||||
|
- gboolean display_is_local, |
||||||
|
- gboolean display_is_initial) |
||||||
|
+ gboolean display_is_local) |
||||||
|
{ |
||||||
|
GdmSessionWorker *worker = GDM_SESSION_WORKER (object); |
||||||
|
|
||||||
|
if (!validate_state_change (worker, invocation, GDM_SESSION_WORKER_STATE_SETUP_COMPLETE)) |
||||||
|
return TRUE; |
||||||
|
|
||||||
|
worker->priv->service = g_strdup (service); |
||||||
|
worker->priv->x11_display_name = g_strdup (x11_display_name); |
||||||
|
worker->priv->x11_authority_file = g_strdup (x11_authority_file); |
||||||
|
worker->priv->display_device = g_strdup (console); |
||||||
|
worker->priv->display_seat_id = g_strdup (seat_id); |
||||||
|
worker->priv->hostname = g_strdup (hostname); |
||||||
|
worker->priv->display_is_local = display_is_local; |
||||||
|
- worker->priv->display_is_initial = display_is_initial; |
||||||
|
worker->priv->username = g_strdup (username); |
||||||
|
|
||||||
|
g_signal_connect_swapped (worker->priv->user_settings, |
||||||
|
"notify::language-name", |
||||||
|
G_CALLBACK (on_saved_language_name_read), |
||||||
|
worker); |
||||||
|
|
||||||
|
g_signal_connect_swapped (worker->priv->user_settings, |
||||||
|
"notify::session-name", |
||||||
|
G_CALLBACK (on_saved_session_name_read), |
||||||
|
worker); |
||||||
|
|
||||||
|
/* Load settings from accounts daemon before continuing |
||||||
|
*/ |
||||||
|
worker->priv->pending_invocation = invocation; |
||||||
|
if (gdm_session_settings_load (worker->priv->user_settings, username)) { |
||||||
|
queue_state_change (worker); |
||||||
|
} else { |
||||||
|
g_signal_connect (G_OBJECT (worker->priv->user_settings), |
||||||
|
"notify::is-loaded", |
||||||
|
G_CALLBACK (on_settings_is_loaded_changed), |
||||||
|
worker); |
||||||
|
} |
||||||
|
|
||||||
|
return TRUE; |
||||||
|
} |
||||||
|
|
||||||
|
static gboolean |
||||||
|
gdm_session_worker_handle_setup_for_program (GdmDBusWorker *object, |
||||||
|
GDBusMethodInvocation *invocation, |
||||||
|
const char *service, |
||||||
|
const char *username, |
||||||
|
const char *x11_display_name, |
||||||
|
const char *x11_authority_file, |
||||||
|
const char *console, |
||||||
|
const char *seat_id, |
||||||
|
const char *hostname, |
||||||
|
gboolean display_is_local, |
||||||
|
- gboolean display_is_initial, |
||||||
|
const char *log_file) |
||||||
|
{ |
||||||
|
GdmSessionWorker *worker = GDM_SESSION_WORKER (object); |
||||||
|
validate_and_queue_state_change (worker, invocation, GDM_SESSION_WORKER_STATE_SETUP_COMPLETE); |
||||||
|
|
||||||
|
worker->priv->service = g_strdup (service); |
||||||
|
worker->priv->x11_display_name = g_strdup (x11_display_name); |
||||||
|
worker->priv->x11_authority_file = g_strdup (x11_authority_file); |
||||||
|
worker->priv->display_device = g_strdup (console); |
||||||
|
worker->priv->display_seat_id = g_strdup (seat_id); |
||||||
|
worker->priv->hostname = g_strdup (hostname); |
||||||
|
worker->priv->display_is_local = display_is_local; |
||||||
|
- worker->priv->display_is_initial = display_is_initial; |
||||||
|
worker->priv->username = g_strdup (username); |
||||||
|
worker->priv->log_file = g_strdup (log_file); |
||||||
|
worker->priv->is_program_session = TRUE; |
||||||
|
|
||||||
|
return TRUE; |
||||||
|
} |
||||||
|
|
||||||
|
static gboolean |
||||||
|
gdm_session_worker_handle_start_program (GdmDBusWorker *object, |
||||||
|
GDBusMethodInvocation *invocation, |
||||||
|
const char *text) |
||||||
|
{ |
||||||
|
GdmSessionWorker *worker = GDM_SESSION_WORKER (object); |
||||||
|
GError *parse_error = NULL; |
||||||
|
validate_state_change (worker, invocation, GDM_SESSION_WORKER_STATE_SESSION_STARTED); |
||||||
|
|
||||||
|
if (worker->priv->is_reauth_session) { |
||||||
|
g_dbus_method_invocation_return_error (invocation, |
||||||
|
GDM_SESSION_WORKER_ERROR, |
||||||
|
GDM_SESSION_WORKER_ERROR_IN_REAUTH_SESSION, |
||||||
|
"Cannot start a program while in a reauth session"); |
||||||
|
return TRUE; |
||||||
|
} |
||||||
|
|
||||||
|
g_debug ("GdmSessionWorker: start program: %s", text); |
||||||
|
|
||||||
|
g_clear_pointer (&worker->priv->arguments, (GDestroyNotify) g_strfreev); |
||||||
|
if (! g_shell_parse_argv (text, NULL, &worker->priv->arguments, &parse_error)) { |
||||||
|
g_dbus_method_invocation_take_error (invocation, parse_error); |
||||||
|
return TRUE; |
||||||
|
diff --git a/daemon/gdm-session-worker.xml b/daemon/gdm-session-worker.xml |
||||||
|
index 4280fe09..bc055973 100644 |
||||||
|
--- a/daemon/gdm-session-worker.xml |
||||||
|
+++ b/daemon/gdm-session-worker.xml |
||||||
|
@@ -8,83 +8,80 @@ |
||||||
|
<arg name="session_id" direction="out" type="s"/> |
||||||
|
</method> |
||||||
|
<method name="SetLanguageName"> |
||||||
|
<arg name="language" direction="in" type="s"/> |
||||||
|
</method> |
||||||
|
<method name="SetSessionName"> |
||||||
|
<arg name="session_name" direction="in" type="s" /> |
||||||
|
</method> |
||||||
|
<method name="SetSessionDisplayMode"> |
||||||
|
<arg name="mode" direction="in" type="s"/> |
||||||
|
</method> |
||||||
|
<method name="SetEnvironmentVariable"> |
||||||
|
<arg name="name" direction="in" type="s"/> |
||||||
|
<arg name="value" direction="in" type="s"/> |
||||||
|
</method> |
||||||
|
<method name="StartProgram"> |
||||||
|
<arg name="command" direction="in" type="s"/> |
||||||
|
<arg name="child_pid" direction="out" type="i"/> |
||||||
|
</method> |
||||||
|
<method name="Initialize"> |
||||||
|
<arg name="details" direction="in" type="a{sv}"/> |
||||||
|
</method> |
||||||
|
<method name="Setup"> |
||||||
|
<arg name="service_name" direction="in" type="s"/> |
||||||
|
<arg name="x11_display_name" direction="in" type="s"/> |
||||||
|
<arg name="x11_authority_file" direction="in" type="s"/> |
||||||
|
<arg name="display_device" direction="in" type="s"/> |
||||||
|
<arg name="display_seat" direction="in" type="s"/> |
||||||
|
<arg name="hostname" direction="in" type="s"/> |
||||||
|
<arg name="display_is_local" direction="in" type="b"/> |
||||||
|
- <arg name="display_is_initial" direction="in" type="b"/> |
||||||
|
</method> |
||||||
|
<method name="SetupForUser"> |
||||||
|
<arg name="service_name" direction="in" type="s"/> |
||||||
|
<arg name="user_name" direction="in" type="s"/> |
||||||
|
<arg name="x11_display_name" direction="in" type="s"/> |
||||||
|
<arg name="x11_authority_file" direction="in" type="s"/> |
||||||
|
<arg name="display_device" direction="in" type="s"/> |
||||||
|
<arg name="display_seat" direction="in" type="s"/> |
||||||
|
<arg name="hostname" direction="in" type="s"/> |
||||||
|
<arg name="display_is_local" direction="in" type="b"/> |
||||||
|
- <arg name="display_is_initial" direction="in" type="b"/> |
||||||
|
</method> |
||||||
|
<method name="SetupForProgram"> |
||||||
|
<arg name="service_name" direction="in" type="s"/> |
||||||
|
<arg name="user_name" direction="in" type="s"/> |
||||||
|
<arg name="x11_display_name" direction="in" type="s"/> |
||||||
|
<arg name="x11_authority_file" direction="in" type="s"/> |
||||||
|
<arg name="display_device" direction="in" type="s"/> |
||||||
|
<arg name="display_seat" direction="in" type="s"/> |
||||||
|
<arg name="hostname" direction="in" type="s"/> |
||||||
|
<arg name="display_is_local" direction="in" type="b"/> |
||||||
|
- <arg name="display_is_initial" direction="in" type="b"/> |
||||||
|
<arg name="log_file" direction="in" type="s"/> |
||||||
|
</method> |
||||||
|
<method name="StartReauthentication"> |
||||||
|
<arg name="pid_of_caller" direction="in" type="i"/> |
||||||
|
<arg name="uid_of_caller" direction="in" type="i"/> |
||||||
|
<arg name="address" direction="out" type="s"/> |
||||||
|
</method> |
||||||
|
|
||||||
|
<signal name="SessionExited"> |
||||||
|
<arg name="service_name" type="s" /> |
||||||
|
<!-- This is a combination of exit code and exit |
||||||
|
signal. Use macros in sys/wait.h to handle it. --> |
||||||
|
<arg name="status" type="i" /> |
||||||
|
</signal> |
||||||
|
<signal name="SavedLanguageNameRead"> |
||||||
|
<arg name="language_name" type="s"/> |
||||||
|
</signal> |
||||||
|
<signal name="SavedSessionNameRead"> |
||||||
|
<arg name="session_name" type="s"/> |
||||||
|
</signal> |
||||||
|
<signal name="UsernameChanged"> |
||||||
|
<arg name="new_username" type="s"/> |
||||||
|
</signal> |
||||||
|
<signal name="Reauthenticated"> |
||||||
|
<arg name="service_name" type="s"/> |
||||||
|
</signal> |
||||||
|
<signal name="CancelPendingQuery"> |
||||||
|
</signal> |
||||||
|
</interface> |
||||||
|
</node> |
||||||
|
-- |
||||||
|
2.14.2 |
||||||
|
|
@ -0,0 +1,45 @@ |
|||||||
|
From 6effb1671a917adb3ed8f77f5e13324e8b455c32 Mon Sep 17 00:00:00 2001 |
||||||
|
From: Ray Strode <rstrode@redhat.com> |
||||||
|
Date: Tue, 30 Jan 2018 10:32:08 -0500 |
||||||
|
Subject: [PATCH] data: drop pam_gdm, reintroduce pam_env/postlogin |
||||||
|
|
||||||
|
The current upstream pam configuration upstream doesn't really |
||||||
|
make sense in RHEL. |
||||||
|
|
||||||
|
systemd doesn't handle /etc/environment on its own in RHEL and it |
||||||
|
doesn't populate the kernel keyring with disk encrypt passwords, |
||||||
|
so pam_gdm is not useful. |
||||||
|
|
||||||
|
This commit restores the pam configuration to something closer to |
||||||
|
what was shipped in 7.3 |
||||||
|
--- |
||||||
|
data/pam-redhat/gdm-autologin.pam | 7 +++---- |
||||||
|
1 file changed, 3 insertions(+), 4 deletions(-) |
||||||
|
|
||||||
|
diff --git a/data/pam-redhat/gdm-autologin.pam b/data/pam-redhat/gdm-autologin.pam |
||||||
|
index c31ff27a..aa99e1b0 100644 |
||||||
|
--- a/data/pam-redhat/gdm-autologin.pam |
||||||
|
+++ b/data/pam-redhat/gdm-autologin.pam |
||||||
|
@@ -1,16 +1,15 @@ |
||||||
|
#%PAM-1.0 |
||||||
|
-auth [success=ok default=1] pam_gdm.so |
||||||
|
--auth optional pam_gnome_keyring.so |
||||||
|
-auth sufficient pam_permit.so |
||||||
|
+auth required pam_env.so |
||||||
|
+auth required pam_permit.so |
||||||
|
+auth include postlogin |
||||||
|
account required pam_nologin.so |
||||||
|
account include system-auth |
||||||
|
password include system-auth |
||||||
|
session required pam_selinux.so close |
||||||
|
session required pam_loginuid.so |
||||||
|
session optional pam_console.so |
||||||
|
session required pam_selinux.so open |
||||||
|
session optional pam_keyinit.so force revoke |
||||||
|
session required pam_namespace.so |
||||||
|
session include system-auth |
||||||
|
-session optional pam_gnome_keyring.so auto_start |
||||||
|
session include postlogin |
||||||
|
-- |
||||||
|
2.14.3 |
||||||
|
|
@ -0,0 +1,33 @@ |
|||||||
|
From e21c8b8fcdd3365ac19ae4024c0f615526358072 Mon Sep 17 00:00:00 2001 |
||||||
|
From: Ray Strode <rstrode@redhat.com> |
||||||
|
Date: Thu, 16 Mar 2017 10:52:41 -0400 |
||||||
|
Subject: [PATCH] gdm.conf-custom.in: strip out reference to wayland |
||||||
|
|
||||||
|
--- |
||||||
|
data/gdm.conf-custom.in | 2 -- |
||||||
|
1 file changed, 2 deletions(-) |
||||||
|
|
||||||
|
diff --git a/data/gdm.conf-custom.in b/data/gdm.conf-custom.in |
||||||
|
index 67ebca39..73d0b5f4 100644 |
||||||
|
--- a/data/gdm.conf-custom.in |
||||||
|
+++ b/data/gdm.conf-custom.in |
||||||
|
@@ -1,16 +1,14 @@ |
||||||
|
# GDM configuration storage |
||||||
|
|
||||||
|
[daemon] |
||||||
|
-# Uncoment the line below to force the login screen to use Xorg |
||||||
|
-#WaylandEnable=false |
||||||
|
|
||||||
|
[security] |
||||||
|
|
||||||
|
[xdmcp] |
||||||
|
|
||||||
|
[chooser] |
||||||
|
|
||||||
|
[debug] |
||||||
|
# Uncomment the line below to turn on debugging |
||||||
|
#Enable=true |
||||||
|
|
||||||
|
-- |
||||||
|
2.14.2 |
||||||
|
|
@ -0,0 +1,104 @@ |
|||||||
|
From be25f936f6568af9019bf446c3cf2a19de5e167f Mon Sep 17 00:00:00 2001 |
||||||
|
From: Ray Strode <rstrode@localhost.localdomain> |
||||||
|
Date: Fri, 12 May 2017 15:20:14 -0400 |
||||||
|
Subject: [PATCH] worker: add compat patch to make new worker work with old |
||||||
|
daemon |
||||||
|
|
||||||
|
--- |
||||||
|
daemon/gdm-session-worker.c | 17 +++++++++++++++++ |
||||||
|
1 file changed, 17 insertions(+) |
||||||
|
|
||||||
|
diff --git a/daemon/gdm-session-worker.c b/daemon/gdm-session-worker.c |
||||||
|
index 10ecccb0..f71594c2 100644 |
||||||
|
--- a/daemon/gdm-session-worker.c |
||||||
|
+++ b/daemon/gdm-session-worker.c |
||||||
|
@@ -3140,69 +3140,86 @@ gdm_session_worker_handle_setup_for_user (GdmDBusWorker *object, |
||||||
|
static gboolean |
||||||
|
gdm_session_worker_handle_setup_for_program (GdmDBusWorker *object, |
||||||
|
GDBusMethodInvocation *invocation, |
||||||
|
const char *service, |
||||||
|
const char *username, |
||||||
|
const char *x11_display_name, |
||||||
|
const char *x11_authority_file, |
||||||
|
const char *console, |
||||||
|
const char *seat_id, |
||||||
|
const char *hostname, |
||||||
|
gboolean display_is_local, |
||||||
|
const char *log_file) |
||||||
|
{ |
||||||
|
GdmSessionWorker *worker = GDM_SESSION_WORKER (object); |
||||||
|
validate_and_queue_state_change (worker, invocation, GDM_SESSION_WORKER_STATE_SETUP_COMPLETE); |
||||||
|
|
||||||
|
worker->priv->service = g_strdup (service); |
||||||
|
worker->priv->x11_display_name = g_strdup (x11_display_name); |
||||||
|
worker->priv->x11_authority_file = g_strdup (x11_authority_file); |
||||||
|
worker->priv->display_device = g_strdup (console); |
||||||
|
worker->priv->display_seat_id = g_strdup (seat_id); |
||||||
|
worker->priv->hostname = g_strdup (hostname); |
||||||
|
worker->priv->display_is_local = display_is_local; |
||||||
|
worker->priv->username = g_strdup (username); |
||||||
|
worker->priv->log_file = g_strdup (log_file); |
||||||
|
worker->priv->is_program_session = TRUE; |
||||||
|
|
||||||
|
return TRUE; |
||||||
|
} |
||||||
|
|
||||||
|
+static void |
||||||
|
+fix_environment_if_old_gdm_daemon_running (GdmSessionWorker *worker) |
||||||
|
+{ |
||||||
|
+ const char *daemon_version; |
||||||
|
+ const char *username; |
||||||
|
+ |
||||||
|
+ daemon_version = gdm_session_worker_get_environment_variable (worker, "GDM_VERSION"); |
||||||
|
+ username = gdm_session_worker_get_environment_variable (worker, "USERNAME"); |
||||||
|
+ |
||||||
|
+ if (g_strcmp0 (daemon_version, "3.14.2") == 0 && |
||||||
|
+ g_strcmp0 (username, "gdm") == 0) { |
||||||
|
+ gdm_session_worker_set_environment_variable (worker, "GNOME_SHELL_SESSION_MODE", "gdm"); |
||||||
|
+ } |
||||||
|
+} |
||||||
|
+ |
||||||
|
static gboolean |
||||||
|
gdm_session_worker_handle_start_program (GdmDBusWorker *object, |
||||||
|
GDBusMethodInvocation *invocation, |
||||||
|
const char *text) |
||||||
|
{ |
||||||
|
GdmSessionWorker *worker = GDM_SESSION_WORKER (object); |
||||||
|
GError *parse_error = NULL; |
||||||
|
validate_state_change (worker, invocation, GDM_SESSION_WORKER_STATE_SESSION_STARTED); |
||||||
|
|
||||||
|
+ fix_environment_if_old_gdm_daemon_running (worker); |
||||||
|
+ |
||||||
|
if (worker->priv->is_reauth_session) { |
||||||
|
g_dbus_method_invocation_return_error (invocation, |
||||||
|
GDM_SESSION_WORKER_ERROR, |
||||||
|
GDM_SESSION_WORKER_ERROR_IN_REAUTH_SESSION, |
||||||
|
"Cannot start a program while in a reauth session"); |
||||||
|
return TRUE; |
||||||
|
} |
||||||
|
|
||||||
|
g_debug ("GdmSessionWorker: start program: %s", text); |
||||||
|
|
||||||
|
g_clear_pointer (&worker->priv->arguments, (GDestroyNotify) g_strfreev); |
||||||
|
if (! g_shell_parse_argv (text, NULL, &worker->priv->arguments, &parse_error)) { |
||||||
|
g_dbus_method_invocation_take_error (invocation, parse_error); |
||||||
|
return TRUE; |
||||||
|
} |
||||||
|
|
||||||
|
worker->priv->pending_invocation = invocation; |
||||||
|
queue_state_change (worker); |
||||||
|
|
||||||
|
return TRUE; |
||||||
|
} |
||||||
|
|
||||||
|
static void |
||||||
|
on_reauthentication_client_connected (GdmSession *session, |
||||||
|
GCredentials *credentials, |
||||||
|
GPid pid_of_client, |
||||||
|
ReauthenticationRequest *request) |
||||||
|
{ |
||||||
|
g_debug ("GdmSessionWorker: client connected to reauthentication server"); |
||||||
|
} |
||||||
|
-- |
||||||
|
2.14.2 |
||||||
|
|
@ -0,0 +1,147 @@ |
|||||||
|
From a17354e67eab4a294c30ec3e8b407057c6fb5f80 Mon Sep 17 00:00:00 2001 |
||||||
|
From: Ray Strode <rstrode@redhat.com> |
||||||
|
Date: Fri, 3 Jul 2015 14:39:33 -0400 |
||||||
|
Subject: [PATCH 4/8] server: add -audit 4 to default flags |
||||||
|
|
||||||
|
--- |
||||||
|
daemon/gdm-server.c | 2 +- |
||||||
|
daemon/gdm-x-session.c | 2 ++ |
||||||
|
2 files changed, 3 insertions(+), 1 deletion(-) |
||||||
|
|
||||||
|
diff --git a/daemon/gdm-server.c b/daemon/gdm-server.c |
||||||
|
index 83fba99c..5bd9725c 100644 |
||||||
|
--- a/daemon/gdm-server.c |
||||||
|
+++ b/daemon/gdm-server.c |
||||||
|
@@ -191,61 +191,61 @@ gdm_server_launch_sigusr1_thread_if_needed (void) |
||||||
|
static GThread *sigusr1_thread; |
||||||
|
|
||||||
|
if (sigusr1_thread == NULL) { |
||||||
|
sigusr1_thread = g_thread_new ("gdm SIGUSR1 catcher", sigusr1_thread_main, NULL); |
||||||
|
|
||||||
|
g_mutex_lock (&sigusr1_thread_mutex); |
||||||
|
while (!sigusr1_thread_running) |
||||||
|
g_cond_wait (&sigusr1_thread_cond, &sigusr1_thread_mutex); |
||||||
|
g_mutex_unlock (&sigusr1_thread_mutex); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
static void |
||||||
|
gdm_server_init_command (GdmServer *server) |
||||||
|
{ |
||||||
|
gboolean debug = FALSE; |
||||||
|
const char *debug_options; |
||||||
|
const char *verbosity = ""; |
||||||
|
|
||||||
|
if (server->priv->command != NULL) { |
||||||
|
return; |
||||||
|
} |
||||||
|
|
||||||
|
gdm_settings_direct_get_boolean (GDM_KEY_DEBUG, &debug); |
||||||
|
if (debug) { |
||||||
|
debug_options = " -logverbose 7 -core "; |
||||||
|
} else { |
||||||
|
debug_options = ""; |
||||||
|
} |
||||||
|
|
||||||
|
-#define X_SERVER_ARG_FORMAT " -background none -noreset -verbose %s%s" |
||||||
|
+#define X_SERVER_ARG_FORMAT " -background none -noreset -audit 4 -verbose %s%s" |
||||||
|
|
||||||
|
/* This is a temporary hack to work around the fact that XOrg |
||||||
|
* currently lacks support for multi-seat hotplugging for |
||||||
|
* display devices. This bit should be removed as soon as XOrg |
||||||
|
* gains native support for automatically enumerating usb |
||||||
|
* based graphics adapters at start-up via udev. */ |
||||||
|
|
||||||
|
/* systemd ships an X server wrapper tool which simply invokes |
||||||
|
* the usual X but ensures it only uses the display devices of |
||||||
|
* the seat. */ |
||||||
|
|
||||||
|
/* We do not rely on this wrapper server if, a) the machine |
||||||
|
* wasn't booted using systemd, or b) the wrapper tool is |
||||||
|
* missing, or c) we are running for the main seat 'seat0'. */ |
||||||
|
|
||||||
|
#ifdef ENABLE_SYSTEMD_JOURNAL |
||||||
|
/* For systemd, we don't have a log file but instead log to stdout, |
||||||
|
so set it to the xserver's built-in default verbosity */ |
||||||
|
if (debug) |
||||||
|
verbosity = "7 -logfile /dev/null"; |
||||||
|
else |
||||||
|
verbosity = "3 -logfile /dev/null"; |
||||||
|
#endif |
||||||
|
|
||||||
|
if (g_access (SYSTEMD_X_SERVER, X_OK) < 0) { |
||||||
|
goto fallback; |
||||||
|
} |
||||||
|
|
||||||
|
if (server->priv->display_seat_id == NULL || |
||||||
|
strcmp (server->priv->display_seat_id, "seat0") == 0) { |
||||||
|
diff --git a/daemon/gdm-x-session.c b/daemon/gdm-x-session.c |
||||||
|
index 88fe96f4..a499a342 100644 |
||||||
|
--- a/daemon/gdm-x-session.c |
||||||
|
+++ b/daemon/gdm-x-session.c |
||||||
|
@@ -247,60 +247,62 @@ spawn_x_server (State *state, |
||||||
|
} |
||||||
|
|
||||||
|
g_ptr_array_add (arguments, "-displayfd"); |
||||||
|
g_ptr_array_add (arguments, display_fd_string); |
||||||
|
|
||||||
|
g_ptr_array_add (arguments, "-auth"); |
||||||
|
g_ptr_array_add (arguments, auth_file); |
||||||
|
|
||||||
|
/* If we were compiled with Xserver >= 1.17 we need to specify |
||||||
|
* '-listen tcp' as the X server dosen't listen on tcp sockets |
||||||
|
* by default anymore. In older versions we need to pass |
||||||
|
* -nolisten tcp to disable listening on tcp sockets. |
||||||
|
*/ |
||||||
|
#ifdef HAVE_XSERVER_THAT_DEFAULTS_TO_LOCAL_ONLY |
||||||
|
if (allow_remote_connections) { |
||||||
|
g_ptr_array_add (arguments, "-listen"); |
||||||
|
g_ptr_array_add (arguments, "tcp"); |
||||||
|
} |
||||||
|
#else |
||||||
|
if (!allow_remote_connections) { |
||||||
|
g_ptr_array_add (arguments, "-nolisten"); |
||||||
|
g_ptr_array_add (arguments, "tcp"); |
||||||
|
} |
||||||
|
#endif |
||||||
|
|
||||||
|
g_ptr_array_add (arguments, "-background"); |
||||||
|
g_ptr_array_add (arguments, "none"); |
||||||
|
|
||||||
|
g_ptr_array_add (arguments, "-noreset"); |
||||||
|
g_ptr_array_add (arguments, "-keeptty"); |
||||||
|
+ g_ptr_array_add (arguments, "-audit"); |
||||||
|
+ g_ptr_array_add (arguments, "4"); |
||||||
|
|
||||||
|
g_ptr_array_add (arguments, "-verbose"); |
||||||
|
if (state->debug_enabled) { |
||||||
|
g_ptr_array_add (arguments, "7"); |
||||||
|
} else { |
||||||
|
g_ptr_array_add (arguments, "3"); |
||||||
|
} |
||||||
|
|
||||||
|
if (state->debug_enabled) { |
||||||
|
g_ptr_array_add (arguments, "-core"); |
||||||
|
} |
||||||
|
g_ptr_array_add (arguments, NULL); |
||||||
|
|
||||||
|
subprocess = g_subprocess_launcher_spawnv (launcher, |
||||||
|
(const char * const *) arguments->pdata, |
||||||
|
&error); |
||||||
|
g_free (display_fd_string); |
||||||
|
g_clear_object (&launcher); |
||||||
|
g_ptr_array_free (arguments, TRUE); |
||||||
|
|
||||||
|
if (subprocess == NULL) { |
||||||
|
g_debug ("could not start X server: %s", error->message); |
||||||
|
goto out; |
||||||
|
} |
||||||
|
|
||||||
|
input_stream = g_unix_input_stream_new (pipe_fds[0], TRUE); |
||||||
|
data_stream = g_data_input_stream_new (input_stream); |
||||||
|
g_clear_object (&input_stream); |
||||||
|
|
||||||
|
display_number = g_data_input_stream_read_line (data_stream, |
||||||
|
-- |
||||||
|
2.14.2 |
||||||
|
|
@ -0,0 +1,195 @@ |
|||||||
|
From 45848cf2625eaec34a07c03fdee624c8a2cb76de Mon Sep 17 00:00:00 2001 |
||||||
|
From: Ray Strode <rstrode@redhat.com> |
||||||
|
Date: Wed, 3 Apr 2013 10:28:09 -0400 |
||||||
|
Subject: [PATCH 8/8] session: change default session |
||||||
|
|
||||||
|
We default to gnome-classic in rhel, unless overridden |
||||||
|
by /etc/sysconfig/desktop |
||||||
|
--- |
||||||
|
daemon/gdm-session.c | 100 +++++++++++++++++++++++++++++++++++++++++++++++++++ |
||||||
|
1 file changed, 100 insertions(+) |
||||||
|
|
||||||
|
diff --git a/daemon/gdm-session.c b/daemon/gdm-session.c |
||||||
|
index f62f77d0..d6f1e121 100644 |
||||||
|
--- a/daemon/gdm-session.c |
||||||
|
+++ b/daemon/gdm-session.c |
||||||
|
@@ -495,76 +495,176 @@ get_session_command_for_name (GdmSession *self, |
||||||
|
{ |
||||||
|
gboolean res; |
||||||
|
char *filename; |
||||||
|
|
||||||
|
filename = g_strdup_printf ("%s.desktop", name); |
||||||
|
res = get_session_command_for_file (self, filename, command); |
||||||
|
g_free (filename); |
||||||
|
|
||||||
|
return res; |
||||||
|
} |
||||||
|
|
||||||
|
static const char * |
||||||
|
get_default_language_name (GdmSession *self) |
||||||
|
{ |
||||||
|
const char *default_language; |
||||||
|
|
||||||
|
if (self->priv->saved_language != NULL) { |
||||||
|
return self->priv->saved_language; |
||||||
|
} |
||||||
|
|
||||||
|
default_language = g_hash_table_lookup (self->priv->environment, |
||||||
|
"LANG"); |
||||||
|
|
||||||
|
if (default_language != NULL) { |
||||||
|
return default_language; |
||||||
|
} |
||||||
|
|
||||||
|
return setlocale (LC_MESSAGES, NULL); |
||||||
|
} |
||||||
|
|
||||||
|
+static const char * |
||||||
|
+get_configured_default_session_name (GdmSession *self) |
||||||
|
+{ |
||||||
|
+ static const char *config_file = "/etc/sysconfig/desktop"; |
||||||
|
+ const char *session_name = "gnome-classic"; |
||||||
|
+ gchar *contents = NULL; |
||||||
|
+ gchar *p; |
||||||
|
+ gsize length; |
||||||
|
+ GError *error; |
||||||
|
+ GString *line; |
||||||
|
+ GRegex *re; |
||||||
|
+ |
||||||
|
+ if (!g_file_test (config_file, G_FILE_TEST_EXISTS)) { |
||||||
|
+ g_debug ("Cannot access '%s'", config_file); |
||||||
|
+ return session_name; |
||||||
|
+ } |
||||||
|
+ |
||||||
|
+ error = NULL; |
||||||
|
+ if (!g_file_get_contents (config_file, &contents, &length, &error)) { |
||||||
|
+ g_debug ("Failed to parse '%s': %s", |
||||||
|
+ config_file, |
||||||
|
+ (error && error->message) ? error->message : "(null)"); |
||||||
|
+ g_error_free (error); |
||||||
|
+ return session_name; |
||||||
|
+ } |
||||||
|
+ |
||||||
|
+ if (!g_utf8_validate (contents, length, NULL)) { |
||||||
|
+ g_warning ("Invalid UTF-8 in '%s'", config_file); |
||||||
|
+ g_free (contents); |
||||||
|
+ return session_name; |
||||||
|
+ } |
||||||
|
+ |
||||||
|
+ re = g_regex_new ("DESKTOP=\"?KDE\"?[ \t]*", 0, 0, &error); |
||||||
|
+ if (re == NULL) { |
||||||
|
+ g_warning ("Failed to regex: %s", |
||||||
|
+ (error && error->message) ? error->message : "(null)"); |
||||||
|
+ g_error_free (error); |
||||||
|
+ g_free (contents); |
||||||
|
+ return session_name; |
||||||
|
+ } |
||||||
|
+ |
||||||
|
+ line = g_string_new (""); |
||||||
|
+ for (p = contents; p && *p; p = g_utf8_find_next_char (p, NULL)) { |
||||||
|
+ gunichar ch; |
||||||
|
+ GMatchInfo *match_info = NULL; |
||||||
|
+ |
||||||
|
+ ch = g_utf8_get_char (p); |
||||||
|
+ if ((ch != '\n') && (ch != '\0')) { |
||||||
|
+ g_string_append_unichar (line, ch); |
||||||
|
+ continue; |
||||||
|
+ } |
||||||
|
+ |
||||||
|
+ if (line->str && g_utf8_get_char (line->str) == '#') { |
||||||
|
+ goto next_line; |
||||||
|
+ } |
||||||
|
+ |
||||||
|
+ if (!g_regex_match (re, line->str, 0, &match_info)) { |
||||||
|
+ goto next_line; |
||||||
|
+ } |
||||||
|
+ |
||||||
|
+ if (!g_match_info_matches (match_info)) { |
||||||
|
+ goto next_line; |
||||||
|
+ } |
||||||
|
+ |
||||||
|
+ session_name = "1-kde-plasma-standard"; |
||||||
|
+ break; |
||||||
|
+ |
||||||
|
+next_line: |
||||||
|
+ g_match_info_free (match_info); |
||||||
|
+ g_string_set_size (line, 0); |
||||||
|
+ } |
||||||
|
+ |
||||||
|
+ g_string_free (line, TRUE); |
||||||
|
+ g_regex_unref (re); |
||||||
|
+ g_free (contents); |
||||||
|
+ |
||||||
|
+ return session_name; |
||||||
|
+} |
||||||
|
+ |
||||||
|
static const char * |
||||||
|
get_fallback_session_name (GdmSession *self) |
||||||
|
{ |
||||||
|
char **search_dirs; |
||||||
|
+ const char *configured_session; |
||||||
|
int i; |
||||||
|
char *name; |
||||||
|
GSequence *sessions; |
||||||
|
GSequenceIter *session; |
||||||
|
|
||||||
|
if (self->priv->fallback_session_name != NULL) { |
||||||
|
/* verify that the cached version still exists */ |
||||||
|
if (get_session_command_for_name (self, self->priv->fallback_session_name, NULL)) { |
||||||
|
goto out; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
+ configured_session = get_configured_default_session_name (self); |
||||||
|
+ |
||||||
|
+ name = g_strdup (configured_session); |
||||||
|
+ if (get_session_command_for_name (self, name, NULL)) { |
||||||
|
+ g_free (self->priv->fallback_session_name); |
||||||
|
+ self->priv->fallback_session_name = name; |
||||||
|
+ goto out; |
||||||
|
+ } |
||||||
|
+ g_free (name); |
||||||
|
+ |
||||||
|
+ if (g_strcmp0 (configured_session, "gnome-classic") != 0) { |
||||||
|
+ name = g_strdup ("gnome-classic"); |
||||||
|
+ if (get_session_command_for_name (self, name, NULL)) { |
||||||
|
+ g_free (self->priv->fallback_session_name); |
||||||
|
+ self->priv->fallback_session_name = name; |
||||||
|
+ goto out; |
||||||
|
+ } |
||||||
|
+ g_free (name); |
||||||
|
+ } |
||||||
|
+ |
||||||
|
name = g_strdup ("gnome"); |
||||||
|
if (get_session_command_for_name (self, name, NULL)) { |
||||||
|
g_free (self->priv->fallback_session_name); |
||||||
|
self->priv->fallback_session_name = name; |
||||||
|
goto out; |
||||||
|
} |
||||||
|
g_free (name); |
||||||
|
|
||||||
|
sessions = g_sequence_new (g_free); |
||||||
|
|
||||||
|
search_dirs = get_system_session_dirs (self); |
||||||
|
for (i = 0; search_dirs[i] != NULL; i++) { |
||||||
|
GDir *dir; |
||||||
|
const char *base_name; |
||||||
|
|
||||||
|
dir = g_dir_open (search_dirs[i], 0, NULL); |
||||||
|
|
||||||
|
if (dir == NULL) { |
||||||
|
continue; |
||||||
|
} |
||||||
|
|
||||||
|
do { |
||||||
|
base_name = g_dir_read_name (dir); |
||||||
|
|
||||||
|
if (base_name == NULL) { |
||||||
|
break; |
||||||
|
} |
||||||
|
|
||||||
|
if (!g_str_has_suffix (base_name, ".desktop")) { |
||||||
|
continue; |
||||||
|
-- |
||||||
|
2.14.2 |
||||||
|
|
@ -0,0 +1,53 @@ |
|||||||
|
From 5337f1094ecedf50bcfb9a000ac6b99bd95ffea2 Mon Sep 17 00:00:00 2001 |
||||||
|
From: Ray Strode <rstrode@redhat.com> |
||||||
|
Date: Fri, 14 Mar 2014 11:04:49 -0400 |
||||||
|
Subject: [PATCH 5/8] 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 72201c1f..b58f4c61 100644 |
||||||
|
--- a/data/gdm.service.in |
||||||
|
+++ b/data/gdm.service.in |
||||||
|
@@ -1,34 +1,35 @@ |
||||||
|
[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@ |
||||||
|
ExecReload=/bin/kill -SIGHUP $MAINPID |
||||||
|
|
||||||
|
[Install] |
||||||
|
Alias=display-manager.service |
||||||
|
-- |
||||||
|
2.14.2 |
||||||
|
|
@ -0,0 +1,3 @@ |
|||||||
|
[org.gnome.login-screen] |
||||||
|
logo='/usr/share/pixmaps/fedora-gdm-logo.png' |
||||||
|
enable-smartcard-authentication=true |
@ -0,0 +1,24 @@ |
|||||||
|
From 2cd39fafe8109a41d1e87b8ba89a2c3229d71a01 Mon Sep 17 00:00:00 2001 |
||||||
|
From: Ray Strode <rstrode@redhat.com> |
||||||
|
Date: Wed, 31 Jul 2013 17:32:55 -0400 |
||||||
|
Subject: [PATCH 7/8] data: add system dconf databases to gdm profile |
||||||
|
|
||||||
|
This way system settings can affect the login screen. |
||||||
|
--- |
||||||
|
data/dconf/gdm.in | 4 ++++ |
||||||
|
1 file changed, 4 insertions(+) |
||||||
|
|
||||||
|
diff --git a/data/dconf/gdm.in b/data/dconf/gdm.in |
||||||
|
index 4d8bf174..9694078f 100644 |
||||||
|
--- a/data/dconf/gdm.in |
||||||
|
+++ b/data/dconf/gdm.in |
||||||
|
@@ -1,2 +1,6 @@ |
||||||
|
user-db:user |
||||||
|
+system-db:gdm |
||||||
|
+system-db:local |
||||||
|
+system-db:site |
||||||
|
+system-db:distro |
||||||
|
file-db:@DATADIR@/@PACKAGE@/greeter-dconf-defaults |
||||||
|
-- |
||||||
|
2.14.2 |
||||||
|
|
Loading…
Reference in new issue