From ff546803f7d7383dad26087df4428a7a901b7b49 Mon Sep 17 00:00:00 2001 From: eabdullin Date: Wed, 20 Nov 2024 13:13:05 +0000 Subject: [PATCH] import RHEL 10 Beta gdm-47~alpha-4.el10 --- .gdm.metadata | 1 - .gitignore | 2 +- 0001-Add-headless-session-files.patch | 219 ++ ...tup-being-disabled-by-distro-install.patch | 70 + ...ystem-dconf-databases-to-gdm-profile.patch | 6 +- 0001-xorg-detect.patch | 19 + ...tup-being-disabled-by-distro-install.patch | 159 - ...nd-x-session-don-t-overwrite-user-en.patch | 241 -- ...ld-Support-keyutils-1.5.11-and-older.patch | 86 - .../0001-daemon-Don-t-error-on-shutdown.patch | 570 --- ...sion-type-from-desktop-file-if-user-.patch | 87 - ...etwork-configuration-on-login-screen.patch | 103 - ...-disable-wayland-on-certain-hardware.patch | 63 - ...1-data-reap-gdm-sessions-on-shutdown.patch | 55 - ...-failure-before-display-registration.patch | 155 - ...ctory-Don-t-try-to-respawn-displays-.patch | 325 -- ...ctory-Provide-more-flexibility-for-c.patch | 2765 ------------- ...ltiple-xdmcp-logins-for-the-same-use.patch | 344 -- ...ion-of-Xorg-versions-that-need-liste.patch | 144 - ...-meson-set-D_GNU_SOURCE-for-updwtmpx.patch | 81 - ...et-session_vt-0-out-of-pam-uninitial.patch | 84 - SOURCES/0001-utils-Drop-gdm-screenshot.patch | 362 -- ...d-user-settings-for-program-sessions.patch | 565 --- ...-servers-built-with-Dlisten_tcp-true.patch | 327 -- ...n-run-session-bus-on-non-seat0-seats.patch | 151 - SOURCES/0002-libgdm-Sort-session-list.patch | 131 - ...2-manager-Fix-btmp-record-accounting.patch | 227 -- ...last-cryptsetup-password-instead-of-.patch | 119 - ...new-accountsservice-Session-and-Sess.patch | 1698 -------- ...n-save-os-release-in-accountsservice.patch | 611 --- ...ogin-screen-over-XDMCP-connects-to-i.patch | 105 - ...ctory-Set-supported-session-types-fo.patch | 122 - ...4-daemon-handle-upgrades-from-RHEL-7.patch | 250 -- ...ctory-Don-t-crash-if-Xorg-and-Waylan.patch | 96 - SPECS/gdm.spec | 3352 ---------------- .../default.pa-for-gdm => default.pa-for-gdm | 0 gdm.spec | 3467 +++++++++++++++++ gdm.sysusers | 1 + ...=> org.gnome.login-screen.gschema.override | 0 sources | 1 + wayland-only.patch | 311 ++ 41 files changed, 4092 insertions(+), 13383 deletions(-) delete mode 100644 .gdm.metadata create mode 100644 0001-Add-headless-session-files.patch create mode 100644 0001-Honor-initial-setup-being-disabled-by-distro-install.patch rename SOURCES/0001-data-add-system-dconf-databases-to-gdm-profile.patch => 0001-data-add-system-dconf-databases-to-gdm-profile.patch (77%) create mode 100644 0001-xorg-detect.patch delete mode 100644 SOURCES/0001-Honor-initial-setup-being-disabled-by-distro-install.patch delete mode 100644 SOURCES/0001-Revert-gdm-wayland-x-session-don-t-overwrite-user-en.patch delete mode 100644 SOURCES/0001-build-Support-keyutils-1.5.11-and-older.patch delete mode 100644 SOURCES/0001-daemon-Don-t-error-on-shutdown.patch delete mode 100644 SOURCES/0001-daemon-Infer-session-type-from-desktop-file-if-user-.patch delete mode 100644 SOURCES/0001-data-Disable-network-configuration-on-login-screen.patch delete mode 100644 SOURCES/0001-data-disable-wayland-on-certain-hardware.patch delete mode 100644 SOURCES/0001-data-reap-gdm-sessions-on-shutdown.patch delete mode 100644 SOURCES/0001-display-Handle-failure-before-display-registration.patch delete mode 100644 SOURCES/0001-local-display-factory-Don-t-try-to-respawn-displays-.patch delete mode 100644 SOURCES/0001-local-display-factory-Provide-more-flexibility-for-c.patch delete mode 100644 SOURCES/0001-manager-allow-multiple-xdmcp-logins-for-the-same-use.patch delete mode 100644 SOURCES/0001-meson-Fix-detection-of-Xorg-versions-that-need-liste.patch delete mode 100644 SOURCES/0001-meson-set-D_GNU_SOURCE-for-updwtmpx.patch delete mode 100644 SOURCES/0001-session-worker-Set-session_vt-0-out-of-pam-uninitial.patch delete mode 100644 SOURCES/0001-utils-Drop-gdm-screenshot.patch delete mode 100644 SOURCES/0001-worker-don-t-load-user-settings-for-program-sessions.patch delete mode 100644 SOURCES/0002-daemon-Support-X-servers-built-with-Dlisten_tcp-true.patch delete mode 100644 SOURCES/0002-gdm-x-session-run-session-bus-on-non-seat0-seats.patch delete mode 100644 SOURCES/0002-libgdm-Sort-session-list.patch delete mode 100644 SOURCES/0002-manager-Fix-btmp-record-accounting.patch delete mode 100644 SOURCES/0002-pam_gdm-Use-the-last-cryptsetup-password-instead-of-.patch delete mode 100644 SOURCES/0002-session-support-new-accountsservice-Session-and-Sess.patch delete mode 100644 SOURCES/0003-daemon-save-os-release-in-accountsservice.patch delete mode 100644 SOURCES/0003-session-ensure-login-screen-over-XDMCP-connects-to-i.patch delete mode 100644 SOURCES/0003-xdmcp-display-factory-Set-supported-session-types-fo.patch delete mode 100644 SOURCES/0004-daemon-handle-upgrades-from-RHEL-7.patch delete mode 100644 SOURCES/0004-local-display-factory-Don-t-crash-if-Xorg-and-Waylan.patch delete mode 100644 SPECS/gdm.spec rename SOURCES/default.pa-for-gdm => default.pa-for-gdm (100%) create mode 100644 gdm.spec create mode 100644 gdm.sysusers rename SOURCES/org.gnome.login-screen.gschema.override => org.gnome.login-screen.gschema.override (100%) create mode 100644 sources create mode 100644 wayland-only.patch diff --git a/.gdm.metadata b/.gdm.metadata deleted file mode 100644 index 9840d19..0000000 --- a/.gdm.metadata +++ /dev/null @@ -1 +0,0 @@ -05c48de8765bde97768b6740417ad6c374c20763 SOURCES/gdm-40.0.tar.xz diff --git a/.gitignore b/.gitignore index 77cb1f5..219c84d 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -SOURCES/gdm-40.0.tar.xz +gdm-47.alpha.tar.xz diff --git a/0001-Add-headless-session-files.patch b/0001-Add-headless-session-files.patch new file mode 100644 index 0000000..9ea57eb --- /dev/null +++ b/0001-Add-headless-session-files.patch @@ -0,0 +1,219 @@ +From a8a0d952293337544da4681f0c896052eafd9d0f Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Jonas=20=C3=85dahl?= +Date: Fri, 5 Apr 2024 16:44:07 +0200 +Subject: [PATCH] Add headless session files + +It consists of a python script for running the session, and a systemd +system service template. +--- + data/gnome-headless-session@.service | 6 + + data/meson.build | 4 + + utils/gdm-headless-login-session | 157 +++++++++++++++++++++++++++ + utils/meson.build | 5 + + 4 files changed, 172 insertions(+) + create mode 100644 data/gnome-headless-session@.service + create mode 100644 utils/gdm-headless-login-session + +diff --git a/data/gnome-headless-session@.service b/data/gnome-headless-session@.service +new file mode 100644 +index 000000000..269d16288 +--- /dev/null ++++ b/data/gnome-headless-session@.service +@@ -0,0 +1,6 @@ ++[Unit] ++Description=Headless desktop session ++ ++[Service] ++ExecStart=/usr/libexec/gdm-headless-login-session --user=%i ++Restart=on-failure +diff --git a/data/meson.build b/data/meson.build +index 2211e98b5..2df07cd32 100644 +--- a/data/meson.build ++++ b/data/meson.build +@@ -221,3 +221,7 @@ if get_option('gdm-xsession') + install_dir: gdmconfdir, + ) + endif ++ ++headless_session_service = install_data('gnome-headless-session@.service', ++ install_dir: systemd_systemunitdir, ++ ) +diff --git a/utils/gdm-headless-login-session b/utils/gdm-headless-login-session +new file mode 100644 +index 000000000..e108be523 +--- /dev/null ++++ b/utils/gdm-headless-login-session +@@ -0,0 +1,157 @@ ++#!/usr/bin/env python3 ++ ++import argparse ++import pam ++import pwd ++import os ++import signal ++import sys ++ ++import gi ++gi.require_version('AccountsService', '1.0') ++from gi.repository import AccountsService, GLib ++ ++def run_desktop_in_new_session(pam_environment, user, session_desktop, tty_input, tty_output): ++ keyfile = GLib.KeyFile() ++ keyfile.load_from_data_dirs(f'wayland-sessions/{session_desktop}.desktop', ++ GLib.KeyFileFlags.NONE) ++ ++ try: ++ can_run_headless = keyfile.get_boolean(GLib.KEY_FILE_DESKTOP_GROUP, ++ 'X-GDM-CanRunHeadless') ++ except GLib.GError: ++ raise Exception(f"Session {session_desktop} can't run headlessly") ++ ++ if not can_run_headless: ++ raise Exception(f"Session {session_desktop} can't run headlessly") ++ ++ executable = keyfile.get_string(GLib.KEY_FILE_DESKTOP_GROUP, ++ GLib.KEY_FILE_DESKTOP_KEY_TRY_EXEC) ++ if GLib.find_program_in_path(executable) is None: ++ raise Exception(f"Invalid session {session_desktop}") ++ ++ command = keyfile.get_string(GLib.KEY_FILE_DESKTOP_GROUP, ++ GLib.KEY_FILE_DESKTOP_KEY_EXEC) ++ [success, args] = GLib.shell_parse_argv(command) ++ ++ pam_handle = pam.pam() ++ ++ for key, value in pam_environment.items(): ++ pam_handle.putenv(f'{key}={value}') ++ ++ if not pam_handle.authenticate(user, '', service='gdm-autologin', call_end=False): ++ raise Exception("Authentication failed") ++ ++ for key, value in pam_environment.items(): ++ pam_handle.putenv(f'{key}={value}') ++ ++ if pam_handle.open_session() != pam.PAM_SUCCESS: ++ raise Exception("Failed to open PAM session") ++ ++ session_environment = os.environ.copy() ++ session_environment.update(pam_handle.getenvlist()) ++ ++ user_info = pwd.getpwnam(user) ++ uid = user_info.pw_uid ++ gid = user_info.pw_gid ++ ++ old_tty_output = os.fdopen(os.dup(2), 'w') ++ ++ pid = os.fork() ++ if pid == 0: ++ try: ++ os.setsid() ++ except OSError as e: ++ print(f"Could not create new pid session: {e}", file=old_tty_output) ++ ++ try: ++ os.dup2(tty_input.fileno(), 0) ++ os.dup2(tty_output.fileno(), 1) ++ os.dup2(tty_output.fileno(), 2) ++ except OSError as e: ++ print(f"Could not set up standard i/o: {e}", file=old_tty_output) ++ ++ try: ++ os.initgroups(user, gid) ++ os.setgid(gid) ++ os.setuid(uid); ++ except OSError as e: ++ print(f"Could not become user {user} (uid={uid}): {e}", file=old_tty_output) ++ ++ try: ++ os.execvpe(args[0], args, session_environment) ++ except OSError as e: ++ print(f"Could not run program \"{' '.join(arguments)}\": {e}", file=old_tty_output) ++ os._exit(1) ++ ++ ++ def signal_handler(sig, frame): ++ os.kill(pid, sig) ++ ++ signal.signal(signal.SIGTERM, signal_handler) ++ ++ try: ++ (_, exit_code) = os.waitpid(pid, 0); ++ except KeyboardInterrupt: ++ os.kill(pid, signal.SIGTERM) ++ except OSError as e: ++ print(f"Could not wait for program to finish: {e}", file=old_tty_output) ++ ++ if os.WIFEXITED(exit_code): ++ exit_code = os.WEXITSTATUS(exit_code) ++ else: ++ os.kill(os.getpid(), os.WTERMSIG(exit_code)) ++ old_tty_output.close() ++ ++ if pam_handle.close_session() != pam.PAM_SUCCESS: ++ raise Exception("Failed to close PAM session") ++ ++ pam_handle.end() ++ ++ return exit_code ++ ++def wait_for_user_data(user): ++ main_context = GLib.MainContext.default() ++ while not user.is_loaded(): ++ main_context.iteration(True) ++ ++def main(): ++ parser = argparse.ArgumentParser(description='Run a desktop session in a PAM session as a specified user.') ++ parser.add_argument('--user', help='Username for which to run the session') ++ ++ args = parser.parse_args() ++ ++ if args.user is None: ++ parser.print_usage() ++ sys.exit(1) ++ ++ try: ++ tty_path = '/dev/null' ++ ++ tty_input = open(tty_path, 'r') ++ tty_output = open(tty_path, 'w') ++ except OSError as e: ++ raise Exception(f"Error opening /dev/null as tty associated with VT {vt}: {e}") ++ ++ user_manager = AccountsService.UserManager().get_default() ++ user = user_manager.get_user(args.user) ++ wait_for_user_data(user) ++ session_desktop = user.get_session() ++ if not session_desktop: ++ session_desktop = 'gnome' ++ ++ pam_environment = {} ++ pam_environment['XDG_SESSION_TYPE'] = 'wayland' ++ pam_environment['XDG_SESSION_CLASS'] = 'user' ++ pam_environment['XDG_SESSION_DESKTOP'] = session_desktop ++ ++ try: ++ result = run_desktop_in_new_session(pam_environment, args.user, session_desktop, tty_input, tty_output) ++ except Exception as e: ++ raise Exception(f"Error running desktop session \"{session_desktop}\": {e}") ++ tty_input.close() ++ tty_output.close() ++ sys.exit(result) ++ ++if __name__ == '__main__': ++ main() +diff --git a/utils/meson.build b/utils/meson.build +index e4141fb13..57dd6519f 100644 +--- a/utils/meson.build ++++ b/utils/meson.build +@@ -65,3 +65,8 @@ if distro != 'none' + install_dir: get_option('libexecdir'), + ) + endif ++ ++gdm_headless_login_session = install_data('gdm-headless-login-session', ++ install_mode: 'rwxr-xr-x', ++ install_dir: get_option('libexecdir'), ++ ) +-- +2.44.0 + diff --git a/0001-Honor-initial-setup-being-disabled-by-distro-install.patch b/0001-Honor-initial-setup-being-disabled-by-distro-install.patch new file mode 100644 index 0000000..b46e5e4 --- /dev/null +++ b/0001-Honor-initial-setup-being-disabled-by-distro-install.patch @@ -0,0 +1,70 @@ +From 42b18e4c84d470f33cdec5fc1f481cb25c25cf0d Mon Sep 17 00:00:00 2001 +From: Rui Matos +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/gdm-display.c b/daemon/gdm-display.c +index 5e193f2..878be88 100644 +--- a/daemon/gdm-display.c ++++ b/daemon/gdm-display.c +@@ -1547,6 +1547,31 @@ kernel_cmdline_initial_setup_force_state (gboolean *force_state) + 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) + { +@@ -1587,6 +1612,10 @@ wants_initial_setup (GdmDisplay *self) + return FALSE; + } + ++ if (initial_setup_disabled_by_anaconda ()) { ++ return FALSE; ++ } ++ + return enabled; + } + +-- +2.19.0 + diff --git a/SOURCES/0001-data-add-system-dconf-databases-to-gdm-profile.patch b/0001-data-add-system-dconf-databases-to-gdm-profile.patch similarity index 77% rename from SOURCES/0001-data-add-system-dconf-databases-to-gdm-profile.patch rename to 0001-data-add-system-dconf-databases-to-gdm-profile.patch index 8fa2615..2985995 100644 --- a/SOURCES/0001-data-add-system-dconf-databases-to-gdm-profile.patch +++ b/0001-data-add-system-dconf-databases-to-gdm-profile.patch @@ -1,7 +1,7 @@ -From 8c9fe8ebd9e584adaec0a80ee4c4eaf5357422a5 Mon Sep 17 00:00:00 2001 +From b1557adf711577c62609f8a784f11fad66eb54ef Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Wed, 31 Jul 2013 17:32:55 -0400 -Subject: [PATCH 1/2] data: add system dconf databases to gdm profile +Subject: [PATCH] data: add system dconf databases to gdm profile This way system settings can affect the login screen. --- @@ -20,5 +20,5 @@ index 4d8bf1748..9694078fb 100644 +system-db:distro file-db:@DATADIR@/@PACKAGE@/greeter-dconf-defaults -- -2.30.1 +2.28.0 diff --git a/0001-xorg-detect.patch b/0001-xorg-detect.patch new file mode 100644 index 0000000..f5fa532 --- /dev/null +++ b/0001-xorg-detect.patch @@ -0,0 +1,19 @@ +Avoid the Xorg build-time dependency, as we already know the answers +to the questions that are trying to be determined. + +diff --git a/meson.build b/meson.build +index bf0e58506..7d8f964c3 100644 +--- a/meson.build ++++ b/meson.build +@@ -92,8 +92,9 @@ if find_x_server_out != '' + else + # what to do, what to do, this is wrong, but this just sets the + # defaults, perhaps this user is cross compiling or some such +- x_path = '/usr/bin/X11:/usr/X11R6/bin:/opt/X11R6/bin' +- x_bin = '/usr/bin/X' ++ x_path = '/usr/bin' ++ x_bin = '/usr/bin/Xorg' ++ xserver_has_listen = true + endif + xdmcp_dep = cc.find_library('Xdmcp', required: get_option('xdmcp')) + if xdmcp_dep.found() and get_option('tcp-wrappers') diff --git a/SOURCES/0001-Honor-initial-setup-being-disabled-by-distro-install.patch b/SOURCES/0001-Honor-initial-setup-being-disabled-by-distro-install.patch deleted file mode 100644 index 9a1fb1f..0000000 --- a/SOURCES/0001-Honor-initial-setup-being-disabled-by-distro-install.patch +++ /dev/null @@ -1,159 +0,0 @@ -From a447cd87b99868348ecf69479eb7958f20a318a2 Mon Sep 17 00:00:00 2001 -From: Rui Matos -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/gdm-display.c | 29 +++++++++++++++++++++++++++++ - 1 file changed, 29 insertions(+) - -diff --git a/daemon/gdm-display.c b/daemon/gdm-display.c -index 687e7da4b..b3bdf066d 100644 ---- a/daemon/gdm-display.c -+++ b/daemon/gdm-display.c -@@ -1591,103 +1591,132 @@ 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) - { - GdmDisplayPrivate *priv; - gboolean enabled = FALSE; - gboolean forced = FALSE; - - priv = gdm_display_get_instance_private (self); - - 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: Forcing no gnome-initial-setup"); - return FALSE; - } - - /* don't run initial-setup on remote displays - */ - if (!priv->is_local) { - return FALSE; - } - - /* don't run if the system has existing users */ - if (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) - { - GdmDisplayPrivate *priv; - GdmSession *session; - char *display_name; - char *seat_id; - char *hostname; - char *auth_file = NULL; - - priv = gdm_display_get_instance_private (self); - g_return_if_fail (g_strcmp0 (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 (priv->access_file != NULL) { - auth_file = gdm_display_access_file_get_path (priv->access_file); - } --- -2.28.0 - diff --git a/SOURCES/0001-Revert-gdm-wayland-x-session-don-t-overwrite-user-en.patch b/SOURCES/0001-Revert-gdm-wayland-x-session-don-t-overwrite-user-en.patch deleted file mode 100644 index 4f36edc..0000000 --- a/SOURCES/0001-Revert-gdm-wayland-x-session-don-t-overwrite-user-en.patch +++ /dev/null @@ -1,241 +0,0 @@ -From 85951a0384cb7f37d99669575fad4aea155f25a8 Mon Sep 17 00:00:00 2001 -From: Ray Strode -Date: Wed, 5 May 2021 10:50:56 -0400 -Subject: [PATCH 1/5] Revert "gdm-{wayland,x}-session: don't overwrite user env - with fallback vars" - -This reverts commit ccecd9c975d04da80db4cd547b67a1a94fa83292. ---- - daemon/gdm-wayland-session.c | 22 +--------------------- - daemon/gdm-x-session.c | 22 +--------------------- - 2 files changed, 2 insertions(+), 42 deletions(-) - -diff --git a/daemon/gdm-wayland-session.c b/daemon/gdm-wayland-session.c -index d0404d2c1..35679b194 100644 ---- a/daemon/gdm-wayland-session.c -+++ b/daemon/gdm-wayland-session.c -@@ -262,112 +262,92 @@ on_session_finished (GSubprocess *subprocess, - - state->session_exit_status = exit_status; - } else { - int signal_number; - - signal_number = g_subprocess_get_term_sig (subprocess); - g_debug ("session was killed with status %d", signal_number); - } - - g_clear_object (&state->session_subprocess); - out: - g_main_loop_quit (state->main_loop); - } - - static gboolean - spawn_session (State *state, - GCancellable *cancellable) - { - GSubprocessLauncher *launcher = NULL; - GSubprocess *subprocess = NULL; - GError *error = NULL; - gboolean is_running = FALSE; - int ret; - char **argv = NULL; - static const char *session_variables[] = { "DISPLAY", - "XAUTHORITY", - "WAYLAND_DISPLAY", - "WAYLAND_SOCKET", - "GNOME_SHELL_SESSION_MODE", - NULL }; -- /* The environment variables listed below are those we have set (or -- * received from our own execution environment) only as a fallback to -- * make things work, as opposed to a information directly pertaining to -- * the session about to be started. Variables listed here will not -- * overwrite the existing environment (possibly) imported from the -- * systemd --user instance. -- * As an example: We need a PATH for some of the launched subprocesses -- * to work, but if the user (or the distributor) has customized the PATH -- * via one of systemds user-environment-generators, that version should -- * be preferred. */ -- static const char *fallback_variables[] = { "PATH", NULL }; - - g_debug ("Running wayland session"); - - ret = g_shell_parse_argv (state->session_command, - NULL, - &argv, - &error); - - if (!ret) { - g_debug ("could not parse session arguments: %s", error->message); - goto out; - } - - launcher = g_subprocess_launcher_new (G_SUBPROCESS_FLAGS_NONE); - - if (state->environment != NULL) { - size_t i; - - for (i = 0; state->environment[i] != NULL; i++) { - g_auto(GStrv) environment_entry = NULL; - - if (state->environment[i][0] == '\0') { - continue; - } - - environment_entry = g_strsplit (state->environment[i], "=", 2); - - if (environment_entry[0] == NULL || environment_entry[1] == NULL) { - continue; - } - -- /* Merge the environment block imported from systemd --user with the -- * environment we have set for ourselves (and thus pass on to the -- * launcher process). Variables we have set have precedence, as to not -- * import stale data from prior user sessions, with the exception of -- * those listed in fallback_variables. See the comment there for more -- * explanations. */ -- g_subprocess_launcher_setenv (launcher, -- environment_entry[0], -- environment_entry[1], -- g_strv_contains (fallback_variables, environment_entry[0])); -+ g_subprocess_launcher_setenv (launcher, environment_entry[0], environment_entry[1], FALSE); - } - - /* Don't allow session specific environment variables from earlier sessions to - * leak through */ - for (i = 0; session_variables[i] != NULL; i++) { - if (g_getenv (session_variables[i]) == NULL) { - g_subprocess_launcher_unsetenv (launcher, session_variables[i]); - } - } - } - - if (state->bus_address != NULL) { - g_subprocess_launcher_setenv (launcher, "DBUS_SESSION_BUS_ADDRESS", state->bus_address, TRUE); - } - - subprocess = g_subprocess_launcher_spawnv (launcher, - (const char * const *) argv, - &error); - g_strfreev (argv); - - if (subprocess == NULL) { - g_debug ("could not start session: %s", error->message); - goto out; - } - - state->session_subprocess = g_object_ref (subprocess); - - g_subprocess_wait_async (state->session_subprocess, - cancellable, - (GAsyncReadyCallback) -diff --git a/daemon/gdm-x-session.c b/daemon/gdm-x-session.c -index 5962da572..b15483614 100644 ---- a/daemon/gdm-x-session.c -+++ b/daemon/gdm-x-session.c -@@ -588,102 +588,82 @@ on_session_finished (GSubprocess *subprocess, - - state->session_exit_status = exit_status; - } else { - int signal_number; - - signal_number = g_subprocess_get_term_sig (subprocess); - g_debug ("session was killed with status %d", signal_number); - } - - g_clear_object (&state->session_subprocess); - out: - g_main_loop_quit (state->main_loop); - } - - static gboolean - spawn_session (State *state, - gboolean run_script, - GCancellable *cancellable) - { - GSubprocessLauncher *launcher = NULL; - GSubprocess *subprocess = NULL; - GError *error = NULL; - gboolean is_running = FALSE; - const char *vt; - static const char *session_variables[] = { "DISPLAY", - "XAUTHORITY", - "WAYLAND_DISPLAY", - "WAYLAND_SOCKET", - "GNOME_SHELL_SESSION_MODE", - NULL }; -- /* The environment variables listed below are those we have set (or -- * received from our own execution environment) only as a fallback to -- * make things work, as opposed to a information directly pertaining to -- * the session about to be started. Variables listed here will not -- * overwrite the existing environment (possibly) imported from the -- * systemd --user instance. -- * As an example: We need a PATH for some of the launched subprocesses -- * to work, but if the user (or the distributor) has customized the PATH -- * via one of systemds user-environment-generators, that version should -- * be preferred. */ -- static const char *fallback_variables[] = { "PATH", NULL }; - - g_debug ("Running X session"); - - launcher = g_subprocess_launcher_new (G_SUBPROCESS_FLAGS_NONE); - - if (state->environment != NULL) { - size_t i; - - for (i = 0; state->environment[i] != NULL; i++) { - g_auto(GStrv) environment_entry = NULL; - - if (state->environment[i][0] == '\0') { - continue; - } - - environment_entry = g_strsplit (state->environment[i], "=", 2); - - if (environment_entry[0] == NULL || environment_entry[1] == NULL) { - continue; - } - -- /* Merge the environment block imported from systemd --user with the -- * environment we have set for ourselves (and thus pass on to the -- * launcher process). Variables we have set have precedence, as to not -- * import stale data from prior user sessions, with the exception of -- * those listed in fallback_variables. See the comment there for more -- * explanations. */ -- g_subprocess_launcher_setenv (launcher, -- environment_entry[0], -- environment_entry[1], -- g_strv_contains (fallback_variables, environment_entry[0])); -+ g_subprocess_launcher_setenv (launcher, environment_entry[0], environment_entry[1], FALSE); - } - - /* Don't allow session specific environment variables from earlier sessions to - * leak through */ - for (i = 0; session_variables[i] != NULL; i++) { - if (g_getenv (session_variables[i]) == NULL) { - g_subprocess_launcher_unsetenv (launcher, session_variables[i]); - } - } - } - - g_subprocess_launcher_setenv (launcher, "DISPLAY", state->display_name, TRUE); - g_subprocess_launcher_setenv (launcher, "XAUTHORITY", state->auth_file, TRUE); - - if (state->bus_address != NULL) { - g_subprocess_launcher_setenv (launcher, "DBUS_SESSION_BUS_ADDRESS", state->bus_address, TRUE); - } - - vt = g_getenv ("XDG_VTNR"); - - if (vt != NULL) { - g_subprocess_launcher_setenv (launcher, "WINDOWPATH", vt, TRUE); - } - - if (run_script) { - subprocess = g_subprocess_launcher_spawn (launcher, - &error, - GDMCONFDIR "/Xsession", - state->session_command, - NULL); --- -2.30.1 - diff --git a/SOURCES/0001-build-Support-keyutils-1.5.11-and-older.patch b/SOURCES/0001-build-Support-keyutils-1.5.11-and-older.patch deleted file mode 100644 index 9a6fcdd..0000000 --- a/SOURCES/0001-build-Support-keyutils-1.5.11-and-older.patch +++ /dev/null @@ -1,86 +0,0 @@ -From 2fc7d94280a82e079129468d9b0db312725e5926 Mon Sep 17 00:00:00 2001 -From: Ray Strode -Date: Mon, 12 Dec 2022 15:37:38 -0500 -Subject: [PATCH 1/2] build: Support keyutils 1.5.11 and older - -keyutils didn't get a pkgconfig file until 1.6. - -This commit looks for the library directly if it can't find -the pkgconfig file. ---- - meson.build | 5 +++++ - 1 file changed, 5 insertions(+) - -diff --git a/meson.build b/meson.build -index 4a286f97..1a557e9a 100644 ---- a/meson.build -+++ b/meson.build -@@ -26,60 +26,65 @@ lang_config_file = (get_option('lang-file') != '')? get_option('lang-file') : gd - pam_mod_dir = (get_option('pam-mod-dir') != '')? get_option('pam-mod-dir') : gdm_prefix / get_option('libdir') / 'security' - dbus_sys_dir = (get_option('dbus-sys') != '')? get_option('dbus-sys') : get_option('sysconfdir') / 'dbus-1' / 'system.d' - gdm_defaults_conf = (get_option('defaults-conf') != '')? get_option('defaults-conf') : gdm_prefix / get_option('datadir') / 'gdm' / 'defaults.conf' - gdm_custom_conf = (get_option('custom-conf') != '')? get_option('custom-conf') : gdmconfdir / 'custom.conf' - gnome_settings_daemon_dir = (get_option('gnome-settings-daemon-dir') != '')? get_option('gnome-settings-daemon-dir') : gdm_prefix / get_option('libexecdir') - gdm_run_dir = (get_option('run-dir') != '')? get_option('run-dir') : gdm_prefix / get_option('localstatedir') / 'run' / 'gdm' - gdm_runtime_conf = (get_option('runtime-conf') != '')? get_option('runtime-conf') : gdm_run_dir / 'custom.conf' - gdm_pid_file = (get_option('pid-file') != '')? get_option('pid-file') : gdm_run_dir / 'gdm.pid' - ran_once_marker_dir = (get_option('ran-once-marker-dir') != '')? get_option('ran-once-marker-dir') : gdm_run_dir - working_dir = (get_option('working-dir') != '')? get_option('working-dir') : gdm_prefix / get_option('localstatedir') / 'lib' / 'gdm' - gdm_xauth_dir = (get_option('xauth-dir') != '')? get_option('xauth-dir') : gdm_run_dir - gdm_screenshot_dir = (get_option('screenshot-dir') != '')? get_option('screenshot-dir') : gdm_run_dir / 'greeter' - - # Common variables - config_h_dir = include_directories('.') - - # Dependencies - udev_dep = dependency('udev') - - glib_min_version = '2.56.0' - - glib_dep = dependency('glib-2.0', version: '>=' + glib_min_version) - gobject_dep = dependency('gobject-2.0', version: '>=' + glib_min_version) - gio_dep = dependency('gio-2.0', version: '>=' + glib_min_version) - gio_unix_dep = dependency('gio-unix-2.0', version: '>=' + glib_min_version) - gtk_dep = dependency('gtk+-3.0', version: '>= 2.91.1') - libcanberra_gtk_dep = dependency('libcanberra-gtk3', version: '>= 0.4') - accountsservice_dep = dependency('accountsservice', version: '>= 0.6.35') - xcb_dep = dependency('xcb') - keyutils_dep = dependency('libkeyutils', required: false) -+ -+if not keyutils_dep.found() -+ keyutils_dep = cc.find_library('libkeyutils') -+endif -+ - libselinux_dep = dependency('libselinux', required: get_option('selinux')) - - # udev - if udev_dir == '' - if udev_dep.found() - udev_prefix = udev_dep.get_pkgconfig_variable('udevdir') - else - udev_prefix = gdm_prefix / 'lib' / 'udev' - endif - udev_dir = udev_prefix / 'rules.d' - endif - - # X11 - x_deps = declare_dependency( - dependencies: [ - dependency('x11'), - dependency('xau'), - ], - ) - # Xserver 1.17 & later default to -nolisten and require -listen for remote access - xserver_deps = dependency('xorg-server', version : '>=1.17', required : false) - xserver_has_listen = xserver_deps.found() - find_x_server_script = find_program('build-aux/find-x-server.sh', native: true) - find_x_server_out = run_command(find_x_server_script).stdout().strip() - if find_x_server_out != '' - x_bin = find_x_server_out - x_bin_path_split = x_bin.split('/') - i = 0 - x_path = '/' - foreach dir : x_bin_path_split --- -2.35.1 - diff --git a/SOURCES/0001-daemon-Don-t-error-on-shutdown.patch b/SOURCES/0001-daemon-Don-t-error-on-shutdown.patch deleted file mode 100644 index 1949713..0000000 --- a/SOURCES/0001-daemon-Don-t-error-on-shutdown.patch +++ /dev/null @@ -1,570 +0,0 @@ -From fbdb5fdfc5f4c5569643239cae1d6fe5fac13717 Mon Sep 17 00:00:00 2001 -From: Ray Strode -Date: Mon, 12 Dec 2022 10:52:58 -0500 -Subject: [PATCH] daemon: Don't error on shutdown - -Right now we complain if shutdown happens while the display is -comming up. - -This commit detects that case and avoids the error in that case. ---- - daemon/gdm-display.c | 28 +++++++++++++++++++++++++++- - daemon/gdm-manager.c | 11 +++++++---- - 2 files changed, 34 insertions(+), 5 deletions(-) - -diff --git a/daemon/gdm-display.c b/daemon/gdm-display.c -index 9438fe72..a93857e9 100644 ---- a/daemon/gdm-display.c -+++ b/daemon/gdm-display.c -@@ -66,86 +66,88 @@ typedef struct _GdmDisplayPrivate - char *x11_display_name; - int status; - time_t creation_time; - - char *x11_cookie; - gsize x11_cookie_size; - GdmDisplayAccessFile *access_file; - - guint finish_idle_id; - - xcb_connection_t *xcb_connection; - int xcb_screen_number; - - GDBusConnection *connection; - GdmDisplayAccessFile *user_access_file; - - GdmDBusDisplay *display_skeleton; - GDBusObjectSkeleton *object_skeleton; - - GDBusProxy *accountsservice_proxy; - - /* this spawns and controls the greeter session */ - GdmLaunchEnvironment *launch_environment; - - guint is_local : 1; - guint is_initial : 1; - guint allow_timed_login : 1; - guint have_existing_user_accounts : 1; - guint doing_initial_setup : 1; - guint session_registered : 1; -+ guint shutting_down : 1; - - GStrv supported_session_types; - } GdmDisplayPrivate; - - enum { - PROP_0, - PROP_ID, - PROP_STATUS, - PROP_SEAT_ID, - PROP_SESSION_ID, - PROP_SESSION_CLASS, - PROP_SESSION_TYPE, - PROP_REMOTE_HOSTNAME, - PROP_X11_DISPLAY_NUMBER, - PROP_X11_DISPLAY_NAME, - PROP_X11_COOKIE, - PROP_X11_AUTHORITY_FILE, - PROP_IS_CONNECTED, - PROP_IS_LOCAL, - PROP_LAUNCH_ENVIRONMENT, - PROP_IS_INITIAL, - PROP_ALLOW_TIMED_LOGIN, - PROP_HAVE_EXISTING_USER_ACCOUNTS, - PROP_DOING_INITIAL_SETUP, - PROP_SESSION_REGISTERED, - PROP_SUPPORTED_SESSION_TYPES, -+ PROP_SHUTTING_DOWN, - }; - - static void gdm_display_class_init (GdmDisplayClass *klass); - static void gdm_display_init (GdmDisplay *self); - static void gdm_display_finalize (GObject *object); - static void queue_finish (GdmDisplay *self); - static void _gdm_display_set_status (GdmDisplay *self, - int status); - static gboolean wants_initial_setup (GdmDisplay *self); - G_DEFINE_ABSTRACT_TYPE_WITH_PRIVATE (GdmDisplay, gdm_display, G_TYPE_OBJECT) - - GQuark - gdm_display_error_quark (void) - { - static GQuark ret = 0; - if (ret == 0) { - ret = g_quark_from_static_string ("gdm_display_error"); - } - - return ret; - } - - time_t - gdm_display_get_creation_time (GdmDisplay *self) - { - GdmDisplayPrivate *priv; - - g_return_val_if_fail (GDM_IS_DISPLAY (self), 0); - - priv = gdm_display_get_instance_private (self); -@@ -665,61 +667,61 @@ gdm_display_disconnect (GdmDisplay *self) - } - - xcb_flush (priv->xcb_connection); - - g_clear_pointer (&priv->xcb_connection, xcb_disconnect); - } - - gboolean - gdm_display_unmanage (GdmDisplay *self) - { - GdmDisplayPrivate *priv; - - g_return_val_if_fail (GDM_IS_DISPLAY (self), FALSE); - - priv = gdm_display_get_instance_private (self); - - gdm_display_disconnect (self); - - if (priv->user_access_file != NULL) { - gdm_display_access_file_close (priv->user_access_file); - g_object_unref (priv->user_access_file); - priv->user_access_file = NULL; - } - - if (priv->access_file != NULL) { - gdm_display_access_file_close (priv->access_file); - g_object_unref (priv->access_file); - priv->access_file = NULL; - } - -- if (!priv->session_registered) { -+ if (!priv->session_registered && !priv->shutting_down) { - g_warning ("GdmDisplay: Session never registered, failing"); - _gdm_display_set_status (self, GDM_DISPLAY_FAILED); - } else { - _gdm_display_set_status (self, GDM_DISPLAY_UNMANAGED); - } - - return TRUE; - } - - gboolean - gdm_display_get_id (GdmDisplay *self, - char **id, - GError **error) - { - GdmDisplayPrivate *priv; - - g_return_val_if_fail (GDM_IS_DISPLAY (self), FALSE); - - priv = gdm_display_get_instance_private (self); - if (id != NULL) { - *id = g_strdup (priv->id); - } - - return TRUE; - } - - gboolean - gdm_display_get_x11_display_name (GdmDisplay *self, - char **x11_display, - GError **error) -@@ -851,60 +853,70 @@ _gdm_display_set_x11_cookie (GdmDisplay *self, - { - GdmDisplayPrivate *priv; - - priv = gdm_display_get_instance_private (self); - g_free (priv->x11_cookie); - priv->x11_cookie = g_strdup (x11_cookie); - } - - static void - _gdm_display_set_is_local (GdmDisplay *self, - gboolean is_local) - { - GdmDisplayPrivate *priv; - - priv = gdm_display_get_instance_private (self); - g_debug ("GdmDisplay: local: %s", is_local? "yes" : "no"); - priv->is_local = is_local; - } - - static void - _gdm_display_set_session_registered (GdmDisplay *self, - gboolean registered) - { - GdmDisplayPrivate *priv; - - priv = gdm_display_get_instance_private (self); - g_debug ("GdmDisplay: session registered: %s", registered? "yes" : "no"); - priv->session_registered = registered; - } - -+static void -+_gdm_display_set_shutting_down (GdmDisplay *self, -+ gboolean shutting_down) -+{ -+ GdmDisplayPrivate *priv; -+ -+ priv = gdm_display_get_instance_private (self); -+ priv->shutting_down = shutting_down; -+} -+ - static void - _gdm_display_set_launch_environment (GdmDisplay *self, - GdmLaunchEnvironment *launch_environment) - { - GdmDisplayPrivate *priv; - - priv = gdm_display_get_instance_private (self); - - g_clear_object (&priv->launch_environment); - - priv->launch_environment = g_object_ref (launch_environment); - } - - static void - _gdm_display_set_is_initial (GdmDisplay *self, - gboolean initial) - { - GdmDisplayPrivate *priv; - - priv = gdm_display_get_instance_private (self); - g_debug ("GdmDisplay: initial: %s", initial? "yes" : "no"); - priv->is_initial = initial; - } - - static void - _gdm_display_set_allow_timed_login (GdmDisplay *self, - gboolean allow_timed_login) - { - GdmDisplayPrivate *priv; - -@@ -962,60 +974,63 @@ gdm_display_set_property (GObject *object, - case PROP_REMOTE_HOSTNAME: - _gdm_display_set_remote_hostname (self, g_value_get_string (value)); - break; - case PROP_X11_DISPLAY_NUMBER: - _gdm_display_set_x11_display_number (self, g_value_get_int (value)); - break; - case PROP_X11_DISPLAY_NAME: - _gdm_display_set_x11_display_name (self, g_value_get_string (value)); - break; - case PROP_X11_COOKIE: - _gdm_display_set_x11_cookie (self, g_value_get_string (value)); - break; - case PROP_IS_LOCAL: - _gdm_display_set_is_local (self, g_value_get_boolean (value)); - break; - case PROP_ALLOW_TIMED_LOGIN: - _gdm_display_set_allow_timed_login (self, g_value_get_boolean (value)); - break; - case PROP_LAUNCH_ENVIRONMENT: - _gdm_display_set_launch_environment (self, g_value_get_object (value)); - break; - case PROP_IS_INITIAL: - _gdm_display_set_is_initial (self, g_value_get_boolean (value)); - break; - case PROP_SESSION_REGISTERED: - _gdm_display_set_session_registered (self, g_value_get_boolean (value)); - break; - case PROP_SUPPORTED_SESSION_TYPES: - _gdm_display_set_supported_session_types (self, g_value_get_boxed (value)); - break; -+ case PROP_SHUTTING_DOWN: -+ _gdm_display_set_shutting_down (self, g_value_get_boolean (value)); -+ break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; - } - } - - static void - gdm_display_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec) - { - GdmDisplay *self; - GdmDisplayPrivate *priv; - - self = GDM_DISPLAY (object); - priv = gdm_display_get_instance_private (self); - - switch (prop_id) { - case PROP_ID: - g_value_set_string (value, priv->id); - break; - case PROP_STATUS: - g_value_set_int (value, priv->status); - break; - case PROP_SEAT_ID: - g_value_set_string (value, priv->seat_id); - break; - case PROP_SESSION_ID: - g_value_set_string (value, priv->session_id); -@@ -1043,60 +1058,63 @@ gdm_display_get_property (GObject *object, - priv->access_file? - gdm_display_access_file_get_path (priv->access_file) : NULL); - break; - case PROP_IS_LOCAL: - g_value_set_boolean (value, priv->is_local); - break; - case PROP_IS_CONNECTED: - g_value_set_boolean (value, priv->xcb_connection != NULL); - break; - case PROP_LAUNCH_ENVIRONMENT: - g_value_set_object (value, priv->launch_environment); - break; - case PROP_IS_INITIAL: - g_value_set_boolean (value, priv->is_initial); - break; - case PROP_HAVE_EXISTING_USER_ACCOUNTS: - g_value_set_boolean (value, priv->have_existing_user_accounts); - break; - case PROP_DOING_INITIAL_SETUP: - g_value_set_boolean (value, priv->doing_initial_setup); - break; - case PROP_SESSION_REGISTERED: - g_value_set_boolean (value, priv->session_registered); - break; - case PROP_ALLOW_TIMED_LOGIN: - g_value_set_boolean (value, priv->allow_timed_login); - break; - case PROP_SUPPORTED_SESSION_TYPES: - g_value_set_boxed (value, priv->supported_session_types); - break; -+ case PROP_SHUTTING_DOWN: -+ g_value_set_boolean (value, priv->shutting_down); -+ break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; - } - } - - static gboolean - handle_get_id (GdmDBusDisplay *skeleton, - GDBusMethodInvocation *invocation, - GdmDisplay *self) - { - char *id; - - gdm_display_get_id (self, &id, NULL); - - gdm_dbus_display_complete_get_id (skeleton, invocation, id); - - g_free (id); - return TRUE; - } - - static gboolean - handle_get_remote_hostname (GdmDBusDisplay *skeleton, - GDBusMethodInvocation *invocation, - GdmDisplay *self) - { - char *hostname; - - gdm_display_get_remote_hostname (self, &hostname, NULL); - -@@ -1397,60 +1415,68 @@ gdm_display_class_init (GdmDisplayClass *klass) - g_param_spec_boolean ("session-registered", - NULL, - NULL, - FALSE, - G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property (object_class, - PROP_LAUNCH_ENVIRONMENT, - g_param_spec_object ("launch-environment", - NULL, - NULL, - GDM_TYPE_LAUNCH_ENVIRONMENT, - G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); - g_object_class_install_property (object_class, - PROP_STATUS, - g_param_spec_int ("status", - "status", - "status", - -1, - G_MAXINT, - GDM_DISPLAY_UNMANAGED, - G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property (object_class, - PROP_SUPPORTED_SESSION_TYPES, - g_param_spec_boxed ("supported-session-types", - "supported session types", - "supported session types", - G_TYPE_STRV, - G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS)); -+ -+ g_object_class_install_property (object_class, -+ PROP_SHUTTING_DOWN, -+ g_param_spec_boolean ("shutting-down", -+ NULL, -+ NULL, -+ FALSE, -+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); - } - - static void - gdm_display_init (GdmDisplay *self) - { - GdmDisplayPrivate *priv; - - priv = gdm_display_get_instance_private (self); - - priv->creation_time = time (NULL); - } - - static void - gdm_display_finalize (GObject *object) - { - GdmDisplay *self; - GdmDisplayPrivate *priv; - - g_return_if_fail (object != NULL); - g_return_if_fail (GDM_IS_DISPLAY (object)); - - self = GDM_DISPLAY (object); - priv = gdm_display_get_instance_private (self); - - g_return_if_fail (priv != NULL); - - g_debug ("GdmDisplay: Finalizing display: %s", priv->id); - g_free (priv->id); - g_free (priv->seat_id); - g_free (priv->session_class); -diff --git a/daemon/gdm-manager.c b/daemon/gdm-manager.c -index c70248f3..05851001 100644 ---- a/daemon/gdm-manager.c -+++ b/daemon/gdm-manager.c -@@ -2759,117 +2759,120 @@ gdm_manager_init (GdmManager *manager) - NULL, - (GDestroyNotify) - g_object_unref); - manager->priv->transient_sessions = g_hash_table_new_full (NULL, - NULL, - (GDestroyNotify) - NULL, - (GDestroyNotify) - g_object_unref); - g_signal_connect (G_OBJECT (manager->priv->display_store), - "display-added", - G_CALLBACK (on_display_added), - manager); - - g_signal_connect (G_OBJECT (manager->priv->display_store), - "display-removed", - G_CALLBACK (on_display_removed), - manager); - } - - static void - unexport_display (const char *id, - GdmDisplay *display, - GdmManager *manager) - { - if (!g_dbus_connection_is_closed (manager->priv->connection)) - g_dbus_object_manager_server_unexport (manager->priv->object_manager, id); - } - - static void --finish_display (const char *id, -- GdmDisplay *display, -- GdmManager *manager) -+shut_down_display (const char *id, -+ GdmDisplay *display, -+ GdmManager *manager) - { - gdm_display_stop_greeter_session (display); -+ -+ g_object_set (G_OBJECT (display), "shutting-down", TRUE, NULL); -+ - if (gdm_display_get_status (display) == GDM_DISPLAY_MANAGED) - gdm_display_unmanage (display); - gdm_display_finish (display); - } - - static void - gdm_manager_dispose (GObject *object) - { - GdmManager *manager; - - g_return_if_fail (object != NULL); - g_return_if_fail (GDM_IS_MANAGER (object)); - - manager = GDM_MANAGER (object); - - g_return_if_fail (manager->priv != NULL); - - gdm_manager_stop (manager); - - g_clear_weak_pointer (&manager->priv->automatic_login_display); - - #ifdef HAVE_LIBXDMCP - g_clear_object (&manager->priv->xdmcp_factory); - #endif - g_clear_object (&manager->priv->local_factory); - g_clear_pointer (&manager->priv->open_reauthentication_requests, - g_hash_table_unref); - g_clear_pointer (&manager->priv->transient_sessions, - g_hash_table_unref); - - g_list_foreach (manager->priv->user_sessions, - (GFunc) gdm_session_close, - NULL); - g_list_free_full (manager->priv->user_sessions, (GDestroyNotify) g_object_unref); - manager->priv->user_sessions = NULL; - - g_signal_handlers_disconnect_by_func (G_OBJECT (manager->priv->display_store), - G_CALLBACK (on_display_added), - manager); - g_signal_handlers_disconnect_by_func (G_OBJECT (manager->priv->display_store), - G_CALLBACK (on_display_removed), - manager); - - if (!g_dbus_connection_is_closed (manager->priv->connection)) { - gdm_display_store_foreach (manager->priv->display_store, - (GdmDisplayStoreFunc)unexport_display, - manager); - g_dbus_interface_skeleton_unexport (G_DBUS_INTERFACE_SKELETON (manager)); - } - - gdm_display_store_foreach (manager->priv->display_store, -- (GdmDisplayStoreFunc) finish_display, -+ (GdmDisplayStoreFunc) shut_down_display, - manager); - - gdm_display_store_clear (manager->priv->display_store); - - g_dbus_object_manager_server_set_connection (manager->priv->object_manager, NULL); - - g_clear_object (&manager->priv->connection); - g_clear_object (&manager->priv->object_manager); - g_clear_object (&manager->priv->display_store); - - G_OBJECT_CLASS (gdm_manager_parent_class)->dispose (object); - } - - GdmManager * - gdm_manager_new (void) - { - if (manager_object != NULL) { - g_object_ref (manager_object); - } else { - gboolean res; - - manager_object = g_object_new (GDM_TYPE_MANAGER, NULL); - g_object_add_weak_pointer (manager_object, - (gpointer *) &manager_object); - res = register_manager (manager_object); - if (! res) { - g_object_unref (manager_object); - return NULL; - } - } --- -2.37.0.rc1 - diff --git a/SOURCES/0001-daemon-Infer-session-type-from-desktop-file-if-user-.patch b/SOURCES/0001-daemon-Infer-session-type-from-desktop-file-if-user-.patch deleted file mode 100644 index 5c4e4c7..0000000 --- a/SOURCES/0001-daemon-Infer-session-type-from-desktop-file-if-user-.patch +++ /dev/null @@ -1,87 +0,0 @@ -From ff689b18fd0a5fd03e5941723cb2adff3b7e4b24 Mon Sep 17 00:00:00 2001 -From: Ray Strode -Date: Wed, 29 Sep 2021 11:03:41 -0400 -Subject: [PATCH] daemon: Infer session type from desktop file if user has no - saved session type - -The accountsservice user cache file can specify a session type -associated with the saved session. This is optional though. If one -isn't specified GDM needs to figure out the session type based on the -list of preferred session types for the system and the session file -itself. - -It was failing to do the latter, though. This commit fixes that. ---- - daemon/gdm-session.c | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/daemon/gdm-session.c b/daemon/gdm-session.c -index 29459346..72afe7b2 100644 ---- a/daemon/gdm-session.c -+++ b/daemon/gdm-session.c -@@ -988,60 +988,62 @@ worker_on_saved_language_name_read (GdmDBusWorker *worker, - } - } - } - - static void - worker_on_saved_session_name_read (GdmDBusWorker *worker, - const char *session_name, - GdmSessionConversation *conversation) - { - GdmSession *self = conversation->session; - - if (! get_session_command_for_name (self, session_name, NULL)) { - /* ignore sessions that don't exist */ - g_debug ("GdmSession: not using invalid .dmrc session: %s", session_name); - g_free (self->saved_session); - self->saved_session = NULL; - update_session_type (self); - } else { - if (strcmp (session_name, - get_default_session_name (self)) != 0) { - g_free (self->saved_session); - self->saved_session = g_strdup (session_name); - - if (self->greeter_interface != NULL) { - gdm_dbus_greeter_emit_default_session_name_changed (self->greeter_interface, - session_name); - } - } - if (self->saved_session_type != NULL) - set_session_type (self, self->saved_session_type); -+ else -+ update_session_type (self); - } - - } - - static GdmSessionConversation * - find_conversation_by_pid (GdmSession *self, - GPid pid) - { - GHashTableIter iter; - gpointer key, value; - - g_hash_table_iter_init (&iter, self->conversations); - while (g_hash_table_iter_next (&iter, &key, &value)) { - GdmSessionConversation *conversation; - - conversation = (GdmSessionConversation *) value; - - if (conversation->worker_pid == pid) { - return conversation; - } - } - - return NULL; - } - - static gboolean - allow_worker_function (GDBusAuthObserver *observer, - GIOStream *stream, - GCredentials *credentials, - GdmSession *self) --- -2.33.1 - diff --git a/SOURCES/0001-data-Disable-network-configuration-on-login-screen.patch b/SOURCES/0001-data-Disable-network-configuration-on-login-screen.patch deleted file mode 100644 index e87a1b7..0000000 --- a/SOURCES/0001-data-Disable-network-configuration-on-login-screen.patch +++ /dev/null @@ -1,103 +0,0 @@ -From cebcf2a4d29f01061dedf8714db2842b9582900c Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Florian=20M=C3=BCllner?= -Date: Tue, 8 Jun 2021 20:45:00 +0200 -Subject: [PATCH 1/3] data: Disable network configuration on login screen - ---- - data/meson.build | 10 ++++++++++ - data/org.gnome.gdm.rules.in | 8 ++++++++ - 2 files changed, 18 insertions(+) - create mode 100644 data/org.gnome.gdm.rules.in - -diff --git a/data/meson.build b/data/meson.build -index 23e2d7f9f..cbd6a6a21 100644 ---- a/data/meson.build -+++ b/data/meson.build -@@ -131,60 +131,70 @@ pam_data_files_map = { - 'arch': [ - 'gdm-autologin', - 'gdm-launch-environment', - 'gdm-fingerprint', - 'gdm-smartcard', - 'gdm-password', - 'gdm-pin', - ], - 'none': [], - # We should no longer have 'autodetect' at this point - } - - pam_data_files = pam_data_files_map[default_pam_config] - pam_prefix = (get_option('pam-prefix') != '')? get_option('pam-prefix') : get_option('sysconfdir') - foreach _pam_filename : pam_data_files - install_data('pam-@0@/@1@.pam'.format(default_pam_config, _pam_filename), - rename: _pam_filename, - install_dir: pam_prefix / 'pam.d', - ) - endforeach - - gdm_rules = configure_file( - input: '61-gdm.rules.in', - output: '@BASENAME@', - configuration: { - 'libexecdir': gdm_prefix / get_option('libexecdir'), - }, - install_dir: udev_dir, - ) - -+# Polkit rules -+polkit_rules = configure_file( -+ input: 'org.gnome.gdm.rules.in', -+ output: '@BASENAME@', -+ configuration: { -+ 'GDM_USERNAME': get_option('user'), -+ }, -+ install_dir: get_option('datadir') / 'polkit-1' / 'rules.d', -+) -+ - # DBus service files - service_config = configuration_data() - service_config.set('sbindir', gdm_prefix / get_option('sbindir')) - service_config.set('GDM_INITIAL_VT', get_option('initial-vt')) - service_config.set('LANG_CONFIG_FILE', lang_config_file) - if plymouth_dep.found() - service_config.set('PLYMOUTH_QUIT_SERVICE', 'plymouth-quit.service') - else - service_config.set('PLYMOUTH_QUIT_SERVICE', '') - endif - - if get_option('systemdsystemunitdir') != '' - systemd_systemunitdir = get_option('systemdsystemunitdir') - else - systemd_systemunitdir = systemd_dep.get_pkgconfig_variable('systemdsystemunitdir') - endif - - if get_option('systemduserunitdir') != '' - systemd_userunitdir = get_option('systemduserunitdir') - else - systemd_userunitdir = systemd_dep.get_pkgconfig_variable('systemduserunitdir', - define_variable: ['prefix', get_option('prefix')]) - endif - - configure_file( - input: 'gdm.service.in', - output: '@BASENAME@', - configuration: service_config, - install_dir: systemd_systemunitdir, - format: 'cmake' -diff --git a/data/org.gnome.gdm.rules.in b/data/org.gnome.gdm.rules.in -new file mode 100644 -index 000000000..09544f11e ---- /dev/null -+++ b/data/org.gnome.gdm.rules.in -@@ -0,0 +1,8 @@ -+polkit.addRule(function(action, subject) { -+ if (action.id == "org.freedesktop.NetworkManager.network-control" && -+ subject.user == "@GDM_USERNAME@") { -+ return polkit.Result.NO; -+ } -+ -+ return polkit.Result.NOT_HANDLED; -+}); --- -2.30.1 - diff --git a/SOURCES/0001-data-disable-wayland-on-certain-hardware.patch b/SOURCES/0001-data-disable-wayland-on-certain-hardware.patch deleted file mode 100644 index 2e346cb..0000000 --- a/SOURCES/0001-data-disable-wayland-on-certain-hardware.patch +++ /dev/null @@ -1,63 +0,0 @@ -From e01c0894669f5fe3d1a1c4148b7507e61b95d035 Mon Sep 17 00:00:00 2001 -From: Ray Strode -Date: Mon, 11 Feb 2019 18:14:07 -0500 -Subject: [PATCH] data: disable wayland on certain hardware - -We're having issues with wayland on passthrough to virt -setups and with the vendor nvidia driver on hybrid graphics -setups, so disable it in those cases. - -Also disable it on server chips for performance reasons. ---- - data/61-gdm.rules.in | 39 +++++++++++++++++++++++++++++++++++---- - 1 file changed, 35 insertions(+), 4 deletions(-) - -diff --git a/data/61-gdm.rules.in b/data/61-gdm.rules.in -index b1da191f..d599a146 100644 ---- a/data/61-gdm.rules.in -+++ b/data/61-gdm.rules.in -@@ -1,6 +1,37 @@ - # disable Wayland on Hi1710 chipsets --ATTR{vendor}=="0x19e5", ATTR{device}=="0x1711", RUN+="@libexecdir@/gdm-runtime-config set daemon WaylandEnable false" --# disable Wayland when using the proprietary nvidia driver --DRIVER=="nvidia", RUN+="@libexecdir@/gdm-runtime-config set daemon WaylandEnable false" -+ATTR{vendor}=="0x19e5", ATTR{device}=="0x1711", RUN+="@libexecdir@/gdm-disable-wayland" -+ -+# disable Wayland on Matrox chipsets -+ATTR{vendor}=="0x102b", ATTR{device}=="0x0522", RUN+="@libexecdir@/gdm-disable-wayland" -+ATTR{vendor}=="0x102b", ATTR{device}=="0x0524", RUN+="@libexecdir@/gdm-disable-wayland" -+ATTR{vendor}=="0x102b", ATTR{device}=="0x0530", RUN+="@libexecdir@/gdm-disable-wayland" -+ATTR{vendor}=="0x102b", ATTR{device}=="0x0532", RUN+="@libexecdir@/gdm-disable-wayland" -+ATTR{vendor}=="0x102b", ATTR{device}=="0x0533", RUN+="@libexecdir@/gdm-disable-wayland" -+ATTR{vendor}=="0x102b", ATTR{device}=="0x0534", RUN+="@libexecdir@/gdm-disable-wayland" -+ATTR{vendor}=="0x102b", ATTR{device}=="0x0536", RUN+="@libexecdir@/gdm-disable-wayland" -+ATTR{vendor}=="0x102b", ATTR{device}=="0x0538", RUN+="@libexecdir@/gdm-disable-wayland" -+ -+# disable Wayland on aspeed chipsets -+ATTR{vendor}=="0x1a03", ATTR{device}=="0x2010", RUN+="@libexecdir@/gdm-disable-wayland" -+ATTR{vendor}=="0x1a03", ATTR{device}=="0x2000", RUN+="@libexecdir@/gdm-disable-wayland" -+ -+# disable Wayland on hybrid systems with vendor nvidia driver -+# default to Xorg on single gpu vendor nvidia systems -+DRIVER=="nvidia", ENV{GDM_HAS_VENDOR_NVIDIA_DRIVER}="1" -+DRIVER=="nvidia", RUN+="@libexecdir@/gdm-runtime-config set daemon PreferredDisplayServer xorg" -+SUBSYSTEM=="drm", KERNEL=="card[1-9]*", ENV{GDM_HAS_NVIDIA_DRIVER}=="1", RUN+="@libexecdir@/gdm-disable-wayland" -+ACTION=="add", SUBSYSTEM=="module", KERNEL=="nvidia_drm", ATTR{parameters/modeset}=="N", RUN+="/usr/libexec/gdm-disable-wayland" -+ -+# disable Wayland on HyperV guests -+DRIVER=="hyperv_fb", RUN+="@libexecdir@/gdm-disable-wayland" -+ -+# disable Wayland on passthrough graphics setups for now (assumes passthrough if -+# there is more than one card, and one of the cards is virt: cirrus, bochs, qxl) -+ATTR{vendor}=="0x1013", ATTR{device}=="0x00b8", ATTR{subsystem_vendor}=="0x1af4", ATTR{subsystem_device}=="0x1100", ENV{GDM_HAS_VIRTUAL_GPU}="1" -+ATTR{vendor}=="0x1b36", ATTR{device}=="0x0100", ENV{GDM_HAS_VIRTUAL_GPU}="1" -+ATTR{vendor}=="0x1234", ATTR{device}=="0x1111", ENV{GDM_HAS_VIRTUAL_GPU}="1" -+ -+SUBSYSTEM=="drm", KERNEL=="card[1-9]*", ENV{GDM_HAS_VIRTUAL_GPU}=="1", RUN+="@libexecdir@/gdm-disable-wayland" -+ - # disable Wayland if modesetting is disabled --IMPORT{cmdline}="nomodeset", RUN+="@libexecdir@/gdm-runtime-config set daemon WaylandEnable false" -+IMPORT{cmdline}="nomodeset", RUN+="@libexecdir@/gdm-disable-wayland" --- -2.27.0 - diff --git a/SOURCES/0001-data-reap-gdm-sessions-on-shutdown.patch b/SOURCES/0001-data-reap-gdm-sessions-on-shutdown.patch deleted file mode 100644 index 2db5283..0000000 --- a/SOURCES/0001-data-reap-gdm-sessions-on-shutdown.patch +++ /dev/null @@ -1,55 +0,0 @@ -From 7f910ee7554703a2e775e73ace10ced5d7a0fe66 Mon Sep 17 00:00:00 2001 -From: Ray Strode -Date: Fri, 26 Jul 2019 14:06:16 -0400 -Subject: [PATCH] data: reap gdm sessions on shutdown - -If GDM gets shutdown we should make sure all sessions get shutdown too. - -This is a bit of a safety net in case any processes in the session are -lingering after the orderly shutdown. ---- - data/gdm.service.in | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/data/gdm.service.in b/data/gdm.service.in -index 17e8a8de8..195bd0fdc 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 -+ExecStopPost=-/usr/bin/bash -c 'for f in /run/systemd/sessions/*; do [ -f $f ] && /usr/bin/fgrep -q SERVICE=gdm $f && loginctl terminate-session $(basename $f); done' - KillMode=mixed - Restart=always - IgnoreSIGPIPE=no - BusName=org.gnome.DisplayManager - EnvironmentFile=-${LANG_CONFIG_FILE} - ExecReload=/bin/kill -SIGHUP $MAINPID - KeyringMode=shared - - [Install] - Alias=display-manager.service --- -2.28.0 - diff --git a/SOURCES/0001-display-Handle-failure-before-display-registration.patch b/SOURCES/0001-display-Handle-failure-before-display-registration.patch deleted file mode 100644 index 219a865..0000000 --- a/SOURCES/0001-display-Handle-failure-before-display-registration.patch +++ /dev/null @@ -1,155 +0,0 @@ -From cbfb3ef99ecc9cbb4e6850e5dd0cc9fb65dd398a Mon Sep 17 00:00:00 2001 -From: Ray Strode -Date: Tue, 1 Sep 2020 13:49:27 -0400 -Subject: [PATCH 1/3] display: Handle failure before display registration - -Normally, e.g., gdm-wayland-session would register its display -before starting the session. This display registration is how -the display moves to the "managed" state. We currently detect -session failure in gdm_display_unmanage. If gdm-wayland-session -is killed before it registers the display, gdm_display_unmanage -won't run, and failure won't be detected. - -This commit make gdm_display_unmanage get called, even if the -display isn't yet fully managed. ---- - daemon/gdm-display.c | 8 +++----- - 1 file changed, 3 insertions(+), 5 deletions(-) - -diff --git a/daemon/gdm-display.c b/daemon/gdm-display.c -index 7c954ad24..3a260923a 100644 ---- a/daemon/gdm-display.c -+++ b/daemon/gdm-display.c -@@ -648,62 +648,60 @@ gdm_display_disconnect (GdmDisplay *self) - - /* resource_id_mask is the bits given to each client for - * addressing resources */ - highest_client = (XID) ~unused_bits & ~setup->resource_id_mask; - client_increment = setup->resource_id_mask + 1; - - /* Kill every client but ourselves, then close our own connection - */ - for (client = 0; - client <= highest_client; - client += client_increment) { - - if (client != setup->resource_id_base) - xcb_kill_client (priv->xcb_connection, client); - } - - xcb_flush (priv->xcb_connection); - - g_clear_pointer (&priv->xcb_connection, xcb_disconnect); - } - - gboolean - gdm_display_unmanage (GdmDisplay *self) - { - GdmDisplayPrivate *priv; - - g_return_val_if_fail (GDM_IS_DISPLAY (self), FALSE); - - priv = gdm_display_get_instance_private (self); - -- g_debug ("GdmDisplay: unmanage display"); -- - gdm_display_disconnect (self); - - if (priv->user_access_file != NULL) { - gdm_display_access_file_close (priv->user_access_file); - g_object_unref (priv->user_access_file); - priv->user_access_file = NULL; - } - - if (priv->access_file != NULL) { - gdm_display_access_file_close (priv->access_file); - g_object_unref (priv->access_file); - priv->access_file = NULL; - } - - if (!priv->session_registered) { - g_warning ("GdmDisplay: Session never registered, failing"); - _gdm_display_set_status (self, GDM_DISPLAY_FAILED); - } else { - _gdm_display_set_status (self, GDM_DISPLAY_UNMANAGED); - } - - return TRUE; - } - - gboolean - gdm_display_get_id (GdmDisplay *self, - char **id, - GError **error) - { - GdmDisplayPrivate *priv; -@@ -1446,63 +1444,63 @@ gdm_display_get_object_skeleton (GdmDisplay *self) - { - GdmDisplayPrivate *priv; - - priv = gdm_display_get_instance_private (self); - return priv->object_skeleton; - } - - static void - on_launch_environment_session_opened (GdmLaunchEnvironment *launch_environment, - GdmDisplay *self) - { - char *session_id; - - g_debug ("GdmDisplay: Greeter session opened"); - session_id = gdm_launch_environment_get_session_id (launch_environment); - _gdm_display_set_session_id (self, session_id); - g_free (session_id); - } - - static void - on_launch_environment_session_started (GdmLaunchEnvironment *launch_environment, - GdmDisplay *self) - { - g_debug ("GdmDisplay: Greeter started"); - } - - static void - self_destruct (GdmDisplay *self) - { - g_object_ref (self); -- if (gdm_display_get_status (self) == GDM_DISPLAY_MANAGED) { -- gdm_display_unmanage (self); -- } -+ -+ g_debug ("GdmDisplay: initiating display self-destruct"); -+ gdm_display_unmanage (self); - - if (gdm_display_get_status (self) != GDM_DISPLAY_FINISHED) { - queue_finish (self); - } - g_object_unref (self); - } - - static void - on_launch_environment_session_stopped (GdmLaunchEnvironment *launch_environment, - GdmDisplay *self) - { - g_debug ("GdmDisplay: Greeter stopped"); - self_destruct (self); - } - - static void - on_launch_environment_session_exited (GdmLaunchEnvironment *launch_environment, - int code, - GdmDisplay *self) - { - g_debug ("GdmDisplay: Greeter exited: %d", code); - self_destruct (self); - } - - static void - on_launch_environment_session_died (GdmLaunchEnvironment *launch_environment, - int signal, - GdmDisplay *self) - { - g_debug ("GdmDisplay: Greeter died: %d", signal); --- -2.31.1 - diff --git a/SOURCES/0001-local-display-factory-Don-t-try-to-respawn-displays-.patch b/SOURCES/0001-local-display-factory-Don-t-try-to-respawn-displays-.patch deleted file mode 100644 index 080052f..0000000 --- a/SOURCES/0001-local-display-factory-Don-t-try-to-respawn-displays-.patch +++ /dev/null @@ -1,325 +0,0 @@ -From d8fd8d4d6ff6a119f6bd27eb07316384c4776d12 Mon Sep 17 00:00:00 2001 -From: Ray Strode -Date: Wed, 15 Sep 2021 11:23:17 -0400 -Subject: [PATCH] local-display-factory: Don't try to respawn displays on - shutdown - -At the moment in the shutdown path we may try to respawn displays -that just got killed. - -The respawning happens when things are half torn down leading to -crashes. - -This commit makes sure we turn off the respawn logic in the shutdown -path. ---- - daemon/gdm-local-display-factory.c | 11 ++++++++++- - daemon/gdm-manager.c | 2 ++ - 2 files changed, 12 insertions(+), 1 deletion(-) - -diff --git a/daemon/gdm-local-display-factory.c b/daemon/gdm-local-display-factory.c -index 11dcda2c..a0884893 100644 ---- a/daemon/gdm-local-display-factory.c -+++ b/daemon/gdm-local-display-factory.c -@@ -46,60 +46,62 @@ - #define GDM_LOCAL_DISPLAY_FACTORY_DBUS_PATH GDM_DBUS_PATH "/LocalDisplayFactory" - #define GDM_MANAGER_DBUS_NAME "org.gnome.DisplayManager.LocalDisplayFactory" - - #define MAX_DISPLAY_FAILURES 5 - #define WAIT_TO_FINISH_TIMEOUT 10 /* seconds */ - #define SEAT0_GRAPHICS_CHECK_TIMEOUT 10 /* seconds */ - - struct _GdmLocalDisplayFactory - { - GdmDisplayFactory parent; - - GdmDBusLocalDisplayFactory *skeleton; - GDBusConnection *connection; - GHashTable *used_display_numbers; - - /* FIXME: this needs to be per seat? */ - guint num_failures; - - guint seat_new_id; - guint seat_removed_id; - guint seat_properties_changed_id; - - gboolean seat0_graphics_check_timed_out; - guint seat0_graphics_check_timeout_id; - - #if defined(ENABLE_USER_DISPLAY_SERVER) - unsigned int active_vt; - guint active_vt_watch_id; - guint wait_to_finish_timeout_id; - #endif -+ -+ gboolean is_started; - }; - - enum { - PROP_0, - }; - - static void gdm_local_display_factory_class_init (GdmLocalDisplayFactoryClass *klass); - static void gdm_local_display_factory_init (GdmLocalDisplayFactory *factory); - static void gdm_local_display_factory_finalize (GObject *object); - - static void ensure_display_for_seat (GdmLocalDisplayFactory *factory, - const char *seat_id); - - static void on_display_status_changed (GdmDisplay *display, - GParamSpec *arg1, - GdmLocalDisplayFactory *factory); - - static gboolean gdm_local_display_factory_sync_seats (GdmLocalDisplayFactory *factory); - static gpointer local_display_factory_object = NULL; - static gboolean lookup_by_session_id (const char *id, - GdmDisplay *display, - gpointer user_data); - - G_DEFINE_TYPE (GdmLocalDisplayFactory, gdm_local_display_factory, GDM_TYPE_DISPLAY_FACTORY) - - GQuark - gdm_local_display_factory_error_quark (void) - { - static GQuark ret = 0; - if (ret == 0) { -@@ -478,60 +480,64 @@ on_session_registered_cb (GObject *gobject, - GParamSpec *pspec, - gpointer user_data) - { - GdmDisplay *display = GDM_DISPLAY (gobject); - GdmLocalDisplayFactory *factory = GDM_LOCAL_DISPLAY_FACTORY (user_data); - gboolean registered; - - g_object_get (display, "session-registered", ®istered, NULL); - - if (!registered) - return; - - g_debug ("GdmLocalDisplayFactory: session registered on display, looking for any background displays to kill"); - - finish_waiting_displays_on_seat (factory, "seat0"); - } - - static void - on_display_status_changed (GdmDisplay *display, - GParamSpec *arg1, - GdmLocalDisplayFactory *factory) - { - int status; - int num; - char *seat_id = NULL; - char *session_type = NULL; - char *session_class = NULL; - gboolean is_initial = TRUE; - gboolean is_local = TRUE; - -+ -+ if (!factory->is_started) -+ return; -+ - num = -1; - gdm_display_get_x11_display_number (display, &num, NULL); - - g_object_get (display, - "seat-id", &seat_id, - "is-initial", &is_initial, - "is-local", &is_local, - "session-type", &session_type, - "session-class", &session_class, - NULL); - - status = gdm_display_get_status (display); - - g_debug ("GdmLocalDisplayFactory: display status changed: %d", status); - switch (status) { - case GDM_DISPLAY_FINISHED: - /* remove the display number from factory->used_display_numbers - so that it may be reused */ - if (num != -1) { - g_hash_table_remove (factory->used_display_numbers, GUINT_TO_POINTER (num)); - } - gdm_display_factory_queue_purge_displays (GDM_DISPLAY_FACTORY (factory)); - - /* if this is a local display, do a full resync. Only - * seats without displays will get created anyway. This - * ensures we get a new login screen when the user logs out, - * if there isn't one. - */ - if (is_local && g_strcmp0 (session_class, "greeter") != 0) { - /* reset num failures */ -@@ -1250,99 +1256,102 @@ on_display_added (GdmDisplayStore *display_store, - - display = gdm_display_store_lookup (display_store, id); - - if (display != NULL) { - g_signal_connect_object (display, "notify::status", - G_CALLBACK (on_display_status_changed), - factory, - 0); - - g_object_weak_ref (G_OBJECT (display), (GWeakNotify)on_display_disposed, factory); - } - } - - static void - on_display_removed (GdmDisplayStore *display_store, - GdmDisplay *display, - GdmLocalDisplayFactory *factory) - { - g_signal_handlers_disconnect_by_func (display, G_CALLBACK (on_display_status_changed), factory); - g_object_weak_unref (G_OBJECT (display), (GWeakNotify)on_display_disposed, factory); - } - - static gboolean - gdm_local_display_factory_start (GdmDisplayFactory *base_factory) - { - GdmLocalDisplayFactory *factory = GDM_LOCAL_DISPLAY_FACTORY (base_factory); - GdmDisplayStore *store; - - g_return_val_if_fail (GDM_IS_LOCAL_DISPLAY_FACTORY (factory), FALSE); - -+ factory->is_started = TRUE; -+ - store = gdm_display_factory_get_display_store (GDM_DISPLAY_FACTORY (factory)); - - g_signal_connect_object (G_OBJECT (store), - "display-added", - G_CALLBACK (on_display_added), - factory, - 0); - - g_signal_connect_object (G_OBJECT (store), - "display-removed", - G_CALLBACK (on_display_removed), - factory, - 0); - - gdm_local_display_factory_start_monitor (factory); - return gdm_local_display_factory_sync_seats (factory); - } - - static gboolean - gdm_local_display_factory_stop (GdmDisplayFactory *base_factory) - { - GdmLocalDisplayFactory *factory = GDM_LOCAL_DISPLAY_FACTORY (base_factory); - GdmDisplayStore *store; - - g_return_val_if_fail (GDM_IS_LOCAL_DISPLAY_FACTORY (factory), FALSE); - - gdm_local_display_factory_stop_monitor (factory); - - store = gdm_display_factory_get_display_store (GDM_DISPLAY_FACTORY (factory)); - - g_signal_handlers_disconnect_by_func (G_OBJECT (store), - G_CALLBACK (on_display_added), - factory); - g_signal_handlers_disconnect_by_func (G_OBJECT (store), - G_CALLBACK (on_display_removed), - factory); -- - g_clear_handle_id (&factory->seat0_graphics_check_timeout_id, g_source_remove); - -+ factory->is_started = FALSE; -+ - return TRUE; - } - - static void - gdm_local_display_factory_set_property (GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec) - { - switch (prop_id) { - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; - } - } - - static void - gdm_local_display_factory_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec) - { - switch (prop_id) { - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; - } - } - - static gboolean -diff --git a/daemon/gdm-manager.c b/daemon/gdm-manager.c -index b3d0a2b5..4b62b8b1 100644 ---- a/daemon/gdm-manager.c -+++ b/daemon/gdm-manager.c -@@ -2774,60 +2774,62 @@ unexport_display (const char *id, - GdmDisplay *display, - GdmManager *manager) - { - if (!g_dbus_connection_is_closed (manager->priv->connection)) - g_dbus_object_manager_server_unexport (manager->priv->object_manager, id); - } - - static void - finish_display (const char *id, - GdmDisplay *display, - GdmManager *manager) - { - gdm_display_stop_greeter_session (display); - if (gdm_display_get_status (display) == GDM_DISPLAY_MANAGED) - gdm_display_unmanage (display); - gdm_display_finish (display); - } - - static void - gdm_manager_dispose (GObject *object) - { - GdmManager *manager; - - g_return_if_fail (object != NULL); - g_return_if_fail (GDM_IS_MANAGER (object)); - - manager = GDM_MANAGER (object); - - g_return_if_fail (manager->priv != NULL); - -+ gdm_manager_stop (manager); -+ - g_clear_weak_pointer (&manager->priv->automatic_login_display); - - #ifdef HAVE_LIBXDMCP - g_clear_object (&manager->priv->xdmcp_factory); - #endif - g_clear_object (&manager->priv->local_factory); - g_clear_pointer (&manager->priv->open_reauthentication_requests, - g_hash_table_unref); - g_clear_pointer (&manager->priv->transient_sessions, - g_hash_table_unref); - - g_list_foreach (manager->priv->user_sessions, - (GFunc) gdm_session_close, - NULL); - g_list_free_full (manager->priv->user_sessions, (GDestroyNotify) g_object_unref); - manager->priv->user_sessions = NULL; - - g_signal_handlers_disconnect_by_func (G_OBJECT (manager->priv->display_store), - G_CALLBACK (on_display_added), - manager); - g_signal_handlers_disconnect_by_func (G_OBJECT (manager->priv->display_store), - G_CALLBACK (on_display_removed), - manager); - - if (!g_dbus_connection_is_closed (manager->priv->connection)) { - gdm_display_store_foreach (manager->priv->display_store, - (GdmDisplayStoreFunc)unexport_display, - manager); - g_dbus_interface_skeleton_unexport (G_DBUS_INTERFACE_SKELETON (manager)); - } --- -2.31.1 - diff --git a/SOURCES/0001-local-display-factory-Provide-more-flexibility-for-c.patch b/SOURCES/0001-local-display-factory-Provide-more-flexibility-for-c.patch deleted file mode 100644 index 7fb5b30..0000000 --- a/SOURCES/0001-local-display-factory-Provide-more-flexibility-for-c.patch +++ /dev/null @@ -1,2765 +0,0 @@ -From 8451325378ef2981304d96bb27844174dba930c5 Mon Sep 17 00:00:00 2001 -From: Ray Strode -Date: Fri, 16 Jul 2021 12:34:57 -0400 -Subject: [PATCH 1/4] local-display-factory: Provide more flexibility for - configuring display server - -There's currently a way to disable wayland, but no way to disable Xorg. -We currently prefer wayland if it's not disabled, but have no way to -prefer Xorg without disabling wayland entirely. - -There's currently no way use legacy Xorg support at all if user display -server support is enabled at a build time. - -This commit adds more flexibility to display server selection. It adds -two new keys: XorgEnable and and PreferredDisplayServer. - -XorgEnable=false disables Xorg support entirely on seat 0. - -PreferredDisplayServer can be set to "wayland", "xorg", "legacy-xorg" or -"none" to select which display server is used by default. If it's set to -"wayland", it will fall back to "xorg". If it's set to "xorg" it will -fall back to "wayland". ---- - common/gdm-settings-keys.h | 2 + - daemon/gdm-display.c | 36 ++++ - daemon/gdm-launch-environment.c | 9 + - daemon/gdm-local-display-factory.c | 267 ++++++++++++++++++++++++----- - daemon/gdm-manager.c | 20 +-- - daemon/gdm-session.c | 169 ++++++++++-------- - data/gdm.schemas.in | 10 ++ - libgdm/gdm-sessions.c | 72 +++++--- - 8 files changed, 437 insertions(+), 148 deletions(-) - -diff --git a/common/gdm-settings-keys.h b/common/gdm-settings-keys.h -index f0059b5c..87685d3c 100644 ---- a/common/gdm-settings-keys.h -+++ b/common/gdm-settings-keys.h -@@ -6,59 +6,61 @@ - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110-1301, USA. - */ - - #ifndef _GDM_SETTINGS_KEYS_H - #define _GDM_SETTINGS_KEYS_H - - #include - - G_BEGIN_DECLS - - #define GDM_KEY_USER "daemon/User" - #define GDM_KEY_GROUP "daemon/Group" - #define GDM_KEY_AUTO_LOGIN_ENABLE "daemon/AutomaticLoginEnable" - #define GDM_KEY_AUTO_LOGIN_USER "daemon/AutomaticLogin" - #define GDM_KEY_TIMED_LOGIN_ENABLE "daemon/TimedLoginEnable" - #define GDM_KEY_TIMED_LOGIN_USER "daemon/TimedLogin" - #define GDM_KEY_TIMED_LOGIN_DELAY "daemon/TimedLoginDelay" - #define GDM_KEY_INITIAL_SETUP_ENABLE "daemon/InitialSetupEnable" -+#define GDM_KEY_PREFERRED_DISPLAY_SERVER "daemon/PreferredDisplayServer" - #define GDM_KEY_WAYLAND_ENABLE "daemon/WaylandEnable" -+#define GDM_KEY_XORG_ENABLE "daemon/XorgEnable" - - #define GDM_KEY_DEBUG "debug/Enable" - - #define GDM_KEY_INCLUDE "greeter/Include" - #define GDM_KEY_EXCLUDE "greeter/Exclude" - #define GDM_KEY_INCLUDE_ALL "greeter/IncludeAll" - - #define GDM_KEY_DISALLOW_TCP "security/DisallowTCP" - #define GDM_KEY_ALLOW_REMOTE_AUTOLOGIN "security/AllowRemoteAutoLogin" - - #define GDM_KEY_XDMCP_ENABLE "xdmcp/Enable" - #define GDM_KEY_SHOW_LOCAL_GREETER "xdmcp/ShowLocalGreeter" - #define GDM_KEY_MAX_PENDING "xdmcp/MaxPending" - #define GDM_KEY_MAX_SESSIONS "xdmcp/MaxSessions" - #define GDM_KEY_MAX_WAIT "xdmcp/MaxWait" - #define GDM_KEY_DISPLAYS_PER_HOST "xdmcp/DisplaysPerHost" - #define GDM_KEY_UDP_PORT "xdmcp/Port" - #define GDM_KEY_INDIRECT "xdmcp/HonorIndirect" - #define GDM_KEY_MAX_WAIT_INDIRECT "xdmcp/MaxWaitIndirect" - #define GDM_KEY_PING_INTERVAL "xdmcp/PingIntervalSeconds" - #define GDM_KEY_WILLING "xdmcp/Willing" - - #define GDM_KEY_MULTICAST "chooser/Multicast" - #define GDM_KEY_MULTICAST_ADDR "chooser/MulticastAddr" - - G_END_DECLS - - #endif /* _GDM_SETTINGS_KEYS_H */ -diff --git a/daemon/gdm-display.c b/daemon/gdm-display.c -index 7c954ad2..bd96dd03 100644 ---- a/daemon/gdm-display.c -+++ b/daemon/gdm-display.c -@@ -66,83 +66,86 @@ typedef struct _GdmDisplayPrivate - char *x11_display_name; - int status; - time_t creation_time; - - char *x11_cookie; - gsize x11_cookie_size; - GdmDisplayAccessFile *access_file; - - guint finish_idle_id; - - xcb_connection_t *xcb_connection; - int xcb_screen_number; - - GDBusConnection *connection; - GdmDisplayAccessFile *user_access_file; - - GdmDBusDisplay *display_skeleton; - GDBusObjectSkeleton *object_skeleton; - - GDBusProxy *accountsservice_proxy; - - /* this spawns and controls the greeter session */ - GdmLaunchEnvironment *launch_environment; - - guint is_local : 1; - guint is_initial : 1; - guint allow_timed_login : 1; - guint have_existing_user_accounts : 1; - guint doing_initial_setup : 1; - guint session_registered : 1; -+ -+ GStrv supported_session_types; - } GdmDisplayPrivate; - - enum { - PROP_0, - PROP_ID, - PROP_STATUS, - PROP_SEAT_ID, - PROP_SESSION_ID, - PROP_SESSION_CLASS, - PROP_SESSION_TYPE, - PROP_REMOTE_HOSTNAME, - PROP_X11_DISPLAY_NUMBER, - PROP_X11_DISPLAY_NAME, - PROP_X11_COOKIE, - PROP_X11_AUTHORITY_FILE, - PROP_IS_CONNECTED, - PROP_IS_LOCAL, - PROP_LAUNCH_ENVIRONMENT, - PROP_IS_INITIAL, - PROP_ALLOW_TIMED_LOGIN, - PROP_HAVE_EXISTING_USER_ACCOUNTS, - PROP_DOING_INITIAL_SETUP, - PROP_SESSION_REGISTERED, -+ PROP_SUPPORTED_SESSION_TYPES, - }; - - static void gdm_display_class_init (GdmDisplayClass *klass); - static void gdm_display_init (GdmDisplay *self); - static void gdm_display_finalize (GObject *object); - static void queue_finish (GdmDisplay *self); - static void _gdm_display_set_status (GdmDisplay *self, - int status); - static gboolean wants_initial_setup (GdmDisplay *self); - G_DEFINE_ABSTRACT_TYPE_WITH_PRIVATE (GdmDisplay, gdm_display, G_TYPE_OBJECT) - - GQuark - gdm_display_error_quark (void) - { - static GQuark ret = 0; - if (ret == 0) { - ret = g_quark_from_static_string ("gdm_display_error"); - } - - return ret; - } - - time_t - gdm_display_get_creation_time (GdmDisplay *self) - { - GdmDisplayPrivate *priv; - - g_return_val_if_fail (GDM_IS_DISPLAY (self), 0); - - priv = gdm_display_get_instance_private (self); -@@ -885,116 +888,136 @@ _gdm_display_set_launch_environment (GdmDisplay *self, - - priv = gdm_display_get_instance_private (self); - - g_clear_object (&priv->launch_environment); - - priv->launch_environment = g_object_ref (launch_environment); - } - - static void - _gdm_display_set_is_initial (GdmDisplay *self, - gboolean initial) - { - GdmDisplayPrivate *priv; - - priv = gdm_display_get_instance_private (self); - g_debug ("GdmDisplay: initial: %s", initial? "yes" : "no"); - priv->is_initial = initial; - } - - static void - _gdm_display_set_allow_timed_login (GdmDisplay *self, - gboolean allow_timed_login) - { - GdmDisplayPrivate *priv; - - priv = gdm_display_get_instance_private (self); - g_debug ("GdmDisplay: allow timed login: %s", allow_timed_login? "yes" : "no"); - priv->allow_timed_login = allow_timed_login; - } - -+static void -+_gdm_display_set_supported_session_types (GdmDisplay *self, -+ const char * const *supported_session_types) -+ -+{ -+ GdmDisplayPrivate *priv; -+ g_autofree char *supported_session_types_string = NULL; -+ -+ if (supported_session_types != NULL) -+ supported_session_types_string = g_strjoinv (":", (GStrv) supported_session_types); -+ -+ priv = gdm_display_get_instance_private (self); -+ g_debug ("GdmDisplay: supported session types: %s", supported_session_types_string); -+ g_strfreev (priv->supported_session_types); -+ priv->supported_session_types = g_strdupv ((GStrv) supported_session_types); -+} -+ - static void - gdm_display_set_property (GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec) - { - GdmDisplay *self; - - self = GDM_DISPLAY (object); - - switch (prop_id) { - case PROP_ID: - _gdm_display_set_id (self, g_value_get_string (value)); - break; - case PROP_STATUS: - _gdm_display_set_status (self, g_value_get_int (value)); - break; - case PROP_SEAT_ID: - _gdm_display_set_seat_id (self, g_value_get_string (value)); - break; - case PROP_SESSION_ID: - _gdm_display_set_session_id (self, g_value_get_string (value)); - break; - case PROP_SESSION_CLASS: - _gdm_display_set_session_class (self, g_value_get_string (value)); - break; - case PROP_SESSION_TYPE: - _gdm_display_set_session_type (self, g_value_get_string (value)); - break; - case PROP_REMOTE_HOSTNAME: - _gdm_display_set_remote_hostname (self, g_value_get_string (value)); - break; - case PROP_X11_DISPLAY_NUMBER: - _gdm_display_set_x11_display_number (self, g_value_get_int (value)); - break; - case PROP_X11_DISPLAY_NAME: - _gdm_display_set_x11_display_name (self, g_value_get_string (value)); - break; - case PROP_X11_COOKIE: - _gdm_display_set_x11_cookie (self, g_value_get_string (value)); - break; - case PROP_IS_LOCAL: - _gdm_display_set_is_local (self, g_value_get_boolean (value)); - break; - case PROP_ALLOW_TIMED_LOGIN: - _gdm_display_set_allow_timed_login (self, g_value_get_boolean (value)); - break; - case PROP_LAUNCH_ENVIRONMENT: - _gdm_display_set_launch_environment (self, g_value_get_object (value)); - break; - case PROP_IS_INITIAL: - _gdm_display_set_is_initial (self, g_value_get_boolean (value)); - break; - case PROP_SESSION_REGISTERED: - _gdm_display_set_session_registered (self, g_value_get_boolean (value)); - break; -+ case PROP_SUPPORTED_SESSION_TYPES: -+ _gdm_display_set_supported_session_types (self, g_value_get_boxed (value)); -+ break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; - } - } - - static void - gdm_display_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec) - { - GdmDisplay *self; - GdmDisplayPrivate *priv; - - self = GDM_DISPLAY (object); - priv = gdm_display_get_instance_private (self); - - switch (prop_id) { - case PROP_ID: - g_value_set_string (value, priv->id); - break; - case PROP_STATUS: - g_value_set_int (value, priv->status); - break; - case PROP_SEAT_ID: - g_value_set_string (value, priv->seat_id); - break; - case PROP_SESSION_ID: - g_value_set_string (value, priv->session_id); -@@ -1019,60 +1042,63 @@ gdm_display_get_property (GObject *object, - break; - case PROP_X11_AUTHORITY_FILE: - g_value_take_string (value, - priv->access_file? - gdm_display_access_file_get_path (priv->access_file) : NULL); - break; - case PROP_IS_LOCAL: - g_value_set_boolean (value, priv->is_local); - break; - case PROP_IS_CONNECTED: - g_value_set_boolean (value, priv->xcb_connection != NULL); - break; - case PROP_LAUNCH_ENVIRONMENT: - g_value_set_object (value, priv->launch_environment); - break; - case PROP_IS_INITIAL: - g_value_set_boolean (value, priv->is_initial); - break; - case PROP_HAVE_EXISTING_USER_ACCOUNTS: - g_value_set_boolean (value, priv->have_existing_user_accounts); - break; - case PROP_DOING_INITIAL_SETUP: - g_value_set_boolean (value, priv->doing_initial_setup); - break; - case PROP_SESSION_REGISTERED: - g_value_set_boolean (value, priv->session_registered); - break; - case PROP_ALLOW_TIMED_LOGIN: - g_value_set_boolean (value, priv->allow_timed_login); - break; -+ case PROP_SUPPORTED_SESSION_TYPES: -+ g_value_set_boxed (value, priv->supported_session_types); -+ break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; - } - } - - static gboolean - handle_get_id (GdmDBusDisplay *skeleton, - GDBusMethodInvocation *invocation, - GdmDisplay *self) - { - char *id; - - gdm_display_get_id (self, &id, NULL); - - gdm_dbus_display_complete_get_id (skeleton, invocation, id); - - g_free (id); - return TRUE; - } - - static gboolean - handle_get_remote_hostname (GdmDBusDisplay *skeleton, - GDBusMethodInvocation *invocation, - GdmDisplay *self) - { - char *hostname; - - gdm_display_get_remote_hostname (self, &hostname, NULL); - -@@ -1204,60 +1230,61 @@ gdm_display_constructor (GType type, - priv = gdm_display_get_instance_private (self); - - g_free (priv->id); - priv->id = g_strdup_printf ("/org/gnome/DisplayManager/Displays/%lu", - (gulong) self); - - res = register_display (self); - if (! res) { - g_warning ("Unable to register display with system bus"); - } - - return G_OBJECT (self); - } - - static void - gdm_display_dispose (GObject *object) - { - GdmDisplay *self; - GdmDisplayPrivate *priv; - - self = GDM_DISPLAY (object); - priv = gdm_display_get_instance_private (self); - - g_debug ("GdmDisplay: Disposing display"); - - if (priv->finish_idle_id != 0) { - g_source_remove (priv->finish_idle_id); - priv->finish_idle_id = 0; - } - g_clear_object (&priv->launch_environment); -+ g_clear_pointer (&priv->supported_session_types, g_strfreev); - - g_warn_if_fail (priv->status != GDM_DISPLAY_MANAGED); - g_warn_if_fail (priv->user_access_file == NULL); - g_warn_if_fail (priv->access_file == NULL); - - G_OBJECT_CLASS (gdm_display_parent_class)->dispose (object); - } - - static void - gdm_display_class_init (GdmDisplayClass *klass) - { - GObjectClass *object_class = G_OBJECT_CLASS (klass); - - object_class->get_property = gdm_display_get_property; - object_class->set_property = gdm_display_set_property; - object_class->constructor = gdm_display_constructor; - object_class->dispose = gdm_display_dispose; - object_class->finalize = gdm_display_finalize; - - klass->prepare = gdm_display_real_prepare; - - g_object_class_install_property (object_class, - PROP_ID, - g_param_spec_string ("id", - "id", - "id", - NULL, - G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS)); - g_object_class_install_property (object_class, - PROP_REMOTE_HOSTNAME, -@@ -1364,60 +1391,68 @@ gdm_display_class_init (GdmDisplayClass *klass) - PROP_DOING_INITIAL_SETUP, - g_param_spec_boolean ("doing-initial-setup", - NULL, - NULL, - FALSE, - G_PARAM_READABLE | G_PARAM_STATIC_STRINGS)); - g_object_class_install_property (object_class, - PROP_SESSION_REGISTERED, - g_param_spec_boolean ("session-registered", - NULL, - NULL, - FALSE, - G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property (object_class, - PROP_LAUNCH_ENVIRONMENT, - g_param_spec_object ("launch-environment", - NULL, - NULL, - GDM_TYPE_LAUNCH_ENVIRONMENT, - G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); - g_object_class_install_property (object_class, - PROP_STATUS, - g_param_spec_int ("status", - "status", - "status", - -1, - G_MAXINT, - GDM_DISPLAY_UNMANAGED, - G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS)); -+ -+ g_object_class_install_property (object_class, -+ PROP_SUPPORTED_SESSION_TYPES, -+ g_param_spec_boxed ("supported-session-types", -+ "supported session types", -+ "supported session types", -+ G_TYPE_STRV, -+ G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS)); - } - - static void - gdm_display_init (GdmDisplay *self) - { - GdmDisplayPrivate *priv; - - priv = gdm_display_get_instance_private (self); - - priv->creation_time = time (NULL); - } - - static void - gdm_display_finalize (GObject *object) - { - GdmDisplay *self; - GdmDisplayPrivate *priv; - - g_return_if_fail (object != NULL); - g_return_if_fail (GDM_IS_DISPLAY (object)); - - self = GDM_DISPLAY (object); - priv = gdm_display_get_instance_private (self); - - g_return_if_fail (priv != NULL); - - g_debug ("GdmDisplay: Finalizing display: %s", priv->id); - g_free (priv->id); - g_free (priv->seat_id); - g_free (priv->session_class); -@@ -1696,60 +1731,61 @@ gdm_display_start_greeter_session (GdmDisplay *self) - G_CALLBACK (on_launch_environment_session_opened), - self, 0); - g_signal_connect_object (priv->launch_environment, - "started", - G_CALLBACK (on_launch_environment_session_started), - self, 0); - g_signal_connect_object (priv->launch_environment, - "stopped", - G_CALLBACK (on_launch_environment_session_stopped), - self, 0); - g_signal_connect_object (priv->launch_environment, - "exited", - G_CALLBACK (on_launch_environment_session_exited), - self, 0); - g_signal_connect_object (priv->launch_environment, - "died", - G_CALLBACK (on_launch_environment_session_died), - self, 0); - - if (auth_file != NULL) { - g_object_set (priv->launch_environment, - "x11-authority-file", auth_file, - NULL); - } - - gdm_launch_environment_start (priv->launch_environment); - - session = gdm_launch_environment_get_session (priv->launch_environment); - g_object_set (G_OBJECT (session), - "display-is-initial", priv->is_initial, -+ "supported-session-types", priv->supported_session_types, - NULL); - - g_free (display_name); - g_free (seat_id); - g_free (hostname); - g_free (auth_file); - } - - void - gdm_display_stop_greeter_session (GdmDisplay *self) - { - GdmDisplayPrivate *priv; - - priv = gdm_display_get_instance_private (self); - - if (priv->launch_environment != NULL) { - - g_signal_handlers_disconnect_by_func (priv->launch_environment, - G_CALLBACK (on_launch_environment_session_opened), - self); - g_signal_handlers_disconnect_by_func (priv->launch_environment, - G_CALLBACK (on_launch_environment_session_started), - self); - g_signal_handlers_disconnect_by_func (priv->launch_environment, - G_CALLBACK (on_launch_environment_session_stopped), - self); - g_signal_handlers_disconnect_by_func (priv->launch_environment, - G_CALLBACK (on_launch_environment_session_exited), - self); - g_signal_handlers_disconnect_by_func (priv->launch_environment, -diff --git a/daemon/gdm-launch-environment.c b/daemon/gdm-launch-environment.c -index feccf057..5044290c 100644 ---- a/daemon/gdm-launch-environment.c -+++ b/daemon/gdm-launch-environment.c -@@ -117,60 +117,61 @@ static GHashTable * - build_launch_environment (GdmLaunchEnvironment *launch_environment, - gboolean start_session) - { - GHashTable *hash; - struct passwd *pwent; - static const char *const optional_environment[] = { - "GI_TYPELIB_PATH", - "LANG", - "LANGUAGE", - "LC_ADDRESS", - "LC_ALL", - "LC_COLLATE", - "LC_CTYPE", - "LC_IDENTIFICATION", - "LC_MEASUREMENT", - "LC_MESSAGES", - "LC_MONETARY", - "LC_NAME", - "LC_NUMERIC", - "LC_PAPER", - "LC_TELEPHONE", - "LC_TIME", - "LD_LIBRARY_PATH", - "PATH", - "WINDOWPATH", - "XCURSOR_PATH", - "XDG_CONFIG_DIRS", - NULL - }; - char *system_data_dirs; -+ g_auto (GStrv) supported_session_types = NULL; - int i; - - /* create a hash table of current environment, then update keys has necessary */ - hash = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free); - - for (i = 0; optional_environment[i] != NULL; i++) { - if (g_getenv (optional_environment[i]) == NULL) { - continue; - } - - g_hash_table_insert (hash, - g_strdup (optional_environment[i]), - g_strdup (g_getenv (optional_environment[i]))); - } - - system_data_dirs = g_strjoinv (":", (char **) g_get_system_data_dirs ()); - - g_hash_table_insert (hash, - g_strdup ("XDG_DATA_DIRS"), - g_strdup_printf ("%s:%s", - DATADIR "/gdm/greeter", - system_data_dirs)); - g_free (system_data_dirs); - - if (launch_environment->priv->x11_authority_file != NULL) - g_hash_table_insert (hash, g_strdup ("XAUTHORITY"), g_strdup (launch_environment->priv->x11_authority_file)); - - if (launch_environment->priv->session_mode != NULL) { - g_hash_table_insert (hash, g_strdup ("GNOME_SHELL_SESSION_MODE"), g_strdup (launch_environment->priv->session_mode)); - -@@ -191,60 +192,68 @@ build_launch_environment (GdmLaunchEnvironment *launch_environment, - g_hash_table_insert (hash, g_strdup ("USER"), g_strdup (launch_environment->priv->user_name)); - g_hash_table_insert (hash, g_strdup ("USERNAME"), g_strdup (launch_environment->priv->user_name)); - - g_hash_table_insert (hash, g_strdup ("GDM_VERSION"), g_strdup (VERSION)); - g_hash_table_remove (hash, "MAIL"); - - g_hash_table_insert (hash, g_strdup ("HOME"), g_strdup ("/")); - g_hash_table_insert (hash, g_strdup ("PWD"), g_strdup ("/")); - g_hash_table_insert (hash, g_strdup ("SHELL"), g_strdup ("/bin/sh")); - - gdm_get_pwent_for_name (launch_environment->priv->user_name, &pwent); - if (pwent != NULL) { - if (pwent->pw_dir != NULL && pwent->pw_dir[0] != '\0') { - g_hash_table_insert (hash, g_strdup ("HOME"), g_strdup (pwent->pw_dir)); - g_hash_table_insert (hash, g_strdup ("PWD"), g_strdup (pwent->pw_dir)); - } - - g_hash_table_insert (hash, g_strdup ("SHELL"), g_strdup (pwent->pw_shell)); - } - - if (start_session && launch_environment->priv->x11_display_seat_id != NULL) { - char *seat_id; - - seat_id = launch_environment->priv->x11_display_seat_id; - - g_hash_table_insert (hash, g_strdup ("GDM_SEAT_ID"), g_strdup (seat_id)); - } - - g_hash_table_insert (hash, g_strdup ("RUNNING_UNDER_GDM"), g_strdup ("true")); - -+ g_object_get (launch_environment->priv->session, -+ "supported-session-types", -+ &supported_session_types, -+ NULL); -+ g_hash_table_insert (hash, -+ g_strdup ("GDM_SUPPORTED_SESSION_TYPES"), -+ g_strjoinv (":", supported_session_types)); -+ - return hash; - } - - static void - on_session_setup_complete (GdmSession *session, - const char *service_name, - GdmLaunchEnvironment *launch_environment) - { - GHashTable *hash; - GHashTableIter iter; - gpointer key, value; - - hash = build_launch_environment (launch_environment, TRUE); - - g_hash_table_iter_init (&iter, hash); - while (g_hash_table_iter_next (&iter, &key, &value)) { - gdm_session_set_environment_variable (launch_environment->priv->session, key, value); - } - g_hash_table_destroy (hash); - } - - static void - on_session_opened (GdmSession *session, - const char *service_name, - const char *session_id, - GdmLaunchEnvironment *launch_environment) - { - launch_environment->priv->session_id = g_strdup (session_id); - - g_signal_emit (G_OBJECT (launch_environment), signals [OPENED], 0); -diff --git a/daemon/gdm-local-display-factory.c b/daemon/gdm-local-display-factory.c -index 8a4ef06c..eba38671 100644 ---- a/daemon/gdm-local-display-factory.c -+++ b/daemon/gdm-local-display-factory.c -@@ -156,126 +156,287 @@ take_next_display_number (GdmLocalDisplayFactory *factory) - - g_debug ("GdmLocalDisplayFactory: Found the following X displays:"); - for (l = list; l != NULL; l = l->next) { - g_debug ("GdmLocalDisplayFactory: %u", GPOINTER_TO_UINT (l->data)); - } - - for (l = list; l != NULL; l = l->next) { - guint32 num; - num = GPOINTER_TO_UINT (l->data); - - /* always fill zero */ - if (l->prev == NULL && num != 0) { - ret = 0; - break; - } - /* now find the first hole */ - if (l->next == NULL || GPOINTER_TO_UINT (l->next->data) != (num + 1)) { - ret = num + 1; - break; - } - } - out: - - /* now reserve this number */ - g_debug ("GdmLocalDisplayFactory: Reserving X display: %u", ret); - g_hash_table_insert (factory->used_display_numbers, GUINT_TO_POINTER (ret), NULL); - - return ret; - } - -+static char * -+get_preferred_display_server (GdmLocalDisplayFactory *factory) -+{ -+ g_autofree gchar *preferred_display_server = NULL; -+ gboolean wayland_enabled = FALSE, xorg_enabled = FALSE; -+ -+ gdm_settings_direct_get_boolean (GDM_KEY_WAYLAND_ENABLE, &wayland_enabled); -+ gdm_settings_direct_get_boolean (GDM_KEY_XORG_ENABLE, &xorg_enabled); -+ -+ if (wayland_enabled && !xorg_enabled) { -+ return g_strdup ("wayland"); -+ } -+ -+ if (!wayland_enabled && !xorg_enabled) { -+ return g_strdup ("none"); -+ } -+ -+ gdm_settings_direct_get_string (GDM_KEY_PREFERRED_DISPLAY_SERVER, &preferred_display_server); -+ -+ if (g_strcmp0 (preferred_display_server, "wayland") == 0) { -+ if (wayland_enabled) -+ return g_strdup (preferred_display_server); -+ else -+ return g_strdup ("xorg"); -+ } -+ -+ if (g_strcmp0 (preferred_display_server, "xorg") == 0) { -+ if (xorg_enabled) -+ return g_strdup (preferred_display_server); -+ else -+ return g_strdup ("wayland"); -+ } -+ -+ if (g_strcmp0 (preferred_display_server, "legacy-xorg") == 0) { -+ if (xorg_enabled) -+ return g_strdup (preferred_display_server); -+ } -+ -+ return g_strdup ("none"); -+} -+ -+struct GdmDisplayServerConfiguration { -+ const char *display_server; -+ const char *key; -+ const char *binary; -+ const char *session_type; -+} display_server_configuration[] = { -+#ifdef ENABLE_WAYLAND_SUPPORT -+ { "wayland", GDM_KEY_WAYLAND_ENABLE, "/usr/bin/Xwayland", "wayland" }, -+#endif -+ { "xorg", GDM_KEY_XORG_ENABLE, "/usr/bin/Xorg", "x11" }, -+ { NULL, NULL, NULL }, -+}; -+ -+static gboolean -+display_server_enabled (GdmLocalDisplayFactory *factory, -+ const char *display_server) -+{ -+ size_t i; -+ -+ for (i = 0; display_server_configuration[i].display_server != NULL; i++) { -+ const char *key = display_server_configuration[i].key; -+ const char *binary = display_server_configuration[i].binary; -+ gboolean enabled = FALSE; -+ -+ if (!g_str_equal (display_server_configuration[i].display_server, -+ display_server)) -+ continue; -+ -+ if (!gdm_settings_direct_get_boolean (key, &enabled) || !enabled) -+ return FALSE; -+ -+ if (!g_file_test (binary, G_FILE_TEST_IS_EXECUTABLE)) -+ return FALSE; -+ -+ return TRUE; -+ } -+ -+ return FALSE; -+} -+ -+static const char * -+get_session_type_for_display_server (GdmLocalDisplayFactory *factory, -+ const char *display_server) -+{ -+ size_t i; -+ -+ for (i = 0; display_server_configuration[i].display_server != NULL; i++) { -+ if (!g_str_equal (display_server_configuration[i].display_server, -+ display_server)) -+ continue; -+ -+ return display_server_configuration[i].session_type; -+ } -+ -+ return NULL; -+} -+ -+static char ** -+gdm_local_display_factory_get_session_types (GdmLocalDisplayFactory *factory, -+ gboolean should_fall_back) -+{ -+ g_autofree gchar *preferred_display_server = NULL; -+ const char *fallback_display_server = NULL; -+ gboolean wayland_preferred = FALSE; -+ gboolean xorg_preferred = FALSE; -+ g_autoptr (GPtrArray) session_types_array = NULL; -+ char **session_types; -+ -+ session_types_array = g_ptr_array_new (); -+ -+ preferred_display_server = get_preferred_display_server (factory); -+ -+ g_debug ("GdmLocalDisplayFactory: Getting session type (prefers %s, falling back: %s)", -+ preferred_display_server, should_fall_back? "yes" : "no"); -+ -+ wayland_preferred = g_str_equal (preferred_display_server, "wayland"); -+ xorg_preferred = g_str_equal (preferred_display_server, "xorg"); -+ -+ if (wayland_preferred) -+ fallback_display_server = "xorg"; -+ else if (xorg_preferred) -+ fallback_display_server = "wayland"; -+ else -+ return NULL; -+ -+ if (!should_fall_back) { -+ if (display_server_enabled (factory, preferred_display_server)) -+ g_ptr_array_add (session_types_array, (gpointer) get_session_type_for_display_server (factory, preferred_display_server)); -+ } -+ -+ if (display_server_enabled (factory, fallback_display_server)) -+ g_ptr_array_add (session_types_array, (gpointer) get_session_type_for_display_server (factory, fallback_display_server)); -+ -+ if (session_types_array->len == 0) -+ return NULL; -+ -+ g_ptr_array_add (session_types_array, NULL); -+ -+ session_types = g_strdupv ((char **) session_types_array->pdata); -+ -+ return session_types; -+} -+ - static void - on_display_disposed (GdmLocalDisplayFactory *factory, - GdmDisplay *display) - { - g_debug ("GdmLocalDisplayFactory: Display %p disposed", display); - } - - static void - store_display (GdmLocalDisplayFactory *factory, - GdmDisplay *display) - { - GdmDisplayStore *store; - - store = gdm_display_factory_get_display_store (GDM_DISPLAY_FACTORY (factory)); - gdm_display_store_add (store, display); - } - --static gboolean --gdm_local_display_factory_use_wayland (void) --{ --#ifdef ENABLE_WAYLAND_SUPPORT -- gboolean wayland_enabled = FALSE; -- if (gdm_settings_direct_get_boolean (GDM_KEY_WAYLAND_ENABLE, &wayland_enabled)) { -- if (wayland_enabled && g_file_test ("/usr/bin/Xwayland", G_FILE_TEST_IS_EXECUTABLE) ) -- return TRUE; -- } --#endif -- return FALSE; --} -- - /* - Example: - dbus-send --system --dest=org.gnome.DisplayManager \ - --type=method_call --print-reply --reply-timeout=2000 \ - /org/gnome/DisplayManager/Manager \ - org.gnome.DisplayManager.Manager.GetDisplays - */ - gboolean - gdm_local_display_factory_create_transient_display (GdmLocalDisplayFactory *factory, - char **id, - GError **error) - { - gboolean ret; - GdmDisplay *display = NULL; - gboolean is_initial = FALSE; -+ const char *session_type; -+ g_autofree gchar *preferred_display_server = NULL; - - g_return_val_if_fail (GDM_IS_LOCAL_DISPLAY_FACTORY (factory), FALSE); - - ret = FALSE; - - g_debug ("GdmLocalDisplayFactory: Creating transient display"); - --#ifdef ENABLE_USER_DISPLAY_SERVER -- display = gdm_local_display_new (); -- if (gdm_local_display_factory_use_wayland ()) -- g_object_set (G_OBJECT (display), "session-type", "wayland", NULL); -- is_initial = TRUE; --#else -- if (display == NULL) { -- guint32 num; -+ preferred_display_server = get_preferred_display_server (factory); - -- num = take_next_display_number (factory); -+#ifdef ENABLE_USER_DISPLAY_SERVER -+ if (g_strcmp0 (preferred_display_server, "wayland") == 0 || -+ g_strcmp0 (preferred_display_server, "xorg") == 0) { -+ g_auto(GStrv) session_types = NULL; -+ -+ session_types = gdm_local_display_factory_get_session_types (factory, FALSE); -+ -+ if (session_types == NULL) { -+ g_set_error_literal (error, -+ GDM_DISPLAY_ERROR, -+ GDM_DISPLAY_ERROR_GENERAL, -+ "Both Wayland and Xorg are unavailable"); -+ return FALSE; -+ } - -- display = gdm_legacy_display_new (num); -+ display = gdm_local_display_new (); -+ g_object_set (G_OBJECT (display), -+ "session-type", session_types[0], -+ "supported-session-types", session_types, -+ NULL); -+ is_initial = TRUE; - } - #endif -+ if (g_strcmp0 (preferred_display_server, "legacy-xorg") == 0) { -+ if (display == NULL) { -+ guint32 num; -+ -+ num = take_next_display_number (factory); -+ -+ display = gdm_legacy_display_new (num); -+ } -+ } -+ -+ if (display == NULL) { -+ g_set_error_literal (error, -+ GDM_DISPLAY_ERROR, -+ GDM_DISPLAY_ERROR_GENERAL, -+ "Invalid preferred display server configured"); -+ return FALSE; -+ } - - g_object_set (display, - "seat-id", "seat0", - "allow-timed-login", FALSE, - "is-initial", is_initial, - NULL); - - store_display (factory, display); - - if (! gdm_display_manage (display)) { - display = NULL; - goto out; - } - - if (! gdm_display_get_id (display, id, NULL)) { - display = NULL; - goto out; - } - - ret = TRUE; - out: - /* ref either held by store or not at all */ - g_object_unref (display); - - return ret; - } - - static void - finish_display_on_seat_if_waiting (GdmDisplayStore *display_store, - GdmDisplay *display, -@@ -450,194 +611,220 @@ lookup_prepared_display_by_seat_id (const char *id, - - if (status != GDM_DISPLAY_PREPARED) - return FALSE; - - return lookup_by_seat_id (id, display, user_data); - } - - static int - on_seat0_graphics_check_timeout (gpointer user_data) - { - GdmLocalDisplayFactory *factory = user_data; - - factory->seat0_graphics_check_timeout_id = 0; - - /* Simply try to re-add seat0. If it is there already (i.e. CanGraphical - * turned TRUE, then we'll find it and it will not be created again). - */ - factory->seat0_graphics_check_timed_out = TRUE; - ensure_display_for_seat (factory, "seat0"); - - return G_SOURCE_REMOVE; - } - - static void - ensure_display_for_seat (GdmLocalDisplayFactory *factory, - const char *seat_id) - { - int ret; - gboolean seat_supports_graphics; - gboolean is_seat0; -- const char *session_type = "wayland"; -+ g_auto (GStrv) session_types = NULL; -+ const char *legacy_session_types[] = { "x11", NULL }; - GdmDisplayStore *store; - GdmDisplay *display = NULL; - g_autofree char *login_session_id = NULL; -+ gboolean wayland_enabled = FALSE, xorg_enabled = FALSE; -+ g_autofree gchar *preferred_display_server = NULL; -+ gboolean falling_back = FALSE; -+ -+ gdm_settings_direct_get_boolean (GDM_KEY_WAYLAND_ENABLE, &wayland_enabled); -+ gdm_settings_direct_get_boolean (GDM_KEY_XORG_ENABLE, &xorg_enabled); -+ -+ preferred_display_server = get_preferred_display_server (factory); -+ -+ if (g_strcmp0 (preferred_display_server, "none") == 0) { -+ g_debug ("GdmLocalDisplayFactory: Preferred display server is none, so not creating display"); -+ return; -+ } - - ret = sd_seat_can_graphical (seat_id); - - if (ret < 0) { - g_critical ("Failed to query CanGraphical information for seat %s", seat_id); - return; - } - - if (ret == 0) { - g_debug ("GdmLocalDisplayFactory: System doesn't currently support graphics"); - seat_supports_graphics = FALSE; - } else { - g_debug ("GdmLocalDisplayFactory: System supports graphics"); - seat_supports_graphics = TRUE; - } - - if (g_strcmp0 (seat_id, "seat0") == 0) { - is_seat0 = TRUE; - -- /* If we've failed, or are explicitly told to, fall back to legacy X11 support -- */ -- if (factory->num_failures > 0 || !gdm_local_display_factory_use_wayland ()) { -- session_type = NULL; -- g_debug ("GdmLocalDisplayFactory: New displays on seat0 will use X11 fallback"); -- } else { -- g_debug ("GdmLocalDisplayFactory: New displays on seat0 will use wayland"); -- } -+ falling_back = factory->num_failures > 0; -+ session_types = gdm_local_display_factory_get_session_types (factory, falling_back); -+ -+ g_debug ("GdmLocalDisplayFactory: New displays on seat0 will use %s%s", -+ session_types[0], falling_back? " fallback" : ""); - } else { - is_seat0 = FALSE; - - g_debug ("GdmLocalDisplayFactory: New displays on seat %s will use X11 fallback", seat_id); - /* Force legacy X11 for all auxiliary seats */ - seat_supports_graphics = TRUE; -- session_type = NULL; -+ session_types = g_strdupv ((char **) legacy_session_types); - } - - /* For seat0, we have a fallback logic to still try starting it after - * SEAT0_GRAPHICS_CHECK_TIMEOUT seconds. i.e. we simply continue even if - * CanGraphical is unset. - * This is ugly, but it means we'll come up eventually in some - * scenarios where no master device is present. - * Note that we'll force an X11 fallback even though there might be - * cases where an wayland capable device is present and simply not marked as - * master-of-seat. In these cases, this should likely be fixed in the - * udev rules. - * - * At the moment, systemd always sets CanGraphical for non-seat0 seats. - * This is because non-seat0 seats are defined by having master-of-seat - * set. This means we can avoid the fallback check for non-seat0 seats, - * which simplifies the code. - */ - if (is_seat0) { - if (!seat_supports_graphics) { - if (!factory->seat0_graphics_check_timed_out) { - if (factory->seat0_graphics_check_timeout_id == 0) { - g_debug ("GdmLocalDisplayFactory: seat0 doesn't yet support graphics. Waiting %d seconds to try again.", SEAT0_GRAPHICS_CHECK_TIMEOUT); - factory->seat0_graphics_check_timeout_id = g_timeout_add_seconds (SEAT0_GRAPHICS_CHECK_TIMEOUT, - on_seat0_graphics_check_timeout, - factory); - - } else { - /* It is not yet time to force X11 fallback. */ - g_debug ("GdmLocalDisplayFactory: seat0 display requested when there is no graphics support before graphics check timeout."); - } - - return; - } - - g_debug ("GdmLocalDisplayFactory: Assuming we can use seat0 for X11 even though system says it doesn't support graphics!"); - g_debug ("GdmLocalDisplayFactory: This might indicate an issue where the framebuffer device is not tagged as master-of-seat in udev."); - seat_supports_graphics = TRUE; -- session_type = NULL; -+ wayland_enabled = FALSE; -+ g_strfreev (session_types); -+ session_types = g_strdupv ((char **) legacy_session_types); - } else { - g_clear_handle_id (&factory->seat0_graphics_check_timeout_id, g_source_remove); - } - } - - if (!seat_supports_graphics) - return; - -- g_debug ("GdmLocalDisplayFactory: %s login display for seat %s requested", -- session_type? : "X11", seat_id); -+ if (session_types != NULL) -+ g_debug ("GdmLocalDisplayFactory: %s login display for seat %s requested", -+ session_types[0], seat_id); -+ else if (g_strcmp0 (preferred_display_server, "legacy-xorg") == 0) -+ g_debug ("GdmLocalDisplayFactory: Legacy Xorg login display for seat %s requested", -+ seat_id); -+ - store = gdm_display_factory_get_display_store (GDM_DISPLAY_FACTORY (factory)); - - if (is_seat0) - display = gdm_display_store_find (store, lookup_prepared_display_by_seat_id, (gpointer) seat_id); - else - display = gdm_display_store_find (store, lookup_by_seat_id, (gpointer) seat_id); - - /* Ensure we don't create the same display more than once */ - if (display != NULL) { - g_debug ("GdmLocalDisplayFactory: display already created"); - return; - } - - /* If we already have a login window, switch to it */ - if (gdm_get_login_window_session_id (seat_id, &login_session_id)) { - GdmDisplay *display; - - display = gdm_display_store_find (store, - lookup_by_session_id, - (gpointer) login_session_id); - if (display != NULL && - (gdm_display_get_status (display) == GDM_DISPLAY_MANAGED || - gdm_display_get_status (display) == GDM_DISPLAY_WAITING_TO_FINISH)) { - g_object_set (G_OBJECT (display), "status", GDM_DISPLAY_MANAGED, NULL); - g_debug ("GdmLocalDisplayFactory: session %s found, activating.", - login_session_id); - gdm_activate_session_by_id (factory->connection, seat_id, login_session_id); - return; - } - } - - g_debug ("GdmLocalDisplayFactory: Adding display on seat %s", seat_id); - - #ifdef ENABLE_USER_DISPLAY_SERVER -- if (is_seat0) { -- display = gdm_local_display_new (); -- if (session_type != NULL) { -- g_object_set (G_OBJECT (display), "session-type", session_type, NULL); -+ if (g_strcmp0 (preferred_display_server, "wayland") == 0 || -+ g_strcmp0 (preferred_display_server, "xorg") == 0) { -+ if (is_seat0) { -+ display = gdm_local_display_new (); -+ g_object_set (G_OBJECT (display), -+ "session-type", session_types[0], -+ "supported-session-types", session_types, -+ NULL); - } - } - #endif - - if (display == NULL) { - guint32 num; - - num = take_next_display_number (factory); - - display = gdm_legacy_display_new (num); -+ g_object_set (G_OBJECT (display), -+ "session-type", legacy_session_types[0], -+ "supported-session-types", legacy_session_types, -+ NULL); - } - - g_object_set (display, "seat-id", seat_id, NULL); - g_object_set (display, "is-initial", is_seat0, NULL); - - store_display (factory, display); - - /* let store own the ref */ - g_object_unref (display); - - if (! gdm_display_manage (display)) { - gdm_display_unmanage (display); - } - - return; - } - - static void - delete_display (GdmLocalDisplayFactory *factory, - const char *seat_id) { - - GdmDisplayStore *store; - - g_debug ("GdmLocalDisplayFactory: Removing used_display_numbers on seat %s", seat_id); - - store = gdm_display_factory_get_display_store (GDM_DISPLAY_FACTORY (factory)); - gdm_display_store_foreach_remove (store, lookup_by_seat_id, (gpointer) seat_id); - } - - static gboolean -diff --git a/daemon/gdm-manager.c b/daemon/gdm-manager.c -index 9c10adff..24219691 100644 ---- a/daemon/gdm-manager.c -+++ b/daemon/gdm-manager.c -@@ -1306,74 +1306,75 @@ get_automatic_login_details (GdmManager *manager, - *usernamep = username; - } else { - g_free (username); - } - - return enabled; - } - - static const char * - get_username_for_greeter_display (GdmManager *manager, - GdmDisplay *display) - { - gboolean doing_initial_setup = FALSE; - - g_object_get (G_OBJECT (display), - "doing-initial-setup", &doing_initial_setup, - NULL); - - if (doing_initial_setup) { - return INITIAL_SETUP_USERNAME; - } else { - return GDM_USERNAME; - } - } - - static void - set_up_automatic_login_session (GdmManager *manager, - GdmDisplay *display) - { - GdmSession *session; -- char *display_session_type = NULL; -+ g_auto (GStrv) supported_session_types = NULL; - - /* 0 is root user; since the daemon talks to the session object - * directly, itself, for automatic login - */ - create_user_session_for_display (manager, display, 0); - session = get_user_session_for_display (display); - - g_object_get (G_OBJECT (display), -- "session-type", &display_session_type, -+ "supported-session-types", &supported_session_types, - NULL); - - g_object_set (G_OBJECT (session), - "display-is-initial", FALSE, -+ "supported-session-types", supported_session_types, - NULL); - - g_debug ("GdmManager: Starting automatic login conversation"); - gdm_session_start_conversation (session, "gdm-autologin"); - } - - static void - set_up_chooser_session (GdmManager *manager, - GdmDisplay *display) - { - const char *allowed_user; - struct passwd *passwd_entry; - - allowed_user = get_username_for_greeter_display (manager, display); - - if (!gdm_get_pwent_for_name (allowed_user, &passwd_entry)) { - g_warning ("GdmManager: couldn't look up username %s", - allowed_user); - gdm_display_unmanage (display); - gdm_display_finish (display); - return; - } - - gdm_display_start_greeter_session (display); - } - - static void - set_up_greeter_session (GdmManager *manager, - GdmDisplay *display) - { -@@ -2278,87 +2279,83 @@ on_session_reauthentication_started (GdmSession *session, - - if (invocation != NULL) { - g_hash_table_steal (manager->priv->open_reauthentication_requests, - source_tag); - gdm_dbus_manager_complete_open_reauthentication_channel (GDM_DBUS_MANAGER (manager), - invocation, - address); - } - } - - static void - clean_user_session (GdmSession *session) - { - g_object_set_data (G_OBJECT (session), "gdm-display", NULL); - g_object_unref (session); - } - - static void - create_user_session_for_display (GdmManager *manager, - GdmDisplay *display, - uid_t allowed_user) - { - GdmSession *session; - gboolean display_is_local = FALSE; - char *display_name = NULL; - char *display_device = NULL; - char *remote_hostname = NULL; - char *display_auth_file = NULL; - char *display_seat_id = NULL; - char *display_id = NULL; --#if defined(ENABLE_WAYLAND_SUPPORT) && defined(ENABLE_USER_DISPLAY_SERVER) -- g_autofree char *display_session_type = NULL; -- gboolean greeter_is_wayland; --#endif -+ g_auto (GStrv) supported_session_types = NULL; - - g_object_get (G_OBJECT (display), - "id", &display_id, - "x11-display-name", &display_name, - "is-local", &display_is_local, - "remote-hostname", &remote_hostname, - "x11-authority-file", &display_auth_file, - "seat-id", &display_seat_id, --#if defined(ENABLE_WAYLAND_SUPPORT) && defined(ENABLE_USER_DISPLAY_SERVER) -- "session-type", &display_session_type, --#endif -+ "supported-session-types", &supported_session_types, - NULL); - display_device = get_display_device (manager, display); - - session = gdm_session_new (GDM_SESSION_VERIFICATION_MODE_LOGIN, - allowed_user, - display_name, - remote_hostname, - display_device, - display_seat_id, - display_auth_file, - display_is_local, - NULL); -+ g_object_set (G_OBJECT (session), "supported-session-types", supported_session_types, NULL); - - g_debug ("GdmSession: Created user session for user %d on display %s (seat %s)", - (int) allowed_user, - display_id, - display_seat_id); - - g_free (display_name); - g_free (remote_hostname); - g_free (display_auth_file); - g_free (display_seat_id); - - g_signal_connect (session, - "reauthentication-started", - G_CALLBACK (on_session_reauthentication_started), - manager); - g_signal_connect (session, - "reauthenticated", - G_CALLBACK (on_session_reauthenticated), - manager); - g_signal_connect (session, - "client-ready-for-session-to-start", - G_CALLBACK (on_session_client_ready_for_session_to_start), - manager); - g_signal_connect (session, - "client-connected", - G_CALLBACK (on_session_client_connected), - manager); - g_signal_connect (session, - "client-disconnected", - G_CALLBACK (on_session_client_disconnected), -@@ -2378,65 +2375,60 @@ create_user_session_for_display (GdmManager *manager, - g_signal_connect (session, - "authentication-failed", - G_CALLBACK (on_session_authentication_failed), - manager); - g_signal_connect (session, - "session-opened", - G_CALLBACK (on_user_session_opened), - manager); - g_signal_connect (session, - "session-started", - G_CALLBACK (on_user_session_started), - manager); - g_signal_connect (session, - "session-start-failed", - G_CALLBACK (on_session_start_failed), - manager); - g_signal_connect (session, - "session-exited", - G_CALLBACK (on_user_session_exited), - manager); - g_signal_connect (session, - "session-died", - G_CALLBACK (on_user_session_died), - manager); - g_object_set_data (G_OBJECT (session), "gdm-display", display); - g_object_set_data_full (G_OBJECT (display), - "gdm-user-session", - session, - (GDestroyNotify) - clean_user_session); -- --#if defined(ENABLE_WAYLAND_SUPPORT) && defined(ENABLE_USER_DISPLAY_SERVER) -- greeter_is_wayland = g_strcmp0 (display_session_type, "wayland") == 0; -- g_object_set (G_OBJECT (session), "ignore-wayland", !greeter_is_wayland, NULL); --#endif - } - - static void - on_display_added (GdmDisplayStore *display_store, - const char *id, - GdmManager *manager) - { - GdmDisplay *display; - - display = gdm_display_store_lookup (display_store, id); - - if (display != NULL) { - g_dbus_object_manager_server_export (manager->priv->object_manager, - gdm_display_get_object_skeleton (display)); - - g_signal_connect (display, "notify::status", - G_CALLBACK (on_display_status_changed), - manager); - g_signal_emit (manager, signals[DISPLAY_ADDED], 0, id); - } - } - - GQuark - gdm_manager_error_quark (void) - { - static GQuark ret = 0; - if (ret == 0) { - ret = g_quark_from_static_string ("gdm_manager_error"); - } - -diff --git a/daemon/gdm-session.c b/daemon/gdm-session.c -index 5c5903a4..7b0ade1e 100644 ---- a/daemon/gdm-session.c -+++ b/daemon/gdm-session.c -@@ -105,100 +105,98 @@ struct _GdmSession - GdmDBusUserVerifier *user_verifier_interface; - GHashTable *user_verifier_extensions; - GdmDBusGreeter *greeter_interface; - GdmDBusRemoteGreeter *remote_greeter_interface; - GdmDBusChooser *chooser_interface; - - GList *pending_worker_connections; - GList *outside_connections; - - GPid session_pid; - - /* object lifetime scope */ - char *session_type; - char *display_name; - char *display_hostname; - char *display_device; - char *display_seat_id; - char *display_x11_authority_file; - gboolean display_is_local; - - GdmSessionVerificationMode verification_mode; - - uid_t allowed_user; - - char *fallback_session_name; - - GDBusServer *worker_server; - GDBusServer *outside_server; - GHashTable *environment; - -+ GStrv supported_session_types; -+ - guint32 is_program_session : 1; - guint32 display_is_initial : 1; --#ifdef ENABLE_WAYLAND_SUPPORT -- guint32 ignore_wayland : 1; --#endif - }; - - enum { - PROP_0, - PROP_VERIFICATION_MODE, - PROP_ALLOWED_USER, - PROP_DISPLAY_NAME, - PROP_DISPLAY_HOSTNAME, - PROP_DISPLAY_IS_LOCAL, - PROP_DISPLAY_IS_INITIAL, - PROP_SESSION_TYPE, - PROP_DISPLAY_DEVICE, - PROP_DISPLAY_SEAT_ID, - PROP_DISPLAY_X11_AUTHORITY_FILE, - PROP_USER_X11_AUTHORITY_FILE, - PROP_CONVERSATION_ENVIRONMENT, --#ifdef ENABLE_WAYLAND_SUPPORT -- PROP_IGNORE_WAYLAND, --#endif -+ PROP_SUPPORTED_SESSION_TYPES, - }; - - enum { - CONVERSATION_STARTED = 0, - CONVERSATION_STOPPED, - SETUP_COMPLETE, - CANCELLED, - HOSTNAME_SELECTED, - CLIENT_REJECTED, - CLIENT_CONNECTED, - CLIENT_DISCONNECTED, - CLIENT_READY_FOR_SESSION_TO_START, - DISCONNECTED, - AUTHENTICATION_FAILED, - VERIFICATION_COMPLETE, - SESSION_OPENED, -+ SESSION_OPENED_FAILED, - SESSION_STARTED, - SESSION_START_FAILED, - SESSION_EXITED, - SESSION_DIED, - REAUTHENTICATION_STARTED, - REAUTHENTICATED, - LAST_SIGNAL - }; - - #ifdef ENABLE_WAYLAND_SUPPORT - static gboolean gdm_session_is_wayland_session (GdmSession *self); - #endif - static void update_session_type (GdmSession *self); - static void set_session_type (GdmSession *self, - const char *session_type); - static void close_conversation (GdmSessionConversation *conversation); - - static guint signals [LAST_SIGNAL] = { 0, }; - - G_DEFINE_TYPE (GdmSession, - gdm_session, - G_TYPE_OBJECT); - - static GdmSessionConversation * - find_conversation_by_name (GdmSession *self, - const char *service_name) - { - GdmSessionConversation *conversation; - - conversation = g_hash_table_lookup (self->conversations, service_name); -@@ -295,128 +293,136 @@ on_authorize_cb (GdmDBusWorker *proxy, - - if (worked) { - gdm_session_accredit (self, service_name); - } else { - report_and_stop_conversation (self, service_name, error); - } - } - - static void - on_establish_credentials_cb (GdmDBusWorker *proxy, - GAsyncResult *res, - gpointer user_data) - { - GdmSessionConversation *conversation = user_data; - GdmSession *self; - char *service_name; - - GError *error = NULL; - gboolean worked; - - worked = gdm_dbus_worker_call_establish_credentials_finish (proxy, res, &error); - - if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CLOSED) || - g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) - return; - - self = g_object_ref (conversation->session); - service_name = g_strdup (conversation->service_name); - - if (worked) { -- if (self->user_verifier_interface != NULL) { -- gdm_dbus_user_verifier_emit_verification_complete (self->user_verifier_interface, -- service_name); -- g_signal_emit (self, signals[VERIFICATION_COMPLETE], 0, service_name); -- } -- - switch (self->verification_mode) { - case GDM_SESSION_VERIFICATION_MODE_LOGIN: - case GDM_SESSION_VERIFICATION_MODE_CHOOSER: - gdm_session_open_session (self, service_name); - break; - case GDM_SESSION_VERIFICATION_MODE_REAUTHENTICATE: -+ if (self->user_verifier_interface != NULL) { -+ gdm_dbus_user_verifier_emit_verification_complete (self->user_verifier_interface, -+ service_name); -+ g_signal_emit (self, signals[VERIFICATION_COMPLETE], 0, service_name); -+ } -+ break; - default: - break; - } - } else { - report_and_stop_conversation (self, service_name, error); - } - - g_free (service_name); - g_object_unref (self); - } - -+static gboolean -+supports_session_type (GdmSession *self, -+ const char *session_type) -+{ -+ if (session_type == NULL) -+ return TRUE; -+ -+ return g_strv_contains ((const char * const *) self->supported_session_types, -+ session_type); -+} -+ - static char ** - get_system_session_dirs (GdmSession *self) - { - GArray *search_array = NULL; - char **search_dirs; -- int i; -+ int i, j; - const gchar * const *system_data_dirs = g_get_system_data_dirs (); - - static const char *x_search_dirs[] = { - "/etc/X11/sessions/", - DMCONFDIR "/Sessions/", - DATADIR "/gdm/BuiltInSessions/", - DATADIR "/xsessions/", - }; - - static const char *wayland_search_dir = DATADIR "/wayland-sessions/"; - - search_array = g_array_new (TRUE, TRUE, sizeof (char *)); - -- for (i = 0; system_data_dirs[i]; i++) { -- gchar *dir = g_build_filename (system_data_dirs[i], "xsessions", NULL); -- g_array_append_val (search_array, dir); -- } -+ for (j = 0; self->supported_session_types[j] != NULL; j++) { -+ const char *supported_type = self->supported_session_types[j]; - -- g_array_append_vals (search_array, x_search_dirs, G_N_ELEMENTS (x_search_dirs)); -+ if (g_str_equal (supported_type, "x11")) { -+ for (i = 0; system_data_dirs[i]; i++) { -+ gchar *dir = g_build_filename (system_data_dirs[i], "xsessions", NULL); -+ g_array_append_val (search_array, dir); -+ } -+ -+ g_array_append_vals (search_array, x_search_dirs, G_N_ELEMENTS (x_search_dirs)); -+ } - - #ifdef ENABLE_WAYLAND_SUPPORT -- if (!self->ignore_wayland) { --#ifdef ENABLE_USER_DISPLAY_SERVER -- g_array_prepend_val (search_array, wayland_search_dir); -+ if (g_str_equal (supported_type, "wayland")) { -+ for (i = 0; system_data_dirs[i]; i++) { -+ gchar *dir = g_build_filename (system_data_dirs[i], "wayland-sessions", NULL); -+ g_array_append_val (search_array, dir); -+ } - -- for (i = 0; system_data_dirs[i]; i++) { -- gchar *dir = g_build_filename (system_data_dirs[i], "wayland-sessions", NULL); -- g_array_insert_val (search_array, i, dir); -- } --#else -- for (i = 0; system_data_dirs[i]; i++) { -- gchar *dir = g_build_filename (system_data_dirs[i], "wayland-sessions", NULL); -- g_array_append_val (search_array, dir); -+ g_array_append_val (search_array, wayland_search_dir); - } -- -- g_array_append_val (search_array, wayland_search_dir); - #endif - } --#endif - - search_dirs = g_strdupv ((char **) search_array->data); - - g_array_free (search_array, TRUE); - - return search_dirs; - } - - static gboolean - is_prog_in_path (const char *prog) - { - char *f; - gboolean ret; - - f = g_find_program_in_path (prog); - ret = (f != NULL); - g_free (f); - return ret; - } - - static GKeyFile * - load_key_file_for_file (GdmSession *self, - const char *file, - char **full_path) - { - GKeyFile *key_file; - GError *error; - gboolean res; - char **search_dirs; - -@@ -839,78 +845,78 @@ static void - on_opened (GdmDBusWorker *worker, - GAsyncResult *res, - gpointer user_data) - { - GdmSessionConversation *conversation = user_data; - GdmSession *self; - char *service_name; - - GError *error = NULL; - gboolean worked; - char *session_id; - - worked = gdm_dbus_worker_call_open_finish (worker, - &session_id, - res, - &error); - - if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CLOSED) || - g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) - return; - - self = conversation->session; - service_name = conversation->service_name; - - if (worked) { - g_clear_pointer (&conversation->session_id, - (GDestroyNotify) g_free); - - conversation->session_id = g_strdup (session_id); - -- if (self->greeter_interface != NULL) { -- gdm_dbus_greeter_emit_session_opened (self->greeter_interface, -- service_name); -- } -- - if (self->user_verifier_interface != NULL) { - gdm_dbus_user_verifier_emit_verification_complete (self->user_verifier_interface, - service_name); - g_signal_emit (self, signals[VERIFICATION_COMPLETE], 0, service_name); - } - -+ if (self->greeter_interface != NULL) { -+ gdm_dbus_greeter_emit_session_opened (self->greeter_interface, -+ service_name); -+ } -+ - g_debug ("GdmSession: Emitting 'session-opened' signal"); - g_signal_emit (self, signals[SESSION_OPENED], 0, service_name, session_id); - } else { - report_and_stop_conversation (self, service_name, error); - - g_debug ("GdmSession: Emitting 'session-start-failed' signal"); -- g_signal_emit (self, signals[SESSION_START_FAILED], 0, service_name, error->message); -+ g_signal_emit (self, signals[SESSION_OPENED_FAILED], 0, service_name, error->message); - } - } - - static void - worker_on_username_changed (GdmDBusWorker *worker, - const char *username, - GdmSessionConversation *conversation) - { - GdmSession *self = conversation->session; - - g_debug ("GdmSession: changing username from '%s' to '%s'", - self->selected_user != NULL ? self->selected_user : "", - (strlen (username)) ? username : ""); - - gdm_session_select_user (self, (strlen (username) > 0) ? g_strdup (username) : NULL); - gdm_session_defaults_changed (self); - } - - static void - worker_on_session_exited (GdmDBusWorker *worker, - const char *service_name, - int status, - GdmSessionConversation *conversation) - { - GdmSession *self = conversation->session; - - self->session_conversation = NULL; - - if (WIFEXITED (status)) { - g_debug ("GdmSession: Emitting 'session-exited' signal with exit code '%d'", -@@ -968,73 +974,76 @@ worker_on_reauthenticated (GdmDBusWorker *worker, - static void - worker_on_saved_language_name_read (GdmDBusWorker *worker, - const char *language_name, - GdmSessionConversation *conversation) - { - GdmSession *self = conversation->session; - - if (strlen (language_name) > 0) { - g_free (self->saved_language); - self->saved_language = g_strdup (language_name); - - if (self->greeter_interface != NULL) { - gdm_dbus_greeter_emit_default_language_name_changed (self->greeter_interface, - language_name); - } - } - } - - static void - worker_on_saved_session_name_read (GdmDBusWorker *worker, - const char *session_name, - GdmSessionConversation *conversation) - { - GdmSession *self = conversation->session; - - if (! get_session_command_for_name (self, session_name, NULL)) { - /* ignore sessions that don't exist */ - g_debug ("GdmSession: not using invalid .dmrc session: %s", session_name); - g_free (self->saved_session); - self->saved_session = NULL; -- } else if (strcmp (session_name, -- get_default_session_name (self)) != 0) { -- g_free (self->saved_session); -- self->saved_session = g_strdup (session_name); -- -- if (self->greeter_interface != NULL) { -- gdm_dbus_greeter_emit_default_session_name_changed (self->greeter_interface, -- session_name); -+ update_session_type (self); -+ } else { -+ if (strcmp (session_name, -+ get_default_session_name (self)) != 0) { -+ g_free (self->saved_session); -+ self->saved_session = g_strdup (session_name); -+ -+ if (self->greeter_interface != NULL) { -+ gdm_dbus_greeter_emit_default_session_name_changed (self->greeter_interface, -+ session_name); -+ } - } -+ if (self->saved_session_type != NULL) -+ set_session_type (self, self->saved_session_type); - } - -- update_session_type (self); -- - } - - static GdmSessionConversation * - find_conversation_by_pid (GdmSession *self, - GPid pid) - { - GHashTableIter iter; - gpointer key, value; - - g_hash_table_iter_init (&iter, self->conversations); - while (g_hash_table_iter_next (&iter, &key, &value)) { - GdmSessionConversation *conversation; - - conversation = (GdmSessionConversation *) value; - - if (conversation->worker_pid == pid) { - return conversation; - } - } - - return NULL; - } - - static gboolean - allow_worker_function (GDBusAuthObserver *observer, - GIOStream *stream, - GCredentials *credentials, - GdmSession *self) - { - uid_t connecting_user; -@@ -2197,68 +2206,72 @@ close_conversation (GdmSessionConversation *conversation) - - if (conversation->worker_manager_interface != NULL) { - unexport_worker_manager_interface (self, conversation->worker_manager_interface); - g_clear_object (&conversation->worker_manager_interface); - } - - if (conversation->worker_proxy != NULL) { - GDBusConnection *connection = g_dbus_proxy_get_connection (G_DBUS_PROXY (conversation->worker_proxy)); - g_dbus_connection_close_sync (connection, NULL, NULL); - } - } - - static void - stop_conversation (GdmSessionConversation *conversation) - { - close_conversation (conversation); - - conversation->is_stopping = TRUE; - gdm_session_worker_job_stop (conversation->job); - } - - static void - stop_conversation_now (GdmSessionConversation *conversation) - { - close_conversation (conversation); - - gdm_session_worker_job_stop_now (conversation->job); - g_clear_object (&conversation->job); - } - --#ifdef ENABLE_WAYLAND_SUPPORT - void --gdm_session_set_ignore_wayland (GdmSession *self, -- gboolean ignore_wayland) -+gdm_session_set_supported_session_types (GdmSession *self, -+ const char * const *supported_session_types) - { -- self->ignore_wayland = ignore_wayland; -+ const char * const session_types[] = { "wayland", "x11", NULL }; -+ g_strfreev (self->supported_session_types); -+ -+ if (supported_session_types == NULL) -+ self->supported_session_types = g_strdupv ((GStrv) session_types); -+ else -+ self->supported_session_types = g_strdupv ((GStrv) supported_session_types); - } --#endif - - gboolean - gdm_session_start_conversation (GdmSession *self, - const char *service_name) - { - GdmSessionConversation *conversation; - - g_return_val_if_fail (GDM_IS_SESSION (self), FALSE); - - conversation = g_hash_table_lookup (self->conversations, - service_name); - - if (conversation != NULL) { - if (!conversation->is_stopping) { - g_warning ("GdmSession: conversation %s started more than once", service_name); - return FALSE; - } - g_debug ("GdmSession: stopping old conversation %s", service_name); - gdm_session_worker_job_stop_now (conversation->job); - g_object_unref (conversation->job); - conversation->job = NULL; - } - - g_debug ("GdmSession: starting conversation %s for session (%p)", service_name, self); - - conversation = start_conversation (self, service_name); - - g_hash_table_insert (self->conversations, - g_strdup (service_name), conversation); - return TRUE; -@@ -3137,64 +3150,66 @@ gdm_session_get_conversation_session_id (GdmSession *self, - - conversation = find_conversation_by_name (self, service_name); - - if (conversation == NULL) { - return NULL; - } - - return conversation->session_id; - } - - static char * - get_session_filename (GdmSession *self) - { - return g_strdup_printf ("%s.desktop", get_session_name (self)); - } - - #ifdef ENABLE_WAYLAND_SUPPORT - static gboolean - gdm_session_is_wayland_session (GdmSession *self) - { - GKeyFile *key_file; - gboolean is_wayland_session = FALSE; - char *filename; - char *full_path = NULL; - - g_return_val_if_fail (self != NULL, FALSE); - g_return_val_if_fail (GDM_IS_SESSION (self), FALSE); - - filename = get_session_filename (self); - -- key_file = load_key_file_for_file (self, filename, &full_path); -+ if (supports_session_type (self, "wayland")) { -+ key_file = load_key_file_for_file (self, filename, &full_path); - -- if (key_file == NULL) { -- goto out; -+ if (key_file == NULL) { -+ goto out; -+ } - } - - if (full_path != NULL && strstr (full_path, "/wayland-sessions/") != NULL) { - is_wayland_session = TRUE; - } - g_debug ("GdmSession: checking if file '%s' is wayland session: %s", filename, is_wayland_session? "yes" : "no"); - - out: - g_clear_pointer (&key_file, g_key_file_free); - g_free (filename); - return is_wayland_session; - } - #endif - - static void - update_session_type (GdmSession *self) - { - #ifdef ENABLE_WAYLAND_SUPPORT - gboolean is_wayland_session; - - is_wayland_session = gdm_session_is_wayland_session (self); - if (is_wayland_session) { - set_session_type (self, "wayland"); - } else { - set_session_type (self, NULL); - } - #endif - } - - gboolean -@@ -3424,195 +3439,192 @@ set_display_is_initial (GdmSession *self, - { - self->display_is_initial = is_initial; - } - - static void - set_verification_mode (GdmSession *self, - GdmSessionVerificationMode verification_mode) - { - self->verification_mode = verification_mode; - } - - static void - set_allowed_user (GdmSession *self, - uid_t allowed_user) - { - self->allowed_user = allowed_user; - } - - static void - set_conversation_environment (GdmSession *self, - char **environment) - { - g_strfreev (self->conversation_environment); - self->conversation_environment = g_strdupv (environment); - } - - static void - set_session_type (GdmSession *self, - const char *session_type) - { -- -+ g_debug ("GdmSession: setting session to type '%s'", session_type? session_type : ""); - if (g_strcmp0 (self->session_type, session_type) != 0) { -- g_debug ("GdmSession: setting session to type '%s'", session_type? session_type : ""); - g_free (self->session_type); - self->session_type = g_strdup (session_type); - } - } - - static void - gdm_session_set_property (GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec) - { - GdmSession *self; - - self = GDM_SESSION (object); - - switch (prop_id) { - case PROP_SESSION_TYPE: - set_session_type (self, g_value_get_string (value)); - break; - case PROP_DISPLAY_NAME: - set_display_name (self, g_value_get_string (value)); - break; - case PROP_DISPLAY_HOSTNAME: - set_display_hostname (self, g_value_get_string (value)); - break; - case PROP_DISPLAY_DEVICE: - set_display_device (self, g_value_get_string (value)); - break; - case PROP_DISPLAY_SEAT_ID: - set_display_seat_id (self, g_value_get_string (value)); - break; - case PROP_USER_X11_AUTHORITY_FILE: - set_user_x11_authority_file (self, g_value_get_string (value)); - break; - case PROP_DISPLAY_X11_AUTHORITY_FILE: - set_display_x11_authority_file (self, g_value_get_string (value)); - break; - case PROP_DISPLAY_IS_LOCAL: - set_display_is_local (self, g_value_get_boolean (value)); - break; - case PROP_DISPLAY_IS_INITIAL: - set_display_is_initial (self, g_value_get_boolean (value)); - break; - case PROP_VERIFICATION_MODE: - set_verification_mode (self, g_value_get_enum (value)); - break; - case PROP_ALLOWED_USER: - set_allowed_user (self, g_value_get_uint (value)); - break; - case PROP_CONVERSATION_ENVIRONMENT: - set_conversation_environment (self, g_value_get_pointer (value)); - break; --#ifdef ENABLE_WAYLAND_SUPPORT -- case PROP_IGNORE_WAYLAND: -- gdm_session_set_ignore_wayland (self, g_value_get_boolean (value)); -+ case PROP_SUPPORTED_SESSION_TYPES: -+ gdm_session_set_supported_session_types (self, g_value_get_boxed (value)); - break; --#endif - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; - } - } - - static void - gdm_session_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec) - { - GdmSession *self; - - self = GDM_SESSION (object); - - switch (prop_id) { - case PROP_SESSION_TYPE: - g_value_set_string (value, self->session_type); - break; - case PROP_DISPLAY_NAME: - g_value_set_string (value, self->display_name); - break; - case PROP_DISPLAY_HOSTNAME: - g_value_set_string (value, self->display_hostname); - break; - case PROP_DISPLAY_DEVICE: - g_value_set_string (value, self->display_device); - break; - case PROP_DISPLAY_SEAT_ID: - g_value_set_string (value, self->display_seat_id); - break; - case PROP_USER_X11_AUTHORITY_FILE: - g_value_set_string (value, self->user_x11_authority_file); - break; - case PROP_DISPLAY_X11_AUTHORITY_FILE: - g_value_set_string (value, self->display_x11_authority_file); - break; - case PROP_DISPLAY_IS_LOCAL: - g_value_set_boolean (value, self->display_is_local); - break; - case PROP_DISPLAY_IS_INITIAL: - g_value_set_boolean (value, self->display_is_initial); - break; - case PROP_VERIFICATION_MODE: - g_value_set_enum (value, self->verification_mode); - break; - case PROP_ALLOWED_USER: - g_value_set_uint (value, self->allowed_user); - break; - case PROP_CONVERSATION_ENVIRONMENT: - g_value_set_pointer (value, self->environment); - break; --#ifdef ENABLE_WAYLAND_SUPPORT -- case PROP_IGNORE_WAYLAND: -- g_value_set_boolean (value, self->ignore_wayland); -+ case PROP_SUPPORTED_SESSION_TYPES: -+ g_value_set_boxed (value, self->supported_session_types); - break; --#endif - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; - } - } - - static void - gdm_session_dispose (GObject *object) - { - GdmSession *self; - - self = GDM_SESSION (object); - - g_debug ("GdmSession: Disposing session"); - - gdm_session_close (self); - -+ g_clear_pointer (&self->supported_session_types, -+ g_strfreev); - g_clear_pointer (&self->conversations, - g_hash_table_unref); - - g_clear_object (&self->user_verifier_interface); - g_clear_pointer (&self->user_verifier_extensions, - g_hash_table_unref); - g_clear_object (&self->greeter_interface); - g_clear_object (&self->remote_greeter_interface); - g_clear_object (&self->chooser_interface); - - g_free (self->display_name); - self->display_name = NULL; - - g_free (self->display_hostname); - self->display_hostname = NULL; - - g_free (self->display_device); - self->display_device = NULL; - - g_free (self->display_seat_id); - self->display_seat_id = NULL; - - g_free (self->display_x11_authority_file); - self->display_x11_authority_file = NULL; - - g_strfreev (self->conversation_environment); - self->conversation_environment = NULL; - - if (self->worker_server != NULL) { - g_dbus_server_stop (self->worker_server); -@@ -3719,60 +3731,71 @@ gdm_session_class_init (GdmSessionClass *session_class) - NULL, - NULL, - NULL, - G_TYPE_NONE, - 2, - G_TYPE_STRING, - G_TYPE_INT); - signals [VERIFICATION_COMPLETE] = - g_signal_new ("verification-complete", - GDM_TYPE_SESSION, - G_SIGNAL_RUN_FIRST, - 0, - NULL, - NULL, - NULL, - G_TYPE_NONE, - 1, - G_TYPE_STRING); - signals [SESSION_OPENED] = - g_signal_new ("session-opened", - GDM_TYPE_SESSION, - G_SIGNAL_RUN_FIRST, - 0, - NULL, - NULL, - NULL, - G_TYPE_NONE, - 2, - G_TYPE_STRING, - G_TYPE_STRING); -+ signals [SESSION_OPENED_FAILED] = -+ g_signal_new ("session-opened-failed", -+ GDM_TYPE_SESSION, -+ G_SIGNAL_RUN_FIRST, -+ 0, -+ NULL, -+ NULL, -+ g_cclosure_marshal_generic, -+ G_TYPE_NONE, -+ 2, -+ G_TYPE_STRING, G_TYPE_STRING); - signals [SESSION_STARTED] = - g_signal_new ("session-started", - GDM_TYPE_SESSION, - G_SIGNAL_RUN_FIRST, - 0, - NULL, - NULL, - g_cclosure_marshal_generic, - G_TYPE_NONE, - 2, - G_TYPE_STRING, - G_TYPE_INT); - signals [SESSION_START_FAILED] = - g_signal_new ("session-start-failed", - GDM_TYPE_SESSION, - G_SIGNAL_RUN_FIRST, - 0, - NULL, - NULL, - g_cclosure_marshal_generic, - G_TYPE_NONE, - 2, - G_TYPE_STRING, G_TYPE_STRING); - signals [SESSION_EXITED] = - g_signal_new ("session-exited", - GDM_TYPE_SESSION, - G_SIGNAL_RUN_FIRST, - 0, - NULL, - NULL, -@@ -3962,69 +3985,67 @@ gdm_session_class_init (GdmSessionClass *session_class) - PROP_DISPLAY_X11_AUTHORITY_FILE, - g_param_spec_string ("display-x11-authority-file", - "display x11 authority file", - "display x11 authority file", - NULL, - G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS)); - /* not construct only */ - g_object_class_install_property (object_class, - PROP_USER_X11_AUTHORITY_FILE, - g_param_spec_string ("user-x11-authority-file", - "", - "", - NULL, - G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS)); - g_object_class_install_property (object_class, - PROP_DISPLAY_DEVICE, - g_param_spec_string ("display-device", - "display device", - "display device", - NULL, - G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS)); - - g_object_class_install_property (object_class, - PROP_DISPLAY_SEAT_ID, - g_param_spec_string ("display-seat-id", - "display seat id", - "display seat id", - NULL, - G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS)); - --#ifdef ENABLE_WAYLAND_SUPPORT - g_object_class_install_property (object_class, -- PROP_IGNORE_WAYLAND, -- g_param_spec_boolean ("ignore-wayland", -- "ignore wayland", -- "ignore wayland", -- FALSE, -- G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS)); --#endif -+ PROP_SUPPORTED_SESSION_TYPES, -+ g_param_spec_boxed ("supported-session-types", -+ "supported session types", -+ "supported session types", -+ G_TYPE_STRV, -+ G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS)); - - /* Ensure we can resolve errors */ - gdm_dbus_error_ensure (GDM_SESSION_WORKER_ERROR); - } - - GdmSession * - gdm_session_new (GdmSessionVerificationMode verification_mode, - uid_t allowed_user, - const char *display_name, - const char *display_hostname, - const char *display_device, - const char *display_seat_id, - const char *display_x11_authority_file, - gboolean display_is_local, - const char * const *environment) - { - GdmSession *self; - - self = g_object_new (GDM_TYPE_SESSION, - "verification-mode", verification_mode, - "allowed-user", (guint) allowed_user, - "display-name", display_name, - "display-hostname", display_hostname, - "display-device", display_device, - "display-seat-id", display_seat_id, - "display-x11-authority-file", display_x11_authority_file, - "display-is-local", display_is_local, - "conversation-environment", environment, - NULL); - -diff --git a/data/gdm.schemas.in b/data/gdm.schemas.in -index 255bff02..a1035f95 100644 ---- a/data/gdm.schemas.in -+++ b/data/gdm.schemas.in -@@ -25,65 +25,75 @@ - - daemon/AutomaticLoginEnable - b - false - - - daemon/AutomaticLogin - s - - - - daemon/TimedLoginEnable - b - false - - - daemon/TimedLogin - s - - - - daemon/TimedLoginDelay - i - 30 - - - daemon/InitialSetupEnable - b - true - -+ -+ daemon/PreferredDisplayServer -+ s -+ wayland -+ - - daemon/WaylandEnable - b - true - -+ -+ daemon/XorgEnable -+ b -+ true -+ - - security/AllowRemoteAutoLogin - b - false - - - - debug/Enable - b - false - - - - security/DisallowTCP - b - true - - - xdmcp/Enable - b - false - - - xdmcp/ShowLocalGreeter - b - true - - - xdmcp/MaxPending - i -diff --git a/libgdm/gdm-sessions.c b/libgdm/gdm-sessions.c -index 75d442ee..97ed5ef3 100644 ---- a/libgdm/gdm-sessions.c -+++ b/libgdm/gdm-sessions.c -@@ -163,171 +163,203 @@ load_session_file (const char *id, - - static gboolean - remove_duplicate_sessions (gpointer key, - gpointer value, - gpointer user_data) - { - gboolean already_known; - GHashTable *names_seen_before; - GdmSessionFile *session; - - names_seen_before = (GHashTable *) user_data; - session = (GdmSessionFile *) value; - already_known = !g_hash_table_add (names_seen_before, session->translated_name); - - if (already_known) - g_debug ("GdmSession: Removing %s (%s) as we already have a session by this name", - session->id, - session->path); - - return already_known; - } - - static void - collect_sessions_from_directory (const char *dirname) - { - GDir *dir; - const char *filename; - - gboolean is_x11 = g_getenv ("WAYLAND_DISPLAY") == NULL && - g_getenv ("RUNNING_UNDER_GDM") != NULL; -+ gboolean is_wayland = g_getenv ("WAYLAND_DISPLAY") != NULL && -+ g_getenv ("RUNNING_UNDER_GDM") != NULL; - - /* FIXME: add file monitor to directory */ - - dir = g_dir_open (dirname, 0, NULL); - if (dir == NULL) { - return; - } - - while ((filename = g_dir_read_name (dir))) { - char *id; - char *full_path; - - if (! g_str_has_suffix (filename, ".desktop")) { - continue; - } - -- if (is_x11 && g_str_has_suffix (filename, "-xorg.desktop")) { -- char *base_name = g_strndup (filename, strlen (filename) - strlen ("-xorg.desktop")); -- char *fallback_name = g_strconcat (base_name, ".desktop", NULL); -- g_free (base_name); -- char *fallback_path = g_build_filename (dirname, fallback_name, NULL); -- g_free (fallback_name); -- if (g_file_test (fallback_path, G_FILE_TEST_EXISTS)) { -- g_free (fallback_path); -- g_debug ("Running under X11, ignoring %s", filename); -- continue; -+ if (is_wayland) { -+ if (g_str_has_suffix (filename, "-wayland.desktop")) { -+ g_autofree char *base_name = g_strndup (filename, strlen (filename) - strlen ("-wayland.desktop")); -+ g_autofree char *other_name = g_strconcat (base_name, ".desktop", NULL); -+ g_autofree char *other_path = g_build_filename (dirname, other_name, NULL); -+ -+ if (g_file_test (other_path, G_FILE_TEST_EXISTS)) { -+ g_debug ("Running under Wayland, ignoring %s", filename); -+ continue; -+ } -+ } else { -+ g_autofree char *base_name = g_strndup (filename, strlen (filename) - strlen (".desktop")); -+ g_autofree char *other_name = g_strdup_printf ("%s-xorg.desktop", base_name); -+ g_autofree char *other_path = g_build_filename (dirname, other_name, NULL); -+ -+ if (g_file_test (other_path, G_FILE_TEST_EXISTS)) { -+ g_debug ("Running under Wayland, ignoring %s", filename); -+ continue; -+ } -+ } -+ } else if (is_x11) { -+ if (g_str_has_suffix (filename, "-xorg.desktop")) { -+ g_autofree char *base_name = g_strndup (filename, strlen (filename) - strlen ("-xorg.desktop")); -+ g_autofree char *other_name = g_strconcat (base_name, ".desktop", NULL); -+ g_autofree char *other_path = g_build_filename (dirname, other_name, NULL); -+ -+ if (g_file_test (other_path, G_FILE_TEST_EXISTS)) { -+ g_debug ("Running under X11, ignoring %s", filename); -+ continue; -+ } -+ } else { -+ g_autofree char *base_name = g_strndup (filename, strlen (filename) - strlen (".desktop")); -+ g_autofree char *other_name = g_strdup_printf ("%s-wayland.desktop", base_name); -+ g_autofree char *other_path = g_build_filename (dirname, other_name, NULL); -+ -+ if (g_file_test (other_path, G_FILE_TEST_EXISTS)) { -+ g_debug ("Running under X11, ignoring %s", filename); -+ continue; -+ } - } -- g_free (fallback_path); - } - - id = g_strndup (filename, strlen (filename) - strlen (".desktop")); - - full_path = g_build_filename (dirname, filename, NULL); - - load_session_file (id, full_path); - - g_free (id); - g_free (full_path); - } - - g_dir_close (dir); - } - - static void - collect_sessions (void) - { - g_autoptr(GHashTable) names_seen_before = NULL; - g_autoptr(GPtrArray) xorg_search_array = NULL; - g_autoptr(GPtrArray) wayland_search_array = NULL; - gchar *session_dir = NULL; - int i; - const char *xorg_search_dirs[] = { - "/etc/X11/sessions/", - DMCONFDIR "/Sessions/", - DATADIR "/gdm/BuiltInSessions/", - DATADIR "/xsessions/", - }; -+ g_auto (GStrv) supported_session_types = NULL; -+ -+ supported_session_types = g_strsplit (g_getenv ("GDM_SUPPORTED_SESSION_TYPES"), ":", -1); - - names_seen_before = g_hash_table_new (g_str_hash, g_str_equal); - xorg_search_array = g_ptr_array_new_with_free_func (g_free); - - const gchar * const *system_data_dirs = g_get_system_data_dirs (); - - for (i = 0; system_data_dirs[i]; i++) { - session_dir = g_build_filename (system_data_dirs[i], "xsessions", NULL); - g_ptr_array_add (xorg_search_array, session_dir); - } - - for (i = 0; i < G_N_ELEMENTS (xorg_search_dirs); i++) { - g_ptr_array_add (xorg_search_array, g_strdup (xorg_search_dirs[i])); - } - - #ifdef ENABLE_WAYLAND_SUPPORT - const char *wayland_search_dirs[] = { - DATADIR "/wayland-sessions/", - }; - - wayland_search_array = g_ptr_array_new_with_free_func (g_free); - - for (i = 0; system_data_dirs[i]; i++) { - session_dir = g_build_filename (system_data_dirs[i], "wayland-sessions", NULL); - g_ptr_array_add (wayland_search_array, session_dir); - } - - for (i = 0; i < G_N_ELEMENTS (wayland_search_dirs); i++) { - g_ptr_array_add (wayland_search_array, g_strdup (wayland_search_dirs[i])); - } - #endif - - if (gdm_available_sessions_map == NULL) { - gdm_available_sessions_map = g_hash_table_new_full (g_str_hash, g_str_equal, - g_free, (GDestroyNotify)gdm_session_file_free); - } - -- for (i = 0; i < xorg_search_array->len; i++) { -- collect_sessions_from_directory (g_ptr_array_index (xorg_search_array, i)); -+ if (!supported_session_types || g_strv_contains ((const char * const *) supported_session_types, "x11")) { -+ for (i = 0; i < xorg_search_array->len; i++) { -+ collect_sessions_from_directory (g_ptr_array_index (xorg_search_array, i)); -+ } - } - - #ifdef ENABLE_WAYLAND_SUPPORT - #ifdef ENABLE_USER_DISPLAY_SERVER -- if (g_getenv ("WAYLAND_DISPLAY") == NULL && g_getenv ("RUNNING_UNDER_GDM") != NULL) { -- goto out; -+ if (!supported_session_types || g_strv_contains ((const char * const *) supported_session_types, "wayland")) { -+ for (i = 0; i < wayland_search_array->len; i++) { -+ collect_sessions_from_directory (g_ptr_array_index (wayland_search_array, i)); -+ } - } - #endif -- -- for (i = 0; i < wayland_search_array->len; i++) { -- collect_sessions_from_directory (g_ptr_array_index (wayland_search_array, i)); -- } - #endif - --out: - g_hash_table_foreach_remove (gdm_available_sessions_map, - remove_duplicate_sessions, - names_seen_before); - } - - /** - * gdm_get_session_ids: - * - * Reads /usr/share/xsessions and other relevant places for possible sessions - * to log into and returns the complete list. - * - * Returns: (transfer full): a %NULL terminated list of session ids - */ - char ** - gdm_get_session_ids (void) - { - GHashTableIter iter; - gpointer key, value; - GPtrArray *array; - - if (!gdm_sessions_map_is_initialized) { - collect_sessions (); - - gdm_sessions_map_is_initialized = TRUE; - } - - array = g_ptr_array_new (); - g_hash_table_iter_init (&iter, gdm_available_sessions_map); - while (g_hash_table_iter_next (&iter, &key, &value)) { - GdmSessionFile *session; --- -2.34.1 - diff --git a/SOURCES/0001-manager-allow-multiple-xdmcp-logins-for-the-same-use.patch b/SOURCES/0001-manager-allow-multiple-xdmcp-logins-for-the-same-use.patch deleted file mode 100644 index 718486c..0000000 --- a/SOURCES/0001-manager-allow-multiple-xdmcp-logins-for-the-same-use.patch +++ /dev/null @@ -1,344 +0,0 @@ -From d80807171a457ff87bdc9bd861939161749a37a8 Mon Sep 17 00:00:00 2001 -From: Ray Strode -Date: Thu, 20 Dec 2018 14:51:38 -0500 -Subject: [PATCH 1/3] manager: allow multiple xdmcp logins for the same user - ---- - common/gdm-settings-keys.h | 1 + - daemon/gdm-manager.c | 71 ++++++++++++++++++++++++++++---------- - data/gdm.schemas.in | 5 +++ - 3 files changed, 59 insertions(+), 18 deletions(-) - -diff --git a/common/gdm-settings-keys.h b/common/gdm-settings-keys.h -index 87685d3cd..4b3a1ffeb 100644 ---- a/common/gdm-settings-keys.h -+++ b/common/gdm-settings-keys.h -@@ -30,37 +30,38 @@ G_BEGIN_DECLS - #define GDM_KEY_AUTO_LOGIN_ENABLE "daemon/AutomaticLoginEnable" - #define GDM_KEY_AUTO_LOGIN_USER "daemon/AutomaticLogin" - #define GDM_KEY_TIMED_LOGIN_ENABLE "daemon/TimedLoginEnable" - #define GDM_KEY_TIMED_LOGIN_USER "daemon/TimedLogin" - #define GDM_KEY_TIMED_LOGIN_DELAY "daemon/TimedLoginDelay" - #define GDM_KEY_INITIAL_SETUP_ENABLE "daemon/InitialSetupEnable" - #define GDM_KEY_PREFERRED_DISPLAY_SERVER "daemon/PreferredDisplayServer" - #define GDM_KEY_WAYLAND_ENABLE "daemon/WaylandEnable" - #define GDM_KEY_XORG_ENABLE "daemon/XorgEnable" - - #define GDM_KEY_DEBUG "debug/Enable" - - #define GDM_KEY_INCLUDE "greeter/Include" - #define GDM_KEY_EXCLUDE "greeter/Exclude" - #define GDM_KEY_INCLUDE_ALL "greeter/IncludeAll" - - #define GDM_KEY_DISALLOW_TCP "security/DisallowTCP" - #define GDM_KEY_ALLOW_REMOTE_AUTOLOGIN "security/AllowRemoteAutoLogin" - - #define GDM_KEY_XDMCP_ENABLE "xdmcp/Enable" - #define GDM_KEY_SHOW_LOCAL_GREETER "xdmcp/ShowLocalGreeter" - #define GDM_KEY_MAX_PENDING "xdmcp/MaxPending" - #define GDM_KEY_MAX_SESSIONS "xdmcp/MaxSessions" - #define GDM_KEY_MAX_WAIT "xdmcp/MaxWait" - #define GDM_KEY_DISPLAYS_PER_HOST "xdmcp/DisplaysPerHost" - #define GDM_KEY_UDP_PORT "xdmcp/Port" - #define GDM_KEY_INDIRECT "xdmcp/HonorIndirect" - #define GDM_KEY_MAX_WAIT_INDIRECT "xdmcp/MaxWaitIndirect" - #define GDM_KEY_PING_INTERVAL "xdmcp/PingIntervalSeconds" - #define GDM_KEY_WILLING "xdmcp/Willing" -+#define GDM_KEY_ALLOW_MULTIPLE_SESSIONS_PER_USER "xdmcp/AllowMultipleSessionsPerUser" - - #define GDM_KEY_MULTICAST "chooser/Multicast" - #define GDM_KEY_MULTICAST_ADDR "chooser/MulticastAddr" - - G_END_DECLS - - #endif /* _GDM_SETTINGS_KEYS_H */ -diff --git a/daemon/gdm-manager.c b/daemon/gdm-manager.c -index e433acf3b..ce8565bf9 100644 ---- a/daemon/gdm-manager.c -+++ b/daemon/gdm-manager.c -@@ -566,93 +566,106 @@ get_display_and_details_for_bus_sender (GdmManager *self, - *out_tty = get_tty_for_session_id (session_id, &error); - - if (error != NULL) { - g_debug ("GdmManager: Error while retrieving tty for session: %s", - error->message); - g_clear_error (&error); - } - } - - display = gdm_display_store_find (self->priv->display_store, - lookup_by_session_id, - (gpointer) session_id); - - out: - if (out_display != NULL) { - *out_display = display; - } - - g_free (session_id); - } - - static gboolean - switch_to_compatible_user_session (GdmManager *manager, - GdmSession *session, - gboolean fail_if_already_switched) - { - gboolean res; - gboolean ret; - const char *username; - const char *seat_id; -- const char *ssid_to_activate; -+ const char *ssid_to_activate = NULL; - GdmSession *existing_session; - - ret = FALSE; - - username = gdm_session_get_username (session); - seat_id = gdm_session_get_display_seat_id (session); - -- if (!fail_if_already_switched) { -- session = NULL; -- } -+ if (!fail_if_already_switched) -+ ssid_to_activate = gdm_session_get_session_id (session); - -- existing_session = find_session_for_user_on_seat (manager, username, seat_id, session); -+ if (ssid_to_activate == NULL) { -+ if (!seat_id || !sd_seat_can_multi_session (seat_id)) { -+ g_debug ("GdmManager: unable to activate existing sessions from login screen unless on seat0"); -+ goto out; -+ } - -- if (existing_session != NULL) { -- ssid_to_activate = gdm_session_get_session_id (existing_session); -- if (seat_id != NULL) { -- res = gdm_activate_session_by_id (manager->priv->connection, seat_id, ssid_to_activate); -- if (! res) { -- g_debug ("GdmManager: unable to activate session: %s", ssid_to_activate); -- goto out; -- } -+ if (!fail_if_already_switched) { -+ session = NULL; - } - -- res = session_unlock (manager, ssid_to_activate); -- if (!res) { -- /* this isn't fatal */ -- g_debug ("GdmManager: unable to unlock session: %s", ssid_to_activate); -+ existing_session = find_session_for_user_on_seat (manager, username, seat_id, session); -+ -+ if (existing_session != NULL) { -+ ssid_to_activate = gdm_session_get_session_id (existing_session); - } -- } else { -+ } -+ -+ if (ssid_to_activate == NULL) { - goto out; - } - -+ if (seat_id != NULL) { -+ res = gdm_activate_session_by_id (manager->priv->connection, seat_id, ssid_to_activate); -+ if (! res) { -+ g_debug ("GdmManager: unable to activate session: %s", ssid_to_activate); -+ goto out; -+ } -+ } -+ -+ res = session_unlock (manager, ssid_to_activate); -+ if (!res) { -+ /* this isn't fatal */ -+ g_debug ("GdmManager: unable to unlock session: %s", ssid_to_activate); -+ } -+ - ret = TRUE; - - out: - return ret; - } - - static GdmDisplay * - get_display_for_user_session (GdmSession *session) - { - return g_object_get_data (G_OBJECT (session), "gdm-display"); - } - - static GdmSession * - get_user_session_for_display (GdmDisplay *display) - { - if (display == NULL) { - return NULL; - } - - return g_object_get_data (G_OBJECT (display), "gdm-user-session"); - } - - static gboolean - add_session_record (GdmManager *manager, - GdmSession *session, - GPid pid, - SessionRecord record) - { - const char *username; - char *display_name, *hostname, *display_device; -@@ -1089,92 +1102,114 @@ open_temporary_reauthentication_channel (GdmManager *self, - g_signal_connect (session, - "client-disconnected", - G_CALLBACK (on_reauthentication_client_disconnected), - self); - g_signal_connect (session, - "client-rejected", - G_CALLBACK (on_reauthentication_client_rejected), - self); - g_signal_connect (session, - "cancelled", - G_CALLBACK (on_reauthentication_cancelled), - self); - g_signal_connect (session, - "conversation-started", - G_CALLBACK (on_reauthentication_conversation_started), - self); - g_signal_connect (session, - "conversation-stopped", - G_CALLBACK (on_reauthentication_conversation_stopped), - self); - g_signal_connect (session, - "verification-complete", - G_CALLBACK (on_reauthentication_verification_complete), - self); - - address = gdm_session_get_server_address (session); - - return g_strdup (address); - } - -+static gboolean -+remote_users_can_log_in_more_than_once (GdmManager *manager) -+{ -+ gboolean enabled; -+ -+ enabled = FALSE; -+ -+ gdm_settings_direct_get_boolean (GDM_KEY_ALLOW_MULTIPLE_SESSIONS_PER_USER, &enabled); -+ -+ g_debug ("GdmDisplay: Remote users allowed to log in more than once: %s", enabled? "yes" : "no"); -+ -+ return enabled; -+} -+ - static gboolean - gdm_manager_handle_open_reauthentication_channel (GdmDBusManager *manager, - GDBusMethodInvocation *invocation, - const char *username) - { - GdmManager *self = GDM_MANAGER (manager); - const char *sender; - GdmDisplay *display = NULL; - GdmSession *session; - GDBusConnection *connection; - char *seat_id = NULL; - char *session_id = NULL; - GPid pid = 0; - uid_t uid = (uid_t) -1; - gboolean is_login_screen = FALSE; - gboolean is_remote = FALSE; - - g_debug ("GdmManager: trying to open reauthentication channel for user %s", username); - - sender = g_dbus_method_invocation_get_sender (invocation); - connection = g_dbus_method_invocation_get_connection (invocation); - get_display_and_details_for_bus_sender (self, connection, sender, &display, &seat_id, &session_id, NULL, &pid, &uid, &is_login_screen, &is_remote); - - if (session_id == NULL || pid == 0 || uid == (uid_t) -1) { - g_dbus_method_invocation_return_error_literal (invocation, - G_DBUS_ERROR, - G_DBUS_ERROR_ACCESS_DENIED, - _("No session available")); - - return TRUE; - } - -+ if (is_login_screen && is_remote && remote_users_can_log_in_more_than_once (self)) { -+ g_dbus_method_invocation_return_error_literal (invocation, -+ G_DBUS_ERROR, -+ G_DBUS_ERROR_ACCESS_DENIED, -+ "Login screen creates new sessions for remote connections"); -+ return TRUE; -+ } -+ - if (is_login_screen) { - g_debug ("GdmManager: looking for login screen session for user %s on seat %s", username, seat_id); - session = find_session_for_user_on_seat (self, - username, - seat_id, - NULL); - } else { - g_debug ("GdmManager: looking for user session on display"); - session = get_user_session_for_display (display); - } - - if (session != NULL && gdm_session_is_running (session)) { - gdm_session_start_reauthentication (session, pid, uid); - g_hash_table_insert (self->priv->open_reauthentication_requests, - GINT_TO_POINTER (pid), - invocation); - } else if (is_login_screen) { - g_dbus_method_invocation_return_error_literal (invocation, - G_DBUS_ERROR, - G_DBUS_ERROR_ACCESS_DENIED, - "Login screen only allowed to open reauthentication channels for running sessions"); - return TRUE; - } else { - char *address; - address = open_temporary_reauthentication_channel (self, - seat_id, - session_id, - pid, - uid, - is_remote); -diff --git a/data/gdm.schemas.in b/data/gdm.schemas.in -index a1035f95e..929d13d90 100644 ---- a/data/gdm.schemas.in -+++ b/data/gdm.schemas.in -@@ -112,33 +112,38 @@ - - xdmcp/DisplaysPerHost - i - 1 - - - xdmcp/Port - i - 177 - - - xdmcp/HonorIndirect - b - true - - - xdmcp/MaxWaitIndirect - i - 30 - - - xdmcp/PingIntervalSeconds - i - 0 - - - xdmcp/Willing - s - @gdmconfdir@/Xwilling - -+ -+ xdmcp/AllowMultipleSessionsPerUser -+ b -+ false -+ - - - --- -2.30.1 - diff --git a/SOURCES/0001-meson-Fix-detection-of-Xorg-versions-that-need-liste.patch b/SOURCES/0001-meson-Fix-detection-of-Xorg-versions-that-need-liste.patch deleted file mode 100644 index 1250e74..0000000 --- a/SOURCES/0001-meson-Fix-detection-of-Xorg-versions-that-need-liste.patch +++ /dev/null @@ -1,144 +0,0 @@ -From f101371f418bb0013af1e5e1ef522277011fd48d Mon Sep 17 00:00:00 2001 -From: Alan Coopersmith -Date: Thu, 7 Oct 2021 18:22:11 -0700 -Subject: [PATCH 1/2] meson: Fix detection of Xorg versions that need -listen - tcp - -Closes #704 ---- - meson.build | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/meson.build b/meson.build -index e6fcf4b8..06d09659 100644 ---- a/meson.build -+++ b/meson.build -@@ -42,60 +42,63 @@ udev_dep = dependency('udev') - glib_min_version = '2.56.0' - - glib_dep = dependency('glib-2.0', version: '>=' + glib_min_version) - gobject_dep = dependency('gobject-2.0', version: '>=' + glib_min_version) - gio_dep = dependency('gio-2.0', version: '>=' + glib_min_version) - gio_unix_dep = dependency('gio-unix-2.0', version: '>=' + glib_min_version) - gtk_dep = dependency('gtk+-3.0', version: '>= 2.91.1') - libcanberra_gtk_dep = dependency('libcanberra-gtk3', version: '>= 0.4') - accountsservice_dep = dependency('accountsservice', version: '>= 0.6.35') - xcb_dep = dependency('xcb') - keyutils_dep = dependency('libkeyutils', required: false) - libselinux_dep = dependency('libselinux', required: get_option('selinux')) - - # udev - if udev_dir == '' - if udev_dep.found() - udev_prefix = udev_dep.get_pkgconfig_variable('udevdir') - else - udev_prefix = gdm_prefix / 'lib' / 'udev' - endif - udev_dir = udev_prefix / 'rules.d' - endif - - # X11 - x_deps = declare_dependency( - dependencies: [ - dependency('x11'), - dependency('xau'), - ], - ) -+# Xserver 1.17 & later default to -nolisten and require -listen for remote access -+xserver_deps = dependency('xorg-server', version : '>=1.17', required : false) -+xserver_nolisten_default = xserver_deps.found() - find_x_server_script = find_program('build-aux/find-x-server.sh', native: true) - find_x_server_out = run_command(find_x_server_script).stdout().strip() - if find_x_server_out != '' - x_bin = find_x_server_out - x_bin_path_split = x_bin.split('/') - i = 0 - x_path = '/' - foreach dir : x_bin_path_split - if i < x_bin_path_split.length() - 1 - x_path = x_path / dir - endif - i = i + 1 - endforeach - else - # what to do, what to do, this is wrong, but this just sets the - # defaults, perhaps this user is cross compiling or some such - x_path = '/usr/bin/X11:/usr/X11R6/bin:/opt/X11R6/bin' - x_bin = '/usr/bin/X' - endif - xdmcp_dep = cc.find_library('Xdmcp', required: get_option('xdmcp')) - if xdmcp_dep.found() and get_option('tcp-wrappers') - libwrap_dep = cc.find_library('libwrap') - endif - # systemd - systemd_dep = dependency('systemd') - libsystemd_dep = dependency('libsystemd') - if meson.version().version_compare('>= 0.53') - systemd_multiseat_x = find_program('systemd-multi-seat-x', - required: false, - dirs: [ -@@ -197,60 +200,61 @@ conf.set_quoted('SYSCONFDIR', gdm_prefix / get_option('sysconfdir')) - conf.set_quoted('BINDIR', gdm_prefix / get_option('bindir')) - conf.set_quoted('LIBDIR', gdm_prefix / get_option('libdir')) - conf.set_quoted('LIBEXECDIR', gdm_prefix / get_option('libexecdir')) - conf.set_quoted('LOGDIR', get_option('log-dir')) - conf.set_quoted('DMCONFDIR', dmconfdir) - conf.set_quoted('GDMCONFDIR', gdmconfdir) - conf.set_quoted('GDM_SCREENSHOT_DIR', gdm_screenshot_dir) - conf.set_quoted('GDM_XAUTH_DIR', gdm_xauth_dir) - conf.set_quoted('GDM_RAN_ONCE_MARKER_DIR', ran_once_marker_dir) - conf.set_quoted('GDM_RUN_DIR', gdm_run_dir) - conf.set_quoted('GNOMELOCALEDIR', gdm_prefix / get_option('localedir')) - conf.set_quoted('AT_SPI_REGISTRYD_DIR', at_spi_registryd_dir) - conf.set_quoted('GDM_PID_FILE', gdm_pid_file) - conf.set_quoted('GNOME_SETTINGS_DAEMON_DIR', gnome_settings_daemon_dir) - conf.set_quoted('LANG_CONFIG_FILE', lang_config_file) - conf.set('HAVE_ADT', have_adt) - conf.set('HAVE_UTMP_H', have_utmp_header) - conf.set('HAVE_UTMPX_H', have_utmpx_header) - conf.set('HAVE_POSIX_GETPWNAM_R', have_posix_getpwnam_r) - conf.set('UTMP', utmp_struct) - conf.set('HAVE_GETUTXENT', cc.has_function('getutxent')) - conf.set('HAVE_UPDWTMP', cc.has_function('updwtmp')) - conf.set('HAVE_UPDWTMPX', cc.has_function('updwtmpx')) - conf.set('HAVE_LOGIN', cc.has_function('login', args: '-lutil')) - conf.set('HAVE_LOGOUT', cc.has_function('logout', args: '-lutil')) - conf.set('HAVE_LOGWTMP', cc.has_function('logwtmp', args: '-lutil')) - conf.set('HAVE_PAM_SYSLOG', have_pam_syslog) - conf.set('HAVE_KEYUTILS', keyutils_dep.found()) - conf.set('SUPPORTS_PAM_EXTENSIONS', pam_extensions_supported) - conf.set('HAVE_SELINUX', libselinux_dep.found()) -+conf.set('HAVE_XSERVER_THAT_DEFAULTS_TO_LOCAL_ONLY', xserver_nolisten_default) - conf.set('ENABLE_USER_DISPLAY_SERVER', get_option('user-display-server')) - conf.set('ENABLE_SYSTEMD_JOURNAL', get_option('systemd-journal')) - conf.set('ENABLE_WAYLAND_SUPPORT', get_option('wayland-support')) - conf.set('ENABLE_PROFILING', get_option('profiling')) - conf.set('GDM_INITIAL_VT', get_option('initial-vt')) - conf.set_quoted('GDM_DEFAULTS_CONF', gdm_defaults_conf) - conf.set_quoted('GDM_CUSTOM_CONF', gdm_custom_conf) - conf.set_quoted('GDM_RUNTIME_CONF', gdm_runtime_conf) - conf.set_quoted('GDM_SESSION_DEFAULT_PATH', get_option('default-path')) - conf.set_quoted('GDM_USERNAME', get_option('user')) - conf.set_quoted('GDM_GROUPNAME', get_option('group')) - conf.set('HAVE_LIBXDMCP', xdmcp_dep.found()) - conf.set_quoted('SYSTEMD_X_SERVER', systemd_x_server) - conf.set('WITH_PLYMOUTH', plymouth_dep.found()) - conf.set_quoted('X_SERVER', x_bin) - conf.set_quoted('X_PATH', x_path) - conf.set('HAVE_UT_UT_HOST', utmp_has_host_field) - conf.set('HAVE_UT_UT_PID', utmp_has_pid_field) - conf.set('HAVE_UT_UT_ID', utmp_has_id_field) - conf.set('HAVE_UT_UT_NAME', utmp_has_name_field) - conf.set('HAVE_UT_UT_TYPE', utmp_has_type_field) - conf.set('HAVE_UT_UT_EXIT_E_TERMINATION', utmp_has_exit_e_termination_field) - conf.set('HAVE_UT_UT_USER', utmp_has_user_field) - conf.set('HAVE_UT_UT_TIME', utmp_has_time_field) - conf.set('HAVE_UT_UT_TV', utmp_has_tv_field) - conf.set('HAVE_UT_UT_SYSLEN', utmp_has_syslen_field) - conf.set('ENABLE_IPV6', get_option('ipv6')) - configure_file(output: 'config.h', configuration: conf) - - # Subdirs --- -2.33.1 - diff --git a/SOURCES/0001-meson-set-D_GNU_SOURCE-for-updwtmpx.patch b/SOURCES/0001-meson-set-D_GNU_SOURCE-for-updwtmpx.patch deleted file mode 100644 index 4c5be7a..0000000 --- a/SOURCES/0001-meson-set-D_GNU_SOURCE-for-updwtmpx.patch +++ /dev/null @@ -1,81 +0,0 @@ -From 5a2d5dbdf8c6f6d3c896082a5a07b4292f5fb410 Mon Sep 17 00:00:00 2001 -From: Sam James -Date: Tue, 5 Jul 2022 01:47:35 +0100 -Subject: [PATCH 1/2] meson: set -D_GNU_SOURCE for updwtmpx -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Without setting GNU_SOURCE, we end up getting: -``` -../gdm-42.0/daemon/gdm-session-record.c:200:9: error: implicit declaration of function ‘updwtmpx’; did you mean ‘updwtmp’? [-Werror=implicit-function-declaration] -updwtmpx (GDM_NEW_SESSION_RECORDS_FILE, &session_record); -``` - -This ended up exposing a bug in updwtmp(3) (which is now fixed -thanks to the man-pages maintainers!) as it didn't mention that updwtmpx -is a GNU extension (and hence needs GNU_SOURCE in order to be available). - -Alternatively, we could just #define _GNU_SOURCE in gdm-session-record.c -for updwtmpx. - -Bug: https://bugzilla.kernel.org/show_bug.cgi?id=216168 ---- - meson.build | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git a/meson.build b/meson.build -index 8328dd97..4a286f97 100644 ---- a/meson.build -+++ b/meson.build -@@ -1,44 +1,47 @@ - project('gdm', 'c', - version: '40.0', - license: 'GPL2+', - meson_version: '>= 0.50', - ) - - # Modules - gnome = import('gnome') - pkgconfig = import('pkgconfig') - i18n = import('i18n') - - # Compiler - cc = meson.get_compiler('c') - -+# Use GNU extensions if available -+add_project_arguments('-D_GNU_SOURCE', language: 'c') -+ - # Options - gdm_prefix = get_option('prefix') - - gdmconfdir = (get_option('sysconfsubdir') == '')? gdm_prefix / get_option('sysconfdir') : gdm_prefix / get_option('sysconfdir') / get_option('sysconfsubdir') - dmconfdir = (get_option('dmconfdir') != '')? get_option('dmconfdir') : gdm_prefix / get_option('sysconfdir') / 'dm' - udev_dir = get_option('udev-dir') - at_spi_registryd_dir = (get_option('at-spi-registryd-dir') != '')? get_option('at-spi-registryd-dir') : gdm_prefix / get_option('libexecdir') - lang_config_file = (get_option('lang-file') != '')? get_option('lang-file') : gdm_prefix / get_option('sysconfdir') / 'locale.conf' - pam_mod_dir = (get_option('pam-mod-dir') != '')? get_option('pam-mod-dir') : gdm_prefix / get_option('libdir') / 'security' - dbus_sys_dir = (get_option('dbus-sys') != '')? get_option('dbus-sys') : get_option('sysconfdir') / 'dbus-1' / 'system.d' - gdm_defaults_conf = (get_option('defaults-conf') != '')? get_option('defaults-conf') : gdm_prefix / get_option('datadir') / 'gdm' / 'defaults.conf' - gdm_custom_conf = (get_option('custom-conf') != '')? get_option('custom-conf') : gdmconfdir / 'custom.conf' - gnome_settings_daemon_dir = (get_option('gnome-settings-daemon-dir') != '')? get_option('gnome-settings-daemon-dir') : gdm_prefix / get_option('libexecdir') - gdm_run_dir = (get_option('run-dir') != '')? get_option('run-dir') : gdm_prefix / get_option('localstatedir') / 'run' / 'gdm' - gdm_runtime_conf = (get_option('runtime-conf') != '')? get_option('runtime-conf') : gdm_run_dir / 'custom.conf' - gdm_pid_file = (get_option('pid-file') != '')? get_option('pid-file') : gdm_run_dir / 'gdm.pid' - ran_once_marker_dir = (get_option('ran-once-marker-dir') != '')? get_option('ran-once-marker-dir') : gdm_run_dir - working_dir = (get_option('working-dir') != '')? get_option('working-dir') : gdm_prefix / get_option('localstatedir') / 'lib' / 'gdm' - gdm_xauth_dir = (get_option('xauth-dir') != '')? get_option('xauth-dir') : gdm_run_dir - gdm_screenshot_dir = (get_option('screenshot-dir') != '')? get_option('screenshot-dir') : gdm_run_dir / 'greeter' - - # Common variables - config_h_dir = include_directories('.') - - # Dependencies - udev_dep = dependency('udev') - - glib_min_version = '2.56.0' - - glib_dep = dependency('glib-2.0', version: '>=' + glib_min_version) --- -2.31.1 - diff --git a/SOURCES/0001-session-worker-Set-session_vt-0-out-of-pam-uninitial.patch b/SOURCES/0001-session-worker-Set-session_vt-0-out-of-pam-uninitial.patch deleted file mode 100644 index 5a403d6..0000000 --- a/SOURCES/0001-session-worker-Set-session_vt-0-out-of-pam-uninitial.patch +++ /dev/null @@ -1,84 +0,0 @@ -From 56d12ad9697d5695c780a5be0065d23fec6bd1a5 Mon Sep 17 00:00:00 2001 -From: Chingkai Chu <3013329+chuchingkai@users.noreply.github.com> -Date: Thu, 12 Aug 2021 10:34:01 +0800 -Subject: [PATCH] session-worker: Set session_vt=0 out of pam uninitialization - -MR GNOME/gdm!123 moved jump_to_vt and session_vt reseting to a -separate function, so we don't need to reset session_vt in pam -uninitialization. - -https://gitlab.gnome.org/GNOME/gdm/-/issues/719 ---- - daemon/gdm-session-worker.c | 2 -- - 1 file changed, 2 deletions(-) - -diff --git a/daemon/gdm-session-worker.c b/daemon/gdm-session-worker.c -index c1201b70..9cff53a5 100644 ---- a/daemon/gdm-session-worker.c -+++ b/daemon/gdm-session-worker.c -@@ -1076,62 +1076,60 @@ gdm_session_worker_set_state (GdmSessionWorker *worker, - - static void - gdm_session_worker_uninitialize_pam (GdmSessionWorker *worker, - int status) - { - g_debug ("GdmSessionWorker: uninitializing PAM"); - - if (worker->priv->pam_handle == NULL) - return; - - gdm_session_worker_get_username (worker, NULL); - - if (worker->priv->state >= GDM_SESSION_WORKER_STATE_SESSION_OPENED) { - pam_close_session (worker->priv->pam_handle, 0); - gdm_session_auditor_report_logout (worker->priv->auditor); - } else { - gdm_session_auditor_report_login_failure (worker->priv->auditor, - status, - pam_strerror (worker->priv->pam_handle, status)); - } - - if (worker->priv->state >= GDM_SESSION_WORKER_STATE_ACCREDITED) { - pam_setcred (worker->priv->pam_handle, PAM_DELETE_CRED); - } - - pam_end (worker->priv->pam_handle, status); - worker->priv->pam_handle = NULL; - - gdm_session_worker_stop_auditor (worker); - -- worker->priv->session_vt = 0; -- - g_debug ("GdmSessionWorker: state NONE"); - gdm_session_worker_set_state (worker, GDM_SESSION_WORKER_STATE_NONE); - } - - static char * - _get_tty_for_pam (const char *x11_display_name, - const char *display_device) - { - #ifdef __sun - return g_strdup (display_device); - #else - return g_strdup (x11_display_name); - #endif - } - - #ifdef PAM_XAUTHDATA - static struct pam_xauth_data * - _get_xauth_for_pam (const char *x11_authority_file) - { - FILE *fh; - Xauth *auth = NULL; - struct pam_xauth_data *retval = NULL; - gsize len = sizeof (*retval) + 1; - - fh = fopen (x11_authority_file, "r"); - if (fh) { - auth = XauReadAuth (fh); - fclose (fh); - } - if (auth) { --- -2.31.1 - diff --git a/SOURCES/0001-utils-Drop-gdm-screenshot.patch b/SOURCES/0001-utils-Drop-gdm-screenshot.patch deleted file mode 100644 index 64974d6..0000000 --- a/SOURCES/0001-utils-Drop-gdm-screenshot.patch +++ /dev/null @@ -1,362 +0,0 @@ -From 7b5ee288d992f85eaefbfbc4dac663a29fcae446 Mon Sep 17 00:00:00 2001 -From: Ray Strode -Date: Wed, 5 May 2021 11:06:58 -0400 -Subject: [PATCH] 0001-utils-Drop-gdm-screenshot.patch - ---- - utils/gdm-screenshot.c | 296 ----------------------------------------- - utils/meson.build | 15 --- - 2 files changed, 311 deletions(-) - delete mode 100644 utils/gdm-screenshot.c - -diff --git a/utils/gdm-screenshot.c b/utils/gdm-screenshot.c -deleted file mode 100644 -index 5d20929a3..000000000 ---- a/utils/gdm-screenshot.c -+++ /dev/null -@@ -1,296 +0,0 @@ --/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- -- * -- * Copyright (C) 2008 William Jon McCann -- * -- * This program is free software; you can redistribute it and/or modify -- * it under the terms of the GNU General Public License as published by -- * the Free Software Foundation; either version 2 of the License, or -- * (at your option) any later version. -- * -- * This program is distributed in the hope that it will be useful, -- * 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, write to the Free Software -- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -- * -- */ -- --#include "config.h" -- --#include --#include --#include --#include --#include -- --#include --#include --#include -- --#include --#include -- --#define SELECTION_NAME "_GDM_SCREENSHOT" --static GtkWidget *selection_window; -- --static gboolean debug_in; -- --/* Keep all config options for compatibility even if they are noops */ --GOptionEntry options [] = { -- { "debug", 'd', 0, G_OPTION_ARG_NONE, &debug_in, N_("Debugging output"), NULL }, -- { NULL } --}; -- --/* To make sure there is only one screenshot taken at a time, -- * (Imagine key repeat for the print screen key) we hold a selection -- * until we are done taking the screenshot -- */ --/* * Copyright (C) 2001-2006 Jonathan Blandford */ --static gboolean --screenshot_grab_lock (void) --{ -- Atom selection_atom; -- GdkCursor *cursor; -- gboolean result = FALSE; -- -- selection_atom = gdk_x11_get_xatom_by_name (SELECTION_NAME); -- XGrabServer (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ())); -- if (XGetSelectionOwner (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), selection_atom) != None) { -- goto out; -- } -- -- selection_window = gtk_invisible_new (); -- gtk_widget_show (selection_window); -- -- if (!gtk_selection_owner_set (selection_window, -- gdk_atom_intern (SELECTION_NAME, FALSE), -- GDK_CURRENT_TIME)) { -- gtk_widget_destroy (selection_window); -- selection_window = NULL; -- goto out; -- } -- -- cursor = gdk_cursor_new_for_display (gdk_display_get_default (), GDK_WATCH); -- gdk_pointer_grab (gtk_widget_get_window (selection_window), FALSE, 0, NULL, -- cursor, GDK_CURRENT_TIME); -- g_object_unref (cursor); -- -- result = TRUE; -- -- out: -- XUngrabServer (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ())); -- gdk_flush (); -- -- return result; --} -- --/* * Copyright (C) 2001-2006 Jonathan Blandford */ --static void --screenshot_release_lock (void) --{ -- if (selection_window != NULL) { -- gtk_widget_destroy (selection_window); -- selection_window = NULL; -- } -- gdk_flush (); --} -- --/* * Copyright (C) 2001-2006 Jonathan Blandford */ --static GdkPixbuf * --screenshot_get_pixbuf (Window w) --{ -- GdkWindow *window; -- GdkWindow *root; -- GdkPixbuf *screenshot; -- int x_real_orig; -- int y_real_orig; -- int x_orig; -- int y_orig; -- int real_width; -- int real_height; -- int width; -- int height; -- -- window = gdk_x11_window_foreign_new_for_display (gdk_display_get_default (), w); -- if (window == NULL) { -- return NULL; -- } -- -- root = gdk_x11_window_foreign_new_for_display (gdk_display_get_default (), GDK_ROOT_WINDOW ()); -- gdk_window_get_geometry (window, NULL, NULL, &real_width, &real_height); -- gdk_window_get_origin (window, &x_real_orig, &y_real_orig); -- -- x_orig = x_real_orig; -- y_orig = y_real_orig; -- width = real_width; -- height = real_height; -- -- if (x_orig < 0) { -- width = width + x_orig; -- x_orig = 0; -- } -- if (y_orig < 0) { -- height = height + y_orig; -- y_orig = 0; -- } -- -- if (x_orig + width > gdk_screen_width ()) { -- width = gdk_screen_width () - x_orig; -- } -- if (y_orig + height > gdk_screen_height ()) { -- height = gdk_screen_height () - y_orig; -- } -- -- screenshot = gdk_pixbuf_get_from_window (root, -- x_orig, -- y_orig, -- width, -- height); -- -- return screenshot; --} -- --static char * --screenshot_save (GdkPixbuf *pixbuf) --{ -- char *filename; -- gboolean res; -- GError *error; -- -- filename = g_build_filename (GDM_SCREENSHOT_DIR, -- "GDM-Screenshot.png", -- NULL); -- -- error = NULL; -- res = gdk_pixbuf_save (pixbuf, -- filename, -- "png", -- &error, -- "tEXt::CREATOR", "gdm-screenshot", -- NULL); -- if (! res) { -- g_warning ("Unable to save screenshot: %s", error->message); -- g_error_free (error); -- g_free (filename); -- filename = NULL; -- } -- -- return filename; --} -- --static void --sound_effect_finished (ca_context *c, -- uint32_t id, -- int error_code, -- void *userdata) --{ --} -- --static void --play_sound_effect (Window xid) --{ -- ca_context *c; -- ca_proplist *p; -- int res; -- -- c = ca_gtk_context_get (); -- -- p = NULL; -- res = ca_proplist_create (&p); -- if (res < 0) { -- goto done; -- } -- -- res = ca_proplist_sets (p, CA_PROP_EVENT_ID, "screen-capture"); -- if (res < 0) { -- goto done; -- } -- -- res = ca_proplist_sets (p, CA_PROP_EVENT_DESCRIPTION, _("Screenshot taken")); -- if (res < 0) { -- goto done; -- } -- -- res = ca_proplist_setf (p, -- CA_PROP_WINDOW_X11_XID, -- "%lu", -- (unsigned long) xid); -- if (res < 0) { -- goto done; -- } -- -- ca_context_play_full (c, 0, p, sound_effect_finished, NULL); -- -- done: -- if (p != NULL) { -- ca_proplist_destroy (p); -- } -- --} -- --static void --prepare_screenshot (void) --{ -- Window win; -- GdkPixbuf *screenshot; -- char *filename; -- -- if (!screenshot_grab_lock ()) { -- exit (EXIT_SUCCESS); -- } -- -- win = GDK_ROOT_WINDOW (); -- -- screenshot = screenshot_get_pixbuf (win); -- -- screenshot_release_lock (); -- -- if (screenshot == NULL) { -- /* FIXME: dialog? */ -- exit (EXIT_FAILURE); -- } -- -- play_sound_effect (win); -- -- filename = screenshot_save (screenshot); -- if (filename != NULL) { -- g_print ("Wrote %s\n", filename); -- /* FIXME: show a dialog or something */ -- g_free (filename); -- } --} -- --int --main (int argc, char *argv[]) --{ -- GOptionContext *ctx; -- gboolean res; -- GError *error; -- -- bindtextdomain (GETTEXT_PACKAGE, GNOMELOCALEDIR); -- bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); -- textdomain (GETTEXT_PACKAGE); -- setlocale (LC_ALL, ""); -- -- /* Option parsing */ -- ctx = g_option_context_new (N_("Take a picture of the screen")); -- g_option_context_set_translation_domain (ctx, GETTEXT_PACKAGE); -- g_option_context_add_main_entries (ctx, options, NULL); -- g_option_context_add_group (ctx, gtk_get_option_group (TRUE)); -- error = NULL; -- res = g_option_context_parse (ctx, &argc, &argv, &error); -- g_option_context_free (ctx); -- -- if (! res) { -- g_warning ("%s", error->message); -- g_error_free (error); -- exit (EXIT_FAILURE); -- } -- -- prepare_screenshot (); -- -- return 1; --} -diff --git a/utils/meson.build b/utils/meson.build -index d59f167b0..1edd7bce4 100644 ---- a/utils/meson.build -+++ b/utils/meson.build -@@ -1,41 +1,26 @@ - # gdm-flexiserver - gdm_flexiserver_deps = [ - glib_dep, - libgdmcommon_dep, - ] - - gdm_flexiserver = executable('gdmflexiserver', - 'gdmflexiserver.c', - dependencies: gdm_flexiserver_deps, - include_directories: config_h_dir, - install: true, - ) - --# gdm-screenshot --gdm_screenshot_deps = [ -- glib_dep, -- gtk_dep, -- x_deps, -- libcanberra_gtk_dep, --] -- --gdm_screenshot = executable('gdm-screenshot', -- 'gdm-screenshot.c', -- dependencies: gdm_screenshot_deps, -- include_directories: config_h_dir, -- install: true, --) -- - # gdm-runtime-config - gdm_runtime_config_deps = [ - glib_dep, - ] - - gdm_runtime_config = executable('gdm-runtime-config', - 'gdm-runtime-config.c', - dependencies: gdm_runtime_config_deps, - include_directories: config_h_dir, - install: true, - install_dir: get_option('libexecdir'), - ) - --- -2.31.1 - diff --git a/SOURCES/0001-worker-don-t-load-user-settings-for-program-sessions.patch b/SOURCES/0001-worker-don-t-load-user-settings-for-program-sessions.patch deleted file mode 100644 index 82ba705..0000000 --- a/SOURCES/0001-worker-don-t-load-user-settings-for-program-sessions.patch +++ /dev/null @@ -1,565 +0,0 @@ -From f0dce28fa02210caa445e96d9cbec1d150b79e80 Mon Sep 17 00:00:00 2001 -From: Ray Strode -Date: Wed, 15 Aug 2018 10:48:16 -0400 -Subject: [PATCH 1/4] worker: don't load user settings for program sessions - -We don't need or want the login greeter to access accountsservice -for its session name ---- - daemon/gdm-session-worker.c | 37 ++++++++++++++++++++++++++----------- - 1 file changed, 26 insertions(+), 11 deletions(-) - -diff --git a/daemon/gdm-session-worker.c b/daemon/gdm-session-worker.c -index 9b8e0d87..438348df 100644 ---- a/daemon/gdm-session-worker.c -+++ b/daemon/gdm-session-worker.c -@@ -400,103 +400,108 @@ gdm_session_execute (const char *file, - */ - static gboolean - gdm_session_worker_get_username (GdmSessionWorker *worker, - char **username) - { - gconstpointer item; - - g_assert (worker->priv->pam_handle != NULL); - - if (pam_get_item (worker->priv->pam_handle, PAM_USER, &item) == PAM_SUCCESS) { - if (username != NULL) { - *username = g_strdup ((char *) item); - g_debug ("GdmSessionWorker: username is '%s'", - *username != NULL ? *username : ""); - } - - if (worker->priv->auditor != NULL) { - gdm_session_auditor_set_username (worker->priv->auditor, (char *)item); - } - - return TRUE; - } - - return FALSE; - } - - static void - attempt_to_load_user_settings (GdmSessionWorker *worker, - const char *username) - { -+ if (worker->priv->user_settings == NULL) -+ return; -+ -+ if (gdm_session_settings_is_loaded (worker->priv->user_settings)) -+ return; -+ - g_debug ("GdmSessionWorker: attempting to load user settings"); - gdm_session_settings_load (worker->priv->user_settings, - username); - } - - static void - gdm_session_worker_update_username (GdmSessionWorker *worker) - { - char *username; - gboolean res; - - username = NULL; - res = gdm_session_worker_get_username (worker, &username); - if (res) { - g_debug ("GdmSessionWorker: old-username='%s' new-username='%s'", - worker->priv->username != NULL ? worker->priv->username : "", - username != NULL ? username : ""); - - - gdm_session_auditor_set_username (worker->priv->auditor, worker->priv->username); - - if ((worker->priv->username == username) || - ((worker->priv->username != NULL) && (username != NULL) && - (strcmp (worker->priv->username, username) == 0))) - goto out; - - g_debug ("GdmSessionWorker: setting username to '%s'", username); - - g_free (worker->priv->username); - worker->priv->username = username; - username = NULL; - - gdm_dbus_worker_emit_username_changed (GDM_DBUS_WORKER (worker), - worker->priv->username); - - /* We have a new username to try. If we haven't been able to - * read user settings up until now, then give it a go now - * (see the comment in do_setup for rationale on why it's useful - * to keep trying to read settings) - */ - if (worker->priv->username != NULL && -- worker->priv->username[0] != '\0' && -- !gdm_session_settings_is_loaded (worker->priv->user_settings)) { -+ worker->priv->username[0] != '\0') { - attempt_to_load_user_settings (worker, worker->priv->username); - } - } - - out: - g_free (username); - } - - static gboolean - gdm_session_worker_ask_question (GdmSessionWorker *worker, - const char *question, - char **answerp) - { - return gdm_dbus_worker_manager_call_info_query_sync (worker->priv->manager, - worker->priv->service, - question, - answerp, - NULL, - NULL); - } - - static gboolean - gdm_session_worker_ask_for_secret (GdmSessionWorker *worker, - const char *question, - char **answerp) - { - return gdm_dbus_worker_manager_call_secret_info_query_sync (worker->priv->manager, - worker->priv->service, - question, - answerp, -@@ -2598,87 +2603,89 @@ gdm_session_worker_get_property (GObject *object, - g_value_set_boolean (value, self->priv->is_reauth_session); - break; - case PROP_STATE: - g_value_set_enum (value, self->priv->state); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; - } - } - - static gboolean - gdm_session_worker_handle_set_environment_variable (GdmDBusWorker *object, - GDBusMethodInvocation *invocation, - const char *key, - const char *value) - { - GdmSessionWorker *worker = GDM_SESSION_WORKER (object); - gdm_session_worker_set_environment_variable (worker, key, value); - gdm_dbus_worker_complete_set_environment_variable (object, invocation); - return TRUE; - } - - static gboolean - gdm_session_worker_handle_set_session_name (GdmDBusWorker *object, - GDBusMethodInvocation *invocation, - const char *session_name) - { - GdmSessionWorker *worker = GDM_SESSION_WORKER (object); - g_debug ("GdmSessionWorker: session name set to %s", session_name); -- gdm_session_settings_set_session_name (worker->priv->user_settings, -- session_name); -+ if (worker->priv->user_settings != NULL) -+ gdm_session_settings_set_session_name (worker->priv->user_settings, -+ session_name); - gdm_dbus_worker_complete_set_session_name (object, invocation); - return TRUE; - } - - static gboolean - gdm_session_worker_handle_set_session_display_mode (GdmDBusWorker *object, - GDBusMethodInvocation *invocation, - const char *str) - { - GdmSessionWorker *worker = GDM_SESSION_WORKER (object); - g_debug ("GdmSessionWorker: session display mode set to %s", str); - worker->priv->display_mode = gdm_session_display_mode_from_string (str); - gdm_dbus_worker_complete_set_session_display_mode (object, invocation); - return TRUE; - } - - static gboolean - gdm_session_worker_handle_set_language_name (GdmDBusWorker *object, - GDBusMethodInvocation *invocation, - const char *language_name) - { - GdmSessionWorker *worker = GDM_SESSION_WORKER (object); - g_debug ("GdmSessionWorker: language name set to %s", language_name); -- gdm_session_settings_set_language_name (worker->priv->user_settings, -- language_name); -+ if (worker->priv->user_settings != NULL) -+ gdm_session_settings_set_language_name (worker->priv->user_settings, -+ language_name); - gdm_dbus_worker_complete_set_language_name (object, invocation); - return TRUE; - } - - static void - on_saved_language_name_read (GdmSessionWorker *worker) - { - char *language_name; - - language_name = gdm_session_settings_get_language_name (worker->priv->user_settings); - - g_debug ("GdmSessionWorker: Saved language is %s", language_name); - gdm_dbus_worker_emit_saved_language_name_read (GDM_DBUS_WORKER (worker), - language_name); - g_free (language_name); - } - - static void - on_saved_session_name_read (GdmSessionWorker *worker) - { - char *session_name; - - session_name = gdm_session_settings_get_session_name (worker->priv->user_settings); - - g_debug ("GdmSessionWorker: Saved session is %s", session_name); - gdm_dbus_worker_emit_saved_session_name_read (GDM_DBUS_WORKER (worker), - session_name); - g_free (session_name); - } - -@@ -2756,110 +2763,113 @@ do_authorize (GdmSessionWorker *worker) - g_dbus_method_invocation_take_error (worker->priv->pending_invocation, error); - } - worker->priv->pending_invocation = NULL; - } - - static void - do_accredit (GdmSessionWorker *worker) - { - GError *error; - gboolean res; - - /* get kerberos tickets, setup group lists, etc - */ - error = NULL; - res = gdm_session_worker_accredit_user (worker, &error); - - if (res) { - gdm_dbus_worker_complete_establish_credentials (GDM_DBUS_WORKER (worker), worker->priv->pending_invocation); - } else { - g_dbus_method_invocation_take_error (worker->priv->pending_invocation, error); - } - worker->priv->pending_invocation = NULL; - } - - static void - save_account_details_now (GdmSessionWorker *worker) - { - g_assert (worker->priv->state == GDM_SESSION_WORKER_STATE_ACCREDITED); - - g_debug ("GdmSessionWorker: saving account details for user %s", worker->priv->username); -+ - gdm_session_worker_set_state (worker, GDM_SESSION_WORKER_STATE_ACCOUNT_DETAILS_SAVED); -- if (!gdm_session_settings_save (worker->priv->user_settings, -- worker->priv->username)) { -- g_warning ("could not save session and language settings"); -+ if (worker->priv->user_settings != NULL) { -+ if (!gdm_session_settings_save (worker->priv->user_settings, -+ worker->priv->username)) { -+ g_warning ("could not save session and language settings"); -+ } - } - queue_state_change (worker); - } - - static void - on_settings_is_loaded_changed (GdmSessionSettings *user_settings, - GParamSpec *pspec, - GdmSessionWorker *worker) - { - if (!gdm_session_settings_is_loaded (worker->priv->user_settings)) { - return; - } - - /* These signal handlers should be disconnected after the loading, - * so that gdm_session_settings_set_* APIs don't cause the emitting - * of Saved*NameRead D-Bus signals any more. - */ - g_signal_handlers_disconnect_by_func (worker->priv->user_settings, - G_CALLBACK (on_saved_session_name_read), - worker); - - g_signal_handlers_disconnect_by_func (worker->priv->user_settings, - G_CALLBACK (on_saved_language_name_read), - worker); - - if (worker->priv->state == GDM_SESSION_WORKER_STATE_NONE) { - g_debug ("GdmSessionWorker: queuing setup for user: %s %s", - worker->priv->username, worker->priv->display_device); - queue_state_change (worker); - } else if (worker->priv->state == GDM_SESSION_WORKER_STATE_ACCREDITED) { - save_account_details_now (worker); - } else { - return; - } - - g_signal_handlers_disconnect_by_func (G_OBJECT (worker->priv->user_settings), - G_CALLBACK (on_settings_is_loaded_changed), - worker); - } - - static void - do_save_account_details_when_ready (GdmSessionWorker *worker) - { - g_assert (worker->priv->state == GDM_SESSION_WORKER_STATE_ACCREDITED); - -- if (!gdm_session_settings_is_loaded (worker->priv->user_settings)) { -+ if (worker->priv->user_settings != NULL && !gdm_session_settings_is_loaded (worker->priv->user_settings)) { - g_signal_connect (G_OBJECT (worker->priv->user_settings), - "notify::is-loaded", - G_CALLBACK (on_settings_is_loaded_changed), - worker); - g_debug ("GdmSessionWorker: user %s, not fully loaded yet, will save account details later", - worker->priv->username); - gdm_session_settings_load (worker->priv->user_settings, - worker->priv->username); - return; - } - - save_account_details_now (worker); - } - - static void - do_open_session (GdmSessionWorker *worker) - { - GError *error; - gboolean res; - - error = NULL; - res = gdm_session_worker_open_session (worker, &error); - - if (res) { - char *session_id = worker->priv->session_id; - if (session_id == NULL) { - session_id = ""; - } - - gdm_dbus_worker_complete_open (GDM_DBUS_WORKER (worker), worker->priv->pending_invocation, session_id); -@@ -3103,155 +3113,161 @@ gdm_session_worker_handle_initialize (GdmDBusWorker *object, - if (g_strcmp0 (key, "service") == 0) { - worker->priv->service = g_variant_dup_string (value, NULL); - } else if (g_strcmp0 (key, "extensions") == 0) { - worker->priv->extensions = filter_extensions (g_variant_get_strv (value, NULL)); - } else if (g_strcmp0 (key, "username") == 0) { - worker->priv->username = g_variant_dup_string (value, NULL); - } else if (g_strcmp0 (key, "is-program-session") == 0) { - worker->priv->is_program_session = g_variant_get_boolean (value); - } else if (g_strcmp0 (key, "log-file") == 0) { - worker->priv->log_file = g_variant_dup_string (value, NULL); - } else if (g_strcmp0 (key, "x11-display-name") == 0) { - worker->priv->x11_display_name = g_variant_dup_string (value, NULL); - } else if (g_strcmp0 (key, "x11-authority-file") == 0) { - worker->priv->x11_authority_file = g_variant_dup_string (value, NULL); - } else if (g_strcmp0 (key, "console") == 0) { - worker->priv->display_device = g_variant_dup_string (value, NULL); - } else if (g_strcmp0 (key, "seat-id") == 0) { - worker->priv->display_seat_id = g_variant_dup_string (value, NULL); - } else if (g_strcmp0 (key, "hostname") == 0) { - worker->priv->hostname = g_variant_dup_string (value, NULL); - } else if (g_strcmp0 (key, "display-is-local") == 0) { - worker->priv->display_is_local = g_variant_get_boolean (value); - } else if (g_strcmp0 (key, "display-is-initial") == 0) { - worker->priv->display_is_initial = g_variant_get_boolean (value); - } - } - - worker->priv->pending_invocation = invocation; - - if (!worker->priv->is_program_session) { -+ worker->priv->user_settings = gdm_session_settings_new (); -+ - 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); - - 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) - { - 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; - -+ worker->priv->user_settings = gdm_session_settings_new (); -+ - 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) - { - 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); - -+ worker->priv->user_settings = gdm_session_settings_new (); -+ - 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, -@@ -3589,61 +3605,60 @@ static void - reauthentication_request_free (ReauthenticationRequest *request) - { - - g_signal_handlers_disconnect_by_func (request->session, - G_CALLBACK (on_reauthentication_client_connected), - request); - g_signal_handlers_disconnect_by_func (request->session, - G_CALLBACK (on_reauthentication_client_disconnected), - request); - g_signal_handlers_disconnect_by_func (request->session, - G_CALLBACK (on_reauthentication_cancelled), - request); - g_signal_handlers_disconnect_by_func (request->session, - G_CALLBACK (on_reauthentication_conversation_started), - request); - g_signal_handlers_disconnect_by_func (request->session, - G_CALLBACK (on_reauthentication_conversation_stopped), - request); - g_signal_handlers_disconnect_by_func (request->session, - G_CALLBACK (on_reauthentication_verification_complete), - request); - g_clear_object (&request->session); - g_slice_free (ReauthenticationRequest, request); - } - - static void - gdm_session_worker_init (GdmSessionWorker *worker) - { - worker->priv = GDM_SESSION_WORKER_GET_PRIVATE (worker); - -- worker->priv->user_settings = gdm_session_settings_new (); - worker->priv->reauthentication_requests = g_hash_table_new_full (NULL, - NULL, - NULL, - (GDestroyNotify) - reauthentication_request_free); - } - - static void - gdm_session_worker_unwatch_child (GdmSessionWorker *worker) - { - if (worker->priv->child_watch_id == 0) - return; - - g_source_remove (worker->priv->child_watch_id); - worker->priv->child_watch_id = 0; - } - - - static void - gdm_session_worker_finalize (GObject *object) - { - GdmSessionWorker *worker; - - g_return_if_fail (object != NULL); - g_return_if_fail (GDM_IS_SESSION_WORKER (object)); - - worker = GDM_SESSION_WORKER (object); - - g_return_if_fail (worker->priv != NULL); - --- -2.33.1 - diff --git a/SOURCES/0002-daemon-Support-X-servers-built-with-Dlisten_tcp-true.patch b/SOURCES/0002-daemon-Support-X-servers-built-with-Dlisten_tcp-true.patch deleted file mode 100644 index e4bd561..0000000 --- a/SOURCES/0002-daemon-Support-X-servers-built-with-Dlisten_tcp-true.patch +++ /dev/null @@ -1,327 +0,0 @@ -From d3823a5084e12d8f342fd4cbec29e23bdb646de7 Mon Sep 17 00:00:00 2001 -From: Alan Coopersmith -Date: Thu, 7 Oct 2021 18:22:11 -0700 -Subject: [PATCH 2/2] daemon: Support X servers built with -Dlisten_tcp=true - -Xorg since version 1.17 doesn't listen to tcp sockets by default -unless it's explicitly built with -Dlisten_tcp=true. - -GDM currently assumes X servers 1.17 and later are always built -without specifying -Dlisten_tcp=true and doesn't work properly -otherwise. - -This commit enhances GDM to better handle these non-standard builds by -always passing '-nolisten tcp' on the command line when tcp should -be disabled, and likewise always passing '-listen tcp' on the command -line, assuming the X server is new enough to support it, when tcp -should be enabled. - -Related #704 ---- - daemon/gdm-server.c | 21 +++++++++++---------- - daemon/gdm-x-session.c | 12 ++++++------ - meson.build | 4 ++-- - 3 files changed, 19 insertions(+), 18 deletions(-) - -diff --git a/daemon/gdm-server.c b/daemon/gdm-server.c -index 1ba00d45..e5d23521 100644 ---- a/daemon/gdm-server.c -+++ b/daemon/gdm-server.c -@@ -290,72 +290,73 @@ gdm_server_resolve_command_line (GdmServer *server, - if (strcmp (arg, "-query") == 0 || - strcmp (arg, "-indirect") == 0) - query_in_arglist = TRUE; - } - - argv = g_renew (char *, argv, len + 12); - /* shift args down one */ - for (i = len - 1; i >= 1; i--) { - argv[i+1] = argv[i]; - } - - /* server number is the FIRST argument, before any others */ - argv[1] = g_strdup (server->display_name); - len++; - - if (server->auth_file != NULL) { - argv[len++] = g_strdup ("-auth"); - argv[len++] = g_strdup (server->auth_file); - } - - if (server->display_seat_id != NULL) { - argv[len++] = g_strdup ("-seat"); - argv[len++] = g_strdup (server->display_seat_id); - } - - /* 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 (!server->disable_tcp && ! query_in_arglist) { -- argv[len++] = g_strdup ("-listen"); -- argv[len++] = g_strdup ("tcp"); -- } --#else -- if (server->disable_tcp && ! query_in_arglist) { -- argv[len++] = g_strdup ("-nolisten"); -- argv[len++] = g_strdup ("tcp"); -- } -+ if (!query_in_arglist) { -+ if (server->disable_tcp) { -+ argv[len++] = g_strdup ("-nolisten"); -+ argv[len++] = g_strdup ("tcp"); -+ } - -+#ifdef HAVE_XSERVER_WITH_LISTEN -+ if (!server->disable_tcp) { -+ argv[len++] = g_strdup ("-listen"); -+ argv[len++] = g_strdup ("tcp"); -+ } - #endif -+ } - - if (vtarg != NULL && ! gotvtarg) { - argv[len++] = g_strdup (vtarg); - } - - argv[len++] = NULL; - - *argvp = argv; - *argcp = len; - - return TRUE; - } - - static void - rotate_logs (const char *path, - guint n_copies) - { - int i; - - for (i = n_copies - 1; i > 0; i--) { - char *name_n; - char *name_n1; - - name_n = g_strdup_printf ("%s.%d", path, i); - if (i > 1) { - name_n1 = g_strdup_printf ("%s.%d", path, i - 1); - } else { - name_n1 = g_strdup (path); - } - -diff --git a/daemon/gdm-x-session.c b/daemon/gdm-x-session.c -index b1548361..d2a8aeb3 100644 ---- a/daemon/gdm-x-session.c -+++ b/daemon/gdm-x-session.c -@@ -233,70 +233,70 @@ spawn_x_server (State *state, - - if (g_getenv ("XDG_VTNR") != NULL) { - int vt; - - vt = atoi (g_getenv ("XDG_VTNR")); - - if (vt > 0 && vt < 64) { - vt_string = g_strdup_printf ("vt%d", vt); - } - } - - display_fd_string = g_strdup_printf ("%d", DISPLAY_FILENO); - - g_ptr_array_add (arguments, X_SERVER); - - if (vt_string != NULL) { - g_ptr_array_add (arguments, vt_string); - } - - 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 doesn'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"); - } -+ -+#ifdef HAVE_XSERVER_WITH_LISTEN -+ if (allow_remote_connections) { -+ g_ptr_array_add (arguments, "-listen"); -+ 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, "-novtswitch"); - - 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); -diff --git a/meson.build b/meson.build -index 06d09659..8328dd97 100644 ---- a/meson.build -+++ b/meson.build -@@ -44,61 +44,61 @@ glib_min_version = '2.56.0' - glib_dep = dependency('glib-2.0', version: '>=' + glib_min_version) - gobject_dep = dependency('gobject-2.0', version: '>=' + glib_min_version) - gio_dep = dependency('gio-2.0', version: '>=' + glib_min_version) - gio_unix_dep = dependency('gio-unix-2.0', version: '>=' + glib_min_version) - gtk_dep = dependency('gtk+-3.0', version: '>= 2.91.1') - libcanberra_gtk_dep = dependency('libcanberra-gtk3', version: '>= 0.4') - accountsservice_dep = dependency('accountsservice', version: '>= 0.6.35') - xcb_dep = dependency('xcb') - keyutils_dep = dependency('libkeyutils', required: false) - libselinux_dep = dependency('libselinux', required: get_option('selinux')) - - # udev - if udev_dir == '' - if udev_dep.found() - udev_prefix = udev_dep.get_pkgconfig_variable('udevdir') - else - udev_prefix = gdm_prefix / 'lib' / 'udev' - endif - udev_dir = udev_prefix / 'rules.d' - endif - - # X11 - x_deps = declare_dependency( - dependencies: [ - dependency('x11'), - dependency('xau'), - ], - ) - # Xserver 1.17 & later default to -nolisten and require -listen for remote access - xserver_deps = dependency('xorg-server', version : '>=1.17', required : false) --xserver_nolisten_default = xserver_deps.found() -+xserver_has_listen = xserver_deps.found() - find_x_server_script = find_program('build-aux/find-x-server.sh', native: true) - find_x_server_out = run_command(find_x_server_script).stdout().strip() - if find_x_server_out != '' - x_bin = find_x_server_out - x_bin_path_split = x_bin.split('/') - i = 0 - x_path = '/' - foreach dir : x_bin_path_split - if i < x_bin_path_split.length() - 1 - x_path = x_path / dir - endif - i = i + 1 - endforeach - else - # what to do, what to do, this is wrong, but this just sets the - # defaults, perhaps this user is cross compiling or some such - x_path = '/usr/bin/X11:/usr/X11R6/bin:/opt/X11R6/bin' - x_bin = '/usr/bin/X' - endif - xdmcp_dep = cc.find_library('Xdmcp', required: get_option('xdmcp')) - if xdmcp_dep.found() and get_option('tcp-wrappers') - libwrap_dep = cc.find_library('libwrap') - endif - # systemd - systemd_dep = dependency('systemd') - libsystemd_dep = dependency('libsystemd') - if meson.version().version_compare('>= 0.53') - systemd_multiseat_x = find_program('systemd-multi-seat-x', - required: false, - dirs: [ -@@ -200,61 +200,61 @@ conf.set_quoted('SYSCONFDIR', gdm_prefix / get_option('sysconfdir')) - conf.set_quoted('BINDIR', gdm_prefix / get_option('bindir')) - conf.set_quoted('LIBDIR', gdm_prefix / get_option('libdir')) - conf.set_quoted('LIBEXECDIR', gdm_prefix / get_option('libexecdir')) - conf.set_quoted('LOGDIR', get_option('log-dir')) - conf.set_quoted('DMCONFDIR', dmconfdir) - conf.set_quoted('GDMCONFDIR', gdmconfdir) - conf.set_quoted('GDM_SCREENSHOT_DIR', gdm_screenshot_dir) - conf.set_quoted('GDM_XAUTH_DIR', gdm_xauth_dir) - conf.set_quoted('GDM_RAN_ONCE_MARKER_DIR', ran_once_marker_dir) - conf.set_quoted('GDM_RUN_DIR', gdm_run_dir) - conf.set_quoted('GNOMELOCALEDIR', gdm_prefix / get_option('localedir')) - conf.set_quoted('AT_SPI_REGISTRYD_DIR', at_spi_registryd_dir) - conf.set_quoted('GDM_PID_FILE', gdm_pid_file) - conf.set_quoted('GNOME_SETTINGS_DAEMON_DIR', gnome_settings_daemon_dir) - conf.set_quoted('LANG_CONFIG_FILE', lang_config_file) - conf.set('HAVE_ADT', have_adt) - conf.set('HAVE_UTMP_H', have_utmp_header) - conf.set('HAVE_UTMPX_H', have_utmpx_header) - conf.set('HAVE_POSIX_GETPWNAM_R', have_posix_getpwnam_r) - conf.set('UTMP', utmp_struct) - conf.set('HAVE_GETUTXENT', cc.has_function('getutxent')) - conf.set('HAVE_UPDWTMP', cc.has_function('updwtmp')) - conf.set('HAVE_UPDWTMPX', cc.has_function('updwtmpx')) - conf.set('HAVE_LOGIN', cc.has_function('login', args: '-lutil')) - conf.set('HAVE_LOGOUT', cc.has_function('logout', args: '-lutil')) - conf.set('HAVE_LOGWTMP', cc.has_function('logwtmp', args: '-lutil')) - conf.set('HAVE_PAM_SYSLOG', have_pam_syslog) - conf.set('HAVE_KEYUTILS', keyutils_dep.found()) - conf.set('SUPPORTS_PAM_EXTENSIONS', pam_extensions_supported) - conf.set('HAVE_SELINUX', libselinux_dep.found()) --conf.set('HAVE_XSERVER_THAT_DEFAULTS_TO_LOCAL_ONLY', xserver_nolisten_default) -+conf.set('HAVE_XSERVER_WITH_LISTEN', xserver_has_listen) - conf.set('ENABLE_USER_DISPLAY_SERVER', get_option('user-display-server')) - conf.set('ENABLE_SYSTEMD_JOURNAL', get_option('systemd-journal')) - conf.set('ENABLE_WAYLAND_SUPPORT', get_option('wayland-support')) - conf.set('ENABLE_PROFILING', get_option('profiling')) - conf.set('GDM_INITIAL_VT', get_option('initial-vt')) - conf.set_quoted('GDM_DEFAULTS_CONF', gdm_defaults_conf) - conf.set_quoted('GDM_CUSTOM_CONF', gdm_custom_conf) - conf.set_quoted('GDM_RUNTIME_CONF', gdm_runtime_conf) - conf.set_quoted('GDM_SESSION_DEFAULT_PATH', get_option('default-path')) - conf.set_quoted('GDM_USERNAME', get_option('user')) - conf.set_quoted('GDM_GROUPNAME', get_option('group')) - conf.set('HAVE_LIBXDMCP', xdmcp_dep.found()) - conf.set_quoted('SYSTEMD_X_SERVER', systemd_x_server) - conf.set('WITH_PLYMOUTH', plymouth_dep.found()) - conf.set_quoted('X_SERVER', x_bin) - conf.set_quoted('X_PATH', x_path) - conf.set('HAVE_UT_UT_HOST', utmp_has_host_field) - conf.set('HAVE_UT_UT_PID', utmp_has_pid_field) - conf.set('HAVE_UT_UT_ID', utmp_has_id_field) - conf.set('HAVE_UT_UT_NAME', utmp_has_name_field) - conf.set('HAVE_UT_UT_TYPE', utmp_has_type_field) - conf.set('HAVE_UT_UT_EXIT_E_TERMINATION', utmp_has_exit_e_termination_field) - conf.set('HAVE_UT_UT_USER', utmp_has_user_field) - conf.set('HAVE_UT_UT_TIME', utmp_has_time_field) - conf.set('HAVE_UT_UT_TV', utmp_has_tv_field) - conf.set('HAVE_UT_UT_SYSLEN', utmp_has_syslen_field) - conf.set('ENABLE_IPV6', get_option('ipv6')) - configure_file(output: 'config.h', configuration: conf) - - # Subdirs --- -2.33.1 - diff --git a/SOURCES/0002-gdm-x-session-run-session-bus-on-non-seat0-seats.patch b/SOURCES/0002-gdm-x-session-run-session-bus-on-non-seat0-seats.patch deleted file mode 100644 index 65e60ab..0000000 --- a/SOURCES/0002-gdm-x-session-run-session-bus-on-non-seat0-seats.patch +++ /dev/null @@ -1,151 +0,0 @@ -From 874b26e3674d540df37d7f145df853bcf81e5a26 Mon Sep 17 00:00:00 2001 -From: Ray Strode -Date: Wed, 5 Feb 2020 15:20:48 -0500 -Subject: [PATCH 2/3] gdm-x-session: run session bus on non-seat0 seats - -GNOME doesn't deal very well with multiple sessions -running on a multiple seats at the moment. - -Until that's fixed, ensure sessions run on auxillary -seats get their own session bus. ---- - daemon/gdm-session.c | 11 ++++++++++- - 1 file changed, 10 insertions(+), 1 deletion(-) - -diff --git a/daemon/gdm-session.c b/daemon/gdm-session.c -index 418240dc0..77d6b8ff0 100644 ---- a/daemon/gdm-session.c -+++ b/daemon/gdm-session.c -@@ -2822,119 +2822,128 @@ on_start_program_cb (GdmDBusWorker *worker, - if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CLOSED) || - g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) - return; - - self = conversation->session; - service_name = conversation->service_name; - - if (worked) { - self->session_pid = pid; - self->session_conversation = conversation; - - g_debug ("GdmSession: Emitting 'session-started' signal with pid '%d'", pid); - g_signal_emit (self, signals[SESSION_STARTED], 0, service_name, pid); - } else { - gdm_session_stop_conversation (self, service_name); - - g_debug ("GdmSession: Emitting 'session-start-failed' signal"); - g_signal_emit (self, signals[SESSION_START_FAILED], 0, service_name, error->message); - } - } - - void - gdm_session_start_session (GdmSession *self, - const char *service_name) - { - GdmSessionConversation *conversation; - GdmSessionDisplayMode display_mode; - gboolean is_x11 = TRUE; - gboolean run_launcher = FALSE; - gboolean allow_remote_connections = FALSE; -+ gboolean run_separate_bus = FALSE; - char *command; - char *program; - gboolean register_session; - - g_return_if_fail (GDM_IS_SESSION (self)); - g_return_if_fail (self->session_conversation == NULL); - - conversation = find_conversation_by_name (self, service_name); - - if (conversation == NULL) { - g_warning ("GdmSession: Tried to start session of " - "nonexistent conversation %s", service_name); - return; - } - - stop_all_other_conversations (self, conversation, FALSE); - - display_mode = gdm_session_get_display_mode (self); - - #ifdef ENABLE_WAYLAND_SUPPORT - is_x11 = g_strcmp0 (self->session_type, "wayland") != 0; - #endif - - if (display_mode == GDM_SESSION_DISPLAY_MODE_LOGIND_MANAGED || - display_mode == GDM_SESSION_DISPLAY_MODE_NEW_VT) { - run_launcher = TRUE; - } - - register_session = !gdm_session_session_registers (self); - -+ if (g_strcmp0 (self->display_seat_id, "seat0") != 0 && !run_launcher) { -+ run_separate_bus = TRUE; -+ } -+ - if (self->selected_program == NULL) { - gboolean run_xsession_script; - - command = get_session_command (self); - - run_xsession_script = !gdm_session_bypasses_xsession (self); - - if (self->display_is_local) { - gboolean disallow_tcp = TRUE; - gdm_settings_direct_get_boolean (GDM_KEY_DISALLOW_TCP, &disallow_tcp); - allow_remote_connections = !disallow_tcp; - } else { - allow_remote_connections = TRUE; - } - - if (run_launcher) { - if (is_x11) { - program = g_strdup_printf (LIBEXECDIR "/gdm-x-session %s%s %s\"%s\"", - register_session ? "--register-session " : "", - run_xsession_script? "--run-script " : "", - allow_remote_connections? "--allow-remote-connections " : "", - command); - } else { - program = g_strdup_printf (LIBEXECDIR "/gdm-wayland-session %s\"%s\"", - register_session ? "--register-session " : "", - command); - } - } else if (run_xsession_script) { -- program = g_strdup_printf (GDMCONFDIR "/Xsession \"%s\"", command); -+ if (run_separate_bus) { -+ program = g_strdup_printf ("dbus-run-session -- " GDMCONFDIR "/Xsession \"%s\"", command); -+ } else { -+ program = g_strdup_printf (GDMCONFDIR "/Xsession \"%s\"", command); -+ } - } else { - program = g_strdup (command); - } - - g_free (command); - } else { - /* FIXME: - * Always use a separate DBus bus for each greeter session. - * Firstly, this means that if we run multiple greeter session - * (which we really should not do, but have to currently), then - * each one will get its own DBus session bus. - * But, we also explicitly do this for seat0, because that way - * it cannot make use of systemd to run the GNOME session. This - * prevents the session lookup logic from getting confused. - * This has a similar effect as passing --builtin to gnome-session. - * - * We really should not be doing this. But the fix is to use - * separate dynamically created users and that requires some - * major refactorings. - */ - if (run_launcher) { - if (is_x11) { - program = g_strdup_printf (LIBEXECDIR "/gdm-x-session %s\"dbus-run-session -- %s\"", - register_session ? "--register-session " : "", - self->selected_program); - } else { - program = g_strdup_printf (LIBEXECDIR "/gdm-wayland-session %s\"dbus-run-session -- %s\"", - register_session ? "--register-session " : "", - self->selected_program); - } --- -2.30.1 - diff --git a/SOURCES/0002-libgdm-Sort-session-list.patch b/SOURCES/0002-libgdm-Sort-session-list.patch deleted file mode 100644 index 6ba1b6c..0000000 --- a/SOURCES/0002-libgdm-Sort-session-list.patch +++ /dev/null @@ -1,131 +0,0 @@ -From c00daca1579c47f3f62894ff2378c37e6cbebfd3 Mon Sep 17 00:00:00 2001 -From: Ray Strode -Date: Tue, 20 Jul 2021 13:36:45 -0400 -Subject: [PATCH 2/4] libgdm: Sort session list - -Right now the session list comes out in hash table order. - -This commit changes the code to sort by description. ---- - libgdm/gdm-sessions.c | 19 +++++++++++++++++++ - 1 file changed, 19 insertions(+) - -diff --git a/libgdm/gdm-sessions.c b/libgdm/gdm-sessions.c -index 97ed5ef3..f078e04b 100644 ---- a/libgdm/gdm-sessions.c -+++ b/libgdm/gdm-sessions.c -@@ -311,92 +311,111 @@ collect_sessions (void) - g_ptr_array_add (wayland_search_array, g_strdup (wayland_search_dirs[i])); - } - #endif - - if (gdm_available_sessions_map == NULL) { - gdm_available_sessions_map = g_hash_table_new_full (g_str_hash, g_str_equal, - g_free, (GDestroyNotify)gdm_session_file_free); - } - - if (!supported_session_types || g_strv_contains ((const char * const *) supported_session_types, "x11")) { - for (i = 0; i < xorg_search_array->len; i++) { - collect_sessions_from_directory (g_ptr_array_index (xorg_search_array, i)); - } - } - - #ifdef ENABLE_WAYLAND_SUPPORT - #ifdef ENABLE_USER_DISPLAY_SERVER - if (!supported_session_types || g_strv_contains ((const char * const *) supported_session_types, "wayland")) { - for (i = 0; i < wayland_search_array->len; i++) { - collect_sessions_from_directory (g_ptr_array_index (wayland_search_array, i)); - } - } - #endif - #endif - - g_hash_table_foreach_remove (gdm_available_sessions_map, - remove_duplicate_sessions, - names_seen_before); - } - -+static gint -+compare_session_ids (gconstpointer a, -+ gconstpointer b) -+{ -+ GdmSessionFile *session_a, *session_b; -+ session_a = (GdmSessionFile *) g_hash_table_lookup (gdm_available_sessions_map, a); -+ session_b = (GdmSessionFile *) g_hash_table_lookup (gdm_available_sessions_map, b); -+ -+ if (session_a == NULL) -+ return -1; -+ -+ if (session_b == NULL) -+ return 1; -+ -+ return g_strcmp0 (session_a->translated_name, session_b->translated_name); -+} -+ - /** - * gdm_get_session_ids: - * - * Reads /usr/share/xsessions and other relevant places for possible sessions - * to log into and returns the complete list. - * - * Returns: (transfer full): a %NULL terminated list of session ids - */ - char ** - gdm_get_session_ids (void) - { - GHashTableIter iter; - gpointer key, value; - GPtrArray *array; - - if (!gdm_sessions_map_is_initialized) { - collect_sessions (); - - gdm_sessions_map_is_initialized = TRUE; - } - - array = g_ptr_array_new (); - g_hash_table_iter_init (&iter, gdm_available_sessions_map); - while (g_hash_table_iter_next (&iter, &key, &value)) { - GdmSessionFile *session; - - session = (GdmSessionFile *) value; - - g_ptr_array_add (array, g_strdup (session->id)); - } - g_ptr_array_add (array, NULL); - -+ g_ptr_array_sort (array, compare_session_ids); -+ - return (char **) g_ptr_array_free (array, FALSE); - } - - /** - * gdm_get_session_name_and_description: - * @id: an id from gdm_get_session_ids() - * @description: (out): optional returned session description - * - * Takes an xsession id and returns the name and comment about it. - * - * Returns: The session name if found, or %NULL otherwise - */ - char * - gdm_get_session_name_and_description (const char *id, - char **description) - { - GdmSessionFile *session; - char *name; - - if (!gdm_sessions_map_is_initialized) { - collect_sessions (); - - gdm_sessions_map_is_initialized = TRUE; - } - - session = (GdmSessionFile *) g_hash_table_lookup (gdm_available_sessions_map, - id); - - if (session == NULL) { - return NULL; --- -2.34.1 - diff --git a/SOURCES/0002-manager-Fix-btmp-record-accounting.patch b/SOURCES/0002-manager-Fix-btmp-record-accounting.patch deleted file mode 100644 index 2c69b53..0000000 --- a/SOURCES/0002-manager-Fix-btmp-record-accounting.patch +++ /dev/null @@ -1,227 +0,0 @@ -From 20725e4c65555178ed64a3cb77ee979ec98998f8 Mon Sep 17 00:00:00 2001 -From: Ray Strode -Date: Wed, 19 Oct 2022 14:50:33 -0400 -Subject: [PATCH 2/2] manager: Fix btmp record accounting - -Before a user logs in they don't have a display. - -btmp records currently need a display though, and they -get written when the user can't log in. - -Furthermore, the display from X11 point of view is -somewhat archaic. We use wayland by default now. - -In lieu of a display, this commit gives the btmp record -the seat id instead. ---- - daemon/gdm-manager.c | 11 +++++++++-- - daemon/gdm-session-record.c | 8 ++++++-- - 2 files changed, 15 insertions(+), 4 deletions(-) - -diff --git a/daemon/gdm-manager.c b/daemon/gdm-manager.c -index 4b62b8b1..c70248f3 100644 ---- a/daemon/gdm-manager.c -+++ b/daemon/gdm-manager.c -@@ -641,113 +641,120 @@ switch_to_compatible_user_session (GdmManager *manager, - - ret = TRUE; - - out: - return ret; - } - - static GdmDisplay * - get_display_for_user_session (GdmSession *session) - { - return g_object_get_data (G_OBJECT (session), "gdm-display"); - } - - static GdmSession * - get_user_session_for_display (GdmDisplay *display) - { - if (display == NULL) { - return NULL; - } - - return g_object_get_data (G_OBJECT (display), "gdm-user-session"); - } - - static gboolean - add_session_record (GdmManager *manager, - GdmSession *session, - GPid pid, - SessionRecord record) - { - const char *username; -- char *display_name, *hostname, *display_device; -+ char *display_name, *hostname, *display_device, *display_seat_id; - gboolean recorded = FALSE; - - display_name = NULL; - username = NULL; - hostname = NULL; - display_device = NULL; -+ display_seat_id = NULL; - - username = gdm_session_get_username (session); - - if (username == NULL) { - goto out; - } - - g_object_get (G_OBJECT (session), - "display-name", &display_name, - "display-hostname", &hostname, - "display-device", &display_device, -+ "display-seat-id", &display_seat_id, - NULL); - - if (display_name == NULL && display_device == NULL) { -- goto out; -+ if (display_seat_id == NULL) -+ goto out; -+ -+ display_name = g_strdup ("login screen"); -+ display_device = g_strdup (display_seat_id); - } - - switch (record) { - case SESSION_RECORD_LOGIN: - gdm_session_record_login (pid, - username, - hostname, - display_name, - display_device); - break; - case SESSION_RECORD_LOGOUT: - gdm_session_record_logout (pid, - username, - hostname, - display_name, - display_device); - break; - case SESSION_RECORD_FAILED: - gdm_session_record_failed (pid, - username, - hostname, - display_name, - display_device); - break; - } - - recorded = TRUE; - out: - g_free (display_name); - g_free (hostname); - g_free (display_device); -+ g_free (display_seat_id); - - return recorded; - } - - static GdmSession * - find_user_session_for_display (GdmManager *self, - GdmDisplay *display) - { - - GList *node = self->priv->user_sessions; - - while (node != NULL) { - GdmSession *session = node->data; - GdmDisplay *candidate_display; - GList *next_node = node->next; - - candidate_display = get_display_for_user_session (session); - - if (candidate_display == display) - return session; - - node = next_node; - } - - return NULL; - } - - static gboolean - gdm_manager_handle_register_display (GdmDBusManager *manager, - GDBusMethodInvocation *invocation, -diff --git a/daemon/gdm-session-record.c b/daemon/gdm-session-record.c -index 7719d0a8..310323b6 100644 ---- a/daemon/gdm-session-record.c -+++ b/daemon/gdm-session-record.c -@@ -125,66 +125,70 @@ record_set_host (UTMP *u, - */ - if (host_name != NULL - && x11_display_name != NULL - && g_str_has_prefix (x11_display_name, ":")) { - hostname = g_strdup_printf ("%s%s", host_name, x11_display_name); - } else { - hostname = g_strdup (x11_display_name); - } - - if (hostname != NULL) { - memccpy (u->ut_host, hostname, '\0', sizeof (u->ut_host)); - g_debug ("using ut_host %.*s", (int) sizeof (u->ut_host), u->ut_host); - #ifdef HAVE_UT_UT_SYSLEN - u->ut_syslen = MIN (strlen (hostname), sizeof (u->ut_host)); - #endif - g_free (hostname); - } - #endif - } - - static void - record_set_line (UTMP *u, - const char *display_device, - const char *x11_display_name) - { - /* - * Set ut_line to the device name associated with this display - * but remove the "/dev/" prefix. If no device, then use the - * $DISPLAY value. - */ -- if (display_device != NULL -- && g_str_has_prefix (display_device, "/dev/")) { -+ if (display_device != NULL && g_str_has_prefix (display_device, "/dev/")) { - memccpy (u->ut_line, - display_device + strlen ("/dev/"), - '\0', - sizeof (u->ut_line)); -+ } else if (display_device != NULL && g_str_has_prefix (display_device, "seat")) { -+ memccpy (u->ut_line, -+ display_device, -+ '\0', -+ sizeof (u->ut_line)); - } else if (x11_display_name != NULL) { - memccpy (u->ut_line, - x11_display_name, - '\0', - sizeof (u->ut_line)); - } - - g_debug ("using ut_line %.*s", (int) sizeof (u->ut_line), u->ut_line); - } - - void - gdm_session_record_login (GPid session_pid, - const char *user_name, - const char *host_name, - const char *x11_display_name, - const char *display_device) - { - UTMP session_record = { 0 }; - - if (x11_display_name == NULL) - x11_display_name = display_device; - - record_set_username (&session_record, user_name); - - g_debug ("Writing login record"); - - #if defined(HAVE_UT_UT_TYPE) - session_record.ut_type = USER_PROCESS; - g_debug ("using ut_type USER_PROCESS"); - #endif --- -2.31.1 - diff --git a/SOURCES/0002-pam_gdm-Use-the-last-cryptsetup-password-instead-of-.patch b/SOURCES/0002-pam_gdm-Use-the-last-cryptsetup-password-instead-of-.patch deleted file mode 100644 index 7da1b75..0000000 --- a/SOURCES/0002-pam_gdm-Use-the-last-cryptsetup-password-instead-of-.patch +++ /dev/null @@ -1,119 +0,0 @@ -From 9f4b4ef1b5e1458ca67cff235b655060b27e357b Mon Sep 17 00:00:00 2001 -From: Graham Rogers -Date: Sun, 18 Apr 2021 12:22:14 +0100 -Subject: [PATCH 2/2] pam_gdm: Use the last cryptsetup password instead of the - first - ---- - pam_gdm/pam_gdm.c | 32 ++++++++++++++++++++++++++------ - 1 file changed, 26 insertions(+), 6 deletions(-) - -diff --git a/pam_gdm/pam_gdm.c b/pam_gdm/pam_gdm.c -index 767a6c8c..ef77f161 100644 ---- a/pam_gdm/pam_gdm.c -+++ b/pam_gdm/pam_gdm.c -@@ -11,75 +11,95 @@ - * 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, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - */ - #include - - #include - - #include - #include - #include - #include - #include - - #ifdef HAVE_KEYUTILS - #include - #endif - - int - pam_sm_authenticate (pam_handle_t *pamh, - int flags, - int argc, - const char **argv) - { - #ifdef HAVE_KEYUTILS -- int r; -- void *cached_password = NULL; -+ long r; -+ size_t cached_passwords_length; -+ char *cached_passwords = NULL; -+ char *last_cached_password = NULL; - key_serial_t serial; -+ size_t i; - - serial = find_key_by_type_and_desc ("user", "cryptsetup", 0); - if (serial == 0) - return PAM_AUTHINFO_UNAVAIL; - -- r = keyctl_read_alloc (serial, &cached_password); -- if (r < 0 || r != strlen (cached_password)) -+ r = keyctl_read_alloc (serial, &cached_passwords); -+ if (r < 0) - return PAM_AUTHINFO_UNAVAIL; -+ -+ cached_passwords_length = r; -+ -+ /* -+ Find the last password in the NUL-separated list of passwords. -+ Multiple passwords are returned either when the user enters an -+ incorrect password or there are multiple encrypted drives. -+ In the case of an incorrect password the last one is correct. -+ In the case of multiple drives, choosing the last drive is as -+ arbitrary a choice as any other, but choosing the last password at -+ least supports multiple attempts on the last drive. -+ */ -+ last_cached_password = cached_passwords; -+ for (i = 0; i < cached_passwords_length; i++) { -+ last_cached_password = cached_passwords + i; -+ i += strlen (last_cached_password); -+ } - -- r = pam_set_item (pamh, PAM_AUTHTOK, cached_password); -+ r = pam_set_item (pamh, PAM_AUTHTOK, last_cached_password); - -- free (cached_password); -+ free (cached_passwords); - - if (r < 0) - return PAM_AUTH_ERR; - else - return PAM_SUCCESS; - #endif - - return PAM_AUTHINFO_UNAVAIL; - } - - int - pam_sm_setcred (pam_handle_t *pamh, - int flags, - int argc, - const char **argv) - { - return PAM_SUCCESS; - } - - int - pam_sm_acct_mgmt (pam_handle_t *pamh, - int flags, - int argc, - const char **argv) - { - return PAM_SUCCESS; - } - - int - pam_sm_chauthtok (pam_handle_t *pamh, --- -2.35.1 - diff --git a/SOURCES/0002-session-support-new-accountsservice-Session-and-Sess.patch b/SOURCES/0002-session-support-new-accountsservice-Session-and-Sess.patch deleted file mode 100644 index 6cb961e..0000000 --- a/SOURCES/0002-session-support-new-accountsservice-Session-and-Sess.patch +++ /dev/null @@ -1,1698 +0,0 @@ -From 22b08727980cefd665b8805376710e9244523fe3 Mon Sep 17 00:00:00 2001 -From: Ray Strode -Date: Tue, 14 Aug 2018 14:52:41 -0400 -Subject: [PATCH 2/4] session: support new accountsservice Session and - SessionType props - -At the moment the user's session is stored in a property called -"XSession". This is pretty weird if the user is using wayland. - -AccountService now supports a more generic property "Session" and -a related "SessionType" property to replace "XSession". - -This commit switches GDM over to use the new properties. ---- - daemon/gdm-session-settings.c | 61 ++++++++++++++++++++++-- - daemon/gdm-session-settings.h | 3 ++ - daemon/gdm-session-worker.c | 28 +++++++++++ - daemon/gdm-session-worker.xml | 3 ++ - daemon/gdm-session.c | 87 +++++++++++++++++++++++++---------- - 5 files changed, 153 insertions(+), 29 deletions(-) - -diff --git a/daemon/gdm-session-settings.c b/daemon/gdm-session-settings.c -index 484a3b5b..f2b1addd 100644 ---- a/daemon/gdm-session-settings.c -+++ b/daemon/gdm-session-settings.c -@@ -12,114 +12,121 @@ - * 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, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA - * 02110-1301, USA. - * - * Written by: Ray Strode - */ - #include "config.h" - #include "gdm-session-settings.h" - - #include - #include - #include - #include - #include - - #include - #include - #include - - #include - - struct _GdmSessionSettingsPrivate - { - ActUserManager *user_manager; - ActUser *user; - char *session_name; -+ char *session_type; - char *language_name; - }; - - static void gdm_session_settings_finalize (GObject *object); - static void gdm_session_settings_class_install_properties (GdmSessionSettingsClass * - settings_class); - - static void gdm_session_settings_set_property (GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec); - static void gdm_session_settings_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec); - - enum { - PROP_0 = 0, - PROP_SESSION_NAME, -+ PROP_SESSION_TYPE, - PROP_LANGUAGE_NAME, - PROP_IS_LOADED - }; - - G_DEFINE_TYPE_WITH_PRIVATE (GdmSessionSettings, - gdm_session_settings, - G_TYPE_OBJECT) - - static void - gdm_session_settings_class_init (GdmSessionSettingsClass *settings_class) - { - GObjectClass *object_class; - - object_class = G_OBJECT_CLASS (settings_class); - - object_class->finalize = gdm_session_settings_finalize; - - gdm_session_settings_class_install_properties (settings_class); - } - - static void - gdm_session_settings_class_install_properties (GdmSessionSettingsClass *settings_class) - { - GObjectClass *object_class; - GParamSpec *param_spec; - - object_class = G_OBJECT_CLASS (settings_class); - object_class->set_property = gdm_session_settings_set_property; - object_class->get_property = gdm_session_settings_get_property; - - param_spec = g_param_spec_string ("session-name", "Session Name", - "The name of the session", - NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); - g_object_class_install_property (object_class, PROP_SESSION_NAME, param_spec); - -+ param_spec = g_param_spec_string ("session-type", "Session Type", -+ "The type of the session", -+ NULL, G_PARAM_READWRITE); -+ g_object_class_install_property (object_class, PROP_SESSION_TYPE, param_spec); -+ - param_spec = g_param_spec_string ("language-name", "Language Name", - "The name of the language", - NULL, - G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS); - g_object_class_install_property (object_class, PROP_LANGUAGE_NAME, param_spec); - - param_spec = g_param_spec_boolean ("is-loaded", NULL, NULL, - FALSE, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); - g_object_class_install_property (object_class, PROP_IS_LOADED, param_spec); - } - - static void - gdm_session_settings_init (GdmSessionSettings *settings) - { - settings->priv = G_TYPE_INSTANCE_GET_PRIVATE (settings, - GDM_TYPE_SESSION_SETTINGS, - GdmSessionSettingsPrivate); - - settings->priv->user_manager = act_user_manager_get_default (); - - } - - static void - gdm_session_settings_finalize (GObject *object) - { - GdmSessionSettings *settings; - GObjectClass *parent_class; - - settings = GDM_SESSION_SETTINGS (object); - -@@ -136,172 +143,212 @@ gdm_session_settings_finalize (GObject *object) - parent_class->finalize (object); - } - } - - void - gdm_session_settings_set_language_name (GdmSessionSettings *settings, - const char *language_name) - { - g_return_if_fail (GDM_IS_SESSION_SETTINGS (settings)); - - if (settings->priv->language_name == NULL || - strcmp (settings->priv->language_name, language_name) != 0) { - settings->priv->language_name = g_strdup (language_name); - g_object_notify (G_OBJECT (settings), "language-name"); - } - } - - void - gdm_session_settings_set_session_name (GdmSessionSettings *settings, - const char *session_name) - { - g_return_if_fail (GDM_IS_SESSION_SETTINGS (settings)); - - if (settings->priv->session_name == NULL || - strcmp (settings->priv->session_name, session_name) != 0) { - settings->priv->session_name = g_strdup (session_name); - g_object_notify (G_OBJECT (settings), "session-name"); - } - } - -+void -+gdm_session_settings_set_session_type (GdmSessionSettings *settings, -+ const char *session_type) -+{ -+ g_return_if_fail (GDM_IS_SESSION_SETTINGS (settings)); -+ -+ if (settings->priv->session_type == NULL || -+ g_strcmp0 (settings->priv->session_type, session_type) != 0) { -+ settings->priv->session_type = g_strdup (session_type); -+ g_object_notify (G_OBJECT (settings), "session-type"); -+ } -+} -+ - char * - gdm_session_settings_get_language_name (GdmSessionSettings *settings) - { - g_return_val_if_fail (GDM_IS_SESSION_SETTINGS (settings), NULL); - return g_strdup (settings->priv->language_name); - } - - char * - gdm_session_settings_get_session_name (GdmSessionSettings *settings) - { - g_return_val_if_fail (GDM_IS_SESSION_SETTINGS (settings), NULL); - return g_strdup (settings->priv->session_name); - } - -+char * -+gdm_session_settings_get_session_type (GdmSessionSettings *settings) -+{ -+ g_return_val_if_fail (GDM_IS_SESSION_SETTINGS (settings), NULL); -+ return g_strdup (settings->priv->session_type); -+} -+ - static void - gdm_session_settings_set_property (GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec) - { - GdmSessionSettings *settings; - - settings = GDM_SESSION_SETTINGS (object); - - switch (prop_id) { - case PROP_LANGUAGE_NAME: - gdm_session_settings_set_language_name (settings, g_value_get_string (value)); - break; - - case PROP_SESSION_NAME: - gdm_session_settings_set_session_name (settings, g_value_get_string (value)); - break; - -+ case PROP_SESSION_TYPE: -+ gdm_session_settings_set_session_type (settings, g_value_get_string (value)); -+ break; -+ - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - } - } - - static void - gdm_session_settings_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec) - { - GdmSessionSettings *settings; - - settings = GDM_SESSION_SETTINGS (object); - - switch (prop_id) { - case PROP_SESSION_NAME: - g_value_set_string (value, settings->priv->session_name); - break; - -+ case PROP_SESSION_TYPE: -+ g_value_set_string (value, settings->priv->session_type); -+ break; -+ - case PROP_LANGUAGE_NAME: - g_value_set_string (value, settings->priv->language_name); - break; - - case PROP_IS_LOADED: - g_value_set_boolean (value, gdm_session_settings_is_loaded (settings)); - break; - - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - } - } - - GdmSessionSettings * - gdm_session_settings_new (void) - { - GdmSessionSettings *settings; - - settings = g_object_new (GDM_TYPE_SESSION_SETTINGS, - NULL); - - return settings; - } - - gboolean - gdm_session_settings_is_loaded (GdmSessionSettings *settings) - { - if (settings->priv->user == NULL) { - return FALSE; - } - - return act_user_is_loaded (settings->priv->user); - } - - static void - load_settings_from_user (GdmSessionSettings *settings) - { - const char *session_name; -+ const char *session_type; - const char *language_name; - - if (!act_user_is_loaded (settings->priv->user)) { - g_warning ("GdmSessionSettings: trying to load user settings from unloaded user"); - return; - } - -- session_name = act_user_get_x_session (settings->priv->user); -- g_debug ("GdmSessionSettings: saved session is %s", session_name); - -- if (session_name != NULL) { -+ -+ -+ -+ session_type = act_user_get_session_type (settings->priv->user); -+ session_name = act_user_get_session (settings->priv->user); -+ -+ g_debug ("GdmSessionSettings: saved session is %s (type %s)", session_name, session_type); -+ -+ if (session_type != NULL && session_type[0] != '\0') { -+ gdm_session_settings_set_session_type (settings, session_type); -+ } -+ -+ if (session_name != NULL && session_name[0] != '\0') { - gdm_session_settings_set_session_name (settings, session_name); - } - - language_name = act_user_get_language (settings->priv->user); - - g_debug ("GdmSessionSettings: saved language is %s", language_name); -- if (language_name != NULL) { -+ if (language_name != NULL && language_name[0] != '\0') { - gdm_session_settings_set_language_name (settings, language_name); - } - -+out: - g_object_notify (G_OBJECT (settings), "is-loaded"); - } - - static void - on_user_is_loaded_changed (ActUser *user, - GParamSpec *pspec, - GdmSessionSettings *settings) - { - if (act_user_is_loaded (settings->priv->user)) { - load_settings_from_user (settings); - g_signal_handlers_disconnect_by_func (G_OBJECT (settings->priv->user), - G_CALLBACK (on_user_is_loaded_changed), - settings); - } - } - - gboolean - gdm_session_settings_load (GdmSessionSettings *settings, - const char *username) - { - ActUser *old_user; - - g_return_val_if_fail (settings != NULL, FALSE); - g_return_val_if_fail (username != NULL, FALSE); - g_return_val_if_fail (!gdm_session_settings_is_loaded (settings), FALSE); - - if (settings->priv->user != NULL) { - old_user = settings->priv->user; - - g_signal_handlers_disconnect_by_func (G_OBJECT (settings->priv->user), -@@ -322,40 +369,44 @@ gdm_session_settings_load (GdmSessionSettings *settings, - G_CALLBACK (on_user_is_loaded_changed), - settings); - return FALSE; - } - - load_settings_from_user (settings); - - return TRUE; - } - - gboolean - gdm_session_settings_save (GdmSessionSettings *settings, - const char *username) - { - ActUser *user; - - g_return_val_if_fail (GDM_IS_SESSION_SETTINGS (settings), FALSE); - g_return_val_if_fail (username != NULL, FALSE); - g_return_val_if_fail (gdm_session_settings_is_loaded (settings), FALSE); - - user = act_user_manager_get_user (settings->priv->user_manager, - username); - - - if (!act_user_is_loaded (user)) { - g_object_unref (user); - return FALSE; - } - - if (settings->priv->session_name != NULL) { -- act_user_set_x_session (user, settings->priv->session_name); -+ act_user_set_session (user, settings->priv->session_name); -+ } -+ -+ if (settings->priv->session_type != NULL) { -+ act_user_set_session_type (user, settings->priv->session_type); - } - - if (settings->priv->language_name != NULL) { - act_user_set_language (user, settings->priv->language_name); - } - g_object_unref (user); - - return TRUE; - } -diff --git a/daemon/gdm-session-settings.h b/daemon/gdm-session-settings.h -index 20946bff..db38ffc7 100644 ---- a/daemon/gdm-session-settings.h -+++ b/daemon/gdm-session-settings.h -@@ -33,37 +33,40 @@ G_BEGIN_DECLS - #define GDM_IS_SESSION_SETTINGS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GDM_TYPE_SESSION_SETTINGS)) - #define GDM_SESSION_SETTINGS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), GDM_TYPE_SESSION_SETTINGS, GdmSessionSettingsClass)) - #define GDM_SESSION_SETTINGS_ERROR (gdm_session_settings_error_quark ()) - typedef struct _GdmSessionSettings GdmSessionSettings; - typedef struct _GdmSessionSettingsClass GdmSessionSettingsClass; - typedef struct _GdmSessionSettingsPrivate GdmSessionSettingsPrivate; - - struct _GdmSessionSettings - { - GObject parent; - - /*< private > */ - GdmSessionSettingsPrivate *priv; - }; - - struct _GdmSessionSettingsClass - { - GObjectClass parent_class; - }; - - GType gdm_session_settings_get_type (void); - GdmSessionSettings *gdm_session_settings_new (void); - - gboolean gdm_session_settings_load (GdmSessionSettings *settings, - const char *username); - gboolean gdm_session_settings_save (GdmSessionSettings *settings, - const char *username); - gboolean gdm_session_settings_is_loaded (GdmSessionSettings *settings); - char *gdm_session_settings_get_language_name (GdmSessionSettings *settings); - char *gdm_session_settings_get_session_name (GdmSessionSettings *settings); -+char *gdm_session_settings_get_session_type (GdmSessionSettings *settings); - void gdm_session_settings_set_language_name (GdmSessionSettings *settings, - const char *language_name); - void gdm_session_settings_set_session_name (GdmSessionSettings *settings, - const char *session_name); -+void gdm_session_settings_set_session_type (GdmSessionSettings *settings, -+ const char *session_type); - - G_END_DECLS - #endif /* GDM_SESSION_SETTINGS_H */ -diff --git a/daemon/gdm-session-worker.c b/daemon/gdm-session-worker.c -index 438348df..9cff53a5 100644 ---- a/daemon/gdm-session-worker.c -+++ b/daemon/gdm-session-worker.c -@@ -2662,60 +2662,74 @@ gdm_session_worker_handle_set_language_name (GdmDBusWorker *object, - gdm_dbus_worker_complete_set_language_name (object, invocation); - return TRUE; - } - - static void - on_saved_language_name_read (GdmSessionWorker *worker) - { - char *language_name; - - language_name = gdm_session_settings_get_language_name (worker->priv->user_settings); - - g_debug ("GdmSessionWorker: Saved language is %s", language_name); - gdm_dbus_worker_emit_saved_language_name_read (GDM_DBUS_WORKER (worker), - language_name); - g_free (language_name); - } - - static void - on_saved_session_name_read (GdmSessionWorker *worker) - { - char *session_name; - - session_name = gdm_session_settings_get_session_name (worker->priv->user_settings); - - g_debug ("GdmSessionWorker: Saved session is %s", session_name); - gdm_dbus_worker_emit_saved_session_name_read (GDM_DBUS_WORKER (worker), - session_name); - g_free (session_name); - } - -+static void -+on_saved_session_type_read (GdmSessionWorker *worker) -+{ -+ char *session_type; -+ -+ session_type = gdm_session_settings_get_session_type (worker->priv->user_settings); -+ -+ g_debug ("GdmSessionWorker: Saved session type is %s", session_type); -+ gdm_dbus_worker_emit_saved_session_type_read (GDM_DBUS_WORKER (worker), -+ session_type); -+ g_free (session_type); -+} -+ -+ - static void - do_setup (GdmSessionWorker *worker) - { - GError *error; - gboolean res; - - error = NULL; - res = gdm_session_worker_initialize_pam (worker, - worker->priv->service, - (const char **) worker->priv->extensions, - worker->priv->username, - worker->priv->hostname, - worker->priv->display_is_local, - worker->priv->x11_display_name, - worker->priv->x11_authority_file, - worker->priv->display_device, - worker->priv->display_seat_id, - &error); - - if (res) { - g_dbus_method_invocation_return_value (worker->priv->pending_invocation, NULL); - } else { - g_dbus_method_invocation_take_error (worker->priv->pending_invocation, error); - } - worker->priv->pending_invocation = NULL; - } - - static void - do_authenticate (GdmSessionWorker *worker) - { -@@ -3125,158 +3139,172 @@ gdm_session_worker_handle_initialize (GdmDBusWorker *object, - } else if (g_strcmp0 (key, "x11-authority-file") == 0) { - worker->priv->x11_authority_file = g_variant_dup_string (value, NULL); - } else if (g_strcmp0 (key, "console") == 0) { - worker->priv->display_device = g_variant_dup_string (value, NULL); - } else if (g_strcmp0 (key, "seat-id") == 0) { - worker->priv->display_seat_id = g_variant_dup_string (value, NULL); - } else if (g_strcmp0 (key, "hostname") == 0) { - worker->priv->hostname = g_variant_dup_string (value, NULL); - } else if (g_strcmp0 (key, "display-is-local") == 0) { - worker->priv->display_is_local = g_variant_get_boolean (value); - } else if (g_strcmp0 (key, "display-is-initial") == 0) { - worker->priv->display_is_initial = g_variant_get_boolean (value); - } - } - - worker->priv->pending_invocation = invocation; - - if (!worker->priv->is_program_session) { - worker->priv->user_settings = gdm_session_settings_new (); - - 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); - -+ g_signal_connect_swapped (worker->priv->user_settings, -+ "notify::session-type", -+ G_CALLBACK (on_saved_session_type_read), -+ worker); -+ - 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) - { - 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; - - worker->priv->user_settings = gdm_session_settings_new (); - - 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); -+ g_signal_connect_swapped (worker->priv->user_settings, -+ "notify::session-type", -+ G_CALLBACK (on_saved_session_type_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) - { - 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); - - worker->priv->user_settings = gdm_session_settings_new (); - - 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); -+ g_signal_connect_swapped (worker->priv->user_settings, -+ "notify::session-type", -+ G_CALLBACK (on_saved_session_type_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) - { -diff --git a/daemon/gdm-session-worker.xml b/daemon/gdm-session-worker.xml -index 4280fe09..a215779c 100644 ---- a/daemon/gdm-session-worker.xml -+++ b/daemon/gdm-session-worker.xml -@@ -51,40 +51,43 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -+ -+ -+ - - - - - - - - - - -diff --git a/daemon/gdm-session.c b/daemon/gdm-session.c -index 72afe7b2..f4d0bef9 100644 ---- a/daemon/gdm-session.c -+++ b/daemon/gdm-session.c -@@ -61,60 +61,61 @@ - #define GDM_SESSION_DBUS_OBJECT_PATH "/org/gnome/DisplayManager/Session" - - #define GDM_WORKER_DBUS_PATH "/org/gnome/DisplayManager/Worker" - - typedef struct - { - GdmSession *session; - GdmSessionWorkerJob *job; - GPid worker_pid; - char *service_name; - GDBusMethodInvocation *starting_invocation; - char *starting_username; - GDBusMethodInvocation *pending_invocation; - GdmDBusWorkerManager *worker_manager_interface; - GdmDBusWorker *worker_proxy; - GCancellable *worker_cancellable; - char *session_id; - guint32 is_stopping : 1; - - GPid reauth_pid_of_caller; - } GdmSessionConversation; - - struct _GdmSession - { - GObject parent; - - /* per open scope */ - char *selected_program; - char *selected_session; - char *saved_session; -+ char *saved_session_type; - char *saved_language; - char *selected_user; - char *user_x11_authority_file; - - char *timed_login_username; - int timed_login_delay; - GList *pending_timed_login_invocations; - - GHashTable *conversations; - - GdmSessionConversation *session_conversation; - - char **conversation_environment; - - GdmDBusUserVerifier *user_verifier_interface; - GHashTable *user_verifier_extensions; - GdmDBusGreeter *greeter_interface; - GdmDBusRemoteGreeter *remote_greeter_interface; - GdmDBusChooser *chooser_interface; - - GList *pending_worker_connections; - GList *outside_connections; - - GPid session_pid; - - /* object lifetime scope */ - char *session_type; - char *display_name; - char *display_hostname; - char *display_device; -@@ -328,309 +329,325 @@ on_establish_credentials_cb (GdmDBusWorker *proxy, - case GDM_SESSION_VERIFICATION_MODE_REAUTHENTICATE: - if (self->user_verifier_interface != NULL) { - gdm_dbus_user_verifier_emit_verification_complete (self->user_verifier_interface, - service_name); - g_signal_emit (self, signals[VERIFICATION_COMPLETE], 0, service_name); - } - break; - default: - break; - } - } else { - report_and_stop_conversation (self, service_name, error); - } - - g_free (service_name); - g_object_unref (self); - } - - static gboolean - supports_session_type (GdmSession *self, - const char *session_type) - { - if (session_type == NULL) - return TRUE; - - return g_strv_contains ((const char * const *) self->supported_session_types, - session_type); - } - - static char ** --get_system_session_dirs (GdmSession *self) -+get_system_session_dirs (GdmSession *self, -+ const char *type) - { - GArray *search_array = NULL; - char **search_dirs; - int i, j; - const gchar * const *system_data_dirs = g_get_system_data_dirs (); - - static const char *x_search_dirs[] = { - "/etc/X11/sessions/", - DMCONFDIR "/Sessions/", - DATADIR "/gdm/BuiltInSessions/", - DATADIR "/xsessions/", - }; - - static const char *wayland_search_dir = DATADIR "/wayland-sessions/"; - - search_array = g_array_new (TRUE, TRUE, sizeof (char *)); - - for (j = 0; self->supported_session_types[j] != NULL; j++) { - const char *supported_type = self->supported_session_types[j]; - -- if (g_str_equal (supported_type, "x11")) { -+ if (g_str_equal (supported_type, "x11") || -+ (type == NULL || g_str_equal (type, supported_type))) { - for (i = 0; system_data_dirs[i]; i++) { - gchar *dir = g_build_filename (system_data_dirs[i], "xsessions", NULL); - g_array_append_val (search_array, dir); - } - - g_array_append_vals (search_array, x_search_dirs, G_N_ELEMENTS (x_search_dirs)); - } - - #ifdef ENABLE_WAYLAND_SUPPORT -- if (g_str_equal (supported_type, "wayland")) { -+ if (g_str_equal (supported_type, "wayland") || -+ (type == NULL || g_str_equal (type, supported_type))) { - for (i = 0; system_data_dirs[i]; i++) { - gchar *dir = g_build_filename (system_data_dirs[i], "wayland-sessions", NULL); - g_array_append_val (search_array, dir); - } - - g_array_append_val (search_array, wayland_search_dir); - } - #endif - } - - search_dirs = g_strdupv ((char **) search_array->data); - - g_array_free (search_array, TRUE); - - return search_dirs; - } - - static gboolean - is_prog_in_path (const char *prog) - { - char *f; - gboolean ret; - - f = g_find_program_in_path (prog); - ret = (f != NULL); - g_free (f); - return ret; - } - - static GKeyFile * - load_key_file_for_file (GdmSession *self, - const char *file, -+ const char *type, - char **full_path) - { - GKeyFile *key_file; -- GError *error; -+ GError *error = NULL; - gboolean res; - char **search_dirs; - - key_file = g_key_file_new (); - -- search_dirs = get_system_session_dirs (self), -+ search_dirs = get_system_session_dirs (self, type); -+ - error = NULL; - res = g_key_file_load_from_dirs (key_file, - file, - (const char **) search_dirs, - full_path, - G_KEY_FILE_NONE, - &error); - if (! res) { -- g_debug ("GdmSession: File '%s' not found: %s", file, error->message); -- g_error_free (error); -+ g_debug ("GdmSession: File '%s' not found in search dirs", file); -+ if (error != NULL) { -+ g_debug ("GdmSession: %s", error->message); -+ g_error_free (error); -+ } - g_key_file_free (key_file); - key_file = NULL; - } - - g_strfreev (search_dirs); - - return key_file; - } - - static gboolean - get_session_command_for_file (GdmSession *self, - const char *file, -+ const char *type, - char **command) - { - GKeyFile *key_file; - GError *error; - char *exec; - gboolean ret; - gboolean res; - - exec = NULL; - ret = FALSE; - if (command != NULL) { - *command = NULL; - } - -+ if (!supports_session_type (self, type)) { -+ g_debug ("GdmSession: ignoring %s session command request for file '%s'", -+ type, file); -+ goto out; -+ } -+ - g_debug ("GdmSession: getting session command for file '%s'", file); -- key_file = load_key_file_for_file (self, file, NULL); -+ key_file = load_key_file_for_file (self, file, type, NULL); - if (key_file == NULL) { - goto out; - } - - error = NULL; - res = g_key_file_get_boolean (key_file, - G_KEY_FILE_DESKTOP_GROUP, - G_KEY_FILE_DESKTOP_KEY_HIDDEN, - &error); - if (error == NULL && res) { - g_debug ("GdmSession: Session %s is marked as hidden", file); - goto out; - } - - exec = g_key_file_get_string (key_file, - G_KEY_FILE_DESKTOP_GROUP, - G_KEY_FILE_DESKTOP_KEY_TRY_EXEC, - NULL); - if (exec != NULL) { - res = is_prog_in_path (exec); - g_free (exec); - exec = NULL; - - if (! res) { - g_debug ("GdmSession: Command not found: %s", - G_KEY_FILE_DESKTOP_KEY_TRY_EXEC); - goto out; - } - } - - error = NULL; - exec = g_key_file_get_string (key_file, - G_KEY_FILE_DESKTOP_GROUP, - G_KEY_FILE_DESKTOP_KEY_EXEC, - &error); - if (error != NULL) { - g_debug ("GdmSession: %s key not found: %s", - G_KEY_FILE_DESKTOP_KEY_EXEC, - error->message); - g_error_free (error); - goto out; - } - - if (command != NULL) { - *command = g_strdup (exec); - } - ret = TRUE; - - out: - g_free (exec); - - return ret; - } - - static gboolean - get_session_command_for_name (GdmSession *self, - const char *name, -+ const char *type, - char **command) - { - gboolean res; - char *filename; - - filename = g_strdup_printf ("%s.desktop", name); -- res = get_session_command_for_file (self, filename, command); -+ res = get_session_command_for_file (self, filename, type, command); - g_free (filename); - - return res; - } - - static const char * - get_default_language_name (GdmSession *self) - { - const char *default_language; - - if (self->saved_language != NULL) { - return self->saved_language; - } - - default_language = g_hash_table_lookup (self->environment, - "LANG"); - - if (default_language != NULL) { - return default_language; - } - - return setlocale (LC_MESSAGES, NULL); - } - - static const char * - get_fallback_session_name (GdmSession *self) - { - char **search_dirs; - int i; - char *name; - GSequence *sessions; - GSequenceIter *session; - - if (self->fallback_session_name != NULL) { - /* verify that the cached version still exists */ -- if (get_session_command_for_name (self, self->fallback_session_name, NULL)) { -+ if (get_session_command_for_name (self, self->fallback_session_name, NULL, NULL)) { - goto out; - } - } - - name = g_strdup ("gnome"); -- if (get_session_command_for_name (self, name, NULL)) { -+ if (get_session_command_for_name (self, name, NULL, NULL)) { - g_free (self->fallback_session_name); - self->fallback_session_name = name; - goto out; - } - g_free (name); - - sessions = g_sequence_new (g_free); - -- search_dirs = get_system_session_dirs (self); -+ search_dirs = get_system_session_dirs (self, NULL); - 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; - } - -- if (get_session_command_for_file (self, base_name, NULL)) { -+ if (get_session_command_for_file (self, base_name, NULL, NULL)) { - name = g_strndup (base_name, strlen (base_name) - strlen (".desktop")); - g_sequence_insert_sorted (sessions, name, (GCompareDataFunc) g_strcmp0, NULL); - } - } while (base_name != NULL); - - g_dir_close (dir); - } - g_strfreev (search_dirs); - - name = NULL; - session = g_sequence_get_begin_iter (sessions); - - if (g_sequence_iter_is_end (session)) - g_error ("GdmSession: no session desktop files installed, aborting..."); - - do { - name = g_sequence_get (session); - if (name) { - break; - } - session = g_sequence_iter_next (session); - } while (!g_sequence_iter_is_end (session)); - - g_free (self->fallback_session_name); - self->fallback_session_name = g_strdup (name); - - g_sequence_free (sessions); - - out: - return self->fallback_session_name; -@@ -649,60 +666,63 @@ get_default_session_name (GdmSession *self) - static void - gdm_session_defaults_changed (GdmSession *self) - { - - update_session_type (self); - - if (self->greeter_interface != NULL) { - gdm_dbus_greeter_emit_default_language_name_changed (self->greeter_interface, - get_default_language_name (self)); - gdm_dbus_greeter_emit_default_session_name_changed (self->greeter_interface, - get_default_session_name (self)); - } - } - - void - gdm_session_select_user (GdmSession *self, - const char *text) - { - - g_debug ("GdmSession: selecting user '%s' for session '%s' (%p)", - text, - gdm_session_get_session_id (self), - self); - - g_free (self->selected_user); - self->selected_user = g_strdup (text); - - g_free (self->saved_session); - self->saved_session = NULL; - -+ g_free (self->saved_session_type); -+ self->saved_session_type = NULL; -+ - g_free (self->saved_language); - self->saved_language = NULL; - } - - static void - cancel_pending_query (GdmSessionConversation *conversation) - { - if (conversation->pending_invocation == NULL) { - return; - } - - g_debug ("GdmSession: Cancelling pending query"); - - g_dbus_method_invocation_return_dbus_error (conversation->pending_invocation, - GDM_SESSION_DBUS_ERROR_CANCEL, - "Operation cancelled"); - conversation->pending_invocation = NULL; - } - - static void - answer_pending_query (GdmSessionConversation *conversation, - const char *answer) - { - g_dbus_method_invocation_return_value (conversation->pending_invocation, - g_variant_new ("(s)", answer)); - conversation->pending_invocation = NULL; - } - - static void - set_pending_query (GdmSessionConversation *conversation, -@@ -969,85 +989,96 @@ worker_on_reauthenticated (GdmDBusWorker *worker, - GdmSession *self = conversation->session; - g_debug ("GdmSession: Emitting 'reauthenticated' signal "); - g_signal_emit (self, signals[REAUTHENTICATED], 0, service_name); - } - - static void - worker_on_saved_language_name_read (GdmDBusWorker *worker, - const char *language_name, - GdmSessionConversation *conversation) - { - GdmSession *self = conversation->session; - - if (strlen (language_name) > 0) { - g_free (self->saved_language); - self->saved_language = g_strdup (language_name); - - if (self->greeter_interface != NULL) { - gdm_dbus_greeter_emit_default_language_name_changed (self->greeter_interface, - language_name); - } - } - } - - static void - worker_on_saved_session_name_read (GdmDBusWorker *worker, - const char *session_name, - GdmSessionConversation *conversation) - { - GdmSession *self = conversation->session; - -- if (! get_session_command_for_name (self, session_name, NULL)) { -+ if (! get_session_command_for_name (self, session_name, self->saved_session_type, NULL)) { - /* ignore sessions that don't exist */ - g_debug ("GdmSession: not using invalid .dmrc session: %s", session_name); - g_free (self->saved_session); - self->saved_session = NULL; - update_session_type (self); - } else { - if (strcmp (session_name, - get_default_session_name (self)) != 0) { - g_free (self->saved_session); - self->saved_session = g_strdup (session_name); - - if (self->greeter_interface != NULL) { - gdm_dbus_greeter_emit_default_session_name_changed (self->greeter_interface, - session_name); - } - } - if (self->saved_session_type != NULL) - set_session_type (self, self->saved_session_type); - else - update_session_type (self); - } - - } - -+static void -+worker_on_saved_session_type_read (GdmDBusWorker *worker, -+ const char *session_type, -+ GdmSessionConversation *conversation) -+{ -+ GdmSession *self = conversation->session; -+ -+ g_free (self->saved_session_type); -+ self->saved_session_type = g_strdup (session_type); -+} -+ - static GdmSessionConversation * - find_conversation_by_pid (GdmSession *self, - GPid pid) - { - GHashTableIter iter; - gpointer key, value; - - g_hash_table_iter_init (&iter, self->conversations); - while (g_hash_table_iter_next (&iter, &key, &value)) { - GdmSessionConversation *conversation; - - conversation = (GdmSessionConversation *) value; - - if (conversation->worker_pid == pid) { - return conversation; - } - } - - return NULL; - } - - static gboolean - allow_worker_function (GDBusAuthObserver *observer, - GIOStream *stream, - GCredentials *credentials, - GdmSession *self) - { - uid_t connecting_user; - - connecting_user = g_credentials_get_unix_user (credentials, NULL); -@@ -1127,60 +1158,63 @@ register_worker (GdmDBusWorkerManager *worker_manager_interface, - g_dbus_method_invocation_return_value (invocation, NULL); - - conversation->worker_proxy = gdm_dbus_worker_proxy_new_sync (connection, - G_DBUS_PROXY_FLAGS_NONE, - NULL, - GDM_WORKER_DBUS_PATH, - NULL, NULL); - /* drop the reference we stole from the pending connections list - * since the proxy owns the connection now */ - g_object_unref (connection); - - g_dbus_proxy_set_default_timeout (G_DBUS_PROXY (conversation->worker_proxy), G_MAXINT); - - conversation->worker_cancellable = g_cancellable_new (); - - g_signal_connect (conversation->worker_proxy, - "username-changed", - G_CALLBACK (worker_on_username_changed), conversation); - g_signal_connect (conversation->worker_proxy, - "session-exited", - G_CALLBACK (worker_on_session_exited), conversation); - g_signal_connect (conversation->worker_proxy, - "reauthenticated", - G_CALLBACK (worker_on_reauthenticated), conversation); - g_signal_connect (conversation->worker_proxy, - "saved-language-name-read", - G_CALLBACK (worker_on_saved_language_name_read), conversation); - g_signal_connect (conversation->worker_proxy, - "saved-session-name-read", - G_CALLBACK (worker_on_saved_session_name_read), conversation); -+ g_signal_connect (conversation->worker_proxy, -+ "saved-session-type-read", -+ G_CALLBACK (worker_on_saved_session_type_read), conversation); - g_signal_connect (conversation->worker_proxy, - "cancel-pending-query", - G_CALLBACK (worker_on_cancel_pending_query), conversation); - - conversation->worker_manager_interface = g_object_ref (worker_manager_interface); - g_debug ("GdmSession: worker connection is %p", connection); - - g_debug ("GdmSession: Emitting conversation-started signal"); - g_signal_emit (self, signals[CONVERSATION_STARTED], 0, conversation->service_name); - - if (self->user_verifier_interface != NULL) { - gdm_dbus_user_verifier_emit_conversation_started (self->user_verifier_interface, - conversation->service_name); - } - - if (conversation->starting_invocation != NULL) { - if (conversation->starting_username != NULL) { - gdm_session_setup_for_user (self, conversation->service_name, conversation->starting_username); - - g_clear_pointer (&conversation->starting_username, - (GDestroyNotify) - g_free); - } else { - gdm_session_setup (self, conversation->service_name); - } - } - - g_debug ("GdmSession: Conversation started"); - - return TRUE; -@@ -1923,60 +1957,63 @@ free_conversation (GdmSessionConversation *conversation) - close_conversation (conversation); - - if (conversation->job != NULL) { - g_warning ("Freeing conversation '%s' with active job", conversation->service_name); - } - - g_free (conversation->service_name); - g_free (conversation->starting_username); - g_free (conversation->session_id); - g_clear_object (&conversation->worker_manager_interface); - - g_cancellable_cancel (conversation->worker_cancellable); - g_clear_object (&conversation->worker_cancellable); - - if (conversation->worker_proxy != NULL) { - g_signal_handlers_disconnect_by_func (conversation->worker_proxy, - G_CALLBACK (worker_on_username_changed), - conversation); - g_signal_handlers_disconnect_by_func (conversation->worker_proxy, - G_CALLBACK (worker_on_session_exited), - conversation); - g_signal_handlers_disconnect_by_func (conversation->worker_proxy, - G_CALLBACK (worker_on_reauthenticated), - conversation); - g_signal_handlers_disconnect_by_func (conversation->worker_proxy, - G_CALLBACK (worker_on_saved_language_name_read), - conversation); - g_signal_handlers_disconnect_by_func (conversation->worker_proxy, - G_CALLBACK (worker_on_saved_session_name_read), - conversation); -+ g_signal_handlers_disconnect_by_func (conversation->worker_proxy, -+ G_CALLBACK (worker_on_saved_session_type_read), -+ conversation); - g_signal_handlers_disconnect_by_func (conversation->worker_proxy, - G_CALLBACK (worker_on_cancel_pending_query), - conversation); - g_clear_object (&conversation->worker_proxy); - } - g_clear_object (&conversation->session); - g_free (conversation); - } - - static void - load_lang_config_file (GdmSession *self) - { - static const char *config_file = LANG_CONFIG_FILE; - gchar *contents = NULL; - gchar *p; - gchar *key; - gchar *value; - 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; - } - - error = NULL; - if (!g_file_get_contents (config_file, &contents, &length, &error)) { - g_debug ("Failed to parse '%s': %s", -@@ -2535,83 +2572,83 @@ gdm_session_send_environment (GdmSession *self, - g_return_if_fail (GDM_IS_SESSION (self)); - - conversation = find_conversation_by_name (self, service_name); - if (conversation != NULL) { - send_environment (self, conversation); - } - } - - static const char * - get_session_name (GdmSession *self) - { - /* FIXME: test the session names before we use them? */ - - if (self->selected_session != NULL) { - return self->selected_session; - } - - return get_default_session_name (self); - } - - static char * - get_session_command (GdmSession *self) - { - gboolean res; - char *command; - const char *session_name; - - session_name = get_session_name (self); - - command = NULL; -- res = get_session_command_for_name (self, session_name, &command); -+ res = get_session_command_for_name (self, session_name, NULL, &command); - if (! res) { - g_critical ("Cannot find a command for specified session: %s", session_name); - exit (EXIT_FAILURE); - } - - return command; - } - - static gchar * - get_session_desktop_names (GdmSession *self) - { - gchar *filename; - GKeyFile *keyfile; - gchar *desktop_names = NULL; - - if (self->selected_program != NULL) { - return g_strdup ("GNOME-Greeter:GNOME"); - } - - filename = g_strdup_printf ("%s.desktop", get_session_name (self)); - g_debug ("GdmSession: getting desktop names for file '%s'", filename); -- keyfile = load_key_file_for_file (self, filename, NULL); -+ keyfile = load_key_file_for_file (self, filename, NULL, NULL); - if (keyfile != NULL) { - gchar **names; - - names = g_key_file_get_string_list (keyfile, G_KEY_FILE_DESKTOP_GROUP, - "DesktopNames", NULL, NULL); - if (names != NULL) { - desktop_names = g_strjoinv (":", names); - - g_strfreev (names); - } - } - - g_key_file_free (keyfile); - g_free (filename); - return desktop_names; - } - - void - gdm_session_set_environment_variable (GdmSession *self, - const char *key, - const char *value) - { - g_return_if_fail (key != NULL); - g_return_if_fail (value != NULL); - - g_hash_table_replace (self->environment, - g_strdup (key), - g_strdup (value)); - } - -@@ -3181,148 +3218,150 @@ gdm_session_get_conversation_session_id (GdmSession *self, - conversation = find_conversation_by_name (self, service_name); - - if (conversation == NULL) { - return NULL; - } - - return conversation->session_id; - } - - static char * - get_session_filename (GdmSession *self) - { - return g_strdup_printf ("%s.desktop", get_session_name (self)); - } - - #ifdef ENABLE_WAYLAND_SUPPORT - static gboolean - gdm_session_is_wayland_session (GdmSession *self) - { - GKeyFile *key_file; - gboolean is_wayland_session = FALSE; - char *filename; - char *full_path = NULL; - - g_return_val_if_fail (self != NULL, FALSE); - g_return_val_if_fail (GDM_IS_SESSION (self), FALSE); - - filename = get_session_filename (self); - - if (supports_session_type (self, "wayland")) { -- key_file = load_key_file_for_file (self, filename, &full_path); -+ key_file = load_key_file_for_file (self, filename, NULL, &full_path); - -- if (key_file == NULL) { -- goto out; -- } -+ if (key_file == NULL) { -+ goto out; -+ } - } - - if (full_path != NULL && strstr (full_path, "/wayland-sessions/") != NULL) { - is_wayland_session = TRUE; - } - g_debug ("GdmSession: checking if file '%s' is wayland session: %s", filename, is_wayland_session? "yes" : "no"); - - out: - g_clear_pointer (&key_file, g_key_file_free); - g_free (filename); - return is_wayland_session; - } - #endif - - static void - update_session_type (GdmSession *self) - { - #ifdef ENABLE_WAYLAND_SUPPORT -- gboolean is_wayland_session; -+ gboolean is_wayland_session = FALSE; -+ -+ if (supports_session_type (self, "wayland")) -+ is_wayland_session = gdm_session_is_wayland_session (self); - -- is_wayland_session = gdm_session_is_wayland_session (self); - if (is_wayland_session) { - set_session_type (self, "wayland"); - } else { - set_session_type (self, NULL); - } - #endif - } - - gboolean - gdm_session_session_registers (GdmSession *self) - { - g_autoptr(GError) error = NULL; - g_autoptr(GKeyFile) key_file = NULL; - gboolean session_registers = FALSE; - g_autofree char *filename = NULL; - - g_return_val_if_fail (self != NULL, FALSE); - g_return_val_if_fail (GDM_IS_SESSION (self), FALSE); - - filename = get_session_filename (self); - -- key_file = load_key_file_for_file (self, filename, NULL); -+ key_file = load_key_file_for_file (self, filename, NULL, NULL); - - session_registers = g_key_file_get_boolean (key_file, - G_KEY_FILE_DESKTOP_GROUP, - "X-GDM-SessionRegisters", - &error); - if (!session_registers && - error != NULL && - !g_error_matches (error, G_KEY_FILE_ERROR, G_KEY_FILE_ERROR_KEY_NOT_FOUND)) { - g_warning ("GdmSession: Couldn't read session file '%s'", filename); - return FALSE; - } - - g_debug ("GdmSession: '%s' %s self", filename, - session_registers ? "registers" : "does not register"); - - return session_registers; - } - - gboolean - gdm_session_bypasses_xsession (GdmSession *self) - { - GError *error; - GKeyFile *key_file; - gboolean res; - gboolean bypasses_xsession = FALSE; - char *filename = NULL; - - g_return_val_if_fail (self != NULL, FALSE); - g_return_val_if_fail (GDM_IS_SESSION (self), FALSE); - - #ifdef ENABLE_WAYLAND_SUPPORT - if (gdm_session_is_wayland_session (self)) { - bypasses_xsession = TRUE; - goto out; - } - #endif - - filename = get_session_filename (self); - -- key_file = load_key_file_for_file (self, filename, NULL); -+ key_file = load_key_file_for_file (self, filename, "x11", NULL); - - error = NULL; - res = g_key_file_has_key (key_file, G_KEY_FILE_DESKTOP_GROUP, "X-GDM-BypassXsession", NULL); - if (!res) { - goto out; - } else { - bypasses_xsession = g_key_file_get_boolean (key_file, G_KEY_FILE_DESKTOP_GROUP, "X-GDM-BypassXsession", &error); - if (error) { - bypasses_xsession = FALSE; - g_error_free (error); - goto out; - } - } - - out: - if (bypasses_xsession) { - g_debug ("GdmSession: Session %s bypasses Xsession wrapper script", filename); - } - g_free (filename); - return bypasses_xsession; - } - - GdmSessionDisplayMode - gdm_session_get_display_mode (GdmSession *self) - { - g_debug ("GdmSession: type %s, program? %s, seat %s", - self->session_type, - self->is_program_session? "yes" : "no", - self->display_seat_id); - --- -2.33.1 - diff --git a/SOURCES/0003-daemon-save-os-release-in-accountsservice.patch b/SOURCES/0003-daemon-save-os-release-in-accountsservice.patch deleted file mode 100644 index e6dcb56..0000000 --- a/SOURCES/0003-daemon-save-os-release-in-accountsservice.patch +++ /dev/null @@ -1,611 +0,0 @@ -From de95917e0e9d142703a86f94961ef9fd4151739d Mon Sep 17 00:00:00 2001 -From: Ray Strode -Date: Mon, 20 Aug 2018 14:30:59 -0400 -Subject: [PATCH 3/4] daemon: save os-release in accountsservice - -It can be useful to know what OS a user was running -when they logged in (to detect upgrades). - -This commit saves that information in accountsservice. ---- - .../com.redhat.AccountsServiceUser.System.xml | 10 ++ - daemon/gdm-session-settings.c | 98 +++++++++++++++++++ - daemon/gdm-session.c | 4 +- - daemon/meson.build | 8 ++ - 4 files changed, 118 insertions(+), 2 deletions(-) - create mode 100644 daemon/com.redhat.AccountsServiceUser.System.xml - -diff --git a/daemon/com.redhat.AccountsServiceUser.System.xml b/daemon/com.redhat.AccountsServiceUser.System.xml -new file mode 100644 -index 00000000..67f5f302 ---- /dev/null -+++ b/daemon/com.redhat.AccountsServiceUser.System.xml -@@ -0,0 +1,10 @@ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -diff --git a/daemon/gdm-session-settings.c b/daemon/gdm-session-settings.c -index f2b1addd..a4b7f1a6 100644 ---- a/daemon/gdm-session-settings.c -+++ b/daemon/gdm-session-settings.c -@@ -1,70 +1,77 @@ - /* gdm-session-settings.c - Loads session and language from ~/.dmrc - * - * Copyright (C) 2008 Red Hat, Inc. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * 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, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA - * 02110-1301, USA. - * - * Written by: Ray Strode - */ - #include "config.h" - #include "gdm-session-settings.h" -+#include "gdm-common.h" -+ -+#include "com.redhat.AccountsServiceUser.System.h" - - #include - #include - #include - #include - #include - - #include - #include - #include - - #include - - struct _GdmSessionSettingsPrivate - { - ActUserManager *user_manager; - ActUser *user; -+ -+ /* used for retrieving the last OS user logged in with */ -+ GdmAccountsServiceUserSystem *user_system_proxy; -+ - char *session_name; - char *session_type; - char *language_name; - }; - - static void gdm_session_settings_finalize (GObject *object); - static void gdm_session_settings_class_install_properties (GdmSessionSettingsClass * - settings_class); - - static void gdm_session_settings_set_property (GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec); - static void gdm_session_settings_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec); - - enum { - PROP_0 = 0, - PROP_SESSION_NAME, - PROP_SESSION_TYPE, - PROP_LANGUAGE_NAME, - PROP_IS_LOADED - }; - - G_DEFINE_TYPE_WITH_PRIVATE (GdmSessionSettings, - gdm_session_settings, - G_TYPE_OBJECT) - -@@ -107,60 +114,62 @@ gdm_session_settings_class_install_properties (GdmSessionSettingsClass *settings - g_object_class_install_property (object_class, PROP_LANGUAGE_NAME, param_spec); - - param_spec = g_param_spec_boolean ("is-loaded", NULL, NULL, - FALSE, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); - g_object_class_install_property (object_class, PROP_IS_LOADED, param_spec); - } - - static void - gdm_session_settings_init (GdmSessionSettings *settings) - { - settings->priv = G_TYPE_INSTANCE_GET_PRIVATE (settings, - GDM_TYPE_SESSION_SETTINGS, - GdmSessionSettingsPrivate); - - settings->priv->user_manager = act_user_manager_get_default (); - - } - - static void - gdm_session_settings_finalize (GObject *object) - { - GdmSessionSettings *settings; - GObjectClass *parent_class; - - settings = GDM_SESSION_SETTINGS (object); - - if (settings->priv->user != NULL) { - g_object_unref (settings->priv->user); - } - -+ g_clear_object (&settings->priv->user_system_proxy); -+ - g_free (settings->priv->session_name); - g_free (settings->priv->language_name); - - parent_class = G_OBJECT_CLASS (gdm_session_settings_parent_class); - - if (parent_class->finalize != NULL) { - parent_class->finalize (object); - } - } - - void - gdm_session_settings_set_language_name (GdmSessionSettings *settings, - const char *language_name) - { - g_return_if_fail (GDM_IS_SESSION_SETTINGS (settings)); - - if (settings->priv->language_name == NULL || - strcmp (settings->priv->language_name, language_name) != 0) { - settings->priv->language_name = g_strdup (language_name); - g_object_notify (G_OBJECT (settings), "language-name"); - } - } - - void - gdm_session_settings_set_session_name (GdmSessionSettings *settings, - const char *session_name) - { - g_return_if_fail (GDM_IS_SESSION_SETTINGS (settings)); - - if (settings->priv->session_name == NULL || -@@ -261,69 +270,86 @@ gdm_session_settings_get_property (GObject *object, - - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - } - } - - GdmSessionSettings * - gdm_session_settings_new (void) - { - GdmSessionSettings *settings; - - settings = g_object_new (GDM_TYPE_SESSION_SETTINGS, - NULL); - - return settings; - } - - gboolean - gdm_session_settings_is_loaded (GdmSessionSettings *settings) - { - if (settings->priv->user == NULL) { - return FALSE; - } - - return act_user_is_loaded (settings->priv->user); - } - - static void - load_settings_from_user (GdmSessionSettings *settings) - { -+ const char *object_path; - const char *session_name; - const char *session_type; - const char *language_name; - - if (!act_user_is_loaded (settings->priv->user)) { - g_warning ("GdmSessionSettings: trying to load user settings from unloaded user"); - return; - } - -+ object_path = act_user_get_object_path (settings->priv->user); -+ -+ if (object_path != NULL) { -+ g_autoptr (GError) error = NULL; -+ settings->priv->user_system_proxy = gdm_accounts_service_user_system_proxy_new_for_bus_sync (G_BUS_TYPE_SYSTEM, -+ G_DBUS_PROXY_FLAGS_NONE, -+ "org.freedesktop.Accounts", -+ object_path, -+ NULL, -+ &error); -+ if (error != NULL) { -+ g_debug ("GdmSessionSettings: couldn't retrieve user system proxy from accountsservice: %s", -+ error->message); -+ } -+ } -+ - - - - - session_type = act_user_get_session_type (settings->priv->user); - session_name = act_user_get_session (settings->priv->user); - - g_debug ("GdmSessionSettings: saved session is %s (type %s)", session_name, session_type); - - if (session_type != NULL && session_type[0] != '\0') { - gdm_session_settings_set_session_type (settings, session_type); - } - - if (session_name != NULL && session_name[0] != '\0') { - gdm_session_settings_set_session_name (settings, session_name); - } - - language_name = act_user_get_language (settings->priv->user); - - g_debug ("GdmSessionSettings: saved language is %s", language_name); - if (language_name != NULL && language_name[0] != '\0') { - gdm_session_settings_set_language_name (settings, language_name); - } - - out: - g_object_notify (G_OBJECT (settings), "is-loaded"); - } - - static void - on_user_is_loaded_changed (ActUser *user, -@@ -349,64 +375,136 @@ gdm_session_settings_load (GdmSessionSettings *settings, - g_return_val_if_fail (!gdm_session_settings_is_loaded (settings), FALSE); - - if (settings->priv->user != NULL) { - old_user = settings->priv->user; - - g_signal_handlers_disconnect_by_func (G_OBJECT (settings->priv->user), - G_CALLBACK (on_user_is_loaded_changed), - settings); - } else { - old_user = NULL; - } - - settings->priv->user = act_user_manager_get_user (settings->priv->user_manager, - username); - - g_clear_object (&old_user); - - if (!act_user_is_loaded (settings->priv->user)) { - g_signal_connect (settings->priv->user, - "notify::is-loaded", - G_CALLBACK (on_user_is_loaded_changed), - settings); - return FALSE; - } - - load_settings_from_user (settings); - - return TRUE; - } - -+static void -+save_os_release (GdmSessionSettings *settings, -+ ActUser *user) -+{ -+ g_autoptr(GFile) file = NULL; -+ g_autoptr(GError) error = NULL; -+ g_autofree char *contents = NULL; -+ g_auto(GStrv) lines = NULL; -+ size_t i; -+ -+ if (settings->priv->user_system_proxy == NULL) { -+ g_debug ("GdmSessionSettings: not saving OS version to user account because accountsservice doesn't support it"); -+ return; -+ } -+ -+ file = g_file_new_for_path ("/etc/os-release"); -+ -+ if (!g_file_load_contents (file, NULL, &contents, NULL, NULL, &error)) { -+ g_debug ("GdmSessionSettings: couldn't load /etc/os-release: %s", error->message); -+ return; -+ } -+ -+ lines = g_strsplit (contents, "\n", -1); -+ for (i = 0; lines[i] != NULL; i++) { -+ char *p, *name, *name_end, *value, *value_end; -+ -+ p = lines[i]; -+ -+ while (g_ascii_isspace (*p)) -+ p++; -+ -+ if (*p == '#' || *p == '\0') -+ continue; -+ name = p; -+ while (gdm_shell_var_is_valid_char (*p, p == name)) -+ p++; -+ name_end = p; -+ while (g_ascii_isspace (*p)) -+ p++; -+ if (name == name_end || *p != '=') { -+ continue; -+ } -+ *name_end = '\0'; -+ -+ p++; -+ -+ while (g_ascii_isspace (*p)) -+ p++; -+ -+ value = p; -+ value_end = value + strlen(value) - 1; -+ -+ if (value != value_end && *value == '"' && *value_end == '"') { -+ value++; -+ *value_end = '\0'; -+ } -+ -+ if (strcmp (name, "ID") == 0) { -+ gdm_accounts_service_user_system_set_id (settings->priv->user_system_proxy, -+ value); -+ g_debug ("GdmSessionSettings: setting system OS for user to '%s'", value); -+ } else if (strcmp (name, "VERSION_ID") == 0) { -+ gdm_accounts_service_user_system_set_version_id (settings->priv->user_system_proxy, -+ value); -+ g_debug ("GdmSessionSettings: setting system OS version for user to '%s'", value); -+ } -+ } -+} -+ - gboolean - gdm_session_settings_save (GdmSessionSettings *settings, - const char *username) - { - ActUser *user; - - g_return_val_if_fail (GDM_IS_SESSION_SETTINGS (settings), FALSE); - g_return_val_if_fail (username != NULL, FALSE); - g_return_val_if_fail (gdm_session_settings_is_loaded (settings), FALSE); - - user = act_user_manager_get_user (settings->priv->user_manager, - username); - - - if (!act_user_is_loaded (user)) { - g_object_unref (user); - return FALSE; - } - - if (settings->priv->session_name != NULL) { - act_user_set_session (user, settings->priv->session_name); - } - - if (settings->priv->session_type != NULL) { - act_user_set_session_type (user, settings->priv->session_type); - } - - if (settings->priv->language_name != NULL) { - act_user_set_language (user, settings->priv->language_name); - } -+ -+ save_os_release (settings, user); -+ - g_object_unref (user); - - return TRUE; - } -diff --git a/daemon/gdm-session.c b/daemon/gdm-session.c -index f4d0bef9..d1e2c301 100644 ---- a/daemon/gdm-session.c -+++ b/daemon/gdm-session.c -@@ -351,72 +351,72 @@ supports_session_type (GdmSession *self, - if (session_type == NULL) - return TRUE; - - return g_strv_contains ((const char * const *) self->supported_session_types, - session_type); - } - - static char ** - get_system_session_dirs (GdmSession *self, - const char *type) - { - GArray *search_array = NULL; - char **search_dirs; - int i, j; - const gchar * const *system_data_dirs = g_get_system_data_dirs (); - - static const char *x_search_dirs[] = { - "/etc/X11/sessions/", - DMCONFDIR "/Sessions/", - DATADIR "/gdm/BuiltInSessions/", - DATADIR "/xsessions/", - }; - - static const char *wayland_search_dir = DATADIR "/wayland-sessions/"; - - search_array = g_array_new (TRUE, TRUE, sizeof (char *)); - - for (j = 0; self->supported_session_types[j] != NULL; j++) { - const char *supported_type = self->supported_session_types[j]; - -- if (g_str_equal (supported_type, "x11") || -+ if (g_str_equal (supported_type, "x11") && - (type == NULL || g_str_equal (type, supported_type))) { - for (i = 0; system_data_dirs[i]; i++) { - gchar *dir = g_build_filename (system_data_dirs[i], "xsessions", NULL); - g_array_append_val (search_array, dir); - } - - g_array_append_vals (search_array, x_search_dirs, G_N_ELEMENTS (x_search_dirs)); - } - - #ifdef ENABLE_WAYLAND_SUPPORT -- if (g_str_equal (supported_type, "wayland") || -+ if (g_str_equal (supported_type, "wayland") && - (type == NULL || g_str_equal (type, supported_type))) { - for (i = 0; system_data_dirs[i]; i++) { - gchar *dir = g_build_filename (system_data_dirs[i], "wayland-sessions", NULL); - g_array_append_val (search_array, dir); - } - - g_array_append_val (search_array, wayland_search_dir); - } - #endif - } - - search_dirs = g_strdupv ((char **) search_array->data); - - g_array_free (search_array, TRUE); - - return search_dirs; - } - - static gboolean - is_prog_in_path (const char *prog) - { - char *f; - gboolean ret; - - f = g_find_program_in_path (prog); - ret = (f != NULL); - g_free (f); - return ret; - } - -diff --git a/daemon/meson.build b/daemon/meson.build -index 2e61b644..71c65039 100644 ---- a/daemon/meson.build -+++ b/daemon/meson.build -@@ -15,114 +15,122 @@ local_display_dbus_gen = gnome.gdbus_codegen('gdm-local-display-glue', - 'gdm-local-display.xml', - namespace: 'GdmDBus', - interface_prefix: 'org.gnome.DisplayManager', - autocleanup: 'all', - ) - local_display_factory_dbus_gen = gnome.gdbus_codegen('gdm-local-display-factory-glue', - 'gdm-local-display-factory.xml', - namespace: 'GdmDBus', - interface_prefix: 'org.gnome.DisplayManager', - autocleanup: 'all', - ) - manager_dbus_gen = gnome.gdbus_codegen('gdm-manager-glue', - 'gdm-manager.xml', - namespace: 'GdmDBus', - interface_prefix: 'org.gnome.DisplayManager', - autocleanup: 'all', - ) - session_dbus_gen = gnome.gdbus_codegen('gdm-session-glue', - 'gdm-session.xml', - namespace: 'GdmDBus', - interface_prefix: 'org.gnome.DisplayManager', - autocleanup: 'all', - ) - session_worker_dbus_gen = gnome.gdbus_codegen('gdm-session-worker-glue', - 'gdm-session-worker.xml', - namespace: 'GdmDBus', - interface_prefix: 'org.gnome.DisplayManager', - autocleanup: 'all', - ) - -+accountsservice_system_user_dbus_gen = gnome.gdbus_codegen('com.redhat.AccountsServiceUser.System', -+ 'com.redhat.AccountsServiceUser.System.xml', -+ namespace: 'Gdm', -+ interface_prefix: 'com.redhat', -+ autocleanup: 'all', -+) -+ - gdm_session_enums = gnome.mkenums('gdm-session-enum-types', - h_template: 'gdm-session-enum-types.h.in', - c_template: 'gdm-session-enum-types.c.in', - sources: 'gdm-session.h', - ) - gdm_session_worker_enums = gnome.mkenums('gdm-session-worker-enum-types', - h_template: 'gdm-session-worker-enum-types.h.in', - c_template: 'gdm-session-worker-enum-types.c.in', - sources: 'gdm-session-worker.h', - ) - - # Daemons deps - gdm_daemon_deps = [ - libgdmcommon_dep, - accountsservice_dep, - gobject_dep, - gio_dep, - gio_unix_dep, - libpam_dep, - x_deps, - xcb_dep, - ] - - if xdmcp_dep.found() and get_option('tcp-wrappers') - gdm_daemon_deps += libwrap_dep - endif - - # test-session-client - test_session_client_src = [ - 'test-session-client.c', - session_dbus_gen, - manager_dbus_gen, - ] - - test_session_client = executable('test-session-client', - test_session_client_src, - dependencies: gdm_daemon_deps, - include_directories: config_h_dir, - ) - - # Session worker - gdm_session_worker_src = [ - 'session-worker-main.c', - 'gdm-session.c', - 'gdm-session-settings.c', - 'gdm-session-auditor.c', - 'gdm-session-record.c', - 'gdm-session-worker.c', - 'gdm-session-worker-job.c', - 'gdm-session-worker-common.c', - 'gdm-dbus-util.c', - dbus_gen, - session_dbus_gen, - session_worker_dbus_gen, -+ accountsservice_system_user_dbus_gen, - gdm_session_enums, - gdm_session_worker_enums, - ] - - gdm_session_worker_deps = [ - gdm_daemon_deps, - ] - - gdm_session_worker_includes = [ - config_h_dir, - ] - - if pam_extensions_supported - gdm_session_worker_src += '../pam-extensions/gdm-pam-extensions.h' - gdm_session_worker_includes += pam_extensions_inc - endif - - if libaudit_dep.found() - gdm_session_worker_deps += libaudit_dep - - gdm_session_worker_src += [ - 'gdm-session-linux-auditor.c', - ] - endif - - if have_adt - gdm_session_worker_src += 'gdm-session-solaris-auditor.c' - endif - - gdm_session_worker = executable('gdm-session-worker', --- -2.33.1 - diff --git a/SOURCES/0003-session-ensure-login-screen-over-XDMCP-connects-to-i.patch b/SOURCES/0003-session-ensure-login-screen-over-XDMCP-connects-to-i.patch deleted file mode 100644 index 79b75d0..0000000 --- a/SOURCES/0003-session-ensure-login-screen-over-XDMCP-connects-to-i.patch +++ /dev/null @@ -1,105 +0,0 @@ -From 64e8db8432158e5115df18a03bb87ecc1d58ae63 Mon Sep 17 00:00:00 2001 -From: Ray Strode -Date: Mon, 11 Feb 2019 10:32:55 -0500 -Subject: [PATCH 3/3] session: ensure login screen over XDMCP connects to its - session - -Right now GTK preferentially picks the wayland display over an -X11 display if it finds one. - -That causes a problem for XDMCP sessions, since there may be a -wayland display running on the local console for the GDM user. - -This commit addresses the issue by forcing the X11 backend if -the session is X11. ---- - daemon/gdm-session.c | 19 +++++++++++++++++++ - 1 file changed, 19 insertions(+) - -diff --git a/daemon/gdm-session.c b/daemon/gdm-session.c -index 77d6b8ff0..357e4a297 100644 ---- a/daemon/gdm-session.c -+++ b/daemon/gdm-session.c -@@ -2697,60 +2697,79 @@ set_up_session_environment (GdmSession *self) - } - - static void - send_display_mode (GdmSession *self, - GdmSessionConversation *conversation) - { - GdmSessionDisplayMode mode; - - mode = gdm_session_get_display_mode (self); - gdm_dbus_worker_call_set_session_display_mode (conversation->worker_proxy, - gdm_session_display_mode_to_string (mode), - conversation->worker_cancellable, - NULL, NULL); - } - - static void - send_session_type (GdmSession *self, - GdmSessionConversation *conversation) - { - const char *session_type = "x11"; - - if (self->session_type != NULL) { - session_type = self->session_type; - } - - gdm_dbus_worker_call_set_environment_variable (conversation->worker_proxy, - "XDG_SESSION_TYPE", - session_type, - conversation->worker_cancellable, - NULL, NULL); -+ -+ /* If the session type is x11, then set GDK_BACKEND to x11 as well. -+ * This is so gnome-session-check-accelerated from an XDMCP connection doesn't -+ * try to use the wayland display running on the local console for the gdm -+ * user login screen session. -+ * -+ * That's the only case where we let a user log in more than once, so it's -+ * the only situation that matters. -+ * -+ * We can drop this code if we ever switch the login screen to use systemd's -+ * DynamicUser feature. -+ */ -+ if (g_strcmp0 (session_type, "x11") == 0) { -+ gdm_dbus_worker_call_set_environment_variable (conversation->worker_proxy, -+ "GDK_BACKEND", -+ "x11", -+ conversation->worker_cancellable, -+ NULL, NULL); -+ } - } - - void - gdm_session_open_session (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) { - send_display_mode (self, conversation); - send_session_type (self, conversation); - - gdm_dbus_worker_call_open (conversation->worker_proxy, - conversation->worker_cancellable, - (GAsyncReadyCallback) on_opened, conversation); - } - } - - static void - stop_all_other_conversations (GdmSession *self, - GdmSessionConversation *conversation_to_keep, - gboolean now) - { - GHashTableIter iter; - gpointer key, value; - --- -2.30.1 - diff --git a/SOURCES/0003-xdmcp-display-factory-Set-supported-session-types-fo.patch b/SOURCES/0003-xdmcp-display-factory-Set-supported-session-types-fo.patch deleted file mode 100644 index f119615..0000000 --- a/SOURCES/0003-xdmcp-display-factory-Set-supported-session-types-fo.patch +++ /dev/null @@ -1,122 +0,0 @@ -From b5472a30b1a71aec537ac309e2985cbac61b3136 Mon Sep 17 00:00:00 2001 -From: Ray Strode -Date: Tue, 14 Sep 2021 11:00:33 -0400 -Subject: [PATCH 3/4] xdmcp-display-factory: Set supported session types for - XDMCP displays - -The lower levels of GDM now expect the session types supported by a -display to be specified up front. - -This commit makes sure XDMCP displays do that. ---- - daemon/gdm-xdmcp-display-factory.c | 6 ++++++ - 1 file changed, 6 insertions(+) - -diff --git a/daemon/gdm-xdmcp-display-factory.c b/daemon/gdm-xdmcp-display-factory.c -index ce8f026e..abb58fae 100644 ---- a/daemon/gdm-xdmcp-display-factory.c -+++ b/daemon/gdm-xdmcp-display-factory.c -@@ -2104,94 +2104,100 @@ on_display_status_changed (GdmDisplay *display, - break; - case GDM_DISPLAY_MANAGED: - if (session != NULL) { - g_signal_connect_object (G_OBJECT (session), - "client-disconnected", - G_CALLBACK (on_client_disconnected), - display, G_CONNECT_SWAPPED); - g_signal_connect_object (G_OBJECT (session), - "disconnected", - G_CALLBACK (on_client_disconnected), - display, G_CONNECT_SWAPPED); - } - break; - default: - g_assert_not_reached (); - break; - } - - g_clear_object (&launch_environment); - } - - static GdmDisplay * - gdm_xdmcp_display_create (GdmXdmcpDisplayFactory *factory, - const char *hostname, - GdmAddress *address, - int displaynum) - { - GdmDisplay *display; - GdmDisplayStore *store; - gboolean use_chooser; -+ const char *session_types[] = { "x11", NULL }; - - g_debug ("GdmXdmcpDisplayFactory: Creating xdmcp display for %s:%d", - hostname ? hostname : "(null)", displaynum); - - use_chooser = FALSE; - if (factory->honor_indirect) { - IndirectClient *ic; - - ic = indirect_client_lookup (factory, address); - - /* This was an indirect thingie and nothing was yet chosen, - * use a chooser */ - if (ic != NULL && ic->chosen_address == NULL) { - use_chooser = TRUE; - } - } - - if (use_chooser) { - display = gdm_xdmcp_chooser_display_new (hostname, - displaynum, - address, - get_next_session_serial (factory)); - g_signal_connect (display, "hostname-selected", G_CALLBACK (on_hostname_selected), factory); - } else { - display = gdm_xdmcp_display_new (hostname, - displaynum, - address, - get_next_session_serial (factory)); - } - - if (display == NULL) { - goto out; - } - -+ g_object_set (G_OBJECT (display), -+ "session-type", session_types[0], -+ "supported-session-types", session_types, -+ NULL); -+ - if (! gdm_display_prepare (display)) { - gdm_display_unmanage (display); - g_object_unref (display); - display = NULL; - goto out; - } - - g_signal_connect_after (display, - "notify::status", - G_CALLBACK (on_display_status_changed), - factory); - - store = gdm_display_factory_get_display_store (GDM_DISPLAY_FACTORY (factory)); - gdm_display_store_add (store, display); - - factory->num_pending_sessions++; - out: - - return display; - } - - static void - gdm_xdmcp_send_accept (GdmXdmcpDisplayFactory *factory, - GdmAddress *address, - CARD32 session_id, - ARRAY8Ptr authentication_name, - ARRAY8Ptr authentication_data, - ARRAY8Ptr authorization_name, - ARRAY8Ptr authorization_data) - { --- -2.34.1 - diff --git a/SOURCES/0004-daemon-handle-upgrades-from-RHEL-7.patch b/SOURCES/0004-daemon-handle-upgrades-from-RHEL-7.patch deleted file mode 100644 index 8b6fe88..0000000 --- a/SOURCES/0004-daemon-handle-upgrades-from-RHEL-7.patch +++ /dev/null @@ -1,250 +0,0 @@ -From 738a10ca78e154ad4c3df9a1298eaad01516457e Mon Sep 17 00:00:00 2001 -From: Ray Strode -Date: Mon, 20 Aug 2018 14:30:59 -0400 -Subject: [PATCH 4/4] daemon: handle upgrades from RHEL 7 - -RHEL 7 users need to stay on X if they were using X, -and they need to stay on gnome-classic if they were using -gnome-classic. - -This commit examines the user's config to deduce whether -or not they were using RHEL 7 and in the event they were -try to get the right settings. ---- - daemon/gdm-session-settings.c | 19 +++++++++++++++++++ - daemon/gdm-session.c | 19 ++++++++----------- - 2 files changed, 27 insertions(+), 11 deletions(-) - -diff --git a/daemon/gdm-session-settings.c b/daemon/gdm-session-settings.c -index a4b7f1a6..a84b2ffa 100644 ---- a/daemon/gdm-session-settings.c -+++ b/daemon/gdm-session-settings.c -@@ -270,95 +270,114 @@ gdm_session_settings_get_property (GObject *object, - - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - } - } - - GdmSessionSettings * - gdm_session_settings_new (void) - { - GdmSessionSettings *settings; - - settings = g_object_new (GDM_TYPE_SESSION_SETTINGS, - NULL); - - return settings; - } - - gboolean - gdm_session_settings_is_loaded (GdmSessionSettings *settings) - { - if (settings->priv->user == NULL) { - return FALSE; - } - - return act_user_is_loaded (settings->priv->user); - } - - static void - load_settings_from_user (GdmSessionSettings *settings) - { -+ const char *system_id = NULL, *system_version_id = NULL; - const char *object_path; - const char *session_name; - const char *session_type; - const char *language_name; - - if (!act_user_is_loaded (settings->priv->user)) { - g_warning ("GdmSessionSettings: trying to load user settings from unloaded user"); - return; - } - - object_path = act_user_get_object_path (settings->priv->user); - - if (object_path != NULL) { - g_autoptr (GError) error = NULL; - settings->priv->user_system_proxy = gdm_accounts_service_user_system_proxy_new_for_bus_sync (G_BUS_TYPE_SYSTEM, - G_DBUS_PROXY_FLAGS_NONE, - "org.freedesktop.Accounts", - object_path, - NULL, - &error); - if (error != NULL) { - g_debug ("GdmSessionSettings: couldn't retrieve user system proxy from accountsservice: %s", - error->message); -+ } else { -+ system_id = gdm_accounts_service_user_system_get_id (settings->priv->user_system_proxy); -+ system_version_id = gdm_accounts_service_user_system_get_version_id (settings->priv->user_system_proxy); - } - } - - - - - - session_type = act_user_get_session_type (settings->priv->user); - session_name = act_user_get_session (settings->priv->user); - - g_debug ("GdmSessionSettings: saved session is %s (type %s)", session_name, session_type); - -+ if (system_id == NULL || (g_strcmp0 (system_id, "rhel") == 0 && g_str_has_prefix (system_version_id, "7."))) { -+ /* if there's also no session name in the file and we're coming from RHEL 7, -+ * then we should assume classic session -+ */ -+ if (session_name == NULL || session_name[0] == '\0') -+ session_name = "gnome-classic"; -+ -+ /* only presume wayland if the user specifically picked it in RHEL 7 -+ */ -+ if (g_strcmp0 (session_name, "gnome-wayland") == 0) -+ session_type = "wayland"; -+ else -+ session_type = "x11"; -+ } -+ - if (session_type != NULL && session_type[0] != '\0') { - gdm_session_settings_set_session_type (settings, session_type); - } - - if (session_name != NULL && session_name[0] != '\0') { - gdm_session_settings_set_session_name (settings, session_name); - } - - language_name = act_user_get_language (settings->priv->user); - - g_debug ("GdmSessionSettings: saved language is %s", language_name); - if (language_name != NULL && language_name[0] != '\0') { - gdm_session_settings_set_language_name (settings, language_name); - } - - out: - g_object_notify (G_OBJECT (settings), "is-loaded"); - } - - static void - on_user_is_loaded_changed (ActUser *user, - GParamSpec *pspec, - GdmSessionSettings *settings) - { - if (act_user_is_loaded (settings->priv->user)) { - load_settings_from_user (settings); - g_signal_handlers_disconnect_by_func (G_OBJECT (settings->priv->user), - G_CALLBACK (on_user_is_loaded_changed), - settings); - } -diff --git a/daemon/gdm-session.c b/daemon/gdm-session.c -index d1e2c301..d4a46d87 100644 ---- a/daemon/gdm-session.c -+++ b/daemon/gdm-session.c -@@ -3207,98 +3207,95 @@ gdm_session_get_session_id (GdmSession *self) - return conversation->session_id; - } - - const char * - gdm_session_get_conversation_session_id (GdmSession *self, - const char *service_name) - { - GdmSessionConversation *conversation; - - g_return_val_if_fail (GDM_IS_SESSION (self), NULL); - - conversation = find_conversation_by_name (self, service_name); - - if (conversation == NULL) { - return NULL; - } - - return conversation->session_id; - } - - static char * - get_session_filename (GdmSession *self) - { - return g_strdup_printf ("%s.desktop", get_session_name (self)); - } - - #ifdef ENABLE_WAYLAND_SUPPORT - static gboolean - gdm_session_is_wayland_session (GdmSession *self) - { -- GKeyFile *key_file; -+ g_autoptr (GKeyFile) key_file = NULL; - gboolean is_wayland_session = FALSE; -- char *filename; -- char *full_path = NULL; -+ g_autofree char *filename = NULL; -+ g_autofree char *full_path = NULL; - - g_return_val_if_fail (self != NULL, FALSE); - g_return_val_if_fail (GDM_IS_SESSION (self), FALSE); - - filename = get_session_filename (self); - - if (supports_session_type (self, "wayland")) { - key_file = load_key_file_for_file (self, filename, NULL, &full_path); - - if (key_file == NULL) { - goto out; - } -- } - -- if (full_path != NULL && strstr (full_path, "/wayland-sessions/") != NULL) { -- is_wayland_session = TRUE; -+ if (full_path != NULL && strstr (full_path, "/wayland-sessions/") != NULL) { -+ is_wayland_session = TRUE; -+ } - } -- g_debug ("GdmSession: checking if file '%s' is wayland session: %s", filename, is_wayland_session? "yes" : "no"); - - out: -- g_clear_pointer (&key_file, g_key_file_free); -- g_free (filename); -+ g_debug ("GdmSession: checking if file '%s' is wayland session: %s", filename, is_wayland_session? "yes" : "no"); - return is_wayland_session; - } - #endif - - static void - update_session_type (GdmSession *self) - { - #ifdef ENABLE_WAYLAND_SUPPORT - gboolean is_wayland_session = FALSE; - -- if (supports_session_type (self, "wayland")) -- is_wayland_session = gdm_session_is_wayland_session (self); -+ is_wayland_session = gdm_session_is_wayland_session (self); - - if (is_wayland_session) { - set_session_type (self, "wayland"); - } else { - set_session_type (self, NULL); - } - #endif - } - - gboolean - gdm_session_session_registers (GdmSession *self) - { - g_autoptr(GError) error = NULL; - g_autoptr(GKeyFile) key_file = NULL; - gboolean session_registers = FALSE; - g_autofree char *filename = NULL; - - g_return_val_if_fail (self != NULL, FALSE); - g_return_val_if_fail (GDM_IS_SESSION (self), FALSE); - - filename = get_session_filename (self); - - key_file = load_key_file_for_file (self, filename, NULL, NULL); - - session_registers = g_key_file_get_boolean (key_file, - G_KEY_FILE_DESKTOP_GROUP, - "X-GDM-SessionRegisters", - &error); - if (!session_registers && - error != NULL && --- -2.33.1 - diff --git a/SOURCES/0004-local-display-factory-Don-t-crash-if-Xorg-and-Waylan.patch b/SOURCES/0004-local-display-factory-Don-t-crash-if-Xorg-and-Waylan.patch deleted file mode 100644 index d17dece..0000000 --- a/SOURCES/0004-local-display-factory-Don-t-crash-if-Xorg-and-Waylan.patch +++ /dev/null @@ -1,96 +0,0 @@ -From dfca67899ea33da08d3aa9e84c1b4487991adad0 Mon Sep 17 00:00:00 2001 -From: Ray Strode -Date: Thu, 7 Oct 2021 15:34:27 -0400 -Subject: [PATCH 4/4] local-display-factory: Don't crash if Xorg and Wayland - are both unavailable - -At the moment if Wayland doesn't work, the login screen will fall back -to Xorg, and if Xorg doesn't work the login screen will fall back to -Wayland. - -But if the fall back choice is disabled explicitly, GDM will just crash. - -This commit fixes the crash. - -Closes: https://gitlab.gnome.org/GNOME/gdm/-/issues/739 ---- - daemon/gdm-local-display-factory.c | 9 +++++++-- - 1 file changed, 7 insertions(+), 2 deletions(-) - -diff --git a/daemon/gdm-local-display-factory.c b/daemon/gdm-local-display-factory.c -index eba38671..120847f9 100644 ---- a/daemon/gdm-local-display-factory.c -+++ b/daemon/gdm-local-display-factory.c -@@ -651,62 +651,67 @@ ensure_display_for_seat (GdmLocalDisplayFactory *factory, - gdm_settings_direct_get_boolean (GDM_KEY_XORG_ENABLE, &xorg_enabled); - - preferred_display_server = get_preferred_display_server (factory); - - if (g_strcmp0 (preferred_display_server, "none") == 0) { - g_debug ("GdmLocalDisplayFactory: Preferred display server is none, so not creating display"); - return; - } - - ret = sd_seat_can_graphical (seat_id); - - if (ret < 0) { - g_critical ("Failed to query CanGraphical information for seat %s", seat_id); - return; - } - - if (ret == 0) { - g_debug ("GdmLocalDisplayFactory: System doesn't currently support graphics"); - seat_supports_graphics = FALSE; - } else { - g_debug ("GdmLocalDisplayFactory: System supports graphics"); - seat_supports_graphics = TRUE; - } - - if (g_strcmp0 (seat_id, "seat0") == 0) { - is_seat0 = TRUE; - - falling_back = factory->num_failures > 0; - session_types = gdm_local_display_factory_get_session_types (factory, falling_back); - -- g_debug ("GdmLocalDisplayFactory: New displays on seat0 will use %s%s", -- session_types[0], falling_back? " fallback" : ""); -+ if (session_types == NULL) { -+ g_debug ("GdmLocalDisplayFactory: Both Wayland and Xorg are unavailable"); -+ seat_supports_graphics = FALSE; -+ } else { -+ g_debug ("GdmLocalDisplayFactory: New displays on seat0 will use %s%s", -+ session_types[0], falling_back? " fallback" : ""); -+ } - } else { - is_seat0 = FALSE; - - g_debug ("GdmLocalDisplayFactory: New displays on seat %s will use X11 fallback", seat_id); - /* Force legacy X11 for all auxiliary seats */ - seat_supports_graphics = TRUE; - session_types = g_strdupv ((char **) legacy_session_types); - } - - /* For seat0, we have a fallback logic to still try starting it after - * SEAT0_GRAPHICS_CHECK_TIMEOUT seconds. i.e. we simply continue even if - * CanGraphical is unset. - * This is ugly, but it means we'll come up eventually in some - * scenarios where no master device is present. - * Note that we'll force an X11 fallback even though there might be - * cases where an wayland capable device is present and simply not marked as - * master-of-seat. In these cases, this should likely be fixed in the - * udev rules. - * - * At the moment, systemd always sets CanGraphical for non-seat0 seats. - * This is because non-seat0 seats are defined by having master-of-seat - * set. This means we can avoid the fallback check for non-seat0 seats, - * which simplifies the code. - */ - if (is_seat0) { - if (!seat_supports_graphics) { - if (!factory->seat0_graphics_check_timed_out) { - if (factory->seat0_graphics_check_timeout_id == 0) { - g_debug ("GdmLocalDisplayFactory: seat0 doesn't yet support graphics. Waiting %d seconds to try again.", SEAT0_GRAPHICS_CHECK_TIMEOUT); - factory->seat0_graphics_check_timeout_id = g_timeout_add_seconds (SEAT0_GRAPHICS_CHECK_TIMEOUT, --- -2.34.1 - diff --git a/SPECS/gdm.spec b/SPECS/gdm.spec deleted file mode 100644 index 6113bef..0000000 --- a/SPECS/gdm.spec +++ /dev/null @@ -1,3352 +0,0 @@ -%global _changelog_trimtime %(date +%s -d "1 year ago") -%global _hardened_build 1 - -%define libauditver 1.0.6 -%define gtk3_version 2.99.2 -%define pam_version 0.99.8.1-11 -%define desktop_file_utils_version 0.2.90 -%define nss_version 3.11.1 - -%global tarball_version %%(echo %{version} | tr '~' '.') - -Name: gdm -Epoch: 1 -Version: 40.0 -Release: 27%{?dist} -Summary: The GNOME Display Manager - -License: GPLv2+ -URL: https://wiki.gnome.org/Projects/GDM -Source0: http://download.gnome.org/sources/gdm/40/gdm-%{version}.tar.xz -Source1: org.gnome.login-screen.gschema.override - -# Lets customers using vendor nvidia driver pick wayland sessions from the login screen -Patch10001: 0001-local-display-factory-Provide-more-flexibility-for-c.patch -Patch10002: 0002-libgdm-Sort-session-list.patch -Patch10003: 0003-xdmcp-display-factory-Set-supported-session-types-fo.patch -Patch10004: 0004-local-display-factory-Don-t-crash-if-Xorg-and-Waylan.patch - -# Race fix -Patch40001: 0001-display-Handle-failure-before-display-registration.patch - -# Don't bother building gdm-screenshot, nothing uses it -Patch50001: 0001-utils-Drop-gdm-screenshot.patch - -# Questionable feature to support logging in over multiple XDMCP consoles at the same time -Patch60001: 0001-manager-allow-multiple-xdmcp-logins-for-the-same-use.patch -Patch60002: 0002-gdm-x-session-run-session-bus-on-non-seat0-seats.patch -Patch60003: 0003-session-ensure-login-screen-over-XDMCP-connects-to-i.patch - -# Upstream change that's moderately risky so revert it -Patch70001: 0001-Revert-gdm-wayland-x-session-don-t-overwrite-user-en.patch - -# Crash fix -Patch80001: 0001-local-display-factory-Don-t-try-to-respawn-displays-.patch - -# VT handling fix from upstream -Patch90001: 0001-session-worker-Set-session_vt-0-out-of-pam-uninitial.patch - -# Wayland fix from upstream -Patch100001: 0001-daemon-Infer-session-type-from-desktop-file-if-user-.patch - -# Fix DisallowTcp=false from upstream -Patch110001: 0001-meson-Fix-detection-of-Xorg-versions-that-need-liste.patch -Patch110002: 0002-daemon-Support-X-servers-built-with-Dlisten_tcp-true.patch - -# Fix btmp accounting -Patch120001: 0001-meson-set-D_GNU_SOURCE-for-updwtmpx.patch -Patch120002: 0002-manager-Fix-btmp-record-accounting.patch - -# Fix status error when stoppping gdm quickly after starting it -Patch130001: 0001-daemon-Don-t-error-on-shutdown.patch - -# Fix LUKS password propagation -Patch140001: 0001-build-Support-keyutils-1.5.11-and-older.patch -Patch140002: 0002-pam_gdm-Use-the-last-cryptsetup-password-instead-of-.patch - -# Non-upstreamable workarounds -Patch66620001: 0001-data-reap-gdm-sessions-on-shutdown.patch - -# Non-upstreamable integration patches -Patch99910001: 0001-Honor-initial-setup-being-disabled-by-distro-install.patch - -Patch99920001: 0001-worker-don-t-load-user-settings-for-program-sessions.patch -Patch99920002: 0002-session-support-new-accountsservice-Session-and-Sess.patch -Patch99920003: 0003-daemon-save-os-release-in-accountsservice.patch -Patch99920004: 0004-daemon-handle-upgrades-from-RHEL-7.patch - -Patch99920006: 0001-data-Disable-network-configuration-on-login-screen.patch - -Patch99930001: 0001-data-add-system-dconf-databases-to-gdm-profile.patch - -Patch99940001: 0001-data-disable-wayland-on-certain-hardware.patch - - -BuildRequires: accountsservice-devel -BuildRequires: audit-libs-devel >= %{libauditver} -BuildRequires: dconf -BuildRequires: desktop-file-utils >= %{desktop_file_utils_version} -BuildRequires: gettext-devel -BuildRequires: git -BuildRequires: keyutils-libs-devel -BuildRequires: libXdmcp-devel -BuildRequires: libattr-devel -BuildRequires: libdmx-devel -BuildRequires: audit-libs-devel >= %{libauditver} -BuildRequires: meson -BuildRequires: nss-devel >= %{nss_version} -BuildRequires: pam-devel >= 0:%{pam_version} -BuildRequires: pkgconfig(accountsservice) >= 0.6.3 -BuildRequires: pkgconfig(check) -BuildRequires: pkgconfig(gobject-introspection-1.0) -BuildRequires: pkgconfig(gtk+-3.0) >= %{gtk3_version} -BuildRequires: pkgconfig(iso-codes) -BuildRequires: pkgconfig(libcanberra-gtk3) -BuildRequires: pkgconfig(libselinux) -BuildRequires: pkgconfig(libsystemd) -BuildRequires: pkgconfig(ply-boot-client) -BuildRequires: pkgconfig(systemd) -BuildRequires: pkgconfig(x11) -BuildRequires: pkgconfig(xau) -BuildRequires: pkgconfig(xorg-server) -BuildRequires: plymouth-devel -BuildRequires: systemd -BuildRequires: systemd-devel -BuildRequires: which -%ifnarch s390 s390x ppc ppc64 -BuildRequires: xorg-x11-server-Xorg -%endif -BuildRequires: xorg-x11-server-devel -BuildRequires: yelp-tools - -Requires(pre): /usr/sbin/useradd -%{?systemd_requires} - -Provides: service(graphical-login) = %{name} - -Requires: accountsservice >= 0.6.50-3.el8 -Requires: audit-libs >= %{libauditver} -Requires: dconf -# since we use it, and pam spams the log if the module is missing -Requires: gnome-keyring-pam -Requires: gnome-session -Requires: gnome-session-wayland-session -Requires: gnome-settings-daemon >= 3.27.90 -Requires: gnome-shell -Requires: iso-codes -# We need 1.0.4-5 since it lets us use "localhost" in auth cookies -Requires: libXau >= 1.0.4-4 -Requires: pam >= 0:%{pam_version} -Requires: /sbin/nologin -Requires: setxkbmap -Requires: systemd >= 239-50 -Requires: system-logos -Requires: xorg-x11-server-utils -Requires: xorg-x11-xinit -Recommends: xorg-x11-server-Xorg -Conflicts: xorg-x11-server-Xorg < 1.20.8-4 - -# Until the greeter gets dynamic user support, it can't -# use a user bus -Requires: /usr/bin/dbus-run-session - -Obsoletes: gdm-libs < 1:3.12.0-3 -Provides: gdm-libs%{?_isa} = %{epoch}:%{version}-%{release} - -# Swallow up old fingerprint/smartcard plugins -Obsoletes: gdm-plugin-smartcard < 1:3.2.1 -Provides: gdm-plugin-smartcard = %{epoch}:%{version}-%{release} - -Obsoletes: gdm-plugin-fingerprint < 1:3.2.1 -Provides: gdm-plugin-fingerprint = %{epoch}:%{version}-%{release} - -# moved here from pulseaudio-gdm-hooks-11.1-16 -Source5: default.pa-for-gdm -Obsoletes: pulseaudio-gdm-hooks < 1:11.1-17 -Provides: pulseaudio-gdm-hooks = 1:%{version}-%{release} - -%description -GDM, the GNOME Display Manager, handles authentication-related backend -functionality for logging in a user and unlocking the user's session after -it's been locked. GDM also provides functionality for initiating user-switching, -so more than one user can be logged in at the same time. It handles -graphical session registration with the system for both local and remote -sessions (in the latter case, via the XDMCP protocol). In cases where the -session doesn't provide it's own display server, GDM can start the display -server on behalf of the session. - -%package devel -Summary: Development files for gdm -Requires: %{name}%{?_isa} = %{epoch}:%{version}-%{release} -Requires: gdm-pam-extensions-devel = %{epoch}:%{version}-%{release} - -%description devel -The gdm-devel package contains headers and other -files needed to build custom greeters. - -%package pam-extensions-devel -Summary: Macros for developing GDM extensions to PAM -Group: Development/Libraries -Requires: pam-devel - -%description pam-extensions-devel -The gdm-pam-extensions-devel package contains headers and other -files that are helpful to PAM modules wishing to support -GDM specific authentication features. - -%prep -%autosetup -S git - -%build -%meson -Dpam-prefix=%{_sysconfdir} \ - -Drun-dir=/run/gdm \ - -Dudev-dir=%{_udevrulesdir} \ - -Ddefault-path=/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin \ - -Dprofiling=true \ - -Dplymouth=enabled \ - -Dselinux=enabled -%meson_build - -%install -mkdir -p %{buildroot}%{_sysconfdir}/gdm/Init -mkdir -p %{buildroot}%{_sysconfdir}/gdm/PreSession -mkdir -p %{buildroot}%{_sysconfdir}/gdm/PostSession - -%meson_install - -install -p -m644 -D %{SOURCE5} %{buildroot}%{_localstatedir}/lib/gdm/.config/pulse/default.pa - -rm -f %{buildroot}%{_sysconfdir}/pam.d/gdm - -# add logo to shell greeter -cp -a %{SOURCE1} %{buildroot}%{_datadir}/glib-2.0/schemas - -# docs go elsewhere -rm -rf %{buildroot}/%{_prefix}/doc - -# we're not doing user sessions in rhel 8 -rm -rf %{buildroot}%{_prefix}/lib/systemd/user - -# create log dir -mkdir -p %{buildroot}/var/log/gdm - -(cd %{buildroot}%{_sysconfdir}/gdm; ln -sf ../X11/xinit/Xsession .) - -mkdir -p %{buildroot}%{_datadir}/gdm/autostart/LoginWindow - -mkdir -p %{buildroot}/run/gdm - -mkdir -p %{buildroot}%{_sysconfdir}/dconf/db/gdm.d/locks - -cat << EOF > %{buildroot}%{_libexecdir}/gdm-disable-wayland -#!/bin/sh -%{_libexecdir}/gdm-runtime-config set daemon WaylandEnable false -EOF -chmod a+x %{buildroot}%{_libexecdir}/gdm-disable-wayland - -%find_lang gdm --with-gnome - -%pre -/usr/sbin/useradd -M -u 42 -d /var/lib/gdm -s /sbin/nologin -r gdm > /dev/null 2>&1 -/usr/sbin/usermod -d /var/lib/gdm -s /sbin/nologin gdm >/dev/null 2>&1 -# ignore errors, as we can't disambiguate between gdm already existed -# and couldn't create account with the current adduser. -exit 0 - -%post -%{?ldconfig} - -# if the user already has a config file, then migrate it to the new -# location; rpm will ensure that old file will be renamed - -custom=/etc/gdm/custom.conf - -if [ $1 -ge 2 ] ; then - if [ -f /usr/share/gdm/config/gdm.conf-custom ]; then - oldconffile=/usr/share/gdm/config/gdm.conf-custom - elif [ -f /etc/X11/gdm/gdm.conf ]; then - oldconffile=/etc/X11/gdm/gdm.conf - fi - - # Comment out some entries from the custom config file that may - # have changed locations in the update. Also move various - # elements to their new locations. - - [ -n "$oldconffile" ] && sed \ - -e 's@^command=/usr/X11R6/bin/X@#command=/usr/bin/Xorg@' \ - -e 's@^Xnest=/usr/X11R6/bin/Xnest@#Xnest=/usr/X11R6/bin/Xnest@' \ - -e 's@^BaseXsession=/etc/X11/xdm/Xsession@#BaseXsession=/etc/X11/xinit/Xsession@' \ - -e 's@^BaseXsession=/etc/X11/gdm/Xsession@#&@' \ - -e 's@^BaseXsession=/etc/gdm/Xsession@#&@' \ - -e 's@^Greeter=/usr/bin/gdmgreeter@#Greeter=/usr/libexec/gdmgreeter@' \ - -e 's@^RemoteGreeter=/usr/bin/gdmlogin@#RemoteGreeter=/usr/libexec/gdmlogin@' \ - -e 's@^GraphicalTheme=Bluecurve@#&@' \ - -e 's@^BackgroundColor=#20305a@#&@' \ - -e 's@^DefaultPath=/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin@#&@' \ - -e 's@^RootPath=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin@#&@' \ - -e 's@^HostImageDir=/usr/share/hosts/@#HostImageDir=/usr/share/pixmaps/faces/@' \ - -e 's@^LogDir=/var/log/gdm@#&@' \ - -e 's@^PostLoginScriptDir=/etc/X11/gdm/PostLogin@#&@' \ - -e 's@^PreLoginScriptDir=/etc/X11/gdm/PreLogin@#&@' \ - -e 's@^PreSessionScriptDir=/etc/X11/gdm/PreSession@#&@' \ - -e 's@^PostSessionScriptDir=/etc/X11/gdm/PostSession@#&@' \ - -e 's@^DisplayInitDir=/var/run/gdm.pid@#&@' \ - -e 's@^RebootCommand=/sbin/reboot;/sbin/shutdown -r now;/usr/sbin/shutdown -r now;/usr/bin/reboot@#&@' \ - -e 's@^HaltCommand=/sbin/poweroff;/sbin/shutdown -h now;/usr/sbin/shutdown -h now;/usr/bin/poweroff@#&@' \ - -e 's@^ServAuthDir=/var/gdm@#&@' \ - -e 's@^Greeter=/usr/bin/gdmlogin@Greeter=/usr/libexec/gdmlogin@' \ - -e 's@^RemoteGreeter=/usr/bin/gdmgreeter@RemoteGreeter=/usr/libexec/gdmgreeter@' \ - $oldconffile > $custom -fi - -if [ $1 -ge 2 -a -f $custom ] && grep -q /etc/X11/gdm $custom ; then - sed -i -e 's@/etc/X11/gdm@/etc/gdm@g' $custom -fi - -%systemd_post gdm.service - -%preun -%systemd_preun gdm.service - -%postun -%{?ldconfig} -%systemd_postun gdm.service - -%files -f gdm.lang -%doc AUTHORS NEWS README.md -%license COPYING -%dir %{_sysconfdir}/gdm -%config(noreplace) %{_sysconfdir}/gdm/custom.conf -%config %{_sysconfdir}/gdm/Init/* -%config %{_sysconfdir}/gdm/PostLogin/* -%config %{_sysconfdir}/gdm/PreSession/* -%config %{_sysconfdir}/gdm/PostSession/* -%config %{_sysconfdir}/pam.d/gdm-autologin -%config %{_sysconfdir}/pam.d/gdm-password -# not config files -%{_sysconfdir}/gdm/Xsession -%{_datadir}/gdm/gdm.schemas -%{_sysconfdir}/dbus-1/system.d/gdm.conf -%dir %{_sysconfdir}/gdm/Init -%dir %{_sysconfdir}/gdm/PreSession -%dir %{_sysconfdir}/gdm/PostSession -%dir %{_sysconfdir}/gdm/PostLogin -%dir %{_sysconfdir}/dconf/db/gdm.d -%dir %{_sysconfdir}/dconf/db/gdm.d/locks -%{_datadir}/glib-2.0/schemas/org.gnome.login-screen.gschema.xml -%{_datadir}/glib-2.0/schemas/org.gnome.login-screen.gschema.override -%{_libexecdir}/gdm-disable-wayland -%{_libexecdir}/gdm-runtime-config -%{_libexecdir}/gdm-host-chooser -%{_libexecdir}/gdm-session-worker -%{_libexecdir}/gdm-simple-chooser -%{_libexecdir}/gdm-wayland-session -%{_libexecdir}/gdm-x-session -%{_sbindir}/gdm -%{_bindir}/gdmflexiserver -%dir %{_datadir}/dconf -%dir %{_datadir}/dconf/profile -%{_datadir}/dconf/profile/gdm -%dir %{_datadir}/gdm/greeter -%dir %{_datadir}/gdm/greeter/applications -%{_datadir}/gdm/greeter/applications/* -%dir %{_datadir}/gdm/greeter/autostart -%{_datadir}/gdm/greeter/autostart/* -%{_datadir}/gdm/greeter-dconf-defaults -%{_datadir}/gdm/locale.alias -%{_datadir}/gdm/gdb-cmd -%{_datadir}/gnome-session/sessions/gnome-login.session -%{_datadir}/polkit-1/rules.d/org.gnome.gdm.rules -%{_libdir}/girepository-1.0/Gdm-1.0.typelib -%{_libdir}/security/pam_gdm.so -%{_libdir}/libgdm*.so* -%attr(0711, root, gdm) %dir %{_localstatedir}/log/gdm -%attr(1770, gdm, gdm) %dir %{_localstatedir}/lib/gdm -%attr(0700, gdm, gdm) %dir %{_localstatedir}/lib/gdm/.config -%attr(0700, gdm, gdm) %dir %{_localstatedir}/lib/gdm/.config/pulse -%attr(0600, gdm, gdm) %{_localstatedir}/lib/gdm/.config/pulse/default.pa -%attr(0711, root, gdm) %dir /run/gdm -%config %{_sysconfdir}/pam.d/gdm-pin -%config %{_sysconfdir}/pam.d/gdm-smartcard -%config %{_sysconfdir}/pam.d/gdm-fingerprint -%{_sysconfdir}/pam.d/gdm-launch-environment -%{_udevrulesdir}/61-gdm.rules -%{_unitdir}/gdm.service - -%files devel -%dir %{_includedir}/gdm -%{_includedir}/gdm/*.h -%exclude %{_includedir}/gdm/gdm-pam-extensions.h -%dir %{_datadir}/gir-1.0 -%{_datadir}/gir-1.0/Gdm-1.0.gir -%{_libdir}/pkgconfig/gdm.pc - -%files pam-extensions-devel -%{_includedir}/gdm/gdm-pam-extensions.h -%{_libdir}/pkgconfig/gdm-pam-extensions.pc - -%changelog -* Mon Dec 12 2022 Ray Strode - 40.0-27 -- Fix LUKs password handling - Resolves: #2150649 - -* Mon Dec 12 2022 Ray Strode - 40.0-26 -- Fix error in service status log - Resolves: #1924079 - -* Wed Oct 19 2022 Ray Strode - 40.0-25 -- Fix btmp accounting - Resolves: #2030043 - -* Mon May 16 2022 Ray Strode - 40.0-24 -- Fix typo that prevents the correct session type from being - used when user switching. - Resolves: #2034092 - -* Thu Jan 27 2022 Ray Strode - 40.0-23 -- Fix crash when neither Xorg nor wayland is working great - Resolves: #2032180 - -* Wed Dec 22 2021 Ray Strode - 40.1-22 -- Fix DisallowTCP - Resolves: #2025768 - -* Tue Dec 21 2021 Ray Strode - 40.1-21 -- Fix Xorg/Wayland selection in some cases - Resolves: #2009045 - -* Mon Oct 25 2021 Ray Strode - 40.1-20 -- Remove module-rescue-stream from default.pa - Resolves: #1969846 - -* Mon Oct 25 2021 Ray Strode - 40.0-19 -- Synchronize permission and group ownership for log dir between - rpm file manifest and daemon expectations. - Resolves: #1878119 - -* Mon Oct 25 2021 Ray Strode - 40.0-18 -- Drop usleep workaround for problem that's now fixed properly in systemd - Resolves: #1921732 - -* Wed Oct 13 2021 Ray Strode - 40.0-17 -- Properly switch VTs when jumping to multi-user target - Related: #1988958 - -* Wed Sep 15 2021 Ray Strode - 40.0-16 -- Fix XDMCP - Resolves: #2005011 -- Fix crash at shutdown - Related: #2005011 - -* Wed Sep 01 2021 Ray Strode - 40.0-14 -- Disable Wayland on HyperV -- Fix Xorg fallback - Related: #2000904 - -* Thu Aug 19 2021 Ray Strode - 40.0-12 -- Redisable on server chips since rebase - Related: #1909300 - -* Wed Aug 04 2021 Ray Strode - 40.0-11 -- Read session settings from users even if they've never saved - before. Needed to support accountsservice templated user - defaults. - Related: #1812788 - -* Tue Jul 27 2021 Ray Strode - 40.0-10 -- Let customers using vendor nvidia driver choose wayland sessions - Resolves: #1962211 -- Drop unused patches - -* Tue Jun 08 2021 Florian Müllner - 40.0-3 -- Disable network items on login screen - Resolves: #1935261 - -* Wed May 19 2021 Ray Strode - 40.0-2 -- Fix workaround for systemd bug that's breaking X11 fallback - Resolves: #1962049 - -* Wed May 05 2021 Ray Strode - 40.0-1 -- Rebase to 40.0 - Resolves: #1909300 - -* Wed Jan 27 2021 Ray Strode - 3.28.3-39 -- Ensure login screen display server is is killed at log in -- Pull in fixes for two security issues - Resolves: #1918391 - -* Tue Nov 10 2020 Jonas Ådahl - 3.28.3-38 -- Re-add disabling Wayland for server GPUs - Related: #1670273 - -* Tue Nov 10 2020 Jonas Ådahl - 3.28.3-35 -- Stop disabling Wayland for server GPUs - Related: #1670273 - -* Tue Sep 15 2020 Ray Strode - 3.28.3-34 -- Fix file descriptor leak - Resolves: #1877853 - -* Tue Sep 01 2020 Ray Strode - 3.28.3-33 -- Fix problem with Xorg fallback - Resolves: #1868260 - -* Tue Aug 11 2020 Ray Strode - 3.28.3-32 -- Add dconf db to file manifest - Related: #1833158 - -* Thu Jul 23 2020 Ray Strode - 3.28.3-31 -- add back gdm system db to dconf profile - Resolves: #1833158 - -* Mon Jul 13 2020 Ray Strode - 3.28.3-30 -- Make sure login screen is killed during login - Resolves: #1618481 - -* Wed Feb 05 2020 Ray Strode - 3.28.3-29 -- Make GNOME work slightly better in the multiple logins case. - Related: #1710882 - -* Sun Dec 15 2019 Ray Strode - 3.28.3-28 -- Correct wayland session detection logic when deciding - whether or not to run Xsession script - Resolves: #1728330 - -* Sun Dec 15 2019 Ray Strode - 3.28.3-27 -- Don't run initial-setup for machines enrolled in IPA setup. - Resolves: #1750516 - -* Fri Dec 13 2019 Ray Strode - 3.28.3-26 -- Forward port RHEL 7 patch to allow multiple logins for the - same user with XDMCP connections. - Resolves: #1710882 - -* Thu Dec 12 2019 Ray Strode - 3.28.3-25 -- Reenable wayland on hybrid setups (except virt pass through) - Resolves: #1749960 -- Reenable wayland on qxl - Resolves: #1744452 - -* Fri Dec 06 2019 Ray Strode - 3.28.3-24 -- Reenable wayland on cirrus - Resolves: #1744527 - -* Thu Nov 21 2019 Ray Strode - 3.28.3-23 -- Correct timedlogin based screenlock bypass - Resolves: #1672829 - -* Mon Jun 24 2019 Ray Strode - 3.28.3-22 -- Ensure user session is killed with its worker and that all - user sessions are cleaned up on shutdown - Resolves: #1690714 - -* Mon Jun 17 2019 Ray Strode - 3.28.3-21 -- Drop gdm-screenshot - Resolves: #1680164 - -* Mon Feb 11 2019 Ray Strode - 3.28.3-20 -- Disable wayland on hybrid gpu machines, and server machines - again - Related: #1662087 - Related: #1591250 1670273 - -* Mon Feb 11 2019 Ray Strode - 3.28.3-19 -- Fix XDMCP sessions when local console is using wayland - Resolves: #1640043 - -* Thu Jan 31 2019 Adam Jackson - 3.28.3-18 -- Add Recommends: xorg-x11-server-Xorg to fix more fallback cases - Resolves: #1617991 - -* Mon Jan 14 2019 Ray Strode - 3.28.3-17 -- Reenable wayland on other server cards (missed one in -14) - Related: #1591250 - -* Mon Jan 14 2019 Ray Strode - 3.28.3-15 -- Disable wayland on QXL devices - Related: #1641763 - -* Fri Jan 04 2019 Ray Strode - 3.28.3-14 -- Reenable wayland on server cards - Related: #1591250 - -* Wed Nov 28 2018 Ray Strode - 3.28.3-13 -- rebuild - Related: #1625683 - -* Tue Nov 13 2018 Ray Strode - 3.28.3-12 -- rebuild - Related: #1625683 - -* Fri Nov 02 2018 Ray Strode - 3.28.3-11 -- Fix non-autologin which go broken in previous build - Related: #1645135 - -* Thu Nov 01 2018 Ray Strode - 3.28.3-10 -- Fix autologin when X falls back - Resolves: #1645135 - -* Mon Oct 29 2018 Ray Strode - 3.28.3-9 -- workaround logind bug that breaks X fallback - Resolves: #1643874 - -* Wed Oct 24 2018 Ray Strode - 3.28.3-8 -- Disable wayland on proprietary nvidia - Related: #1639782 - -* Mon Oct 15 2018 Ray Strode - 3.28.3-7 -- Drop dead code that makes coverity unhappy - Resolves: #1602510 - -* Fri Oct 12 2018 Ray Strode - 3.28.3-6 -- Move AccountsServiceUser extension from gdm to accountsservice, - since we need to use it when creating users from gnome-initial-setup - Related: #1628060 - -* Mon Oct 08 2018 Ray Strode - 3.28.3-5 -- Fix WaylandEnable=false for autologin displays - Resolves: #1637102 - -* Wed Sep 12 2018 Ray Strode - 3.28.3-4 -- Fix typo in RHEL-7 upgrade patch causing classic to get - picked too often - Resolves: #1628060 - Related: #1595825 - -* Thu Aug 23 2018 Ray Strode - 3.28.3-3 -- Fix crash when wayland is disabled - Related: #1612915 1621226 - -* Tue Aug 21 2018 Ray Strode - 3.28.3-2 -- Handle upgrades from RHEL 7 better - Related: #1612915 1595825 -- Fix wayland blacklisting and blacklist mga200 cards from - using wayland. - Related: #1591250 - -* Mon Aug 13 2018 Ray Strode - 3.28.3-1 -- Update to 3.28.3 - Resolves: #1615447 - -* Thu May 17 2018 Kalev Lember - 1:3.28.2-1 -- Update to 3.28.2 - -* Tue Apr 10 2018 Kalev Lember - 1:3.28.1-1 -- Update to 3.28.1 - -* Thu Mar 22 2018 Igor Gnatenko - 3.28.0-6 -- Fixup ldconfig in postun - -* Wed Mar 21 2018 Kevin Fenzi - 3.28.0-5 -- Fix my ldconfig fix to be actually correct. - -* Wed Mar 21 2018 Kevin Fenzi - 3.28.0-4 -- Fix post/postun calls to ldconfig scriptlet. - -* Tue Mar 20 2018 Ray Strode - 1:3.28.0-3 -- Drop /etc/dconf/db/gdm.d from list of dconf sources, that's - not longer used. - Related: #1546644 - -* Tue Mar 20 2018 Rex Dieter - 1:3.28.0-2 -- move pulseaudio-gdm-hooks content here -- use %%ldconfig %%make_build %%make_install %%systemd_requires - -* Tue Mar 13 2018 Kalev Lember - 1:3.28.0-1 -- Update to 3.28.0 - -* Sun Mar 11 2018 Kalev Lember - 1:3.27.92-1 -- Update to 3.27.92 - -* Fri Mar 02 2018 Kalev Lember - 1:3.27.91-1 -- Update to 3.27.91 - -* Mon Feb 19 2018 Ray Strode - 1:3.27.4-4 -- Make sure GDM checks systemd dconf databases - Related: #1546644 - -* Fri Feb 09 2018 Bastien Nocera - 3.27.4-3 -+ gdm-3.27.4-4 -- Update for gnome-settings-daemon changes - -* Wed Feb 07 2018 Fedora Release Engineering - 1:3.27.4-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild - -* Tue Jan 09 2018 Ray Strode - 3.27.4-1 -- Update to 3.27.4 - -* Sat Jan 06 2018 Igor Gnatenko - 1:3.26.2.1-4 -- Remove obsolete scriptlets - -* Thu Nov 30 2017 Ray Strode - 1:3.26.2.1-3 -- Add buildrequires for X server so it knows which -listen - variant to use. - https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/thread/K2ZPZ43355YKAU66A5TDI3OSFU3U4T3M/ - -* Wed Nov 15 2017 Ray Strode - 1:3.26.2.1-2 -- Split PAM macros off into a new subpackage - Resolves: #1512212 - -* Wed Nov 01 2017 Kalev Lember - 1:3.26.2.1-1 -- Update to 3.26.2.1 - -* Tue Oct 24 2017 Ray Strode - 3.26.1-2 -- make sure initial-setup starts when wayland fails - Resolves: #1502827 - -* Sun Oct 08 2017 Kalev Lember - 1:3.26.1-1 -- Update to 3.26.1 - -* Thu Sep 14 2017 Kalev Lember - 1:3.26.0-1 -- Update to 3.26.0 - -* Fri Sep 08 2017 Kalev Lember - 1:3.25.92-1 -- Update to 3.25.92 - -* Tue Aug 15 2017 Kalev Lember - 1:3.25.90.1-1 -- Update to 3.25.90.1 - -* Mon Aug 14 2017 Ville Skyttä - 1:3.25.4.1-2 -- Own %%{_datadir}/{dconf,gdm/greeter,gir-1.0} dirs - -* Mon Jul 31 2017 Kalev Lember - 1:3.25.4.1-1 -- Update to 3.25.4.1 - -* Wed Jul 26 2017 Fedora Release Engineering - 1:3.25.3-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild - -* Sun Jun 25 2017 Kalev Lember - 1:3.25.3-1 -- Update to 3.25.3 - -* Wed May 10 2017 Kalev Lember - 1:3.24.2-1 -- Update to 3.24.2 - -* Wed Apr 12 2017 Kalev Lember - 1:3.24.1-1 -- Update to 3.24.1 - -* Sat Mar 25 2017 Ray Strode - 1:3.24.0-2 -- Fix fallback to X logic - Resolves: #1435010 - -* Tue Mar 21 2017 Kalev Lember - 1:3.24.0-1 -- Update to 3.24.0 - -* Fri Mar 17 2017 Kalev Lember - 1:3.23.92-1 -- Update to 3.23.92 - -* Mon Mar 06 2017 Kalev Lember - 1:3.23.91.1-1 -- Update to 3.23.91.1 - -* Mon Feb 13 2017 Richard Hughes - 1:3.23.4-1 -- Update to 3.23.4 - -* Fri Feb 10 2017 Fedora Release Engineering - 1:3.22.1-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild - -* Tue Jan 31 2017 Rui Matos - 1:3.22.1-2 -- Honor anaconda's firstboot being disabled - -* Wed Oct 12 2016 Kalev Lember - 1:3.22.1-1 -- Update to 3.22.1 -- Don't set group tags - -* Wed Sep 21 2016 Ray Strode - 3.22.0-2 -- Fix log in after log out - Resolves: #1373169 - -* Tue Sep 20 2016 Kalev Lember - 1:3.22.0-1 -- Update to 3.22.0 - -* Thu Sep 01 2016 Ray Strode - 1:3.21.91-2 -- Add buildrequire on kernel keyring development headers - -* Tue Aug 30 2016 Ray Strode - 1:3.21.91-1 -- Update to 3.21.91 - -* Tue Aug 30 2016 Ray Strode - 1:3.21.90-2 -- Fix autologin - -* Tue Aug 23 2016 Kalev Lember - 1:3.21.90-1 -- Update to 3.21.90 - -* Tue Jul 26 2016 Kalev Lember - 1:3.21.4-1 -- Update to 3.21.4 - -* Wed Jun 22 2016 Richard Hughes - 1:3.21.3-1 -- Update to 3.21.3 - -* Thu Apr 21 2016 Kalev Lember - 1:3.20.1-1 -- Update to 3.20.1 - -* Tue Mar 22 2016 Kalev Lember - 1:3.20.0-1 -- Update to 3.20.0 - -* Tue Mar 15 2016 Kalev Lember - 1:3.19.92-1 -- Update to 3.19.92 - -* Fri Mar 04 2016 Kalev Lember - 1:3.19.91-1 -- Update to 3.19.91 - -* Thu Feb 18 2016 Richard Hughes - 1:3.19.90-1 -- Update to 3.19.90 - -* Tue Feb 09 2016 Ray Strode - 3.19.4.1-4 -- More fixes need to get get gnome-terminal, gedit, etc working - Resolves: #1281675 - -* Thu Feb 04 2016 Ray Strode - 3.19.4.1-3 -- Fix gnome-terminal launched in an X session (and gedit etc) - Resolves: #1281675 - -* Wed Feb 03 2016 Fedora Release Engineering - 1:3.19.4.1-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild - -* Mon Jan 25 2016 Ray Strode - 3.19.4.1-1 -- Update to 3.19.4.1 - -* Thu Jan 21 2016 Kalev Lember 3.19.4-1 -- Update to 3.19.4 - -* Thu Dec 17 2015 Kalev Lember 3.19.2-1 -- Update to 3.19.2 - -* Tue Nov 10 2015 Ray Strode 3.19.2-0.1.20151110gitaf5957ad9 -- Update to git snapshot - -* Mon Sep 21 2015 Kalev Lember - 1:3.18.0-1 -- Update to 3.18.0 - -* Wed Sep 16 2015 Kalev Lember 3.17.92-1 -- Update to 3.17.92 - -* Mon Aug 24 2015 Ray Strode 3.17.90-1 -- Update to 3.17.90 -- Fixes sporadic failure to login and corruption of GDM_LANG - environment variable - -* Thu Aug 06 2015 Ray Strode 3.17.4-2 -- drop /bin and /sbin from default path - They don't make since given /usr merge - Resolves: #1251192 - -* Tue Jul 28 2015 Kalev Lember - 1:3.17.4-1 -- Update to 3.17.4 - -* Tue Jun 23 2015 Ray Strode 3.17.3.1-1 -- Update to 3.17.3.1 - -* Wed Jun 17 2015 Fedora Release Engineering - 1:3.17.2-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild - -* Wed Jun 03 2015 Ray Strode 3.17.2-1 -- Update to 3.17.2 - -* Thu Apr 16 2015 Ray Strode 3.16.1.1-1 -- Update to 3.16.1.1 - -* Thu Apr 16 2015 Kalev Lember 3.16.1-1 -- Update to 3.16.1 - -* Tue Apr 07 2015 Ray Strode 3.16.0.1-3 -- Fix permissions on /var/lib/gdm/.local/share -- Fixes starting Xorg without root on machines that started out - as Fedora 15 machines. - -* Fri Mar 27 2015 Ray Strode 3.16.0.1-2 -- set XORG_RUN_AS_USER_OK in environment - -* Tue Mar 24 2015 Kalev Lember - 1:3.16.0.1-1 -- Update to 3.16.0.1 - -* Tue Mar 24 2015 Ray Strode 3.16.0-2 -- actually quit plymouth at startup - -* Mon Mar 23 2015 Kalev Lember - 1:3.16.0-1 -- Update to 3.16.0 - -* Fri Mar 20 2015 Kalev Lember - 1:3.15.92-1 -- Update to 3.15.92 - -* Tue Mar 03 2015 Ray Strode 3.15.91.2-1 -- Update to 3.15.92.2 -- fixes "black screen on logout" of wayland sessions - -* Mon Mar 02 2015 Ray Strode 3.15.91.1-1 -- Update to 3.15.91.1 -- fixes deadlock on VT switch in some cases - -* Fri Feb 27 2015 Ray Strode 3.15.91-1 -- Update for 3.15.91 -- Reduces flicker -- Fixes hang for autologin - Resolves: #1197224 -- Fixes users that disable root running X in /etc/X11/Xwrapper.conf -- Fixes intermittent crash at login - -* Tue Feb 24 2015 Ray Strode - 1:3.15.90.5-1 -- Update to 3.15.90.5 -- gnome-initial-setup should work again - Resolves: #1194948 -- X will work better when configured to not need root - (still not perfect though) - -* Sun Feb 22 2015 Ray Strode - 1:3.15.90.4-1 -- Update to 3.15.90.4 -- Fixes bus activated X clients - -* Sat Feb 21 2015 Ray Strode - 1:3.15.90.3-1 -- Update to 3.15.90.3 -- Disables gnome-initial-setup support for now, which isn't functional - -* Fri Feb 20 2015 Ray Strode - 1:3.15.90.2-1 -- Update to 3.15.90.2 -- Fixes "no user list in the middle of my login screen" bug -- Require gnome-session-wayland-session since we default to wayland now - -* Fri Feb 20 2015 David King - 1:3.15.90.1-1 -- Update to 3.15.90.1 -- Use license macro for COPYING -- Use pkgconfig for BuildRequires -- Update URL - -* Thu Feb 19 2015 Richard Hughes - 1:3.15.90-1 -- Update to 3.15.90 - -* Fri Jan 23 2015 Ray Strode 3.15.3.1-4 -- Another user switching fix - Related: #1184933 - -* Thu Jan 22 2015 Ray Strode 3.15.3.1-3 -- Fix user switching - Resolves: #1184933 - -* Fri Jan 16 2015 Ray Strode 3.13.91-2 -- Fix pam_ecryptfs. unfortunately adds back gross last login messages. - Resolves: #1174366 - -* Fri Dec 19 2014 Richard Hughes - 1:3.15.3.1-1 -- Update to 3.15.3.1 - -* Fri Dec 19 2014 Richard Hughes - 1:3.15.3-1 -- Update to 3.15.3 - -* Tue Nov 25 2014 Kalev Lember - 1:3.15.2-1 -- Update to 3.15.2 - -* Tue Oct 14 2014 Kalev Lember - 1:3.14.1-1 -- Update to 3.14.1 - -* Mon Sep 22 2014 Kalev Lember - 1:3.14.0-1 -- Update to 3.14.0 - -* Wed Sep 17 2014 Kalev Lember - 1:3.13.92-1 -- Update to 3.13.92 - -* Wed Sep 03 2014 Kalev Lember - 1:3.13.91-2 -- Drop last GConf remnants - -* Wed Sep 03 2014 Kalev Lember - 1:3.13.91-1 -- Update to 3.13.91 - -* Sat Aug 16 2014 Fedora Release Engineering - 1:3.12.2-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild - -* Tue Jul 22 2014 Kalev Lember - 1:3.12.2-3 -- Rebuilt for gobject-introspection 1.41.4 - -* Sat Jun 07 2014 Fedora Release Engineering - 1:3.12.2-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild - -* Fri May 16 2014 Kalev Lember - 1:3.12.2-1 -- Update to 3.12.2 - -* Thu May 08 2014 Ray Strode - 1:3.12.1-3 -- Fix PATH - Resolves: #1095344 - -* Wed May 07 2014 Kalev Lember - 1:3.12.1-2 -- Drop gnome-icon-theme-symbolic dependency - -* Wed Apr 16 2014 Kalev Lember - 1:3.12.1-1 -- Update to 3.12.1 - -* Sat Apr 05 2014 Kalev Lember - 1:3.12.0-3 -- Fold -libs into the main gdm package - -* Sat Apr 05 2014 Kalev Lember - 1:3.12.0-2 -- Tighten subpackage deps - -* Tue Mar 25 2014 Richard Hughes - 1:3.12.0-1 -- Update to 3.12.0 - -* Thu Mar 20 2014 Richard Hughes - 1:3.11.92.1-1 -- Update to 3.11.92.1 - -* Fri Feb 21 2014 Richard Hughes - 1:3.11.90-1 -- Update to 3.11.90 - -* Wed Jan 15 2014 Richard Hughes - 1:3.11.4-1 -- Update to 3.11.4 - -* Sun Dec 22 2013 Ville Skyttä - 1:3.11.3-2 -- Drop empty TODO from docs, trivial rpmlint fixes. - -* Tue Dec 17 2013 Richard Hughes - 1:3.11.3-1 -- Update to 3.11.3 - -* Tue Nov 19 2013 Richard Hughes - 1:3.11.2-1 -- Update to 3.11.2 - -* Mon Oct 28 2013 Richard Hughes - 1:3.10.0.1-1 -- Update to 3.10.0.1 - -* Wed Sep 25 2013 Kalev Lember - 1:3.10.0-1 -- Update to 3.10.0 - -* Thu Aug 22 2013 Kalev Lember - 1:3.9.90-1 -- Update to 3.9.90 - -* Sat Aug 10 2013 Kalev Lember - 1:3.9.5-1 -- Update to 3.9.5 - -* Tue Jul 16 2013 Richard Hughes - 1:3.8.3.1-1 -- Update to 3.8.3.1 - -* Sat Jun 22 2013 Matthias Clasen - 3.8.3-2 -- Trim %%changelog - -* Fri Jun 14 2013 Ray Strode 3.8.3-1 -- Update to 3.8.3 - -* Tue May 21 2013 Matthias Clasen 1:3.8.1.1-6 -- Don't include the fallback greeter - -* Mon May 20 2013 Ray Strode 1:3.8.1.1-5 -- Fix permissions on /run/gdm - Resolves: #fudge - (http://lists.fedoraproject.org/pipermail/devel/2013-May/182906.html) - -* Mon May 20 2013 Ray Strode 1:3.8.1.1-4 -- Require gnome-shell. We no longer use the fallback greeter. - (Since gdm 3.7.92). - -* Fri May 17 2013 Ray Strode - 1:3.8.1.1-3 -- Build with -fpie - Resolves: #955154 - -* Thu May 16 2013 Florian Müllner - 1:3.8.1.1-2 -- Update branding - -* Wed Apr 17 2013 Richard Hughes - 1:3.8.1.1-1 -- Update to 3.8.1.1 - -* Mon Apr 15 2013 Kalev Lember - 1:3.8.1-1 -- Update to 3.8.1 - -* Mon Apr 01 2013 Kalev Lember - 1:3.8.0-2 -- Drop the metacity dep now that the fallback greeter is gone - -* Tue Mar 26 2013 Kalev Lember - 1:3.8.0-1 -- Update to 3.8.0 - -* Thu Mar 21 2013 Kalev Lember - 1:3.7.92-2 -- Drop the polkit-gnome dep now that the fallback greeter is gone - -* Wed Mar 20 2013 Richard Hughes - 1:3.7.92-1 -- Update to 3.7.92 - -* Wed Mar 6 2013 Matthias Clasen 3.7.91-1 -- Update to 3.7.91 - -* Wed Feb 27 2013 Ray Strode 3.7.90-3 -- Fix up runtime dir for real - -* Tue Feb 26 2013 Ray Strode 3.7.90-2 -- Fix up runtime dir path (spotted by dwalsh) - -* Fri Feb 22 2013 Kalev Lember - 1:3.7.90-1 -- Update to 3.7.90 - -* Wed Feb 06 2013 Kalev Lember - 1:3.7.5-1 -- Update to 3.7.5 - -* Wed Jan 09 2013 Richard Hughes - 1:3.7.3.1-1 -- Update to 3.7.3.1 - -* Tue Nov 20 2012 Richard Hughes - 1:3.7.2-1 -- Update to 3.7.2 - -* Tue Nov 20 2012 Matthias Clasen - 1:3.6.2-2 -- Remove patch fuzz of 999 - -* Wed Nov 14 2012 Kalev Lember - 1:3.6.2-1 -- Update to 3.6.2 - -* Mon Nov 05 2012 Ray Strode - 1:3.6.1-4 -- Fix GDM auth cookie problem - Related: #870695 - -* Mon Oct 29 2012 Matthias Clasen - 1:3.6.1-3 -- Add ppc to %%ExcludeArch - -* Thu Oct 18 2012 Matthias Clasen - 1:3.6.1-2 -- Require gnome-icon-theme-symbolic (#867718) - -* Tue Oct 16 2012 Kalev Lember - 1:3.6.1-1 -- Update to 3.6.1 - -* Tue Sep 25 2012 Richard Hughes - 1:3.6.0-1 -- Update to 3.6.0 - -* Wed Sep 19 2012 Matthias Clasen 1:3.5.92.1-1 -- Update to 3.5.92.1 - -* Fri Sep 07 2012 Ray Strode 1:3.5.91-2 -- Fix autologin -- Fix selinux context after forking session - -* Thu Sep 06 2012 Richard Hughes - 1:3.5.91-1 -- Update to 3.5.91 - -* Tue Aug 21 2012 Richard Hughes - 1:3.5.90-1 -- Update to 3.5.90 - -* Tue Aug 7 2012 Lennart Poettering - 1:3.5.5-2 -- https://fedoraproject.org/wiki/Features/DisplayManagerRework -- https://bugzilla.redhat.com/show_bug.cgi?id=846135 -- Ship and use gdm.service -- Force gdm onto VT1 - -* Tue Aug 07 2012 Richard Hughes - 1:3.5.5-1 -- Update to 3.5.5 - -* Fri Jul 27 2012 Fedora Release Engineering - 1:3.5.4.2-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild - -* Thu Jul 19 2012 Ray Strode 3.5.4.2-1 -- Update to 3.5.4.2 -- Fixes non-autologin - -* Thu Jul 19 2012 Ray Strode 3.5.4.1-1 -- Update to 3.5.4.1 -- Fixes autologin -- Fixes logind integration -- Fixes dconf incompatibility - -* Thu Jul 19 2012 Matthias Clasen - 1:3.5.4-3 -- Fix dconf profile syntax - -* Thu Jul 19 2012 Kalev Lember - 1:3.5.4-2 -- Require systemd >= 186 for libsystemd-login - -* Tue Jul 17 2012 Richard Hughes - 1:3.5.4-1 -- Update to 3.5.4 - -* Thu Jun 28 2012 Ray Strode 3.5.2-4 -- Build with plymouth support (woops). - -* Wed Jun 13 2012 Ray Strode 3.5.2-3 -- Drop unused spool dir - Related: #819254 - -* Sat Jun 9 2012 Matthias Clasen - 1:3.5.2-2 -- Fix gnome-shell detection - -* Thu Jun 07 2012 Richard Hughes - 1:3.5.2-1 -- Update to 3.5.2 - -* Sat Apr 14 2012 Matthias Clasen - 3.4.1-1 -- Update to 3.4.1 - -* Mon Apr 09 2012 Ray Strode 3.4.0.1-5 -- One more try at fixing crash - Resolves: #810451 - -* Mon Apr 09 2012 Ray Strode 3.4.0.1-4 -- Fix crash - Resolves: #810451 - -* Thu Apr 5 2012 Matthias Clasen 3.4.0.1-3 -- Make session unlocking after user switching work - -* Mon Apr 02 2012 Ray Strode 3.4.0.1-2 -- Move pam_gnome_keyring after XDG_RUNTIME_DIR is setup - Resolves: #809152 - -* Tue Mar 27 2012 Ray Strode 3.4.0.1-1 -- Update to 3.4.0.1 -- fixes autologin - -* Tue Mar 27 2012 Richard Hughes - 1:3.4.0-1 -- Update to 3.4.0 - -* Tue Mar 20 2012 Ray Strode 3.3.92.1-1 -- Update to 3.3.92.1 - -* Wed Feb 15 2012 Ray Strode 3.2.1.1-14 -- More consolekit registration fixes - -* Mon Feb 13 2012 Ray Strode 3.2.1.1-12 -- Restore ConsoleKit registration if ConsoleKit is installed - -* Tue Feb 7 2012 Lennart Poettering - 1:3.2.1.1-11 -- Add multi-seat patch from gdm git master - -* Thu Jan 26 2012 Ray Strode 3.2.1.1-10 -- Drop system-icon-theme requirement since we don't depend - on it anymore - -* Fri Jan 13 2012 Fedora Release Engineering - 1:3.2.1.1-9 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild - -* Wed Nov 09 2011 Adam Williamson 1:3.2.1.1-8 -- sync with recent changes on f16 branch: - + update to 3.2.1.1 - + properly set up PAM files - + auth fixes - + put fallback plugin development files in -devel - + require metacity to fix #746693 - + fix logo in fallback mode - just set it to a Fedora file - -* Thu Nov 03 2011 Ray Strode 3.2.1-3 -- Drop fprintd-pam dependency and make Harald's laptop - more lean and streamlined. - -* Wed Oct 26 2011 Fedora Release Engineering - 1:3.2.1-2 -- Rebuilt for glibc bug#747377 - -* Tue Oct 18 2011 Ray Strode 3.2.1-1 -- Update to 3.2.1 -- Move plugins into main package - -* Wed Oct 5 2011 Adam Williamson - 1:3.2.0-2 -- shell_check.patch (upstream): re-add check for gnome-shell presence - before using it to handle login (RH #743596) - -* Wed Sep 28 2011 Ray - 1:3.2.0-1 -- Update to 3.2.0 - -* Tue Jun 28 2011 Ray Strode 3.1.2-3 -- Disable fatal critcals - Resolves: #717324 - -* Tue Jun 21 2011 Michael Schwendt - 3.1.2-2 -- Fix /dev/ull typo in scriptlets (#693046). - -* Mon Jun 13 2011 Ray Strode 3.1.2-1 -- Update for release - -* Mon Jun 06 2011 Ray Strode 3.0.4-1 -- Update to latest version - Resolves CVE-2011-1709 - -* Fri Apr 15 2011 Matthias Clasen - 3.0.0-2 -- Put the Fedora logo back in the greeter - -* Mon Apr 4 2011 Matthias Clasen - 3.0.0-1 -- Update to 3.0.0 - -* Tue Mar 22 2011 Ray Strode 2.91.94-1 -- Update to 2.91.94 - -* Wed Mar 09 2011 Ray Strode 2.91.93-2 -- Fix autologin crash - -* Tue Mar 08 2011 Ray Strode 2.91.93-1 -- Update to 2.91.93 - -* Tue Feb 22 2011 Ray Strode 2.91.6-11 -- Dropping async code didn't work. The bug was still - around. This commit should fix it. - -* Fri Feb 18 2011 Ray Strode 2.91.6-10 -- Fix user list async bugs by dropping async code and - moving to accounts service library - Resolves: #678236 -- Add requires for accounts service to spec since it isn't - optional (and hasn't been for a while) - -* Thu Feb 17 2011 Ray Strode 2.91.6-9 -- Add back session chooser - Resolves: #539638 - -* Mon Feb 14 2011 Ray Strode 2.91.6-8 -- Do build with pam stack changes need to get ecryptfs - working. - Resolves: #665061 - -* Mon Feb 14 2011 Ray Strode 2.91.6-7 -- Fix crasher and rendering glitches - Resolves: #674978 - -* Fri Feb 11 2011 Matthias Clasen - 2.91.6-6 -- Rebuild against newer gtk - -* Wed Feb 09 2011 Christopher Aillon - 2.91.6-5 -- Drop the requires on plymouth-gdm-hooks since it no longer exists - -* Tue Feb 08 2011 Fedora Release Engineering - 1:2.91.6-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild - -* Mon Feb 07 2011 Bastien Nocera 2.91.6-3 -- Really disable gnome-settings-daemon plugins in the greeter - -* Fri Feb 04 2011 Ray Strode 2.91.6-2 -- Drop some unimportant patches -- Attempt to fix bug 674978 (theme related crash) - -* Wed Feb 02 2011 Ray Strode 2.91.6-1 -- Update to 2.91.6 - -* Sat Jan 29 2011 Ville Skyttä - 1:2.91.4-6 -- Dir ownership fixes. - -* Wed Jan 19 2011 Ray Strode 2.91.4-5 -- Fix swapped LHS and RHS in more-aggressive-about-loading-icons - patch - -* Wed Jan 19 2011 Ray Strode 2.91.4-4 -- Update previous patch to handle NULL better - -* Wed Jan 19 2011 Ray Strode 2.91.4-3 -- Fix icon ref counting issue - -* Wed Jan 19 2011 Ray Strode 2.91.4-2 -- Be more aggresive about loading icons - (right now we fail, which combined with fatal criticals - gives us crashes) - -* Fri Dec 17 2010 Ray Strode 2.91.4-1 -- Update to 2.91.4 - -* Wed Dec 15 2010 Christopher Aillon 2.32.0-4 -- Add maybe-set-is-loaded.patch to ensure we end up with a loaded user - -* Wed Dec 01 2010 Peter Hutterer 1:2.32.0-3 -- plymouth.patch: xserver 1.10 takes "-background none" root argument - instead of the fedora-specific "-nr". -- Add missing BuildRequires for dbus-glib-devel - -* Mon Nov 15 2010 Dan Williams 2.32.0-2 -- Fix upower build requirement - -* Wed Sep 29 2010 Ray Strode 2.32.0-1 -- Update to 2.32.0 - -* Tue Aug 17 2010 Ray Strode 2.31.90-1 -- Update to 2.31.90 - -* Wed Jun 16 2010 Matthias Clasen 2.30.2-3 -- Kill explicit library deps - -* Tue Apr 27 2010 Ray Strode 2.30.2-2 -- Update multistack patch -- Add accounts service patch -- Update plymouth patch - -* Tue Apr 27 2010 Matthias Clasen 2.30.2-1 -- Update to 2.30.2 -- Spec file cleanups - -* Tue Apr 06 2010 Ray Strode 2.30.0-2 -- Update plymouth patch to work with 0.8.1 - -* Mon Mar 29 2010 Matthias Clasen 2.30.0-1 -- Update to 2.30.0 - -* Wed Mar 24 2010 Matthias Clasen 2.29.92-4 -- Drop hal dependency - -* Tue Mar 09 2010 Ray Strode 2.29.92-3 -- Drop Prereq in favor of Requires(pre) - -* Tue Mar 09 2010 Ray Strode 2.29.92-2 -- Rebase multistack patch - -* Tue Mar 09 2010 Bastien Nocera 2.29.92-1 -- Update to 2.29.92 - -* Thu Feb 11 2010 Matthias Clasen 2.29.6-1 -- Update to 2.29.6 - -* Thu Jan 28 2010 Ray Strode 2.29.5-2 -- name graphical-login vprovides (bug 559268) - -* Tue Jan 26 2010 Ray Strode 2.29.5-1 -- Update to 2.29.5 - -* Sun Jan 17 2010 Matthias Clasen - 2.29.4-3 -- Rebuild - -* Thu Jan 14 2010 Ray Strode 2.29.4-2 -- Fix boot - -* Tue Dec 22 2009 Matthias Clasen - 2.29.4-1 -- Update to 2.29.4 - -* Wed Dec 09 2009 Ray Strode 2.29.1-3 -- Update to work better with latest plymouth - -* Thu Dec 03 2009 Ray Strode 2.29.1-2 -- Drop upstreamed patches -- rebase multi-stack patch - -* Tue Dec 01 2009 Bastien Nocera 2.29.1-1 -- Update to 2.29.1 - -* Sat Oct 31 2009 Matthias Clasen 2.28.1-20 -- Don't show 'Lock Screen' in the user switcher if locked down - -* Sat Oct 31 2009 Matthias Clasen 2.28.1-18 -- Actually set up statusicon padding - -* Fri Oct 30 2009 Ray Strode 2.28.1-17 -- Make the user list slide animation smoother - -* Thu Oct 29 2009 Ray Strode 2.28.1-16 -- Shrink autologin timer -- Make language dialog not double spaced - -* Thu Oct 29 2009 Ray Strode 2.28.1-15 -- Don't show fingerprint task button unless fingerprint is - enabled -- Don't show smartcard task button and list item unless - pcscd is running. - -* Wed Oct 28 2009 Ray Strode 2.28.1-14 -- Don't show image on login button - -* Wed Oct 28 2009 Ray Strode 2.28.1-13 -- Fix double free during user switching (might address - bug 512944) - -* Tue Oct 27 2009 Ray Strode 2.28.1-12 -- One more go at bug 527920 - -* Tue Oct 27 2009 Ray Strode 2.28.1-11 -- Tighten permissions on /var/run/gdm (bug 531063) - -* Mon Oct 26 2009 Ray Strode 2.28.1-10 -- Position shutdown menu properly on multihead machines - -* Fri Oct 23 2009 Ray Strode 2.28.1-9 -- Don't show hostname by default if it's localhost - -* Fri Oct 23 2009 Ray Strode 2.28.1-8 -- Attempt to fix crash some users see. -- Clean up rebase - -* Fri Oct 23 2009 Ray Strode 2.28.1-7 -- Show Other user even when there are no other users - (bug 527920) - -* Fri Oct 23 2009 Ray Strode 2.28.1-6 -- Properly read default keyboard layout (bug 530452) - -* Fri Oct 23 2009 Ray Strode 2.28.1-5 -- Remove tool tip from login button - -* Thu Oct 22 2009 Ray Strode 2.28.1-4 -- Fix autologin window spasms -- Fix autologin timer animation -- Make autologin and multistack play better together -- Add padding to notification tray - -* Wed Oct 21 2009 Ray Strode 2.28.1-3 -- Move date from panel to clock tooltip - -* Tue Oct 20 2009 Ray Strode 2.28.1-2 -- Move shutdown functions to panel from login window - -* Tue Oct 20 2009 Ray Strode 2.28.1-1 -- Update to 2.28.1 - -* Fri Oct 09 2009 Ray Strode 2.28.0-9 -- Fix Other... user. - -* Fri Oct 9 2009 Matthias Clasen - 1:2.28.0-8 -- Move bubbles to the lower right on the login screen - -* Wed Oct 07 2009 Ray Strode - 1:2.28.0-7 -- Fix gdm-password / xguest interaction (bug 524421) - -* Mon Oct 5 2009 Matthias Clasen - 1:2.28.4-6 -- Fix the autostart file for at-spi-registryd - -* Thu Oct 1 2009 Matthias Clasen - 1:2.28.4-5 -- Handle keyboard layout variants - -* Mon Sep 28 2009 Ray Strode - 1:2.28.0-4 -- Add cache dir to package manifest - -* Mon Sep 28 2009 Richard Hughes - 1:2.28.0-3 -- Add a patch to use DeviceKit-power rather than the removed methods in - gnome-power-manager. - -* Fri Sep 25 2009 Ray Strode 1:2.28.0-2 -- Fix autologin - -* Wed Sep 23 2009 Matthias Clasen 1:2.28.0-1 -- Update to 2.28.0 - -* Sat Aug 29 2009 Caolán McNamara 1:2.27.90-2 -- rebuild with new audit - -* Mon Aug 24 2009 Ray Strode 1:2.27.90-1 -- update to 2.27.90 - -* Fri Aug 21 2009 Tomas Mraz - 1:2.27.4-7 -- rebuilt with new audit - -* Wed Aug 19 2009 Lennart Poettering 1:2.27.4-6 -- Add pulseaudio-gdm-hooks to dependencies - -* Thu Aug 06 2009 Ray Strode 1:2.27.4-5 -- rebuild - -* Sat Aug 1 2009 Matthias Clasen 1:2.27.4-4 -- Drop unneeded direct deps - -* Fri Jul 24 2009 Ray Strode 1:2.27.4-3 -- Fix delay during login - -* Mon Jul 20 2009 Ray Strode 1:2.27.4-2 -- Use correct multi-stack patch - -* Mon Jul 20 2009 Ray Strode 1:2.27.4-1 -- Update to 2.27.4 - -* Thu Jul 02 2009 Adam Jackson 1:2.26.1-13 -- Requires: xorg-x11-xkb-utils -> Requires: setxkbmap - -* Wed Jul 01 2009 Ray Strode - 1:2.26.1-12 -- Drop defunct arch conditional buildrequires - -* Tue Jun 30 2009 Matthias Clasen - 1:2.26.1-11 -- Rebuild against new libxklavier - -* Fri Jun 12 2009 Matthias Clasen - 1:2.26.1-10 -- Bump rev to fix upgrade path - -* Tue Jun 9 2009 Matthias Clasen - 1:2.26.1-8 -- Port to PolicyKit 1 - -* Wed Jun 03 2009 Ray Strode - 1:2.26.1-5 -- Fix language parsing code (bug 502778) - -* Mon Apr 27 2009 Matthias Clasen - 1:2.26.1-4 -- Don't drop schemas translations from po files - -* Fri Apr 24 2009 Ray Strode - 1:2.26.1-3 -- Add Requires for pam modules in plugins - -* Tue Apr 21 2009 Ray Strode - 1:2.26.1-2 -- Stop inactive pam conversations when one succeeds. - Should fix bug 496234 - -* Tue Apr 14 2009 Ray Strode - 1:2.26.1-1 -- Update to 2.26.1 - -* Mon Apr 13 2009 Ray Strode - 1:2.26.0-8 -- Add less boring multistack patch for testing - -* Mon Mar 23 2009 Ray Strode - 1:2.26.0-7 -- Load session and language settings when username is read on - Other user - -* Fri Mar 20 2009 Ray Strode - 1:2.26.0-6 -- Fix problem in keyboard layout selector (483195) - -* Thu Mar 19 2009 Ray Strode - 1:2.26.0-5 -- Use gethostname() _properly_ instead of g_get_host_name() when writing - out xauth files, because the hostname may change out from - under us and glib caches it. - -* Thu Mar 19 2009 Ray Strode - 1:2.26.0-4 -- Use gethostname() instead of g_get_host_name() when writing - out xauth files, because the hostname may change out from - under us and glib caches it. - -* Wed Mar 18 2009 Ray Strode - 1:2.26.0-3 -- emit "user-selected" signal for non-user items in the list - as well. - -* Mon Mar 16 2009 Ray Strode - 1:2.26.0-2 -- Clean up empty auth dirs so they don't hang around forever - (bug 485974) - -* Mon Mar 16 2009 Ray Strode - 1:2.26.0-1 -- Update to 2.26.0 -- Drop gcc workaround. it might not be needed now. - -* Sat Mar 14 2009 Ray Strode - 1:2.25.2-20 -- Drop the use localhost patch because it broke things. - Instead add authorization that doesn't depend on a hostname - -* Thu Mar 12 2009 Ray Strode - 1:2.25.2-19 -- Add a lame patch in the off chance it might work around a - gcc bug on ppc: - unable to find register to spill in class 'LINK_OR_CTR_REGS' - Probably won't work. - -* Thu Mar 12 2009 Ray Strode - 1:2.25.2-18 -- Add Requires: libXau >= 1.0.4-4 to use localhost in xauth cookies -- Use localhost instead of g_get_host_name () - -* Thu Mar 12 2009 Ray Strode - 1:2.25.2-17 -- Don't force X server on active vt more than once - -* Tue Mar 10 2009 Ray Strode - 1:2.25.2-16 -- Store greeter's auth cookie under "localhost" instead - of g_get_host_name() since NetworkManager tries to synchronize - the internal hostname with the externally resolvable one. - -* Mon Mar 9 2009 Ray Strode - 1:2.25.2-15 -- Don't race with PAM modules that ask questions during - pam_open_session (and don't subsequently go bonkers when - losing the race). - -* Fri Mar 6 2009 Ray Strode - 1:2.25.2-14 -- Reset "start session when ready" state to FALSE when starting - new greeter from existing slave. May fix problem Chris Ball - is seeing with language selection in autologin the second time - after boot up. - -* Thu Mar 5 2009 Ray Strode - 1:2.25.2-13 -- 2.25.2-10 fixes were actually only for timed login. - Add same fix for auto login - -* Thu Mar 5 2009 Ray Strode - 1:2.25.2-12 -- Create settings object early to prevent assertion failures - when one pam conversation completes before another starts. - -* Wed Mar 4 2009 Ray Strode - 1:2.25.2-11 -- Bring back language/session/layout selector for autologin - -* Wed Mar 4 2009 Ray Strode - 1:2.25.2-10 -- Add some fixes for autologin - -* Tue Mar 3 2009 Ray Strode - 1:2.25.2-9 -- Add limited 'one-stack-only' version of multistack patch - (See https://fedoraproject.org/wiki/Features/MultiplePAMStacksInGDM) -- Drop 10 second delay in start up because of broken autostart - file - -* Fri Feb 27 2009 Matthias Clasen -- Require PolicyKit-authentication-agent - -* Tue Feb 24 2009 Matthias Clasen -- Refine the hal patch - -* Tue Feb 24 2009 Fedora Release Engineering - 1:2.25.2-6 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild - -* Fri Feb 20 2009 Matthias Clasen - 1:2.25.2-5 -- Get the default keyboard layout out of hal device properties - instead of /etc/sysconfig/keyboard - -* Fri Feb 20 2009 Ray Strode - 1:2.25.2-4 -- add Provides: service(graphical-login) to help anaconda - -* Thu Jan 22 2009 Ray Strode - 1:2.25.2-3 -- Open log files for append to make selinux lock down easier - -* Wed Dec 17 2008 Matthias Clasen - 1:2.25.2-2 -- Update to 2.25.2 -- Drop the xkb groups workaround to see if the issue disappeared - -* Thu Dec 4 2008 Matthias Clasen - 1:2.25.1-2 -- Update to 2.25.1 - -* Mon Oct 20 2008 Matthias Clasen - 1:2.24.0-11 -- Respect system keyboard setting - -* Wed Oct 15 2008 Ray Strode - 1:2.24.0-10 -- Rework "force X on vt1" code to work after the user logs out - -* Wed Oct 15 2008 Matthias Clasen - 1:2.24.0-9 -- Save some space - -* Fri Oct 3 2008 Matthias Clasen - 1:2.24.0-8 -- Don't show a non-functional help menuitem - -* Tue Sep 30 2008 Ray Strode - 1:2.24.0-7 -- Make panel slide in initially like the gnome panel - -* Tue Sep 30 2008 Ray Strode - 1:2.24.0-6 -- drop background priority change. Choppyiness in -3 ended up - being a bug in gnome-settings-daemon. -- pull patch from upstream to scale face icons with fontsize - -* Thu Sep 25 2008 Matthias Clasen - 1:2.24.0-5 -- Require gnome-session - -* Tue Sep 23 2008 Matthias Clasen - 1:2.24.0-4 -- Let /var/lib/gdm be owned by gdm, to make pulseaudio happy - -* Tue Sep 23 2008 Ray Strode - 1:2.24.0-3 -- Load background after everything else, so the crossfade - isn't choppy. - -* Mon Sep 22 2008 Ray Strode - 1:2.24.0-2 -- Fix permssions on spool dir - -* Mon Sep 22 2008 Matthias Clasen - 1:2.24.0-1 -- Update to 2.24.0 - -* Mon Sep 22 2008 Ray Strode - 1:2.23.92-10 -- Flush X event queue after setting _XROOTPMAP_ID so there's - no race with settings daemon reading the property - -* Fri Sep 19 2008 Ray Strode - 1:2.23.92-9 -- Fix crash from language dialog - -* Wed Sep 17 2008 Ray Strode - 1:2.23.92-8 -- canonicalize codeset to match output of locale -m -- filter duplicates from language list - -* Tue Sep 16 2008 Matthias Clasen - 1:2.23.92-7 -- Plug a few memory leaks - -* Tue Sep 16 2008 Ray Strode - 1:2.23.92-6 -- Use _XROOTPMAP_ID instead of _XSETROOT_ID - -* Tue Sep 16 2008 Ray Strode - 1:2.23.92-5 -- Save root window in XSETROOTID property for transition - -* Fri Sep 12 2008 Ray Strode - 1:2.23.92-4 -- Fix bug in last patch - -* Thu Sep 11 2008 Ray Strode - 1:2.23.92-3 -- Add hook to allow for plymouth transition - -* Tue Sep 9 2008 Jon McCann - 1:2.23.92-2 -- Disallow root login - -* Mon Sep 8 2008 Jon McCann - 1:2.23.92-1 -- Update to 2.23.92-1 - -* Thu Aug 28 2008 Jon McCann - 1:2.23.91-0.20080828.2 -- Update to non-broken snapshot - -* Thu Aug 28 2008 Jon McCann - 1:2.23.91-0.20080828.1 -- Update to snapshot - -* Mon Aug 25 2008 Jon McCann - 1:2.23.90-2 -- Add desktop file for metacity - -* Mon Aug 25 2008 Jon McCann - 1:2.23.90-1 -- Update to 2.23.90 - -* Thu Aug 14 2008 Behdad Esfahbod - 1:2.23.2-3 -- Add upstreamed patch gdm-2.23.2-unknown-lang.patch - -* Wed Aug 13 2008 Ray Strode - 1:2.23.2-2 -- Require plymouth-gdm-hooks so plymouth-log-viewer gets pulled - in on upgrades - -* Wed Jul 30 2008 Jon McCann - 1:2.23.2-1 -- Update to 2.23.2 - -* Mon Jul 28 2008 Jon McCann - 1:2.23.1.0.2008.07.28.1 -- Update to newer snapshot - -* Mon Jul 21 2008 Jon McCann - 1:2.23.1.0.2008.07.21.3 -- Update to newer snapshot - -* Mon Jul 21 2008 Jon McCann - 1:2.23.1.0.2008.07.21.2 -- Update to new snapshot - -* Mon Jul 21 2008 Jon McCann - 1:2.23.1.0.2008.07.21.1 -- Update to snapshot - -* Fri Jul 11 2008 Matthias Clasen - 1:2.22.0-12 -- Actually apply the patch - -* Thu Jul 10 2008 Matthias Clasen - 1:2.22.0-11 -- Fix some broken icons on the login screen - -* Thu Jul 10 2008 Matthias Clasen - 1:2.22.0-10 -- Improve rendering of languages - -* Thu Jul 3 2008 Jon McCann - 1:2.22.0-9 -- Check for a null filesystem type - -* Wed Jun 25 2008 Ray Strode - 1:2.22.0-8 -- After discussion with X team, turn tcp connections off by default, - but add back option to toggle on (bug 446672) - -* Wed Jun 25 2008 Ray Strode - 1:2.22.0-7 -- enable tcp connections by default - -* Thu May 8 2008 Matthias Clasen - 1:2.22.0-6 -- Add a GConf key to disable the user list - -* Mon May 5 2008 Matthias Clasen - 1:2.22.0-5 -- Autoreconf -- Bump rev - -* Mon May 5 2008 Matthias Clasen - 1:2.22.0-4 -- Add a keyboard chooser to the greeter - -* Sun May 4 2008 Matthias Clasen - 1:2.22.0-3 -- Fix source url - -* Fri May 1 2008 Jon McCann - 1:2.22.0-2 -- Retry tagging - -* Fri May 1 2008 Jon McCann - 1:2.22.0-1 -- Update to 2.22.0 -- Fix restarting when bus goes away - -* Thu May 1 2008 Ray Strode - 1:2.21.10-0.2008.05.01.1 -- ConsoleKit fixes -- Don't show session selector if only one session installed -- automatically pop up language/session selectors when using mnemonics - -* Tue Apr 29 2008 Jon McCann - 1:2.21.10-0.2008.04.29.2 -- Fix debugging -- Fix resetting slave after session migration -- Desensitize power buttons briefly after page switch -- Remove Users: label from greeter - -* Tue Apr 29 2008 Jon McCann - 1:2.21.10-0.2008.04.29.1 -- make transient greeter less transient to workaround spurious vt switch - -* Mon Apr 28 2008 Ray Strode - 1:2.21.10-0.2008.04.28.1 -- a11y improvements -- make "Suspend" desensitize properly when not-available -- make resize animation faster -- user switcher fixes - -* Fri Apr 18 2008 Ray Strode - 1:2.21.10-0.2008.04.18.2 -- Get Chinese back in language list - -* Fri Apr 18 2008 Ray Strode - 1:2.21.10-0.2008.04.18.1 -- start orca without main window -- add missing priorities for plugins -- add more failsafe lockdown - -* Wed Apr 16 2008 Ray Strode - 1:2.21.10-0.2008.04.16.1 -- Disable typeahead when asking for password so password can't get shown - in clear text (bug 442300) - -* Wed Apr 16 2008 Ray Strode - 1:2.21.10-0.2008.04.11.4 -- Use start-here instead of fedora-logo-icon to aid generic-logos - -* Fri Apr 11 2008 Matthias Clasen - 1:2.21.10-0.2008.04.11.3 -- Fix up the XKB workaround - -* Fri Apr 11 2008 Ray Strode - 1:2.21.10-0.2008.04.11.2 -- Fix security issue in last commit - -* Fri Apr 11 2008 Ray Strode - 1:2.21.10-0.2008.04.11.1 -- Fix focus handling when tabbing from user-chooser to buttons -- don't set real uid to user before setcred -- fix permissions on /var/run/gdm ... again - -* Thu Apr 10 2008 Matthias Clasen - 1:2.21.10-0.2008.04.08.4 -- Work around a XKB problem - -* Tue Apr 8 2008 Ray Strode - 1:2.21.10-0.2008.04.08.3 -- Language list was incomplete (bug 441613) - -* Tue Apr 8 2008 Ray Strode - 1:2.21.10-0.2008.04.08.2 -- Fix permissions on /var/run/gdm - -* Tue Apr 8 2008 Ray Strode - 1:2.21.10-0.2008.04.08.1 -- Install X auth cookies in /var/run/gdm instead of /tmp - -* Mon Apr 7 2008 Ray Strode - 1:2.21.10-0.2008.04.07.3 -- Disable image for automatic login and other user -- Act more sanely if gnome isn't installed - -* Mon Apr 7 2008 Ray Strode - 1:2.21.10-0.2008.04.07.2 -- Allow double-click to select language from list - -* Mon Apr 7 2008 Ray Strode - 1:2.21.10-0.2008.04.07.1 -- Make automatic login timer fade in -- No more checkboxes in user-switch applet - -* Sun Apr 6 2008 Ray Strode - 1:2.21.10-0.2008.04.06.1 -- Focus face browser after failed login attempt -- disable debug messages until 2.22.0 is released - -* Sat Apr 5 2008 Matthias Clasen - 1:2.21.10-0.2008.04.04.2 -- Improve handling of CK error messages - -* Sat Apr 5 2008 Ray Strode - 1:2.21.10-0.2008.04.04.1 -- Fix jump in animation for autologin -- Fix crash if LANG="somethingbogus" - -* Sat Apr 5 2008 Ray Strode - 1:2.21.10-0.2008.04.03.3 -- Fix crash when canceling autologin - -* Fri Apr 4 2008 Matthias Clasen - 1:2.21.10-0.2008.04.03.2 -- Uninstall gconf schemas before the files are gone - -* Thu Apr 3 2008 Ray Strode - 1:2.21.10-0.2008.04.03.1 -- Update to snapshot -- Improves shrink/grow animation of login window - -* Wed Apr 2 2008 Jon McCann - 1:2.21.10-0.2008.04.02.1 -- Update to snapshot - -* Mon Mar 31 2008 Matthias Clasen - 1:2.21.10-0.2008.03.26.4 -- Fix a directory ownership oversight - -* Wed Mar 26 2008 Jon McCann - 1:2.21.10-0.2008.03.26.3 -- Fix build due to #436349 - -* Wed Mar 26 2008 Jon McCann - 1:2.21.10-0.2008.03.26.2 -- Update to newer snapshot that includes more lockdown - -* Wed Mar 26 2008 Ray Strode - 1:2.21.10-0.2008.03.26.1 -- Update to snapshot -- Turn on profiling - -* Fri Mar 21 2008 Matthias Clasen - 1:2.21.10-0.2008.03.18.3 -- Don't require a theme we don't use - -* Wed Mar 19 2008 Ray Strode - 1:2.21.10-0.2008.03.18.2 -- Fix default path (bug 430187) - -* Tue Mar 18 2008 Jon McCann - 1:2.21.10-0.2008.03.18.1 -- Update to snapshot - -* Mon Mar 17 2008 Matthias Clasen - 1:2.21.9-5 -- Implement tooltips in the language selection dialog - -* Mon Mar 17 2008 Matthias Clasen - 1:2.21.9-4 -- Stop gvfs from using fuse in the sandbox session - -* Tue Mar 11 2008 Ray Strode - 1:2.21.9-3 -- remove duplication signal definition from bad patch merge - which led to crash for "Other" user - -* Mon Mar 10 2008 Jon McCann - 1:2.21.9-2 -- Fix case where we can't lookup a user. - -* Mon Mar 10 2008 Jon McCann - 1:2.21.9-1 -- Update to 2.21.9 - -* Mon Mar 10 2008 Ray Strode - 1:2.21.9-0.2008.03.10.2 -- Prevent some spurious wake ups caused by the - timed login timer animation - -* Mon Mar 10 2008 Ray Strode - 1:2.21.9-0.2008.03.10.1 -- Update to latest snapshot - -* Fri Mar 7 2008 David Woodhouse - 1:2.21.9-0.2008.02.29.3 -- Fix endianness breakage in signal pipes (#436333) - -* Mon Mar 3 2008 Ray Strode - 1:2.21.9-0.2008.02.29.2 -- Be more explicit in file list; use less globs -- Don't package user-switcher in both packages! - -* Fri Feb 29 2008 Ray Strode - 1:2.21.9-0.2008.02.29.1 -- Update to snapshot -- Split user-switcher out - -* Mon Feb 25 2008 Jon McCann - 1:2.21.8-1 -- Update to 2.21.8 - -* Tue Feb 12 2008 Jon McCann - 1:2.21.7-1 -- Update to 2.21.7 - -* Fri Feb 8 2008 Ray Strode - 1:2.21.7-0.2008.02.08.1 -- Update to snapshot - -* Wed Jan 30 2008 Jon McCann - 1:2.21.6-1 -- Update to 2.21.6 - -* Thu Jan 24 2008 Ray Strode - 1:2.21.5-2 -- add BuildRequires for iso-codes-devel - -* Fri Jan 18 2008 Jon McCann - 1:2.21.5-1 -- Update to 2.21.5 - -* Thu Jan 17 2008 Jon McCann - 1:2.21.2-0.2007.11.20.11 -- Rebuild - -* Mon Jan 15 2008 Dan Walsh - 1:2.21.2-0.2007.11.20.10 -- Fix gdm.pam file so that session include system-auth happens after other session setup - -* Mon Jan 7 2008 Ray Strode - 1:2.21.2-0.2007.11.20.9 -- hide guest account since it doesn't work - -* Fri Dec 21 2007 Ray Strode - 1:2.21.2-0.2007.11.20.8 -- Fix background (and other settings) - -* Wed Dec 19 2007 Ray Strode - 1:2.21.2-0.2007.11.20.7 -- Improve animation to be less jumpy - -* Fri Dec 14 2007 Ray Strode - 1:2.21.2-0.2007.11.20.6 -- Fix an uninitialized variable that makes the session list stop - growing before its finished sometimes - -* Thu Dec 13 2007 Ray Strode - 1:2.21.2-0.2007.11.20.5 -- add session chooser to login screen -- add hoaky animations - -* Fri Nov 30 2007 Matthias Clasen - 1:2.21.2-0.2007.11.20.4 -- Use the new "substack" support in pam to make keyring unlocking work - -* Tue Nov 20 2007 Ray Strode - 1:2.21.2-0.2007.11.20.3 -- use metacity for now - -* Tue Nov 20 2007 Ray Strode - 1:2.21.2-0.2007.11.20.2 -- Drop dont run profile patch since dwalsh changed /usr/sbin/gdm label - -* Tue Nov 20 2007 Ray Strode - 1:2.21.2-0.2007.11.20.1 -- Update to today's snapshot - -* Mon Nov 19 2007 Ray Strode - 1:2.21.2-0.2007.11.19.3 -- fix permissions on homedir - -* Mon Nov 19 2007 Ray Strode - 1:2.21.2-0.2007.11.19.2 -- move homedir to /var/lib/gdm - -* Mon Nov 19 2007 Ray Strode - 1:2.21.2-0.2007.11.19.1 -- Update to today's snapshot - -* Thu Nov 15 2007 Ray Strode - 1:2.21.2-0.2007.11.14.2 -- don't source /etc/profile at startup - -* Wed Nov 14 2007 Ray Strode - 1:2.21.2-0.2007.11.14.1 -- Update to today's snapshot - -* Fri Nov 9 2007 Ray Strode - 1:2.21.2-0.2007.11.09.1 -- Update to today's snapshot - -* Tue Oct 30 2007 Ray Strode - 1:2.21.1-0.2007.10.30.1 -- Update to today's snapshot - -* Tue Oct 23 2007 Ray Strode - 1:2.21.1-0.2007.10.23.1 -- Update to today's snapshot - -* Mon Oct 22 2007 Ray Strode - 1:2.21.1-0.2007.10.22.1 -- Add a snapshot gdm trunk, totally different unfinished ui... - -* Fri Oct 5 2007 Dan Walsh - 1:2.20.0-14 -- Added pam_selinux_permit and pam_namespace to gdm-pam - - This pam module allows user without a password to login when selinux is in enforcing mode -- Added pam_namespace to gdm-autologin-pam -- These changes were made to make it easier to setup the xguest user account - -* Tue Oct 3 2007 Alexander Larsson - 1:2.20.0-14 -- Fix up pam keyring integration to be what the latest version - of the docs says - -* Tue Oct 2 2007 Ray Strode - 1:2.20.0-13 -- Actually add said escape == cancel behavior back - -* Tue Oct 2 2007 Ray Strode - 1:2.20.0-12 -- Add escape == cancel behavior back - -* Mon Oct 1 2007 Matthias Clasen - 1:2.20.0-11 -- Fix a refcounting problem with user faces - -* Mon Oct 1 2007 Ray Strode - 1:2.20.0-10 -- apply upstream patch from Brady Anderson - to fix writing out .dmrc file when setting default language - (upstream bug 453916) - -* Fri Sep 28 2007 Ray Strode - 1:2.20.0-9 -- drop redhat-artwork dep, add fedorainfinity-gdm-theme dep - -* Fri Sep 28 2007 Ray Strode - 1:2.20.0-8 -- Another crack at 240853 - -* Fri Sep 28 2007 Matthias Clasen - 1:2.20.0-7 -- Fix the stupid bullets again - -* Thu Sep 27 2007 Ray Strode - 1:2.20.0-6 -- The previously mentioned typo didn't matter before because the - compiled in default matched what the config file was supposed to - say. This commit restores matched default behavior (bug 301031) - -* Thu Sep 27 2007 Ray Strode - 1:2.20.0-5 -- Fix an apparent typo in the securitytokens.conf config file - (bug 301031) - -* Thu Sep 20 2007 Matthias Clasen - 1:2.20.0-4 -- Reenable root login due to popular demand - -* Wed Sep 19 2007 Matthias Clasen - 1:2.20.0-3 -- Change default theme to FedoraInfinity - -* Wed Sep 19 2007 Matthias Clasen - 1:2.20.0-2 -- Fix a hang on restart (#240853) - -* Tue Sep 18 2007 Matthias Clasen - 1:2.20.0-1 -- Update to 2.20.0 - -* Wed Sep 12 2007 Ray Strode - 1:2.19.8-4 -- Change default password character back to circle instead of - asterisk (bug 287951) - -* Fri Sep 7 2007 Ray Strode - 1:2.19.8-3 -- rebuild --with-selinux - -* Fri Sep 7 2007 Ray Strode - 1:2.19.8-2 -- make things work better for xguest users (bug 254164) - -* Fri Sep 7 2007 Matthias Clasen - 1:2.19.8-1 -- Update to 2.19.8 - -* Tue Sep 4 2007 Matthias Clasen - 1:2.19.7-1 -- Update to 2.19.7 - -* Fri Aug 24 2007 Ray Strode - 1:2.19.6-5 -- use pam_selinux instead of home grown selinux code (bug 254164) - -* Wed Aug 22 2007 Kristian Høgsberg - 1:2.19.6-4 -- Pass -br to the default X server too. - -* Sat Aug 18 2007 Ray Strode - 1:2.19.6-3 -- disable root login (see "low-hanging fruit" discussion on - fedora-desktop-list) - -* Thu Aug 16 2007 Ray Strode - 1:2.19.6-2 -- disable type ahead in user list (bug 252991) - -* Wed Aug 15 2007 Matthias Clasen - 1:2.19.6-1 -- Update to 2.19.6 -- Use %%find_lang for help files - -* Sun Aug 12 2007 Adam Jackson 1:2.19.5-9 -- Remove the filereq on /etc/pam.d/system-auth, pam alone is sufficient. -- Bump the pam requirement to 0.99, 0.75 is ancient. - -* Sun Aug 12 2007 Matthias Clasen - 1:2.19.5-8 -- Make the previous fix actually work - -* Sun Aug 12 2007 Matthias Clasen - 1:2.19.5-7 -- Make gdmsetup work with consolehelper and pam again - -* Mon Aug 6 2007 Matthias Clasen - 1:2.19.5-6 -- Require gnome-keyring-pam - -* Mon Aug 6 2007 Ray Strode - 1:2.19.5-5 -- change previous patch to drop even more code - -* Mon Aug 6 2007 Ray Strode - 1:2.19.5-4 -- turn off dwellmouselistener if devices don't send core events. - don't warp pointer to stylus ever (upstream bug 457998) - -* Fri Aug 3 2007 Ray Strode - 1:2.19.5-3 -- remove dwellmouselistener module from default configuration. - It's pretty broken (bug 248752) - -* Fri Aug 3 2007 Matthias Clasen - 1:2.19.5-2 -- Update license field - -* Tue Jul 31 2007 Matthias Clasen - 1:2.19.5-1 -- Update to 2.19.5 - -* Mon Jul 30 2007 Matthias Clasen - 1:2.19.4-2 -- Add optional gnome-keyring support to the gdm pam stack - -* Tue Jul 10 2007 Ray Strode - 1:2.19.4-1 -- Update to 2.19.4 - -* Wed Jun 27 2007 Ray Strode - 1:2.19.3-3 -- set Browser=true by default - -* Wed Jun 27 2007 Matthias Clasen - 1:2.19.3-2 -- Drop an unnecessary file dependency - -* Mon Jun 18 2007 Ray Strode - 1:2.19.3-1 -- Update to 2.19.3 - -* Tue Jun 5 2007 Matthias Clasen - 1:2.19.2-1 -- Update to 2.19.2 - -* Mon May 21 2007 Matthias Clasen - 1:2.19.1-1 -- Update to 2.19.1 - -* Tue May 15 2007 Ray Strode - 1:2.18.0-14 -- hide users from userlist that have disabled shells - (bug 240148) - -* Thu May 10 2007 Matthias Clasen - 1:2.18.0-13 -- Follow packaging guidelines for scrollkeeper dependencies - -* Mon May 7 2007 Ray Strode - 1:2.18.0-12 -- reenable utmp logging (bug 209537) - -* Tue Apr 17 2007 Ray Strode - 1:2.18.0-11 -- Be more verbose to help isolate the problem in bug 234567 - -* Thu Apr 12 2007 Ray Strode - 1:2.18.0-10 -- add "Default" session back to the sessions menu (bug 234218) - -* Thu Apr 5 2007 Ray Strode - 1:2.18.0-9 -- don't expect utf-8 usernames for plain greeter face browser - either. - -* Thu Apr 5 2007 Ray Strode - 1:2.18.0-8 -- don't expect utf-8 usernames for face browser (bug 235351). - -* Thu Mar 29 2007 Ray Strode - 1:2.18.0-7 -- don't strcpy overlapping strings (bug 208181). - -* Tue Mar 27 2007 Matthias Clasen - 1:2.18.0-6 -- Hide gdmphotosetup by default, since About Me does the same - -* Tue Mar 20 2007 Ray Strode - 1:2.18.0-5 -- add fix to allow themes to cope with low resolution modes - better (bug 232672) - -* Mon Mar 19 2007 Ray Strode - 1:2.18.0-4 -- update and reenable security token patch - -* Mon Mar 19 2007 David Zeuthen - 1:2.18.0-3 -- Also pass AT's to the session from the plain greeter (#232518) -- New faces including new subpackage gdm-extra-faces - -* Tue Mar 13 2007 David Zeuthen - 1:2.18.0-2 -- Update to upstream release 2.18.0 -- Switch default theme to FedoraFlyingHigh and show /etc/passwd users -- Fix accessibility in the themed greeter (GNOME #412576) -- Enable accessible login, make sure gdm can access devices and - pass activated AT's to the login session (#229912) -- Disable smart card login for now as patch doesn't apply anymore - -* Fri Mar 9 2007 Ray Strode - 1:2.17.8-3 -- hide langauges that aren't displayable from the list (bug 206048) - -* Tue Mar 6 2007 Ray Strode - 1:2.17.8-2 -- turn off pam sanity check because it conflicts with audit - -* Wed Feb 28 2007 Matthias Clasen - 1:2.17.8-1 -- Update to 2.17.8 - -* Sat Feb 24 2007 Matthias Clasen - 1:2.17.7-5 -- Fix keynav in the face browser - -* Fri Feb 23 2007 David Zeuthen - 1:2.17.7-4 -- Add some enhancements to the greeter (bgo #411427) - -* Fri Feb 23 2007 Ray Strode - 1:2.17.7-3 -- Update to 2.17.7 - -* Fri Feb 23 2007 Matthias Clasen - 1:2.17.7-2 -- Don't own /usr/share/icons/hicolor -- Install all desktop files - -* Mon Feb 12 2007 Matthias Clasen - 1:2.17.7-1 -- try to update to 2.17.7 -- Drop upstreamed patches - -* Mon Feb 12 2007 Matthias Clasen - 1:2.17.6-4 -- Reuse existing sessions without asking -- Don't show failsafe sessions - -* Sat Feb 10 2007 Matthias Clasen - 1:2.17.6-3 -- Fix a problem with the ConsoleKit support - -* Tue Feb 6 2007 Matthias Clasen - 1:2.17.6-2 -- Apply a patch to improve fast user switching experience - -* Tue Jan 23 2007 Matthias Clasen - 1:2.17.6-1 -- Update to 2.17.6 - -* Sat Jan 13 2007 Matthias Clasen - 1:2.17.5-2 -- Enable ConsoleKit support - -* Thu Jan 11 2007 Matthias Clasen - 1:2.17.5-1 -- Update to 2.17.5 - -* Fri Dec 15 2006 Matthias Clasen - 1:2.17.4-1 -- Update to 2.17.4, which fixes CVE-2006-6105 - -* Tue Dec 5 2006 Matthias Clasen - 1:2.17.3-1 -- Update to 2.17.3 -- Update some patches - -* Tue Nov 7 2006 Matthias Clasen - 1:2.17.2-1 -- Update to 2.17.2 - -* Sun Nov 5 2006 Matthias Clasen - 1:2.17.1-1 -- Update to 2.17.1 - -* Thu Oct 26 2006 Matthias Clasen - 1:2.17.0-2 -- Fix a crash with launching a11y support - -* Sun Oct 22 2006 Matthias Clasen - 1:2.17.0-1 -- Update to 2.17.0 - -* Tue Oct 17 2006 Matthias Clasen - 1:2.16.0-17 -- Make photosetup help button work (#198138) - -* Sun Oct 15 2006 Ray Strode - 1:2.16.0-16.fc7 -- don't log canceled pam conversations as failed login attempts - -* Sun Oct 15 2006 Ray Strode - 1:2.16.0-15.fc7 -- Prefer modules in secmod db over hardcoded coolkey path - -* Sat Oct 14 2006 Ray Strode - 1:2.16.0-14.fc7 -- have security token monitor helper process kill itself when - the communication pipe to the main process goes away (bug 210677). - -* Wed Oct 10 2006 Ray Strode - 1:2.16.0-13.fc6 -- desensitize entry fields until pam asks for input, so if pam - doesn't initially ask for input (like in smart card required mode) - the user can't type something and confuse gdm (bug 201344) - -* Fri Oct 6 2006 Ray Strode - 1:2.16.0-12.fc6 -- invoke standard X server with -br option to ensure we get a - black root on startup - -* Thu Oct 5 2006 Ray Strode - 1:2.16.0-11.fc6 -- make monitoring code more reliable (bug 208018) - -* Wed Sep 27 2006 Matthias Clasen - 1:2.16.0-10.fc6 -- Fix small issues in gdmsetup (#208225) - -* Wed Sep 27 2006 Matthias Clasen - 1:2.16.0-9.fc6 -- Fix a problem with the display of the FedoraDNA theme - in gdmsetup - -* Tue Sep 19 2006 Ray Strode - 1:2.16.0-8.fc6 -- Add as_IN, si_LK to language list (bug 203917) - -* Mon Sep 18 2006 Ray Strode - 1:2.16.0-7.fc6 -- fix a problem recently introduced in the smart card forking - code - -* Mon Sep 18 2006 Ray Strode - 1:2.16.0-6.fc6 -- fix a problem recently introduced in the smart card driver - loading code (bug 206882) - -* Thu Sep 14 2006 Ray Strode - 1:2.16.0-5.fc6 -- don't leak pipe fds (bug 206709) - -* Thu Sep 14 2006 Ray Strode - 1:2.16.0-4.fc6 -- update security token patch to not poll - -* Fri Sep 8 2006 Jesse Keating - 1:2.16.0-3.fc6 -- Apply correct defaults patch - -* Thu Sep 7 2006 Matthias Clasen - 1:2.16.0-2.fc6 -- Change the default theme to FedoraDNA -- Bump redhat-artwork requirement - -* Tue Sep 5 2006 Matthias Clasen - 1:2.16.0-1.fc6 -- Update to 2.16.0 - -* Sat Aug 26 2006 Karsten Hopp - 1:2.15.10-2.fc6 -- buildrequire inttools as this isn't a requirement of scrollkeeper anymore - and thus missing from the buildroot - -* Mon Aug 21 2006 Matthias Clasen - 1:2.15.10-1.fc6 -- Update to 2.15.10 -- Drop upstreamed patch - -* Fri Aug 4 2006 Ray Strode - 1:2.15.9-1 -- update to 2.15.9 - -* Fri Aug 4 2006 Ray Strode - 1:2.15.7-2 -- update gdmsetup pam file to use config-util stacks - -* Thu Aug 3 2006 Ray Strode - 1:2.15.7-1 -- update to 2.15.7 -- drop selinux patch that I don't think was ever finished - -* Thu Aug 3 2006 Ray Strode - 1:2.15.6-14 -- fix face browser - (http://bugzilla.gnome.org/show_bug.cgi?id=349640) -- fix error message reporting - (http://bugzilla.gnome.org/show_bug.cgi?id=349758) - -* Fri Jul 21 2006 Ray Strode - 1:2.15.6-13 -- simply all the security token code by only using one pam stack -- drop lame kill on token removal feature - -* Fri Jul 21 2006 Ray Strode - 1:2.15.6-12 -- move authcookies out of home directories to prevent problems - on nfs/afs mounted home directories (bug 178233). - -* Fri Jul 21 2006 Ray Strode - 1:2.15.6-11 -- really fix annoying dialog problem mentioned in 2.15.6-6 - -* Wed Jul 19 2006 Ray Strode - 1:2.15.6-10 -- center cursor on xinerama head (bug 180085) - -* Tue Jul 18 2006 Ray Strode - 1:2.15.6-9 -- add "kill all sessions on token removal" feature - -* Tue Jul 18 2006 Ray Strode - 1:2.15.6-8 -- reenable session keyring support in pam module (bug 198629) - -* Mon Jul 17 2006 Ray Strode - 1:2.15.6-7 -- make security token support use its own config file in - preparation for modularizing it. - -* Mon Jul 17 2006 Ray Strode - 1:2.15.6-6 -- fix off-by-one in the process-all-ops patch that was causing - an anoying dialog to pop up on each login - -* Sun Jul 16 2006 Ray Strode - 1:2.15.6-5 -- add initial wtmp and btmp logging support - -* Fri Jul 14 2006 Ray Strode - 1:2.15.6-4 -- fix bug in security token support - -* Fri Jul 14 2006 Ray Strode - 1:2.15.6-3 -- fix hang in gdmsetup - -* Fri Jul 14 2006 Ray Strode - 1:2.15.6-2 -- put new pam module at top of stack (bug 198629) - -* Wed Jul 12 2006 Ray Strode - 1:2.15.6-1 -- Update to 2.15.6 - -* Wed Jul 12 2006 Ray Strode - 1:2.15.5-4 -- add new pam module to pam files to support kernel session keyring - -* Wed Jul 12 2006 Jesse Keating - 1:2.15.5-3.1 -- rebuild - -* Tue Jul 11 2006 Ray Strode 1:2.15.5-3 -- add initial support for smart card security tokens - -* Fri Jul 7 2006 Ray Strode 1:2.15.5-2 -- add patch to process all operations when more than one comes - in really quickly -- move default "Please enter your username" message to the - greeter instead of the slave so that it doesn't get stacked if - a pam module has a non default message -- add new message for reseting the current login operation - (like the cancel button does, but accessible via the gdm fifo) - -* Tue Jun 13 2006 Matthias Clasen 1:2.15.5-1 -- Update to 2.15.5 - -* Mon Jun 12 2006 Bill Nottingham 1:2.15.3-8 -- replace automake14 buildreq with automake - -* Thu Jun 8 2006 Ray Strode 1:2.15.3-7 -- fix CVE-2006-2452 - -* Wed Jun 7 2006 Jeremy Katz - 1:2.15.3-6 -- buildrequire the server so that we get the path right in the config file - -* Tue Jun 06 2006 Karsten Hopp 1:2.15.3-5 -- buildrequire libdmx-devel - -* Mon Jun 5 2006 Matthias Clasen - 1:2.15.3-4 -- Require system-logos, not fedora-logos - -* Tue May 23 2006 Ray Strode - 1:2.15.3-3 -- Support xdm -nodaemon option (bug 192461) - -* Mon May 22 2006 Matthias Clasen - 1:2.15.3-2 -- Add missing BuildRequires (#192494) - -* Wed May 17 2006 Matthias Clasen - 1:2.15.3-1 -- Update to 2.15.3 - -* Wed May 10 2006 Matthias Clasen - 1:2.15.0-1 -- Update to 2.15.0 - -* Wed Apr 26 2006 Matthias Clasen - 1:2.14.4-2 -- Update to 2.14.4 - -* Wed Apr 12 2006 Ray Strode - 1:2.14.1-4 -- fix libexecdir substitution problem in configuration file - -* Tue Apr 11 2006 Ray Strode - 1:2.14.1-3 -- Add gdmthemetester.in to the mix (upstream bug 338079) - -* Tue Apr 11 2006 Matthias Clasen - 1:2.14.1-2 -- Update to 2.14.1 - -* Mon Mar 13 2006 Ray Strode - 1:2.14.0-1 -- Update to 2.14.0 - -* Tue Mar 7 2006 Ray Strode - 1:2.13.0.9-4 -- Follow Solaris's lead and default to AlwaysRestartServer=True - (may work around bug 182957) - -* Mon Mar 6 2006 Ray Strode - 1:2.13.0.9-3 -- migrate users with baseXsession=/etc/X11/gdm/Xsession to - /etc/X11/xinit/Xsession - -* Mon Mar 6 2006 Ray Strode - 1:2.13.0.9-2 -- disable sounds completely when disabled in configuration file - (upstream bug 333435) - -* Tue Feb 28 2006 Ray Strode - 1:2.13.0.9-1 -- Update to 2.13.0.9 -- Use new %%post section, written by - Michal Jaegermann (bug 183082) - -* Sat Feb 25 2006 Ray Strode - 1:2.13.0.8-6 -- fix a broken link - -* Fri Feb 24 2006 Ray Strode - 1:2.13.0.8-5 -- change some /etc/X11 bits in the spec file to /etc - -* Sun Feb 19 2006 Ray Strode - 1:2.13.0.8-3 -- add server entry for accel-indirect branch of xorg - -* Wed Feb 15 2006 Ray and Matthias - 1:2.13.0.8-2 -- malloc memory that is later freed - -* Mon Feb 13 2006 Ray Strode - 1:2.13.0.8-1 -- update to 2.13.0.8 - -* Mon Feb 13 2006 Ray Strode - 1:2.13.0.7.0.2006.02.12-2 -- migrate custom.conf settings with /etc/X11/gdm to /etc/gdm - -* Sun Feb 12 2006 Ray Strode - 1:2.13.0.7.0.2006.02.12-1 -- update to cvs snapshot -- move gdm to /etc instead of /etc/X11 -- move custom gdm.conf to sysconfdir instead of symlinking from - datadir (bug 180364) - -* Fri Feb 10 2006 Jesse Keating - 1:2.13.0.7-2.1 -- bump again for double-long bug on ppc(64) - -* Thu Feb 9 2006 Matthias Clasen - 2.13.0.7-2 -- Make gdmsetup use consolehelper -- Don't use deprecated pam_stack - -* Tue Feb 07 2006 Jesse Keating - 1:2.13.0.7-1.1 -- rebuilt for new gcc4.1 snapshot and glibc changes - -* Tue Jan 31 2006 Ray Strode - 1:2.13.0.7-1 -- update to 2.13.0.7 - -* Mon Jan 30 2006 Bill Nottingham -- silence gdm-safe-restart - -* Thu Jan 19 2006 Ray Strode - 1:2.13.0.5-7 -- sed -ie isn't the same as sed -i -e (we want the latter) - -* Wed Jan 18 2006 Christopher Aillon - 1:2.13.0.5-6 -- Add patch to fix clock to default to 24h in locales that expect it (175453) - -* Tue Jan 17 2006 Ray Strode - 1:2.13.0.5-1 -- update to 2.13.0.5 (bug 178099) - -* Tue Jan 17 2006 Ray Strode - 1:2.13.0.4-5 -- add new theme by Diana Fong, Máirín Duffy, and me - -* Mon Jan 16 2006 Ray Strode - 1:2.13.0.4-4 -- improve migration snippet (bug 177443). - -* Fri Jan 13 2006 Ray Strode - 1:2.13.0.4-3 -- migrate X server configuration for pre-modular X configurations. - Problems reported by Dennis Gregorovic - -* Mon Jan 9 2006 Ray Strode - 1:2.13.0.4-2 -- use xinit Xsession again. - -* Mon Jan 9 2006 Ray Strode - 1:2.13.0.4-1 -- update to 2.13.0.4 - -* Fri Dec 09 2005 Jesse Keating -- rebuilt - -* Mon Nov 16 2005 Ray Strode - 1:2.8.0.4-13 -- Don't fallback to xsm, try gnome-session instead -- Require xorg-x11-xinit - -* Mon Nov 14 2005 Ray Strode - 1:2.8.0.4-12 -- Make sure that dbus-launch gets called if available - -* Mon Nov 14 2005 Ray Strode - 1:2.8.0.4-11 -- Don't use X session / setup files anymore. -- Don't install early login init scripts -- remove xsri dependency -- don't prune language lists anymore - -* Sun Nov 13 2005 Jeremy Katz - 1:2.8.0.4-10 -- also fix default xsession for where its moved in modular X - -* Sun Nov 13 2005 Jeremy Katz - 1:2.8.0.4-9 -- change requirements for modular X -- patch to find x server with modular X - -* Thu Oct 20 2005 Ray Strode 1:2.8.0.4-8 -- redhat-artwork was busted, require new version - -* Tue Oct 18 2005 Ray Strode 1:2.8.0.4-7 -- zero-initialize message buffer, - bug fixed by Josh Parson (jbparsons@usdavis.edu) (bug 160603) -- fix typo in redhat-artwork requires line - -* Mon Oct 17 2005 Steve Grubb 1:2.8.0.4-6 -- add login audit patch (bug 170569) - -* Mon Oct 17 2005 Ray Strode 1:2.8.0.4-5 -- bump redhat-artwork requirement to get rid of the boot - throbber for now, since it seems to have reappeared - mysteriously (bug 171025) -p -* Thu Oct 13 2005 Dan Walsh 1:2.8.0.4-4 -- Change to use getseuserbyname - -* Thu Sep 28 2005 Dan Walsh 1:2.8.0.4-3 -- Fix selinux not to fail when in permissive mode - -* Thu Sep 27 2005 Ray Strode 1:2.8.0.4-2 -- remove flexiserver from menus - -* Thu Sep 8 2005 Ray Strode 1:2.8.0.4-1 -- update to 2.8.0.4 - -* Tue Sep 6 2005 Ray Strode 1:2.8.0.2-4 -- Apply clean up patch from Steve Grubb (gnome bug 315388). - -* Tue Aug 30 2005 Ray Strode 1:2.8.0.2-3 -- Prune language list of installed languages -- Make config file noreplace again (bug 167087). - -* Sat Aug 20 2005 Ray Strode 1:2.8.0.2-2 -- hide throbber - -* Fri Aug 19 2005 Ray Strode 1:2.8.0.2-1 -- update to 2.8.0.2 -- disable early login stuff temporarily - -* Thu Aug 18 2005 Ray Strode 1:2.6.0.8-18 -- rebuild - -* Wed Aug 10 2005 Ray Strode 1:2.6.0.8-17 -- Prune uninstalled languages from language list. - -* Mon May 23 2005 Ray Strode 1:2.6.0.8-16 -- Make sure username/password incorrect message gets displayed - (bug 158127). -- reread system locale before starting gdm in early login mode - (bug 158376). - -* Thu May 19 2005 Ray Strode 1:2.6.0.8-15 -- Take out some syslog spew (bug 157711). - -* Thu May 12 2005 Ray Strode 1:2.6.0.8-14 -- Fix processing of new-line characters that got broken - in 2.6.0.8-11 (bug 157442). - -* Tue May 3 2005 Ray Strode 1:2.6.0.8-12 -- Fix processing of non-ascii characters that got broken - in 2.6.0.8-11, found by Miloslav Trmac , - (bug 156590). - -* Thu Apr 28 2005 Ray Strode 1:2.6.0.8-11 -- Fix halt command (bug 156299) -- Process all messages sent to the greeter in a read, not just - the first - -* Wed Apr 27 2005 Jeremy Katz - 1:2.6.0.8-10 -- silence %%postun - -* Tue Apr 26 2005 Ray Strode 1:2.6.0.8-9 -- Change default standard greeter theme to clearlooks and - default graphical greeter theme to Bluecurve specifically. - -- Change default path values (bug 154280) - -* Mon Apr 25 2005 Matthias Clasen 1:2.6.0.8-8 -- for early-login, delay XDMCP initialization until allow-login - -* Sun Apr 24 2005 Ray Strode 1:2.6.0.8-7 -- calling gdm_debug and g_strdup_printf from signal handlers are - bad news (Spotted by Mark McLoughlin ). - -* Tue Apr 19 2005 Matthias Clasen 1:2.6.0.8-6 -- Add a throbber for early login - -* Mon Apr 18 2005 Ray Strode 1:2.6.0.8-5 -- Don't install gnome.desktop to /usr/share/xsessions (bug 145791) - -* Thu Apr 14 2005 Matthias Clasen 1:2.6.0.8-4 -- Don't do early-login if firstboot is going to run -- Make early-login work with timed and automatic logins - -* Wed Apr 13 2005 Ray Strode 1:2.6.0.8-3 -- Don't hard code dpi setting to 96.0, but instead look at - Xft.dpi - -* Wed Apr 13 2005 Ray Strode 1:2.6.0.8-2 -- touch /var/lock/subsys/gdm-early-login so gdm gets killed on - runlevel changes (bug 154414) -- don't try to use system dpi settings for canvas text (bug 127532) -- merge resource database from displays other than :0 - -* Sat Apr 2 2005 Ray Strode 1:2.6.0.8-1 -- update to 2.6.0.8 -- add new init scripts to support early-login mode - -* Tue Mar 29 2005 Ray Strode 1:2.6.0.7-8 -- Add a --wait-for-bootup cmdline option. - -* Mon Mar 28 2005 Christopher Aillon -- rebuilt - -* Fri Mar 25 2005 Christopher Aillon 1:2.6.0.7-6 -- Update the GTK+ theme icon cache on (un)install - -* Fri Mar 11 2005 Alexandre Oliva 1:2.6.0.7-5 -- fix patch for bug 149899 (fixes bug 150745) - -* Wed Mar 09 2005 Than Ngo 1:2.6.0.7-4 -- add OnlyShowIn=GNOME; - -* Mon Feb 28 2005 Ray Strode 1:2.6.0.7-3 -- seteuid/egid as user before testing for presence of - user's home directory (fixes bug 149899) - -* Thu Feb 10 2005 Ray Strode 1:2.6.0.7-2 -- Turn off "switchdesk" mode by default which accidentally got - turned on by default in 2.6.0.5-4 - -* Wed Feb 2 2005 Matthias Clasen 1:2.6.0.7-1 -- Update to 2.6.0.7 - -* Tue Jan 25 2005 Ray Strode 1:2.6.0.5-11 -- Fix bug in greeter sort-session-list patch where selecting - a session did nothing (bug 145626) - -* Thu Dec 9 2004 Dan Walsh 1:2.6.0.5-10 -- Remove pam_selinux from gdmsetup pam file - -* Wed Dec 1 2004 Ray Strode 1:2.6.0.5-9 -- Look up and use username instead of assuming that user entered - login is cannonical. Patch from - Mike Patnode (fixes bug 141380). - -* Thu Nov 11 2004 Ray Strode 1:2.6.0.5-8 -- Sort session list so that default session comes out on top - (fixes bug 107324) - -* Wed Nov 10 2004 Ray Strode 1:2.6.0.5-7 -- Make desktop file symlink instead of absolute (bug 104390) -- Add flexiserver back to menus - -* Wed Oct 20 2004 Ray Strode 1:2.6.0.5-6 -- Clean up xses if the session was successfullly completed. - (fixes bug #136382) - -* Tue Oct 19 2004 Ray Strode 1:2.6.0.5-5 -- Prefer nb_NO over no_NO for Norwegian (fixes bug #136033) - -* Thu Oct 7 2004 Alexander Larsson - 1:2.6.0.5-4 -- Change default greeter theme to "Default", require - redhat-artwork with Default symlink. - -* Wed Sep 29 2004 Ray Strode 1:2.6.0.5-3 -- Check if there is a selected node before using iterator. - (fixes bug #133329). - -* Fri Sep 24 2004 Ray Strode 1:2.6.0.5-2 -- Don't mess with gdmphotosetup categories. Upstream categories - are fine. - -* Mon Sep 20 2004 Ray Strode 1:2.6.0.5-1 -- update to 2.6.0.5 - -* Tue Aug 3 2004 Matthias Clasen 1:2.6.0.3-5 -- fix messed up changelog - -* Tue Aug 3 2004 Matthias Clasen 1:2.6.0.3-4 -- rebuilt - -* Thu Aug 2 2004 Ray Strode 1:2.6.0.3-3 -- rebuilt - -* Mon Jul 26 2004 Bill Nottingham 1:2.6.0.3-2 -- fix theme (#128599) - -* Thu Jun 17 2004 Ray Strode 1:2.6.0.3-1 -- update to 2.6.0.3 (fixes bug #117677) - -* Tue Jun 15 2004 Elliot Lee -- rebuilt - -* Fri May 21 2004 Matthias Clasen 1:2.6.0.0-5 -- rebuild - -* Mon May 17 2004 Than Ngo 1:2.6.0.0-4 -- add patch to build gdm-binary with PIE - -* Thu Apr 22 2004 Mark McLoughlin - 1:2.6.0.0-3 -- Update the "use switchdesk" message to only be display when - switchdesk-gui is installed and to not reference a non existant - menu item (bug #121460) - -* Fri Apr 2 2004 Colin Walters 1:2.6.0.0-2 -- Always put session errors in /tmp, in preparation for - completely preventing gdm from writing to /home/ - -* Thu Apr 1 2004 Alex Larsson 1:2.6.0.0-1 -- update to 2.6.0.0 - -* Tue Mar 16 2004 Dan Walsh 1:2.5.90.3-1 -- Use selinux patch again - -* Tue Mar 16 2004 Dan Walsh 1:2.5.90.3-1 -- Stop using selinux patch and use pam_selinux instead. - -* Wed Mar 10 2004 Alex Larsson 1:2.5.90.2-1 -- update to 2.5.90.2 - -* Tue Mar 02 2004 Elliot Lee -- rebuilt - -* Thu Feb 26 2004 Alexander Larsson 1:2.5.90.1-1 -- update to 2.5.90.1 - -* Fri Feb 13 2004 Elliot Lee -- rebuilt - -* Tue Feb 03 2004 Warren Togami 1:2.4.4.5-9 -- add two lines to match upstream CVS to xdmcp_sessions.patch - Fully resolves #110315 and #113154 - -* Sun Feb 01 2004 Warren Togami 1:2.4.4.5-8 -- patch30 xdmcp_session counter fix from gdm-2.5.90.0 #110315 -- automake14 really needed, not automake -- BR libcroco-devel, libcroco-devel, libattr-devel, gettext -- conditionally BR libselinux-devel -- explicit epoch in all deps -- make the ja.po time format change with a sed expression rather than - overwriting the whole file (Petersen #113995) - -* Thu Jan 29 2004 Jeremy Katz - 1:2.4.4.5-7 -- fix build with current auto* - -* Tue Jan 27 2004 Jeremy Katz 1:2.4.4.5-5 -- try a simple rebuild for libcroco abi change - -* Mon Jan 26 2004 Dan Walsh 1:2.4.4.5-4 -- Fix call to is_selinux_enabled - -* Fri Jan 16 2004 Dan Walsh 1:2.4.4.5-3 -- Use /sbin/reboot and /sbin/poweroff instead of consolehelper version - -* Thu Oct 30 2003 Dan Walsh 1:2.4.4.5-2.sel -- turn on SELinux - -* Mon Oct 20 2003 Jonathan Blandford 2:2.4.4.5-1 -- get rid of the teal - -* Fri Oct 17 2003 Jonathan Blandford 1:2.4.4.5-1 -- new version - -* Thu Oct 9 2003 Jonathan Blandford 1:2.4.4.3-6.sel -- new patch from George to fix #106189 -- change bg color in rhdefaults patch -- turn off SELinux - -* Thu Oct 8 2003 Dan Walsh 1:2.4.4.3-6.sel -- turn on SELinux - -* Tue Oct 7 2003 Alexander Larsson 1:2.4.4.3-5 -- Fix greeter line-breaking crash (rest of #106189) - -* Tue Oct 7 2003 Alexander Larsson 1:2.4.4.3-4 -- Set the BaseXSession properly in the config. -- This fixes parts of bug #106189 - -* Mon Oct 6 2003 Havoc Pennington 1:2.4.4.3-3 -- change DefaultSession=Default.desktop to DefaultSession=default.desktop -- SELinux off again - -* Fri Oct 3 2003 Dan Walsh 1:2.4.4.3-2.sel -- turn on SELinux - -* Thu Oct 2 2003 Havoc Pennington 1:2.4.4.3-1 -- 2.4.4.3 -- --without-selinux for now, since libselinux not in the buildroot - -* Mon Sep 8 2003 Dan Walsh 1:2.4.4.0-4 -- turn off SELinux - -* Fri Sep 5 2003 Dan Walsh 1:2.4.4.0-3.sel -- turn on SELinux - -* Thu Sep 4 2003 Alexander Larsson 1:2.4.4.0-2 -- Use the right default session (#103546) - -* Wed Sep 3 2003 Alexander Larsson 1:2.4.4.0-1 -- update to 2.4.4.0 -- update to georges new selinux patch - -* Fri Aug 29 2003 Elliot Lee 1:2.4.2.102-2 -- Remove scrollkeeper files - -* Tue Aug 26 2003 George Lebl 1:2.4.2.102-1 -- updated to 2.4.2.102 -- removed outdated patches -- Use Xsetup_0 only for :0 since that's the way it works - for xdm -- remove the gnome.desktop file, its going into gnome-session - -* Thu Aug 14 2003 Havoc Pennington 1:2.4.1.6-1 -- update to latest bugfix version on george's advice -- remove setlocale patch that's upstream -- remove console setup patches that are upstream - -* Thu Jun 12 2003 Dan Walsh 2.4.1.3-9 -- Port to SELinux - -* Wed Jun 04 2003 Elliot Lee -- rebuilt - -* Tue Jun 3 2003 Jeff Johnson -- add explicit epoch's where needed. - -* Sun May 04 2003 Florian La Roche -- fix post: localstatedir -> _localstatedir - -* Thu May 1 2003 Havoc Pennington 1:2.4.1.3-6 -- enable UTF-8 for CJK - -* Mon Feb 24 2003 Elliot Lee -- debuginfo rebuild - -* Thu Feb 20 2003 Owen Taylor -- Run the error dialogs under /bin/sh --login, so we - get lang.sh, and thus unicode_start running. Fixes - the X-doesn't-start dialog showing up as random - blinking characters. - -* Fri Feb 14 2003 Havoc Pennington 1:2.4.1.3-2 -- nuke buildreq Xft - -* Wed Feb 5 2003 Havoc Pennington 1:2.4.1.3-1 -- upgrade to 2.4.1.3 - -* Mon Feb 3 2003 Matt Wilson 1:2.4.1.1-6 -- added gdm-2.4.1.1-64bit.patch to fix 64 bit crash in cookie - generation (#83334) - -* Mon Feb 3 2003 Owen Taylor -- Add patch to fix problem where setting LC_COLLATE=C would give LC_MESSAGES=wa_BE (#82019) - -* Thu Jan 30 2003 Matt Wilson 1:2.4.1.1-3 -- fix pam.d entry, pam_env wasn't properly patched -- disable optimizations on x86_64 to work around gcc bug - -* Wed Jan 22 2003 Tim Powers -- rebuilt - -* Mon Jan 20 2003 Owen Taylor -- Upgrade to 2.4.1.1 (Fixes #81907) -- Redirect stdout of kill to /dev/null (#80814) - -* Thu Jan 9 2003 Havoc Pennington -- 2.4.1.0 -- add patch from george to ask "are you sure?" for shutdown/reboot since it's now just one click away - -* Thu Dec 19 2002 Havoc Pennington -- 2.4.0.12 -- update new patch for no-utf8-in-cjk -- drop patch to photo setup, now upstream -- drop confdocs patch now upstream -- move all the gdm.conf changes into single "rhconfig" patch -- remove "sid-fix" patch now upstream - -* Mon Nov 11 2002 Nalin Dahyabhai 2.4.0.7-14 -- remove the directory part of module specifications from the PAM config files, - allowing the same PAM config to work for either arch on multilib boxes - -* Thu Sep 5 2002 Owen Taylor -- Change zh_CN entry in language menu to zh_CN.GB18030 - -* Thu Sep 5 2002 Akira TAGOH 2.4.0.7-12 -- copied gdm-ja.po to ja.po. - -* Mon Sep 2 2002 Owen Taylor -- Fix problem where gdm was opening ~/.xsession-errors itself to bad effect - -* Sat Aug 31 2002 Havoc Pennington -- include ja.po with new date format - -* Wed Aug 28 2002 Havoc Pennington -- remove noreplace on gdm.conf #71309 -- make gnome-gdmsetup absolute, #72910 - -* Wed Aug 28 2002 Havoc Pennington -- put /usr/X11R6/bin in path for now fixes #72781 -- use proper i18n algorithm for word wrap, #71937 -- remove greek text from language picker due to lack - of greek font -- reorder PAM config file #72657 - -* Wed Aug 28 2002 Havoc Pennington -- improve gdmsetup icon -- remove GNOME session, we will instead put it in gnome-session -- apply patch from george to make gdmphotosetup file selector - work - -* Mon Aug 26 2002 Elliot Lee 2.4.0.7-6 -- Patches for #64902, #66486, #68483, #71308 -- post-install script changes from the gdm.spec mentioned in #70965 -- noreplace on gdm.conf for #71309 - -* Sun Aug 25 2002 Havoc Pennington -- put in a patch from george to fix some setsid()/kill() confusion - possibly fixing #72295 -- turn off UseCirclesInEntry for now, fixes #72433 - -* Tue Aug 20 2002 Alexander Larsson -- Set UseCirclesInEntry to true in config - -* Thu Aug 15 2002 Havoc Pennington -- rename Gnome session to GNOME, this was just bugging me - -* Thu Aug 8 2002 Havoc Pennington -- 2.4.0.7 with bugfixes George kindly did for me, - including mnemonics for the graphical greeter -- use Wonderland gtk theme for the nongraphical greeter -- remove patches that are now upstream - -* Tue Jul 30 2002 Havoc Pennington -- update rhconfig patch -- use pam_timestamp for the config tool -- link to a desktop file in redhat-menus -- update .gnome2 patch, filed upstream bug -- 2.4.0.4 -- rebuild with new gail, librsvg2 - -* Tue Jun 25 2002 Owen Taylor -- Require redhat-artwork, make the default greeter theme Wonderland -- Look for all configuration in .gnome2 not .gnome. This avoids problems - with changes in the set of session/lang. -- Remove English from locale.alias, make most locales UTF-8 -- Call find_lang with the right name - -* Sun Jun 16 2002 Havoc Pennington -- rebuild for new libs -- put gdm-autologin pam config file in file list, hope - its absence wasn't deliberate -- use desktop-file-install - -* Mon Jun 10 2002 Havoc Pennington -- rebuild in different environment - -* Mon Jun 10 2002 Havoc Pennington -- 2.4.0.0 - -* Tue May 21 2002 Havoc Pennington -- rebuild in different environment - -* Tue May 21 2002 Havoc Pennington -- 2.3.90.3 - -* Tue May 14 2002 Matt Wilson 2.3.90.2.90-1 -- pulled from current CVS, named it 2.3.90.2.90-1 - -* Thu Feb 14 2002 Havoc Pennington -- rebuild for new libs -- add URL tag - -* Mon Feb 11 2002 Alex Larsson 2.3.90.1.90-1 -- Updated to a cvs snapshot that has the new greeter. - -* Thu Jan 24 2002 Havoc Pennington -- rebuild in rawhide - -* Tue Sep 4 2001 Havoc Pennington -- fix #52997 (ukrainian in language list) - -* Fri Aug 31 2001 Havoc Pennington -- Add po files from sources.redhat.com - -* Mon Aug 27 2001 Havoc Pennington -- Add po files from sources.redhat.com - -* Wed Aug 15 2001 Nalin Dahyabhai -- set SESSION to true in console.apps control file - -* Tue Aug 14 2001 Havoc Pennington -- change default title font to work in CJK, #51698 - -* Wed Aug 8 2001 Bill Nottingham -- fix %%pre for using /var/gdm as home dir - -* Sun Aug 5 2001 Nalin Dahyabhai -- Tweak PAM setup for gdmconfig to match other consolehelper users - -* Fri Aug 3 2001 Owen Taylor -- Set RUNNING_UNDER_GDM when running display init script -- Run xsri as the background program - -* Thu Aug 02 2001 Havoc Pennington -- Change how session switching works, #49480 -- don't offer to make Failsafe the default, #49479 - -* Thu Aug 02 2001 Havoc Pennington -- clean up some format string mess, and don't - log username to syslog, #5681 -- own some directories #50692 - -* Wed Aug 01 2001 Havoc Pennington -- require/buildrequire latest gnome-libs, to compensate - for upstream crackrock. #50554 - -* Tue Jul 31 2001 Havoc Pennington -- get rid of GiveConsole/TakeConsole, bug #33710 - -* Sun Jul 22 2001 Havoc Pennington -- use Raleigh theme for gdm - -* Thu Jul 19 2001 Havoc Pennington -- depend on usermode, xinitrc - -* Thu Jul 19 2001 Havoc Pennington -- build requires pam-devel, should fix #49448 - -* Mon Jul 16 2001 Havoc Pennington -- log to /var/log/gdm/* - -* Mon Jul 16 2001 Havoc Pennington -- make Halt... power off - -* Tue Jul 10 2001 Havoc Pennington -- gdm user's homedir to /var/gdm not /home/gdm - -* Mon Jul 09 2001 Havoc Pennington -- put pam.d/gdm back in file list - -* Sun Jul 08 2001 Havoc Pennington -- upgrade to 2.2.3.1, pray this fixes more than it breaks - -* Thu Jul 05 2001 Havoc Pennington -- add "rpm" user to those not to show in greeter - -* Tue Jul 03 2001 Havoc Pennington -- Upgrade to 2.2.3 -- require usermode since configure script now checks for it - -* Fri Jun 01 2001 Havoc Pennington -- Prereq for scrollkeeper-update - -* Thu May 30 2001 Havoc Pennington -- New CVS snap with the "no weird sessions" options; - more default settings changes - -* Wed May 30 2001 Havoc Pennington -- Change a bunch of default settings; remaining fixes will involve C hacking - -* Wed May 30 2001 Havoc Pennington -- After, oh, 2 years or so, finally upgrade version and set - release to 1. Remove all hacks and patches, pretty much; - this will break a few things, will be putting them back - via GNOME CVS. All changes should go in 'gdm2' module in - CVS for now. - - This RPM enables all kinds of features that I'm going to turn - off shortly, so don't get excited about them. ;-) - -* Thu Mar 22 2001 Nalin Dahyabhai -- reinitialize pam credentials after calling initgroups() -- the - credentials may be group memberships - -* Mon Mar 19 2001 Owen Taylor -- Fix colors patch - -* Thu Mar 15 2001 Havoc Pennington -- translations - -* Mon Mar 5 2001 Preston Brown -- don't screw up color map on 8 bit displays - -* Fri Feb 23 2001 Trond Eivind Glomsrød -- langify -- Don't define and use "ver" and "nam" at the top of the spec file -- use %%{_tmppath} - -* Tue Feb 13 2001 Tim Powers -- don't allow gdm to show some system accounts in the browser bugzilla - #26898 - -* Fri Jan 19 2001 Akira TAGOH -- Updated Japanese translation. - -* Tue Jan 02 2001 Havoc Pennington -- add another close() to the fdleak patch, bugzilla #22794 - -* Sun Aug 13 2000 Owen Taylor -- Return to toplevel main loop and start Xdcmp if enabled - (Bug #16106) - -* Fri Aug 11 2000 Jonathan Blandford -- Up Epoch and release - -* Wed Aug 02 2000 Havoc Pennington -- Requires Xsession script - -* Wed Jul 19 2000 Owen Taylor -- Italian is better as it_IT than it_CH (bugzilla 12425) - -* Mon Jul 17 2000 Jonathan Blandford -- Don't instally gdmconfig as it doesn't work. - -* Fri Jul 14 2000 Havoc Pennington -- Rearrange code to avoid calling innumerable system calls - in a signal handler - -* Fri Jul 14 2000 Havoc Pennington -- Verbose debug spew for infinite loop stuff - -* Fri Jul 14 2000 Havoc Pennington -- Try to fix infinite loops on X server failure - -* Thu Jul 13 2000 Prospector -- automatic rebuild - -* Thu Jun 29 2000 Havoc Pennington -- Remove Docdir - -* Mon Jun 19 2000 Havoc Pennington -- Fix file descriptor leak (Bugzilla 12301) - -* Mon Jun 19 2000 Havoc Pennington -- Apply security errata patch we released for 6.2 -- Add Gnome.session back, don't know when it disappeared or why - -* Thu Jun 1 2000 Nalin Dahyabhai -- modify PAM setup to use system-auth - -* Fri May 19 2000 Havoc Pennington -- rebuild for the Winston tree - -* Fri Feb 04 2000 Havoc Pennington -- Modify Default.session and Failsafe.session not to add -login option to bash -- exec the session scripts with the user's shell with a hyphen prepended -- doesn't seem to actually work yet with tcsh, but it doesn't seem to - break anything. needs a look to see why it doesn't work - -* Fri Feb 04 2000 Havoc Pennington -- Link PreSession/Default to xdm/GiveConsole -- Link PostSession/Default to xdm/TakeConsole - -* Fri Feb 04 2000 Havoc Pennington -- Fix the fix to the fix (8877) -- remove docs/gdm-manual.txt which doesn't seem to exist from %%doc - -* Fri Feb 04 2000 Havoc Pennington -- Enhance 8877 fix by not deleting the "Please login" - message - -* Fri Feb 04 2000 Havoc Pennington -- Try to fix bug 8877 by clearing the message below - the entry box when the prompt changes. may turn - out to be a bad idea. - -* Mon Jan 17 2000 Elliot Lee -- Fix bug #7666: exec Xsession instead of just running it - -* Mon Oct 25 1999 Jakub Jelinek -- Work around so that russian works (uses koi8-r instead - of the default iso8859-5) - -* Tue Oct 12 1999 Owen Taylor -- Try again - -* Tue Oct 12 1999 Owen Taylor -- More fixes for i18n - -* Tue Oct 12 1999 Owen Taylor -- Fixes for i18n - -* Fri Sep 26 1999 Elliot Lee -- Fixed pipewrite bug (found by mkj & ewt). - -* Fri Sep 17 1999 Michael Fulbright -- added requires for pam >= 0.68 - -* Fri Sep 10 1999 Elliot Lee -- I just update this package every five minutes, so any recent changes are my fault. - -* Thu Sep 02 1999 Michael K. Johnson -- built gdm-2.0beta2 - -* Mon Aug 30 1999 Michael K. Johnson -- built gdm-2.0beta1 - -* Tue Aug 17 1999 Michael Fulbright -- included rmeier@liberate.com patch for tcp socket X connections - -* Mon Apr 19 1999 Michael Fulbright -- fix to handling ancient gdm config files with non-standard language specs -- dont close display connection for xdmcp connections, else we die if remote - end dies. - -* Fri Apr 16 1999 Michael Fulbright -- fix language handling to set GDM_LANG variable so gnome-session - can pick it up - -* Wed Apr 14 1999 Michael Fulbright -- fix so certain dialog boxes dont overwrite background images - -* Wed Apr 14 1999 Michael K. Johnson -- do not specify -r 42 to useradd -- it doesn't know how to fall back - if id 42 is already taken - -* Fri Apr 9 1999 Michael Fulbright -- removed suspend feature - -* Mon Apr 5 1999 Jonathan Blandford -- added patch from otaylor to not call gtk funcs from a signal. -- added patch to tab when username not added. -- added patch to center About box (and bring up only one) and ignore "~" - and ".rpm" files. - -* Fri Mar 26 1999 Michael Fulbright -- fixed handling of default session, merged all gdmgreeter patches into one - -* Tue Mar 23 1999 Michael Fulbright -- remove GNOME/KDE/AnotherLevel session scripts, these have been moved to - the appropriate packages instead. -- added patch to make option menus always active (security problem otherwise) -- added jrb's patch to disable stars in passwd entry field - -* Fri Mar 19 1999 Michael Fulbright -- made sure /usr/bin isnt in default path twice -- strip binaries - -* Wed Mar 17 1999 Michael Fulbright -- fixed to use proper system path when root logs in - -* Tue Mar 16 1999 Michael Fulbright -- linked Init/Default to Red Hat default init script for xdm -- removed logo from login dialog box - -* Mon Mar 15 1999 Michael Johnson -- pam_console integration - -* Tue Mar 09 1999 Michael Fulbright -- added session files for GNOME/KDE/AnotherLevel/Default/Failsafe -- patched gdmgreeter to not complete usernames -- patched gdmgreeter to not safe selected session permanently -- patched gdmgreeter to center dialog boxes - -* Mon Mar 08 1999 Michael Fulbright -- removed comments from gdm.conf file, these are not parsed correctly - -* Sun Mar 07 1999 Michael Fulbright -- updated source line for accuracy - -* Fri Feb 26 1999 Owen Taylor -- Updated patches for 1.0.0 -- Fixed some problems in 1.0.0 with installation directories -- moved /usr/var/gdm /var/gdm - -* Thu Feb 25 1999 Michael Fulbright -- moved files from /usr/etc to /etc - -* Tue Feb 16 1999 Michael Johnson -- removed commented-out #1 definition -- put back after testing gnome-libs - comment patch - -* Sat Feb 06 1999 Michael Johnson -- initial packaging diff --git a/SOURCES/default.pa-for-gdm b/default.pa-for-gdm similarity index 100% rename from SOURCES/default.pa-for-gdm rename to default.pa-for-gdm diff --git a/gdm.spec b/gdm.spec new file mode 100644 index 0000000..e9a8189 --- /dev/null +++ b/gdm.spec @@ -0,0 +1,3467 @@ +## START: Set by rpmautospec +## (rpmautospec version 0.6.5) +## RPMAUTOSPEC: autorelease, autochangelog +%define autorelease(e:s:pb:n) %{?-p:0.}%{lua: + release_number = 4; + base_release_number = tonumber(rpm.expand("%{?-b*}%{!?-b:1}")); + print(release_number + base_release_number - 1); +}%{?-e:.%{-e*}}%{?-s:.%{-s*}}%{!?-n:%{?dist}} +## END: Set by rpmautospec + +%global _hardened_build 1 + +%define gtk3_version 2.99.2 + +%global tarball_version %%(echo %{version} | tr '~' '.') + +Name: gdm +Epoch: 1 +Version: 47~alpha +Release: %autorelease +Summary: The GNOME Display Manager + +License: GPL-2.0-or-later +URL: https://wiki.gnome.org/Projects/GDM +Source0: https://download.gnome.org/sources/gdm/47/gdm-%{tarball_version}.tar.xz +Source1: org.gnome.login-screen.gschema.override + +# moved here from pulseaudio-gdm-hooks-11.1-16 +Source5: default.pa-for-gdm + +Source6: gdm.sysusers + +# Downstream patches +Patch: 0001-Honor-initial-setup-being-disabled-by-distro-install.patch +Patch: 0001-data-add-system-dconf-databases-to-gdm-profile.patch +Patch: 0001-xorg-detect.patch +Patch: wayland-only.patch +Patch: 0001-Add-headless-session-files.patch + +BuildRequires: dconf +BuildRequires: desktop-file-utils +BuildRequires: gettext-devel +BuildRequires: git-core +BuildRequires: meson +BuildRequires: pam-devel +BuildRequires: pkgconfig(accountsservice) >= 0.6.3 +BuildRequires: pkgconfig(audit) +BuildRequires: pkgconfig(check) +BuildRequires: pkgconfig(gobject-introspection-1.0) +BuildRequires: pkgconfig(gtk+-3.0) >= %{gtk3_version} +BuildRequires: pkgconfig(gudev-1.0) +BuildRequires: pkgconfig(iso-codes) +BuildRequires: pkgconfig(json-glib-1.0) +BuildRequires: pkgconfig(libcanberra-gtk3) +BuildRequires: pkgconfig(libkeyutils) +BuildRequires: pkgconfig(libselinux) +BuildRequires: pkgconfig(libsystemd) +BuildRequires: pkgconfig(ply-boot-client) +BuildRequires: pkgconfig(systemd) +BuildRequires: pkgconfig(x11) +BuildRequires: pkgconfig(xau) +BuildRequires: systemd-rpm-macros +BuildRequires: which +BuildRequires: yelp-tools + +Provides: service(graphical-login) = %{name} + +Requires: accountsservice +Requires: dconf +# since we use it, and pam spams the log if the module is missing +Requires: gnome-keyring-pam +Requires: gnome-session +Requires: gnome-session-wayland-session +Requires: gnome-settings-daemon >= 3.27.90 +Requires: gnome-shell +Requires: iso-codes +# We need 1.0.4-5 since it lets us use "localhost" in auth cookies +Requires: libXau >= 1.0.4-4 +Requires: pam +Requires: /sbin/nologin +Requires: systemd >= 186 +Requires: system-logos +Requires: python3-pam + +# Until the greeter gets dynamic user support, it can't +# use a user bus +Requires: /usr/bin/dbus-run-session + +%{?sysusers_requires_compat} + +Provides: gdm-libs%{?_isa} = %{epoch}:%{version}-%{release} + +%description +GDM, the GNOME Display Manager, handles authentication-related backend +functionality for logging in a user and unlocking the user's session after +it's been locked. GDM also provides functionality for initiating user-switching, +so more than one user can be logged in at the same time. It handles +graphical session registration with the system for both local and remote +sessions (in the latter case, via GNOME Remote Desktop and the RDP protocol). + +%package devel +Summary: Development files for gdm +Requires: %{name}%{?_isa} = %{epoch}:%{version}-%{release} +Requires: gdm-pam-extensions-devel = %{epoch}:%{version}-%{release} + +%description devel +The gdm-devel package contains headers and other +files needed to build custom greeters. + +%package pam-extensions-devel +Summary: Macros for developing GDM extensions to PAM +Requires: pam-devel + +%description pam-extensions-devel +The gdm-pam-extensions-devel package contains headers and other +files that are helpful to PAM modules wishing to support +GDM specific authentication features. + +%prep +%autosetup -S git -p1 -n gdm-%{tarball_version} + +%build +%meson -Dpam-prefix=%{_sysconfdir} \ + -Drun-dir=/run/gdm \ + -Dudev-dir=%{_udevrulesdir} \ + -Ddefault-path=/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin \ + -Ddefault-pam-config=redhat \ + -Ddistro=redhat \ + -Dprofiling=true \ + -Dplymouth=enabled \ + -Dselinux=enabled \ + -Dxdmcp=disabled + +%meson_build + + +%install +mkdir -p %{buildroot}%{_sysconfdir}/gdm/Init +mkdir -p %{buildroot}%{_sysconfdir}/gdm/PreSession +mkdir -p %{buildroot}%{_sysconfdir}/gdm/PostSession + +%meson_install + +install -p -m644 -D %{SOURCE5} %{buildroot}%{_localstatedir}/lib/gdm/.config/pulse/default.pa +install -p -m644 -D %{SOURCE6} %{buildroot}%{_sysusersdir}/%{name}.conf + +# add logo to shell greeter +cp -a %{SOURCE1} %{buildroot}%{_datadir}/glib-2.0/schemas + +# docs go elsewhere +rm -rf %{buildroot}/%{_prefix}/doc + +# create log dir +mkdir -p %{buildroot}/var/log/gdm + +rm -f %{buildroot}%{_sysconfdir}/gdm/Xsession +rm -f %{buildroot}%{_libexecdir}/gdm-x-session + +mkdir -p %{buildroot}%{_datadir}/gdm/autostart/LoginWindow + +mkdir -p %{buildroot}/run/gdm + +mkdir -p %{buildroot}%{_sysconfdir}/dconf/db/gdm.d/locks + +rm -f %{buildroot}%{_udevrulesdir}/61-gdm.rules + +%find_lang gdm --with-gnome + +%pre +%sysusers_create_compat %{SOURCE6} + +%post +# if the user already has a config file, then migrate it to the new +# location; rpm will ensure that old file will be renamed + +custom=/etc/gdm/custom.conf + +if [ $1 -ge 2 ] ; then + if [ -f /usr/share/gdm/config/gdm.conf-custom ]; then + oldconffile=/usr/share/gdm/config/gdm.conf-custom + elif [ -f /etc/X11/gdm/gdm.conf ]; then + oldconffile=/etc/X11/gdm/gdm.conf + fi + + # Comment out some entries from the custom config file that may + # have changed locations in the update. Also move various + # elements to their new locations. + + [ -n "$oldconffile" ] && sed \ + -e 's@^command=/usr/X11R6/bin/X@#command=/usr/bin/Xorg@' \ + -e 's@^Xnest=/usr/X11R6/bin/Xnest@#Xnest=/usr/X11R6/bin/Xnest@' \ + -e 's@^BaseXsession=/etc/X11/xdm/Xsession@#BaseXsession=/etc/X11/xinit/Xsession@' \ + -e 's@^BaseXsession=/etc/X11/gdm/Xsession@#&@' \ + -e 's@^BaseXsession=/etc/gdm/Xsession@#&@' \ + -e 's@^Greeter=/usr/bin/gdmgreeter@#Greeter=/usr/libexec/gdmgreeter@' \ + -e 's@^RemoteGreeter=/usr/bin/gdmlogin@#RemoteGreeter=/usr/libexec/gdmlogin@' \ + -e 's@^GraphicalTheme=Bluecurve@#&@' \ + -e 's@^BackgroundColor=#20305a@#&@' \ + -e 's@^DefaultPath=/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin@#&@' \ + -e 's@^RootPath=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin@#&@' \ + -e 's@^HostImageDir=/usr/share/hosts/@#HostImageDir=/usr/share/pixmaps/faces/@' \ + -e 's@^LogDir=/var/log/gdm@#&@' \ + -e 's@^PostLoginScriptDir=/etc/X11/gdm/PostLogin@#&@' \ + -e 's@^PreLoginScriptDir=/etc/X11/gdm/PreLogin@#&@' \ + -e 's@^PreSessionScriptDir=/etc/X11/gdm/PreSession@#&@' \ + -e 's@^PostSessionScriptDir=/etc/X11/gdm/PostSession@#&@' \ + -e 's@^DisplayInitDir=/var/run/gdm.pid@#&@' \ + -e 's@^RebootCommand=/sbin/reboot;/sbin/shutdown -r now;/usr/sbin/shutdown -r now;/usr/bin/reboot@#&@' \ + -e 's@^HaltCommand=/sbin/poweroff;/sbin/shutdown -h now;/usr/sbin/shutdown -h now;/usr/bin/poweroff@#&@' \ + -e 's@^ServAuthDir=/var/gdm@#&@' \ + -e 's@^Greeter=/usr/bin/gdmlogin@Greeter=/usr/libexec/gdmlogin@' \ + -e 's@^RemoteGreeter=/usr/bin/gdmgreeter@RemoteGreeter=/usr/libexec/gdmgreeter@' \ + $oldconffile > $custom +fi + +if [ $1 -ge 2 -a -f $custom ] && grep -q /etc/X11/gdm $custom ; then + sed -i -e 's@/etc/X11/gdm@/etc/gdm@g' $custom +fi + +%systemd_post gdm.service + +%preun +%systemd_preun gdm.service + +%postun +%systemd_postun gdm.service + +%files -f gdm.lang +%doc AUTHORS NEWS README.md +%license COPYING +%dir %{_sysconfdir}/gdm +%config(noreplace) %{_sysconfdir}/gdm/custom.conf +%config %{_sysconfdir}/gdm/Init/* +%config %{_sysconfdir}/gdm/PostLogin/* +%config %{_sysconfdir}/gdm/PreSession/* +%config %{_sysconfdir}/gdm/PostSession/* +%config %{_sysconfdir}/pam.d/gdm-autologin +%config %{_sysconfdir}/pam.d/gdm-password +# not config files +%{_datadir}/gdm/gdm.schemas +%{_sysconfdir}/dbus-1/system.d/gdm.conf +%dir %{_sysconfdir}/gdm/Init +%dir %{_sysconfdir}/gdm/PreSession +%dir %{_sysconfdir}/gdm/PostSession +%dir %{_sysconfdir}/gdm/PostLogin +%dir %{_sysconfdir}/dconf/db/gdm.d +%dir %{_sysconfdir}/dconf/db/gdm.d/locks +%{_datadir}/glib-2.0/schemas/org.gnome.login-screen.gschema.xml +%{_datadir}/glib-2.0/schemas/org.gnome.login-screen.gschema.override +%{_libexecdir}/gdm-runtime-config +%{_libexecdir}/gdm-session-worker +%{_libexecdir}/gdm-wayland-session +%{_libexecdir}/gdm-headless-login-session +%{_sbindir}/gdm +%{_bindir}/gdmflexiserver +%{_bindir}/gdm-config +%{_bindir}/gdm-screenshot +%dir %{_datadir}/dconf +%dir %{_datadir}/dconf/profile +%{_datadir}/dconf/profile/gdm +%dir %{_datadir}/gdm/greeter +%dir %{_datadir}/gdm/greeter/applications +%{_datadir}/gdm/greeter/applications/* +%dir %{_datadir}/gdm/greeter/autostart +%{_datadir}/gdm/greeter/autostart/* +%{_datadir}/gdm/greeter-dconf-defaults +%{_datadir}/gdm/locale.alias +%{_datadir}/gdm/gdb-cmd +%{_datadir}/gnome-session/sessions/gnome-login.session +%{_libdir}/girepository-1.0/Gdm-1.0.typelib +%{_libdir}/security/pam_gdm.so +%{_libdir}/libgdm*.so* +%{_libexecdir}/gdm-auth-config-redhat +%attr(0711, root, gdm) %dir %{_localstatedir}/log/gdm +%attr(1770, gdm, gdm) %dir %{_localstatedir}/lib/gdm +%attr(0700, gdm, gdm) %dir %{_localstatedir}/lib/gdm/.config +%attr(0700, gdm, gdm) %dir %{_localstatedir}/lib/gdm/.config/pulse +%attr(0600, gdm, gdm) %{_localstatedir}/lib/gdm/.config/pulse/default.pa +%attr(0711, root, gdm) %dir /run/gdm +%config %{_sysconfdir}/pam.d/gdm-smartcard +%config %{_sysconfdir}/pam.d/gdm-fingerprint +%{_sysconfdir}/pam.d/gdm-launch-environment +%{_unitdir}/gdm.service +%{_unitdir}/gnome-headless-session@.service +%dir %{_userunitdir}/gnome-session@gnome-login.target.d/ +%{_userunitdir}/gnome-session@gnome-login.target.d/session.conf +%{_sysusersdir}/%{name}.conf + +%files devel +%dir %{_includedir}/gdm +%{_includedir}/gdm/*.h +%exclude %{_includedir}/gdm/gdm-pam-extensions.h +%exclude %{_includedir}/gdm/gdm-choice-list-pam-extension.h +%exclude %{_includedir}/gdm/gdm-custom-json-pam-extension.h +%exclude %{_includedir}/gdm/gdm-pam-extensions-common.h +%dir %{_datadir}/gir-1.0 +%{_datadir}/gir-1.0/Gdm-1.0.gir +%{_libdir}/pkgconfig/gdm.pc + +%files pam-extensions-devel +%{_includedir}/gdm/gdm-pam-extensions.h +%{_includedir}/gdm/gdm-choice-list-pam-extension.h +%{_includedir}/gdm/gdm-custom-json-pam-extension.h +%{_includedir}/gdm/gdm-pam-extensions-common.h +%{_libdir}/pkgconfig/gdm-pam-extensions.pc + +%changelog +## START: Generated by rpmautospec +* Fri Aug 09 2024 Jonas Ådahl - 1:47~alpha-4 +- Add headless session helper files + +* Tue Aug 06 2024 Ray Strode - 1:47~alpha-3 +- Add BuildRequires: git-core + +* Fri Jul 26 2024 Ray Strode - 1:47~alpha-2 +- Drop Xorg support + +* Mon Jul 22 2024 Ray Strode - 1:47~alpha-1 +- Update to 47.alpha + +* Mon Jul 22 2024 Niels De Graef - 1:46.0-4 +- Remove setxkbmap dependency + +* Mon Jun 24 2024 Troy Dawson - 1:46.0-3 +- Bump release for June 2024 mass rebuild + +* Thu May 16 2024 Tomas Pelka - 1:46.0-2 +- Add gating.yaml via API + +* Mon May 06 2024 David King - 1:46.0-1 +- Update to 46.0 + +* Fri Feb 02 2024 Stephen Gallagher - 1:46.alpha-5 +- Restore i686 on Fedora ELN + +* Tue Jan 23 2024 Pavel Březina - 1:46.alpha-4 +- Add missing header files to gdm-pam-extensions-devel + +* Fri Jan 19 2024 Fedora Release Engineering - 1:46.alpha-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Wed Jan 17 2024 Michael Catanzaro - 1:46.alpha-2 +- Bump revision + +* Wed Jan 17 2024 Michael Catanzaro - 1:46.alpha-1 +- Update to 46.alpha + +* Wed Jan 17 2024 Yaakov Selkowitz - 1:45.0.1-8 +- Avoid Xorg build dependency + +* Mon Jan 15 2024 Colin Walters - 1:45.0.1-7 +- Scope ExcludeArch: ix86 to RHEL10+ + +* Tue Jan 09 2024 Troy Dawson - 1:45.0.1-6 +- Exclude i686 + +* Thu Nov 30 2023 Yaakov Selkowitz - 1:45.0.1-5 +- Drop unused yelp-devel dependency + +* Mon Sep 25 2023 Sandro Bonazzola - 1:45.0.1-4 +- Synchronize permission and group ownership for log dir between rpm file + manifest and daemon expectations. + +* Tue Sep 19 2023 Kalev Lember - 1:45.0.1-3 +- Drop some old versioned dependencies + +* Tue Sep 19 2023 Kalev Lember - 1:45.0.1-2 +- Use standard whitespace + +* Tue Sep 19 2023 Kalev Lember - 1:45.0.1-1 +- Update to 45.0.1 + +* Tue Aug 29 2023 Ray Strode - 1:45~beta-1 +- Update to 45.beta + +* Tue Aug 29 2023 Ray Strode - 1:44.1-4 +- Add crash fix, initial-setup fix, and simpledrm fix (other half) + +* Tue Aug 29 2023 Ray Strode - 1:44.1-3 +- Add crash fix, initial-setup fix, and simpledrm fix + +* Wed Jul 19 2023 Fedora Release Engineering - 1:44.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Tue May 09 2023 David King - 1:44.1-1 +- Update to 44.1 + +* Fri Mar 31 2023 David King - 1:44.0-1 +- Update to 44.0 + +* Thu Mar 02 2023 Adam Williamson - 1:43.0-8 +- Backport a follow-up to the EFI patch + +* Thu Mar 02 2023 Ray Strode - 1:43.0-7 +- Fix wayland on virt efi setups + +* Thu Feb 09 2023 Iker Pedrosa - 1:43.0-6 +- pam-redhat: Remove pam_console from service files + +* Thu Jan 19 2023 Fedora Release Engineering - 1:43.0-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Tue Sep 27 2022 Ray Strode - 1:43.0-4 +- Keep F36 behavior for hybrid machines with vendor nvidia driver... + +* Tue Sep 27 2022 Ray Strode - 1:43.0-3 +- Keep F36 behavior for hybrid machines with vendor nvidia driver... + +* Tue Sep 27 2022 Ray Strode - 1:43.0-2 +- Vendor nvidia wayland hybrid graphics udev change + +* Tue Sep 20 2022 Kalev Lember - 1:43.0-1 +- Update to 43.0 + +* Mon Aug 22 2022 Debarshi Ray - 1:42.0-3 +- Use %%sysusers_requires_compat to match %%sysusers_create_compat + +* Thu Jul 21 2022 Fedora Release Engineering - 1:42.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Tue Mar 22 2022 David King - 1:42.0-1 +- Update to 42.0 + +* Fri Jan 21 2022 Olivier Fourdan - 1:41.3-4 +- Bump release + +* Thu Jan 20 2022 Olivier Fourdan - 1:41.3-3 +- Enable Wayland by default with NVIDIA version 510 and above + +* Thu Jan 20 2022 Fedora Release Engineering - 1:41.3-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Wed Jan 12 2022 David King - 1:41.3-1 +- Update to 41.3 + +* Thu Nov 18 2021 Kevin Fenzi - 1:41.0-5 +- Typo fix from Timothée Ravier + +* Wed Nov 17 2021 Timothée Ravier - 1:41.0-4 +- Fix %%sysusers_create_compat macro call + +* Tue Nov 16 2021 Ray Strode - 1:41.0-3 +- Fix Xorg selection when SessionType is unspecified in accountsservice but + session is specified + +* Fri Oct 15 2021 Timothée Ravier - 1:41.0-2 +- Use systemd sysusers config to create user and group + +* Tue Sep 21 2021 Kalev Lember - 1:41.0-1 +- Update to 41.0 + +* Wed Sep 08 2021 Kalev Lember - 1:41~rc-1 +- Update to 41.rc + +* Wed Aug 04 2021 Kalev Lember - 1:41~alpha-3 +- Avoid systemd_requires as per updated packaging guidelines + +* Wed Aug 04 2021 Kalev Lember - 1:41~alpha-2 +- BuildRequire systemd-rpm-macros rather than systemd + +* Wed Jul 28 2021 Ray Strode - 1:41~alpha-1 +- Update to 41.alpha + +* Tue Jul 27 2021 Ray Strode - 1:40.0-10 +- Correct logic error leading to wrong display server preference getting + chosen + +* Tue Jul 27 2021 Ray Strode - 1:40.0-9 +- Correct logic error leading to wrong display server preference getting + chosen + +* Thu Jul 22 2021 Ray Strode - 1:40.0-8 +- Allow vendor nvidia driver users the ability to pick wayland sessions + without editing udev + +* Wed Jul 21 2021 Fedora Release Engineering - 1:40.0-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Wed Jun 16 2021 Christian Stadelmann - 1:40.0-6 +- default.pa: Remove deprecated module-rescue-stream + +* Tue Jun 15 2021 Ray Strode - 1:40.0-5 +- make sure dconf dirs are created + +* Tue Jun 15 2021 Ray Strode - 1:40.0-4 +- drop unused patches + +* Tue Jun 15 2021 Ray Strode - 1:40.0-3 +- Provide gdm specific dconf source + +* Tue Mar 30 2021 Kalev Lember - 1:40.0-2 +- Remove old obsoletes and provides + +* Tue Mar 30 2021 Kalev Lember - 1:40.0-1 +- Update to 40.0 + +* Tue Mar 16 2021 Kalev Lember - 1:40~rc-1 +- Update to 40.rc + +* Wed Mar 10 2021 Benjamin Berg - 1:40~beta-3 +- Add patch to fix issues with the first login after boot + +* Fri Feb 26 2021 Kalev Lember - 1:40~beta-2 +- Drop changelog trimtime as it's set by the build system now + +* Fri Feb 26 2021 Kalev Lember - 1:40~beta-1 +- Update to 40.beta + +* Tue Jan 26 2021 Fedora Release Engineering - 1:3.38.2.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Sat Dec 19 2020 Kalev Lember - 1:3.38.2.1-1 +- Update to 3.38.2.1 + +* Wed Nov 04 2020 Kalev Lember - 1:3.38.2-1 +- Update to 3.38.2 + +* Tue Oct 13 2020 Ray Strode - 1:3.38.1-2 +- Update sources + +* Tue Oct 13 2020 Ray Strode - 1:3.38.1-1 +- Update to 3.38.1 + +* Sat Sep 12 2020 Kalev Lember - 1:3.38.0-1 +- Update to 3.38.0 + +* Tue Sep 08 2020 Debarshi Ray - 1:3.37.90-3 +- Fix Source0 + +* Tue Sep 08 2020 Dan Horák - 1:3.37.90-2 +- Remove stale and unnecessary architecture-specific exceptions + +* Mon Aug 17 2020 Kalev Lember - 1:3.37.90-1 +- Update to 3.37.90 + +* Sat Aug 01 2020 Fedora Release Engineering - 1:3.37.3-4 +- Second attempt - Rebuilt for + https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Tue Jul 28 2020 Adam Jackson - 1:3.37.3-3 +- Requires xhost xmodmap xrdb, not xorg-x11-server-utils + +* Mon Jul 27 2020 Fedora Release Engineering - 1:3.37.3-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Mon Jul 20 2020 Ray Strode - 1:3.37.3-1 +- Update to 3.37.3 + +* Tue May 05 2020 Ray Strode - 1:3.37.1-4 +- Make sure users have dbus-run-session installed since the greeter depends + on it + +* Mon May 04 2020 Ray Strode - 1:3.37.1-3 +- gdm: update build requires + +* Mon May 04 2020 Ray Strode - 1:3.37.1-2 +- Upload sources + +* Mon May 04 2020 Ray Strode - 1:3.37.1-1 +- Update to 3.37.1 + +* Mon May 04 2020 Ray Strode - 1:3.35.1-1 +- gdm: port to meson + +* Tue Apr 07 2020 Ray Strode - 1:3.34.1-3 +- Fix autologin when gdm is started from VT other than VT 1 + +* Tue Jan 28 2020 Fedora Release Engineering - 1:3.34.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Mon Oct 07 2019 Kalev Lember - 1:3.34.1-1 +- Update to 3.34.1 + +* Wed Sep 25 2019 Benjamin Berg - 1:3.34.0-2 +- Add patch to fix fast user switching + +* Wed Sep 11 2019 Kalev Lember - 1:3.34.0-1 +- Update to 3.34.0 + +* Wed Sep 04 2019 Kalev Lember - 1:3.33.92-1 +- Update to 3.33.92 + +* Wed Sep 04 2019 Benjamin Berg - 1:3.33.90-4 +- Add patch to fix environment setup + +* Mon Aug 26 2019 Adam Williamson - 1:3.33.90-3 +- Drop patch from -2, better fix was applied to systemd + +* Thu Aug 22 2019 Adam Williamson - 1:3.33.90-2 +- Revert upstream commit that gives sbin priority in non-root $PATH + +* Tue Aug 20 2019 Kalev Lember - 1:3.33.90-1 +- Update to 3.33.90 + +* Mon Aug 12 2019 Kalev Lember - 1:3.33.4-1 +- Update to 3.33.4 + +* Thu Jul 25 2019 Fedora Release Engineering - 1:3.32.0-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Mon Apr 15 2019 Ray Strode - 1:3.32.0-3 +- avoid wayland if nomodeset is on kernel command line + +* Mon Apr 15 2019 Ray Strode - 1:3.32.0-2 +- Drop CanGraphical patch for now + +* Wed Mar 13 2019 Kalev Lember - 1:3.32.0-1 +- Update to 3.32.0 + +* Wed Feb 27 2019 Ray Strode - 1:3.31.91-1 +- Update to 3.31.91 + +* Tue Feb 26 2019 Kalev Lember - 1:3.30.3-1 +- Update to 3.30.3 + +* Thu Jan 31 2019 Fedora Release Engineering - 1:3.30.2-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Mon Jan 28 2019 Igor Gnatenko - 1:3.30.2-2 +- Remove obsolete Group tag + +* Wed Dec 19 2018 Kalev Lember - 1:3.30.2-1 +- Update to 3.30.2 + +* Sat Oct 06 2018 Ray Strode - 1:3.30.1-3 +- Fix login screen for machines that boot to fast +- Fix autologin crash + +* Sat Sep 29 2018 Kalev Lember - 1:3.30.1-2 +- Drop ldconfig scriptlets + +* Sat Sep 29 2018 Kalev Lember - 1:3.30.1-1 +- Update to 3.30.1 + +* Fri Sep 07 2018 Kalev Lember - 1:3.30.0-5 +- Rebuilt against fixed atk (#1626575) + +* Fri Sep 07 2018 Ray Strode - 1:3.30.0-4 +- More initial setup fixes + +* Tue Sep 04 2018 Ray Strode - 1:3.30.0-3 +- fix up some upstream udev confusion + +* Tue Sep 04 2018 Ray Strode - 1:3.30.0-2 +- Drop upstreamed patch + +* Tue Sep 04 2018 Ray Strode - 1:3.30.0-1 +- Update to 3.30.0 +- Fixes initial setup Resolves: #1624534 + +* Fri Aug 24 2018 Ray Strode - 1:3.29.91-1 +- Update to 3.29.91 + +* Mon Aug 13 2018 Kalev Lember - 1:3.29.90-2 +- Add missing build dep + +* Mon Aug 13 2018 Kalev Lember - 1:3.29.90-1 +- Update to 3.29.90 + +* Fri Jul 13 2018 Fedora Release Engineering - 1:3.28.2-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Thu May 17 2018 Kalev Lember - 1:3.28.2-2 +- Drop an unused patch + +* Thu May 17 2018 Kalev Lember - 1:3.28.2-1 +- Update to 3.28.2 + +* Tue May 08 2018 Itamar Reis Peixoto - 1:3.28.1-2 +- Update gdm.spec + +* Tue Apr 10 2018 Kalev Lember - 1:3.28.1-1 +- Update to 3.28.1 + +* Thu Mar 22 2018 Igor Gnatenko - 1:3.28.0-7 +- Fixup ldconfig in postun + +* Wed Mar 21 2018 Kevin Fenzi - 1:3.28.0-6 +- Fix my ldconfig fix to be actually correct. + +* Wed Mar 21 2018 Kevin Fenzi - 1:3.28.0-5 +- Fix post/postun calls to ldconfig scriptlet. + +* Tue Mar 20 2018 Ray Strode - 1:3.28.0-4 +- err fix the patch + +* Tue Mar 20 2018 Ray Strode - 1:3.28.0-3 +- Drop /etc/dconf/db/gdm.d from list of dconf sources + +* Tue Mar 20 2018 Rex Dieter - 1:3.28.0-2 +- move pulseaudio-gdm-hooks content here use %%ldconfig %%make_build + %%make_install %%systemd_requires + +* Tue Mar 13 2018 Kalev Lember - 1:3.28.0-1 +- Update to 3.28.0 + +* Sun Mar 11 2018 Kalev Lember - 1:3.27.92-1 +- Update to 3.27.92 + +* Fri Mar 02 2018 Kalev Lember - 1:3.27.91-1 +- Update to 3.27.91 + +* Mon Feb 19 2018 Ray Strode - 1:3.27.4-4 +- Make sure GDM checks systemd dconf databases + +* Fri Feb 09 2018 Bastien Nocera - 1:3.27.4-3 +- + gdm-3.27.4-4 Update for gnome-settings-daemon changes + +* Wed Feb 07 2018 Fedora Release Engineering - 1:3.27.4-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Tue Jan 09 2018 Ray Strode - 1:3.27.4-1 +- Update to 3.27.4 + +* Sat Jan 06 2018 Igor Gnatenko - 1:3.26.2.1-9 +- Remove obsolete scriptlets + +* Thu Nov 30 2017 Ray Strode - 1:3.26.2.1-8 +- drop stale workaround from spec file + +* Thu Nov 30 2017 Ray Strode - 1:3.26.2.1-7 +- Add buildrequires for X server + +* Wed Nov 15 2017 Ray Strode - 1:3.26.2.1-6 +- Split PAM macros off into a new subpackage + +* Wed Nov 08 2017 Ray Strode - 1:3.26.2.1-5 +- update spec file description + +* Wed Nov 08 2017 Matej Habrnal - 1:3.26.2.1-4 +- preserve files permissions while copying them + +* Wed Nov 08 2017 Matej Habrnal - 1:3.26.2.1-3 +- Use colon instead of dot in chown + +* Wed Nov 08 2017 Matej Habrnal - 1:3.26.2.1-2 +- Replace deprecated macro for buildroot + +* Wed Nov 01 2017 Kalev Lember - 1:3.26.2.1-1 +- Update to 3.26.2.1 + +* Tue Oct 24 2017 Ray Strode - 1:3.26.1-3 +- oops fix release name + +* Mon Oct 23 2017 Ray Strode - 1:3.26.1-2 +- make sure initial-setup starts when wayland fails + +* Sun Oct 08 2017 Kalev Lember - 1:3.26.1-1 +- Update to 3.26.1 + +* Wed Sep 13 2017 Kalev Lember - 1:3.26.0-1 +- Update to 3.26.0 + +* Fri Sep 08 2017 Kalev Lember - 1:3.25.92-1 +- Update to 3.25.92 + +* Tue Aug 15 2017 Kalev Lember - 1:3.25.90.1-1 +- Update to 3.25.90.1 + +* Mon Aug 14 2017 Ville Skyttä - 1:3.25.4.1-2 +- Own %%{_datadir}/{dconf,gdm/greeter,gir-1.0} dirs + +* Mon Jul 31 2017 Kalev Lember - 1:3.25.4.1-1 +- Update to 3.25.4.1 + +* Wed Jul 26 2017 Fedora Release Engineering - 1:3.25.3-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Sun Jun 25 2017 Kalev Lember - 1:3.25.3-1 +- Update to 3.25.3 + +* Wed May 10 2017 Kalev Lember - 1:3.24.2-1 +- Update to 3.24.2 + +* Wed Apr 12 2017 Kalev Lember - 1:3.24.1-1 +- Update to 3.24.1 + +* Sat Mar 25 2017 Ray Strode - 1:3.24.0-2 +- Fix fallback to X logic + +* Tue Mar 21 2017 Kalev Lember - 1:3.24.0-1 +- Update to 3.24.0 + +* Fri Mar 17 2017 Kalev Lember - 1:3.23.92-1 +- Update to 3.23.92 + +* Mon Mar 06 2017 Kalev Lember - 1:3.23.91.1-1 +- Update to 3.23.91.1 + +* Mon Feb 13 2017 Richard Hughes - 1:3.23.4-1 +- Update to 3.23.4 + +* Fri Feb 10 2017 Fedora Release Engineering - 1:3.22.1-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Tue Jan 31 2017 Rui Matos - 1:3.22.1-4 +- Honor anaconda's firstboot being disabled + +* Wed Oct 12 2016 Kalev Lember - 1:3.22.1-3 +- Use standard tag order in spec file + +* Wed Oct 12 2016 Kalev Lember - 1:3.22.1-2 +- Don't set group tags + +* Wed Oct 12 2016 Kalev Lember - 1:3.22.1-1 +- Update to 3.22.1 + +* Wed Sep 21 2016 Ray Strode - 1:3.22.0-2 +- Fix log in after log out + +* Tue Sep 20 2016 Kalev Lember - 1:3.22.0-1 +- Update to 3.22.0 + +* Thu Sep 01 2016 Ray Strode - 1:3.21.91-2 +- Add buildrequire on kernel keyring development headers + +* Thu Sep 01 2016 Ray Strode - 1:3.21.91-1 +- Update to 3.21.91 + +* Tue Aug 30 2016 Ray Strode - 1:3.21.90-2 +- Fix autologin + +* Tue Aug 23 2016 Kalev Lember - 1:3.21.90-1 +- Update to 3.21.90 + +* Tue Jul 26 2016 Kalev Lember - 1:3.21.4-1 +- Update to 3.21.4 + +* Wed Jun 22 2016 Richard Hughes - 1:3.21.3-2 +- Fix BRs + +* Wed Jun 22 2016 Richard Hughes - 1:3.21.3-1 +- Update to 3.21.3 + +* Thu Apr 21 2016 Kalev Lember - 1:3.20.1-1 +- Update to 3.20.1 + +* Tue Mar 22 2016 Kalev Lember - 1:3.20.0-1 +- Update to 3.20.0 + +* Tue Mar 15 2016 Kalev Lember - 1:3.19.92-1 +- Update to 3.19.92 + +* Fri Mar 04 2016 Kalev Lember - 1:3.19.91-1 +- Update to 3.19.91 + +* Thu Feb 18 2016 Richard Hughes - 1:3.19.90-1 +- Update to 3.19.90 + +* Tue Feb 09 2016 Ray Strode - 1:3.19.4.1-4 +- More fixes need to get get gnome-terminal, gedit, etc working + +* Thu Feb 04 2016 Ray Strode - 1:3.19.4.1-3 +- Fix gnome-terminal launched in an X session (and gedit etc) + +* Wed Feb 03 2016 Dennis Gilmore - 1:3.19.4.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Mon Jan 25 2016 Ray Strode - 1:3.19.4.1-1 +- Update to 3.19.4.1 + +* Thu Jan 21 2016 Kalev Lember - 1:3.19.4-1 +- Update to 3.19.4 + +* Thu Dec 17 2015 Kalev Lember - 1:3.19.2-2 +- Update to 3.19.2 + +* Tue Nov 10 2015 Ray Strode - 1:3.19.2-1 +- Update to git snapshot + +* Mon Sep 21 2015 Kalev Lember - 1:3.18.0-1 +- Update to 3.18.0 + +* Wed Sep 16 2015 Kalev Lember - 1:3.17.92-1 +- Update to 3.17.92 + +* Mon Aug 24 2015 Ray Strode - 1:3.17.90-1 +- Update to 3.17.90 +- Fixes sporadic failure to login and corruption of GDM_LANG environment + variable + +* Thu Aug 06 2015 Ray Strode - 1:3.17.4-3 +- drop /bin and /sbin from default path + +* Tue Jul 28 2015 Kalev Lember - 1:3.17.4-2 +- Drop unused fontconfig build dep + +* Tue Jul 28 2015 Kalev Lember - 1:3.17.4-1 +- Update to 3.17.4 + +* Tue Jun 23 2015 Ray Strode - 1:3.17.3.1-1 +- Update to 3.17.3.1 + +* Wed Jun 17 2015 Dennis Gilmore - 1:3.17.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Wed Jun 03 2015 Ray Strode - 1:3.17.2-1 +- Update to 3.17.2 + +* Thu Apr 16 2015 Ray Strode - 1:3.16.1.1-1 +- Update to 3.16.1.1 + +* Thu Apr 16 2015 Kalev Lember - 1:3.16.1-1 +- Update to 3.16.1 + +* Tue Apr 07 2015 Ray Strode - 1:3.16.0.1-3 +- Fix permissions on /var/lib/gdm/.local/share + +* Fri Mar 27 2015 Ray Strode - 1:3.16.0.1-2 +- set XORG_RUN_AS_USER_OK in environment + +* Tue Mar 24 2015 Kalev Lember - 1:3.16.0.1-1 +- Update to 3.16.0.1 + +* Tue Mar 24 2015 Ray Strode - 1:3.16.0-2 +- actually quit plymouth at startup + +* Mon Mar 23 2015 Kalev Lember - 1:3.16.0-1 +- Update to 3.16.0 + +* Fri Mar 20 2015 Kalev Lember - 1:3.15.92-2 +- Drop unused 90-grant-audio-devices-to-gdm.fdi + +* Fri Mar 20 2015 Kalev Lember - 1:3.15.92-1 +- Update to 3.15.92 + +* Tue Mar 03 2015 Ray Strode - 1:3.15.91.2-3 +- fix typo in changelog entry + +* Tue Mar 03 2015 Ray Strode - 1:3.15.91.2-2 +- update sources + +* Tue Mar 03 2015 Ray Strode - 1:3.15.91.2-1 +- Update to 3.15.92.1 +- fixes "black screen on logout" of wayland sessions + +* Tue Mar 03 2015 Ray Strode - 1:3.15.91.1-1 +- Update to 3.15.91.1 +- fixes deadlock on VT switch in some cases + +* Fri Feb 27 2015 Ray Strode - 1:3.15.91-1 +- Update for 3.15.91 +- Reduces flicker +- Fixes hang for autologin Resolves: #1197224 +- Fixes users that disable root running X in /etc/X11/Xwrapper.conf +- Fixes intermittent crash at login + +* Wed Feb 25 2015 Ray Strode - 1:3.15.90.5-1 +- Update to 3.15.90.5 +- gnome-initial-setup should work again Resolves: #1194948 +- X will work better when configured to not need root (still not perfect + though) + +* Sun Feb 22 2015 Ray Strode - 1:3.15.90.4-1 +- Update to 3.15.90.4 + +* Sun Feb 22 2015 Ray Strode - 1:3.15.90.3-1 +- Update to 3.15.90.3 + +* Sat Feb 21 2015 Ray Strode - 1:3.15.90.2-2 +- add sources + +* Fri Feb 20 2015 Ray Strode - 1:3.15.90.2-1 +- Update to 3.15.90.2 + +* Fri Feb 20 2015 Ray Strode - 1:3.15.90.1-5 +- Require gnome-session-wayland-session since we default to wayland now + +* Fri Feb 20 2015 David King - 1:3.15.90.1-4 +- Update URL + +* Fri Feb 20 2015 David King - 1:3.15.90.1-3 +- Use pkgconfig for BuildRequires + +* Fri Feb 20 2015 David King - 1:3.15.90.1-2 +- Use license macro for COPYING + +* Fri Feb 20 2015 David King - 1:3.15.90.1-1 +- Update to 3.15.90.1 + +* Thu Feb 19 2015 Richard Hughes - 1:3.15.90-2 +- Fix filelists + +* Thu Feb 19 2015 Richard Hughes - 1:3.15.90-1 +- Update to 3.15.90 + +* Fri Jan 23 2015 Ray Strode - 1:3.15.3.1-4 +- Another user switching fix + +* Thu Jan 22 2015 Ray Strode - 1:3.15.3.1-3 +- Fix user switching + +* Fri Jan 16 2015 Ray Strode - 1:3.15.3.1-2 +- Fix pam_ecryptfs. unfortunately adds back gross last login messages. + +* Fri Dec 19 2014 Richard Hughes - 1:3.15.3.1-1 +- Update to 3.15.3.1 + +* Fri Dec 19 2014 Richard Hughes - 1:3.15.3-1 +- Update to 3.15.3 + +* Tue Nov 25 2014 Kalev Lember - 1:3.15.2-1 +- Update to 3.15.2 + +* Tue Oct 14 2014 Kalev Lember - 1:3.14.1-1 +- Update to 3.14.1 + +* Mon Sep 22 2014 Kalev Lember - 1:3.14.0-1 +- Update to 3.14.0 + +* Wed Sep 17 2014 Kalev Lember - 1:3.13.92-1 +- Update to 3.13.92 + +* Wed Sep 03 2014 Kalev Lember - 1:3.13.91-3 +- Remove duplicate -devel subpackage %%description + +* Wed Sep 03 2014 Kalev Lember - 1:3.13.91-2 +- Drop last GConf remnants + +* Wed Sep 03 2014 Kalev Lember - 1:3.13.91-1 +- Update to 3.13.91 + +* Sat Aug 16 2014 Peter Robinson - 1:3.12.2-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Tue Jul 22 2014 Kalev Lember - 1:3.12.2-3 +- Rebuilt for gobject-introspection 1.41.4 + +* Sat Jun 07 2014 Dennis Gilmore - 1:3.12.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Fri May 16 2014 Kalev Lember - 1:3.12.2-1 +- Update to 3.12.2 + +* Thu May 08 2014 Ray Strode - 1:3.12.1-3 +- Fix PATH + +* Wed May 07 2014 Kalev Lember - 1:3.12.1-2 +- Drop gnome-icon-theme-symbolic dependency + +* Tue Apr 15 2014 Kalev Lember - 1:3.12.1-1 +- Update to 3.12.1 + +* Sat Apr 05 2014 Kalev Lember - 1:3.12.0-4 +- Fold -libs into the main gdm package + +* Sat Apr 05 2014 Kalev Lember - 1:3.12.0-3 +- Tighten subpackage deps + +* Sat Apr 05 2014 Kalev Lember - 1:3.12.0-2 +- Move all requires together + +* Tue Mar 25 2014 Richard Hughes - 1:3.12.0-1 +- Update to 3.12.0 + +* Thu Mar 20 2014 Richard Hughes - 1:3.11.92.1-2 +- Fix filelists + +* Thu Mar 20 2014 Richard Hughes - 1:3.11.92.1-1 +- Update to 3.11.92.1 + +* Sat Feb 22 2014 Kalev Lember - 1:3.11.90-3 +- Fix the build + +* Fri Feb 21 2014 Richard Hughes - 1:3.11.90-2 +- Fix BRs + +* Fri Feb 21 2014 Richard Hughes - 1:3.11.90-1 +- Update to 3.11.90 + +* Wed Jan 15 2014 Richard Hughes - 1:3.11.4-1 +- Update to 3.11.4 + +* Sun Dec 22 2013 Ville Skyttä - 1:3.11.3-2 +- Drop empty TODO from docs, trivial rpmlint fixes. + +* Tue Dec 17 2013 Richard Hughes - 1:3.11.3-1 +- Update to 3.11.3 + +* Tue Nov 19 2013 Richard Hughes - 1:3.11.2-1 +- Update to 3.11.2 + +* Mon Oct 28 2013 Richard Hughes - 1:3.10.0.1-1 +- Update to 3.10.0.1 + +* Tue Sep 24 2013 Kalev Lember - 1:3.10.0-1 +- Update to 3.10.0 + +* Thu Aug 22 2013 Kalev Lember - 1:3.9.90-1 +- Update to 3.9.90 + +* Sat Aug 10 2013 Kalev Lember - 1:3.9.5-1 +- Update to 3.9.5 + +* Thu Jul 25 2013 Ray Strode - 1:3.8.3.1-2 +- Fix build + +* Tue Jul 16 2013 Richard Hughes - 1:3.8.3.1-1 +- Update to 3.8.3.1 + +* Sat Jun 22 2013 Matthias Clasen - 1:3.8.3-2 +- Trimp changelog + +* Fri Jun 14 2013 Ray Strode - 1:3.8.3-1 +- Update to 3.8.3 + +* Tue May 21 2013 Matthias Clasen - 1:3.8.1.1-6 +- Don't include fallback greeter + +* Mon May 20 2013 Ray Strode - 1:3.8.1.1-5 +- Fix permissions on /run/gdm + +* Mon May 20 2013 Ray Strode - 1:3.8.1.1-4 +- Require gnome-shell + +* Fri May 17 2013 Ray Strode - 1:3.8.1.1-3 +- Build with -fpie + +* Thu May 16 2013 Florian Müllner - 1:3.8.1.1-2 +- Update branding + +* Wed Apr 17 2013 Richard Hughes - 1:3.8.1.1-1 +- Update to 3.8.1.1 + +* Mon Apr 15 2013 Kalev Lember - 1:3.8.1-1 +- Update to 3.8.1 + +* Mon Apr 01 2013 Kalev Lember - 1:3.8.0-2 +- Drop the metacity dep now that the fallback greeter is gone + +* Tue Mar 26 2013 Kalev Lember - 1:3.8.0-1 +- Update to 3.8.0 + +* Wed Mar 20 2013 Kalev Lember - 1:3.7.92-2 +- Drop the polkit-gnome dep now that the fallback greeter is gone + +* Wed Mar 20 2013 Richard Hughes - 1:3.7.92-1 +- Update to 3.7.92 + +* Wed Mar 06 2013 Matthias Clasen - 1:3.7.91-1 +- 3.7.91 + +* Wed Feb 27 2013 Ray Strode - 1:3.7.90-5 +- add changelog entry + +* Wed Feb 27 2013 Ray Strode - 1:3.7.90-4 +- fix run dir for real this time + +* Tue Feb 26 2013 Ray Strode - 1:3.7.90-3 +- change mkdir to new run dir + +* Tue Feb 26 2013 Ray Strode - 1:3.7.90-2 +- Fix up runtime dir path + +* Fri Feb 22 2013 Kalev Lember - 1:3.7.90-1 +- Update to 3.7.90 + +* Tue Feb 05 2013 Kalev Lember - 1:3.7.5-1 +- Update to 3.7.5 + +* Wed Jan 09 2013 Richard Hughes - 1:3.7.3.1-1 +- Update to 3.7.3.1 + +* Tue Nov 20 2012 Richard Hughes - 1:3.7.2-1 +- Update to 3.7.2 + +* Tue Nov 20 2012 Matthias Clasen - 1:3.6.2-2 +- remove patch fuzz of 999 + +* Wed Nov 14 2012 Kalev Lember - 1:3.6.2-1 +- Update to 3.6.2 + +* Wed Nov 14 2012 Kalev Lember - 1:3.6.1-5 +- Minor spec file cleanup + +* Wed Nov 14 2012 Ray Strode - 1:3.6.1-4 +- Fix GDM auth cookie problem + +* Mon Oct 29 2012 Matthias Clasen - 1:3.6.1-3 +- Add ppc to %%ExcludeArch + +* Thu Oct 18 2012 Matthias Clasen - 1:3.6.1-2 +- Require gnome-icon-theme-symbolic + +* Tue Oct 16 2012 Kalev Lember - 1:3.6.1-1 +- 3.6.1 + +* Wed Sep 26 2012 Matthias Clasen - 1:3.6.0-2 +- fix file lists + +* Tue Sep 25 2012 Richard Hughes - 1:3.6.0-1 +- Update to 3.6.0 + +* Wed Sep 19 2012 Kalev Lember - 1:3.5.92.1-2 +- Drop upstreamed patches + +* Wed Sep 19 2012 Matthias Clasen - 1:3.5.92.1-1 +- 3.5.92.1 + +* Fri Sep 07 2012 Ray Strode - 1:3.5.91-5 +- fix selinux context after forking session + +* Fri Sep 07 2012 Ray Strode - 1:3.5.91-4 +- rev release + +* Fri Sep 07 2012 Ray Strode - 1:3.5.91-3 +- Fix autologin + +* Thu Sep 06 2012 Richard Hughes - 1:3.5.91-2 +- Call intltoolize to work around a tarball buglet + +* Thu Sep 06 2012 Richard Hughes - 1:3.5.91-1 +- Update to 3.5.91 + +* Wed Aug 22 2012 Richard Hughes - 1:3.5.90-2 +- Fix file lists + +* Tue Aug 21 2012 Richard Hughes - 1:3.5.90-1 +- Update to 3.5.90 + +* Tue Aug 07 2012 Lennart Poettering - 1:3.5.5-4 +- https://fedoraproject.org/wiki/Features/DisplayManagerRework + +* Tue Aug 07 2012 Richard Hughes - 1:3.5.5-3 +- Fix filelists + +* Tue Aug 07 2012 Richard Hughes - 1:3.5.5-2 +- Fix filelists + +* Tue Aug 07 2012 Richard Hughes - 1:3.5.5-1 +- Update to 3.5.5 + +* Fri Jul 27 2012 Dennis Gilmore - 1:3.5.4.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Thu Jul 19 2012 Ray Strode - 1:3.5.4.2-1 +- Update to 3.5.4.2 - Fixes non-autologin + +* Thu Jul 19 2012 Ray Strode - 1:3.5.4.1-2 +- drop upstreamed patches + +* Thu Jul 19 2012 Ray Strode - 1:3.5.4.1-1 +- Update to 3.5.4.1 +- Fixes autologin +- Fixes logind integration +- Fixes dconf incompatibility + +* Thu Jul 19 2012 Matthias Clasen - 1:3.5.4-5 +- fix dconf profile syntax + +* Thu Jul 19 2012 Kalev Lember - 1:3.5.4-4 +- Require systemd >= 186 for libsystemd-login + +* Wed Jul 18 2012 Ray Strode - 1:3.5.4-3 +- Update filelist + +* Tue Jul 17 2012 Richard Hughes - 1:3.5.4-2 +- Fix file list + +* Tue Jul 17 2012 Richard Hughes - 1:3.5.4-1 +- Update to 3.5.4 + +* Thu Jun 28 2012 Ray Strode - 1:3.5.2-4 +- Build with plymouth support (woops). + +* Wed Jun 13 2012 Ray Strode - 1:3.5.2-3 +- Drop unused spool dir + +* Sat Jun 09 2012 Matthias Clasen - 1:3.5.2-2 +- Fix gnome-shell detection + +* Thu Jun 07 2012 Richard Hughes - 1:3.5.2-1 +- Update to 3.5.2 + +* Sat May 19 2012 Matthias Clasen - 1:3.4.1-2 +- fix source url + +* Mon Apr 16 2012 Matthias Clasen - 1:3.4.1-1 +- 3.4.1 + +* Mon Apr 16 2012 Ray Strode - 1:3.4.0.1-8 +- one more try at fixing live image crash + +* Mon Apr 16 2012 Ray Strode - 1:3.4.0.1-7 +- fix crash in liveimage + +* Mon Apr 16 2012 Matthias Clasen - 1:3.4.0.1-6 +- really drop gdm.pam + +* Mon Apr 16 2012 Matthias Clasen - 1:3.4.0.1-5 +- fix session unlock + +* Mon Apr 16 2012 Ray Strode - 1:3.4.0.1-4 +- drop /etc/pam.d/gdm + +* Mon Apr 16 2012 Ray Strode - 1:3.4.0.1-3 +- rev release + +* Mon Apr 16 2012 Ray Strode - 1:3.4.0.1-2 +- move pam gnome keyring after XDG_RUNTIME_DIR is setup + +* Thu Mar 29 2012 Ray Strode - 1:3.4.0.1-1 +- Update to 3.4.0.1 + +* Thu Mar 29 2012 Richard Hughes - 1:3.4.0-1 +- Update to 3.4.0 + +* Thu Mar 29 2012 Ray Strode - 1:3.3.92.1-3 +- More consolekit registration fixes + +* Tue Mar 20 2012 Ray Strode - 1:3.3.92.1-2 +- update tarball + +* Tue Mar 20 2012 Ray Strode - 1:3.3.92.1-1 +- Update to latest version + +* Mon Feb 13 2012 Ray Strode - 1:3.2.1.1-12 +- rev release + +* Mon Feb 13 2012 Ray Strode - 1:3.2.1.1-11 +- Restore ConsoleKit registration if ConsoleKit is installed + +* Thu Feb 09 2012 Ray Strode - 1:3.2.1.1-10 +- Fix crasher bug + +* Tue Feb 07 2012 Ray Strode - 1:3.2.1.1-9 +- Add build requires and mind plymouth patch changes + +* Tue Feb 07 2012 Ray Strode - 1:3.2.1.1-8 +- Rebase plymouth patch + +* Tue Feb 07 2012 Lennart Poettering - 1:3.2.1.1-7 +- multi-seat patch + +* Thu Jan 26 2012 Ray Strode - 1:3.2.1.1-6 +- Drop system-icon-theme requirement + +* Fri Jan 13 2012 Dennis Gilmore - 1:3.2.1.1-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + +* Thu Nov 10 2011 Adam Williamson - 1:3.2.1.1-4 +- update the plymouth patch + +* Thu Nov 10 2011 Adam Williamson - 1:3.2.1.1-3 +- add the patch file, improve RPM changelog to list all synced fixes + +* Thu Nov 10 2011 Adam Williamson - 1:3.2.1.1-2 +- update the source + +* Thu Nov 10 2011 Adam Williamson - 1:3.2.1.1-1 +- re-sync with f16 (manually, since it all seems too confused for git + merge) + +* Fri Nov 04 2011 Bill Nottingham - 1:3.2.1-5 +- Fix logo in fallback mode. + +* Thu Nov 03 2011 Ray Strode - 1:3.2.1-4 +- Drop fprintd-pam dependency + +* Wed Oct 26 2011 Dennis Gilmore - 1:3.2.1-3 +- Rebuilt for glibc bug#747377 + +* Wed Oct 19 2011 Ray Strode - 1:3.2.1-2 +- merge in changes from f16 spec file + +* Wed Oct 19 2011 Ray Strode - 1:3.2.1-1 +- Update to 3.2.1 + +* Wed Oct 05 2011 Adam Williamson - 1:3.2.0-2 +- re-add check for gnome-shell before using it to handle login + +* Thu Sep 29 2011 Ray Strode - 1:3.2.0-1 +- Update to 3.2.0 + +* Tue Jun 28 2011 Ray Strode - 1:3.1.2-4 +- disable fatal-critical stuff + +* Tue Jun 21 2011 Michael Schwendt - 1:3.1.2-3 +- Fix /dev/ull typo in scriptlets (#693046). + +* Thu Jun 16 2011 Ray Strode - 1:3.1.2-2 +- fix build + +* Thu Jun 16 2011 Ray Strode - 1:3.1.2-1 +- update to gdm 3.1.2 + +* Mon Jun 06 2011 Ray Strode - 1:3.0.4-1 +- Update to gdm 3.0.4 to fix CVE-2011-1709 + +* Fri Apr 15 2011 Matthias Clasen - 1:3.0.0-8 +- one more time + +* Fri Apr 15 2011 Matthias Clasen - 1:3.0.0-7 +- More BRs... + +* Fri Apr 15 2011 Matthias Clasen - 1:3.0.0-6 +- still collecting BRs... + +* Fri Apr 15 2011 Matthias Clasen - 1:3.0.0-5 +- fix BRs + +* Fri Apr 15 2011 Matthias Clasen - 1:3.0.0-4 +- Fix BRs + +* Fri Apr 15 2011 Matthias Clasen - 1:3.0.0-3 +- Yay, fedora + +* Fri Apr 15 2011 Matthias Clasen - 1:3.0.0-2 +- Yay, fedora + +* Mon Apr 04 2011 Matthias Clasen - 1:3.0.0-1 +- 3.0.0 + +* Tue Mar 22 2011 Ray Strode - 1:2.91.94-1 +- Update to latest release + +* Wed Mar 09 2011 Ray Strode - 1:2.91.93-3 +- Fix autologin crash + +* Tue Mar 08 2011 Ray Strode - 1:2.91.93-2 +- Update sources + +* Tue Mar 08 2011 Ray Strode - 1:2.91.93-1 +- Update to 2.91.93 + +* Tue Mar 08 2011 Ray Strode - 1:2.91.92-3 +- Add missing build requires + +* Tue Mar 08 2011 Ray Strode - 1:2.91.92-2 +- Update sources for release + +* Mon Mar 07 2011 Ray Strode - 1:2.91.92-1 +- Update to 2.91.92 + +* Mon Feb 28 2011 Matthias Clasen - 1:2.91.91-3 +- Drop gnome-panel dep, not used anymore + +* Sun Feb 27 2011 Matthias Clasen - 1:2.91.91-2 +- Clean up BRs + +* Wed Feb 23 2011 Ray Strode - 1:2.91.91-1 +- Update to 2.91.91 + +* Tue Feb 22 2011 Ray Strode - 1:2.91.6-17 +- s/user-list/userlist/ + +* Tue Feb 22 2011 Ray Strode - 1:2.91.6-16 +- Fix empty user list. + +* Fri Feb 18 2011 Ray Strode - 1:2.91.6-15 +- Fix user list async bugs by dropping async code and moving to accounts + service library Resolves: #678236 - Add requires for accounts service to + spec since it isn't optional (and hasn't been for a while) + +* Thu Feb 17 2011 Ray Strode - 1:2.91.6-14 +- add forgotton patch + +* Thu Feb 17 2011 Ray Strode - 1:2.91.6-13 +- rev release + +* Thu Feb 17 2011 Ray Strode - 1:2.91.6-12 +- Add back session chooser + +* Mon Feb 14 2011 Ray Strode - 1:2.91.6-11 +- Build pam changes + +* Mon Feb 14 2011 Paolo Bonzini - 1:2.91.6-10 +- Add support for postlogin stack + +* Mon Feb 14 2011 Ray Strode - 1:2.91.6-9 +- Fix crasher do to size calculation bugs + +* Fri Feb 11 2011 Matthias Clasen - 1:2.91.6-8 +- rebuild + +* Thu Feb 10 2011 Christopher Aillon - 1:2.91.6-7 +- Drop the requires on plymouth-gdm-hooks since it no longer exists + +* Tue Feb 08 2011 Dennis Gilmore - 1:2.91.6-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Mon Feb 07 2011 Bastien Nocera - 1:2.91.6-5 +- Really disable gnome-settings-daemon plugins in the greeter + +* Fri Feb 04 2011 Ray Strode - 1:2.91.6-4 +- don't call render_frame if there's no frame + +* Thu Feb 03 2011 Ray Strode - 1:2.91.6-3 +- Add accountsservice dep + +* Thu Feb 03 2011 Ray Strode - 1:2.91.6-2 +- add sources + +* Thu Feb 03 2011 Ray Strode - 1:2.91.6-1 +- Update to 2.91.6 + +* Sat Jan 29 2011 Ville Skyttä - 1:2.91.4-6 +- Dir ownership fixes. + +* Thu Jan 20 2011 Ray Strode - 1:2.91.4-5 +- Fix swapped LHS and RHS in more-aggressive-about-loading-icons patch + +* Wed Jan 19 2011 Ray Strode - 1:2.91.4-4 +- Update previous patch to handle NULL better + +* Wed Jan 19 2011 Ray Strode - 1:2.91.4-3 +- user-chooser-widget: fix ref counting issue on user pixbuf + +* Wed Jan 19 2011 Ray Strode - 1:2.91.4-2 +- user-chooser: try to find fallback icon more aggressively + +* Fri Dec 17 2010 Ray Strode - 1:2.91.4-1 +- Update to 2.91.4 + +* Wed Dec 15 2010 Christopher Aillon - 1:2.32.0-5 +- Add maybe-set-is-loaded.patch to ensure we end up with a loaded user + +* Wed Dec 01 2010 Peter Hutterer - 1:2.32.0-4 +- plymouth.patch: xserver 1.10 takes "-background none" root argument + instead of the fedora-specific "-nr". - Add missing BuildRequires for + dbus-glib-devel + +* Tue Nov 16 2010 Dan Williams - 1:2.32.0-3 +- Fix upower build requirement + +* Wed Sep 29 2010 Ray Strode - 1:2.32.0-2 +- More post update spec file tweaks + +* Wed Sep 29 2010 Ray Strode - 1:2.32.0-1 +- Update to 2.32.0 + +* Wed Aug 18 2010 Ray Strode - 1:2.31.90-2 +- Update sources file + +* Tue Aug 17 2010 Ray Strode - 1:2.31.90-1 +- Update to 2.31.90 + +* Wed Jul 28 2010 Fedora Release Engineering - 1:2.30.2-4 +- dist-git conversion + +* Thu Jun 17 2010 Matthias Clasen - 1:2.30.2-3 +- kill explicit library deps + +* Tue Apr 27 2010 Ray Strode - 1:2.30.2-2 +- Update multistack patch - Add accounts service patch - Update plymouth + patch + +* Tue Apr 27 2010 Matthias Clasen - 1:2.30.2-1 +- 2.30.2 + +* Tue Apr 06 2010 Ray Strode - 1:2.30.0-2 +- Update plymouth patch to work with 0.8.1 + +* Mon Mar 29 2010 Matthias Clasen - 1:2.30.0-1 +- 2.30.0 + +* Wed Mar 24 2010 Matthias Clasen - 1:2.29.92-2 +- update patch + +* Wed Mar 24 2010 Matthias Clasen - 1:2.29.92-1 +- 2.29.92 + +* Wed Mar 24 2010 Matthias Clasen - 1:2.29.6-4 +- drop hal dep + +* Fri Feb 12 2010 Matthias Clasen - 1:2.29.6-3 +- Make ld happy + +* Fri Feb 12 2010 Matthias Clasen - 1:2.29.6-2 +- drop obsolete patches + +* Thu Feb 11 2010 Matthias Clasen - 1:2.29.6-1 +- 2.29.6 + +* Thu Jan 28 2010 Ray Strode - 1:2.29.5-4 +- name graphical-login vprovides (bug 559268) + +* Wed Jan 27 2010 Ray Strode - 1:2.29.5-3 +- add missing patch + +* Wed Jan 27 2010 Ray Strode - 1:2.29.5-2 +- update sources + +* Wed Jan 27 2010 Ray Strode - 1:2.29.5-1 +- Update to 2.29.5 + +* Sun Jan 17 2010 Matthias Clasen - 1:2.29.4-4 +- Rebuild + +* Thu Jan 14 2010 Ray Strode - 1:2.29.4-3 +- hard code path + +* Thu Jan 14 2010 Ray Strode - 1:2.29.4-2 +- Fix boot + +* Tue Dec 22 2009 Matthias Clasen - 1:2.29.4-1 +- 2.29.4 + +* Wed Dec 09 2009 Ray Strode - 1:2.29.1-4 +- Update to work better with latest plymouth + +* Tue Dec 08 2009 Ray Strode - 1:2.29.1-3 +- Add xdmcp build req + +* Thu Dec 03 2009 Ray Strode - 1:2.29.1-2 +- Drop upstreamed patches - rebase multi-stack patch + +* Tue Dec 01 2009 Bastien Nocera - 1:2.29.1-1 +- Update to 2.29.1 + +* Wed Nov 25 2009 Bill Nottingham - 1:2.28.1-2 +- Fix typo that causes a failure to update the common directory. (releng + #2781) + +* Mon Nov 02 2009 Matthias Clasen - 1:2.28.1-1 +- Copy F12 work over + +* Wed Oct 07 2009 Ray Strode - 1:2.28.0-6 +- Fix xguest + +* Mon Sep 28 2009 Ray Strode - 1:2.28.0-5 +- Add cache dir to package manifest + +* Mon Sep 28 2009 Richard Hughes - 1:2.28.0-4 +- Add a patch to use DeviceKit-power rather than the removed methods in + gnome-power-manager. + +* Fri Sep 25 2009 Ray Strode - 1:2.28.0-3 +- Fix autologin + +* Wed Sep 23 2009 Matthias Clasen - 1:2.28.0-2 +- fix patch + +* Wed Sep 23 2009 Matthias Clasen - 1:2.28.0-1 +- 2.28.0 + +* Sat Aug 29 2009 Caolan McNamara - 1:2.27.90-3 +- rebuild with new audit + +* Mon Aug 24 2009 Ray Strode - 1:2.27.90-2 +- add buildrequires + +* Mon Aug 24 2009 Ray Strode - 1:2.27.90-1 +- update to 2.27.90 + +* Fri Aug 21 2009 Tomáš Mráz - 1:2.27.4-8 +- rebuilt with new audit + +* Wed Aug 19 2009 Lennart Poettering - 1:2.27.4-7 +- Add pulseaudio-gdm-hooks to dependencies + +* Thu Aug 06 2009 Ray Strode - 1:2.27.4-6 +- rebuild + +* Sun Aug 02 2009 Matthias Clasen - 1:2.27.4-5 +- drop unneded direct deps + +* Fri Jul 24 2009 Ray Strode - 1:2.27.4-4 +- Fix delay during login + +* Mon Jul 20 2009 Ray Strode - 1:2.27.4-3 +- Use correct multi-stack patch + +* Mon Jul 20 2009 Ray Strode - 1:2.27.4-2 +- adding missing file + +* Mon Jul 20 2009 Ray Strode - 1:2.27.4-1 +- Update to 2.27.4 + +* Thu Jul 02 2009 Adam Jackson - 1:2.26.1-14 +- Requires: xorg-x11-xkb-utils -> Requires: setxkbmap + +* Wed Jul 01 2009 Ray Strode - 1:2.26.1-13 +- Drop defunct arch conditional buildrequires + +* Wed Jul 01 2009 Matthias Clasen - 1:2.26.1-12 +- fix for xklavier api changes + +* Tue Jun 30 2009 Matthias Clasen - 1:2.26.1-11 +- Rebuild + +* Fri Jun 12 2009 Matthias Clasen - 1:2.26.1-10 +- Bump rev + +* Tue Jun 09 2009 Matthias Clasen - 1:2.26.1-9 +- fix spec + +* Tue Jun 09 2009 Matthias Clasen - 1:2.26.1-8 +- Port to PolicyKit 1 + +* Thu Jun 04 2009 Ray Strode - 1:2.26.1-7 +- drop erroneous bullets that snuck in during copy and paste + +* Thu Jun 04 2009 Ray Strode - 1:2.26.1-6 +- Fix language parsing code (bug 502778) + +* Mon Apr 27 2009 Matthias Clasen - 1:2.26.1-5 +- don't drop schemas translations + +* Fri Apr 24 2009 Ray Strode - 1:2.26.1-4 +- Add Requires for pam modules in plugins + +* Tue Apr 21 2009 Ray Strode - 1:2.26.1-3 +- Stop inactive pam conversations when one succeeds. Should fix bug 496234 + +* Tue Apr 14 2009 Matthias Clasen - 1:2.26.1-2 +- new sources + +* Tue Apr 14 2009 Ray Strode - 1:2.26.1-1 +- Update to 2.26.1 + +* Mon Apr 13 2009 Ray Strode - 1:2.26.0-9 +- Ease up on patch fuzz requirements + +* Mon Apr 13 2009 Ray Strode - 1:2.26.0-8 +- Add less boring multistack patch for testing + +* Mon Mar 23 2009 Ray Strode - 1:2.26.0-7 +- Load session and language settings when username is read on Other user + +* Fri Mar 20 2009 Ray Strode - 1:2.26.0-6 +- Fix problem in keyboard layout selector (483195) + +* Thu Mar 19 2009 Ray Strode - 1:2.26.0-5 +- Use gethostname() _properly_ instead of g_get_host_name() when writing + out xauth files, because the hostname may change out from under us and + glib caches it. + +* Thu Mar 19 2009 Ray Strode - 1:2.26.0-4 +- Use gethostname() instead of g_get_host_name() when writing out xauth + files, because the hostname may change out from under us and glib caches + it. + +* Wed Mar 18 2009 Ray Strode - 1:2.26.0-3 +- emit "user-selected" signal for non-user items in the list as well. + +* Tue Mar 17 2009 Ray Strode - 1:2.26.0-2 +- Clean up empty auth dirs so they don't hang around forever (bug 485974) + +* Mon Mar 16 2009 Ray Strode - 1:2.26.0-1 +- Update to 2.26.0 - Drop gcc workaround. it might not be needed now. + +* Sun Mar 15 2009 Ray Strode - 1:2.25.2-21 +- Drop the use localhost patch because it broke things. Instead add + authorization that doesn't depend on a hostname + +* Thu Mar 12 2009 Ray Strode - 1:2.25.2-20 +- Add a lame patch in the off chance it might work around a gcc bug on ppc: + unable to find register to spill in class 'LINK_OR_CTR_REGS' Probably + won't work. + +* Thu Mar 12 2009 Ray Strode - 1:2.25.2-19 +- Actually add patch + +* Thu Mar 12 2009 Ray Strode - 1:2.25.2-18 +- Add Requires: libXau >= 1.0.4-4 to use localhost in xauth cookies - Use + localhost instead of g_get_host_name () + +* Thu Mar 12 2009 Ray Strode - 1:2.25.2-17 +- Don't force X server on active vt more than once + +* Mon Mar 09 2009 Ray Strode - 1:2.25.2-16 +- Don't race with PAM modules that ask questions during pam_open_session + (and don't subsequently go bonkers when losing the race). + +* Fri Mar 06 2009 Ray Strode - 1:2.25.2-15 +- Reset "start session when ready" state to FALSE when starting new greeter + from existing slave. May fix problem Chris Ball is seeing with language + selection in autologin the second time after boot up. + +* Thu Mar 05 2009 Ray Strode - 1:2.25.2-14 +- 2.25.2-10 fixes were actually only for timed login. Add same fix for auto + login + +* Thu Mar 05 2009 Ray Strode - 1:2.25.2-13 +- Create settings object early to prevent assertion failures when one pam + conversation completes before another starts. + +* Thu Mar 05 2009 Ray Strode - 1:2.25.2-12 +- Bring back language/session/layout selector for autologin + +* Thu Mar 05 2009 Ray Strode - 1:2.25.2-11 +- Add some fixes for autologin + +* Tue Mar 03 2009 Ray Strode - 1:2.25.2-10 +- Regen patch to get rid of fuzz + +* Tue Mar 03 2009 Ray Strode - 1:2.25.2-9 +- Add limited 'one-stack-only' version of multistack patch (See + https://fedoraproject.org/wiki/Features/MultiplePAMStacksInGDM) - Drop 10 + second delay in start up because of broken autostart file + +* Fri Feb 27 2009 Matthias Clasen - 1:2.25.2-8 +- Require PolicyKit-authentication-agent + +* Wed Feb 25 2009 Matthias Clasen - 1:2.25.2-7 +- refine hal patch + +* Tue Feb 24 2009 Jesse Keating - 1:2.25.2-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild + +* Sat Feb 21 2009 Matthias Clasen - 1:2.25.2-5 +- Improve handling of default keyboard layout + +* Fri Feb 20 2009 Ray Strode - 1:2.25.2-4 +- add Provides: service(graphical-login) to help anaconda + +* Thu Jan 22 2009 Ray Strode - 1:2.25.2-3 +- Open log files for append to make selinux lock down easier + +* Thu Dec 18 2008 Matthias Clasen - 1:2.25.2-2 +- drop xkb group workaround + +* Wed Dec 17 2008 Matthias Clasen - 1:2.25.2-1 +- 2.25.2 + +* Thu Dec 04 2008 Matthias Clasen - 1:2.25.1-2 +- libtool fun + +* Thu Dec 04 2008 Matthias Clasen - 1:2.25.1-1 +- 2.25.1 + +* Mon Oct 20 2008 Matthias Clasen - 1:2.24.0-13 +- respect system keyboard setting + +* Wed Oct 15 2008 Ray Strode - 1:2.24.0-12 +- Rework "force X on vt1" code to work after the user logs out + +* Wed Oct 15 2008 Matthias Clasen - 1:2.24.0-11 +- save space + +* Fri Oct 03 2008 Matthias Clasen - 1:2.24.0-10 +- hide nonfunctional help menuitems + +* Wed Oct 01 2008 Ray Strode - 1:2.24.0-9 +- add upstream bug reference + +* Wed Oct 01 2008 Ray Strode - 1:2.24.0-8 +- Make panel slide in initially like the gnome panel + +* Tue Sep 30 2008 Ray Strode - 1:2.24.0-7 +- pull patch from upstream to scale face icons with fontsize + +* Tue Sep 30 2008 Ray Strode - 1:2.24.0-6 +- drop background priority change. Choppyiness in -3 ended up being a bug + in gnome-settings-daemon. + +* Thu Sep 25 2008 Matthias Clasen - 1:2.24.0-5 +- require gnome-session + +* Tue Sep 23 2008 Matthias Clasen - 1:2.24.0-4 +- fix sound on the login screen + +* Tue Sep 23 2008 Ray Strode - 1:2.24.0-3 +- Load background after everything else, so the crossfade isn't choppy. + +* Mon Sep 22 2008 Ray Strode - 1:2.24.0-2 +- Fix permssions on spool dir + +* Mon Sep 22 2008 Matthias Clasen - 1:2.24.0-1 +- 2.24.0 + +* Mon Sep 22 2008 Ray Strode - 1:2.23.92-11 +- Flush X event queue after setting _XROOTPMAP_ID so there's no race with + settings daemon reading the property + +* Fri Sep 19 2008 Ray Strode - 1:2.23.92-10 +- Fix crash from language dialog + +* Wed Sep 17 2008 Ray Strode - 1:2.23.92-9 +- canonicalize codeset to match output of locale -m - filter duplicates + from language list + +* Wed Sep 17 2008 Matthias Clasen - 1:2.23.92-8 +- plug a few memory leaks + +* Tue Sep 16 2008 Ray Strode - 1:2.23.92-7 +- Use _XROOTPMAP_ID instead of _XSETROOT_ID + +* Tue Sep 16 2008 Ray Strode - 1:2.23.92-6 +- Save root window in XSETROOTID property for transition + +* Fri Sep 12 2008 Ray Strode - 1:2.23.92-5 +- fix whitespace issue introduced from editing patch in place + +* Fri Sep 12 2008 Ray Strode - 1:2.23.92-4 +- Fix bug in last patch + +* Thu Sep 11 2008 Ray Strode - 1:2.23.92-3 +- Add hook to allow for plymouth transition + +* Tue Sep 09 2008 William Jon McCann - 1:2.23.92-2 +- Disallow root login + +* Tue Sep 09 2008 William Jon McCann - 1:2.23.92-1 +- Update to 2.23.92-1 + +* Thu Aug 28 2008 William Jon McCann - 1:2.23.91-2 +- Update to non-broken snapshot + +* Thu Aug 28 2008 William Jon McCann - 1:2.23.91-1 +- Update to snapshot + +* Tue Aug 26 2008 William Jon McCann - 1:2.23.90-2 +- Add desktop file for metacity + +* Mon Aug 25 2008 William Jon McCann - 1:2.23.90-1 +- Update to 2.23.90 + +* Thu Aug 14 2008 Behdad Esfahbod - 1:2.23.2-4 +- Add upstreamed patch gdm-2.23.2-unknown-lang.patch + +* Wed Aug 13 2008 Ray Strode - 1:2.23.2-3 +- get rid of <<<< cvs spew + +* Wed Aug 13 2008 Ray Strode - 1:2.23.2-2 +- Require plymouth-gdm-hooks so plymouth-log-viewer gets pulled in on + upgrades + +* Thu Jul 31 2008 William Jon McCann - 1:2.23.2-1 +- Update to 2.23.2 + +* Mon Jul 28 2008 William Jon McCann - 1:2.23.1-4 +- Update to newer snapshot + +* Tue Jul 22 2008 William Jon McCann - 1:2.23.1-3 +- Update to newer snapshot + +* Mon Jul 21 2008 William Jon McCann - 1:2.23.1-2 +- Update to new snapshot + +* Mon Jul 21 2008 William Jon McCann - 1:2.23.1-1 +- Update to snapshot + +* Sat Jul 12 2008 Matthias Clasen - 1:2.22.0-16 +- apply patch + +* Thu Jul 10 2008 Matthias Clasen - 1:2.22.0-15 +- fix some broken icons + +* Thu Jul 10 2008 Matthias Clasen - 1:2.22.0-14 +- improve rendering of languages + +* Thu Jul 03 2008 William Jon McCann - 1:2.22.0-13 +- Check for a null filesystem type + +* Wed Jun 25 2008 Ray Strode - 1:2.22.0-12 +- After discussion with X team, turn tcp connections off by default, but + add back option to toggle on (bug 446672) + +* Wed Jun 25 2008 Ray Strode - 1:2.22.0-11 +- Add patch from last commit + +* Wed Jun 25 2008 Ray Strode - 1:2.22.0-10 +- enable tcp connections by default + +* Wed Jun 25 2008 Ray Strode - 1:2.22.0-9 +- Remove blank line at top of file + +* Thu May 08 2008 Matthias Clasen - 1:2.22.0-8 +- Add a GConf key to disable the user list + +* Mon May 05 2008 Matthias Clasen - 1:2.22.0-7 +- fix BRs + +* Mon May 05 2008 Matthias Clasen - 1:2.22.0-6 +- bump rev + +* Mon May 05 2008 Matthias Clasen - 1:2.22.0-5 +- autoreconf + +* Mon May 05 2008 Matthias Clasen - 1:2.22.0-4 +- add keyboard chooser + +* Mon May 05 2008 Matthias Clasen - 1:2.22.0-3 +- fix source url + +* Fri May 02 2008 William Jon McCann - 1:2.22.0-2 +- Retry tagging + +* Fri May 02 2008 William Jon McCann - 1:2.22.0-1 +- Update to 2.22.0 - Fix restarting when bus goes away + +* Thu May 01 2008 Ray Strode - 1:2.21.10-35 +- ConsoleKit fixes - Don't show session selector if only one session + installed - automatically pop up language/session selectors when using + mnemonics + +* Wed Apr 30 2008 William Jon McCann - 1:2.21.10-34 +- Fix debugging - Fix resetting slave after session migration - Desensitize + power buttons briefly after page switch - Remove Users: label from + greeter + +* Tue Apr 29 2008 William Jon McCann - 1:2.21.10-33 +- make transient greeter less transient to workaround spurious vt switch + +* Mon Apr 28 2008 Ray Strode - 1:2.21.10-32 +- a11y improvements - make "Suspend" desensitize properly when not- + available - make resize animation faster - user switcher fixes + +* Fri Apr 18 2008 Ray Strode - 1:2.21.10-31 +- Get Chinese back in language list + +* Fri Apr 18 2008 Ray Strode - 1:2.21.10-30 +- start orca without main window - add missing priorities for plugins - add + more failsafe lockdown + +* Wed Apr 16 2008 Ray Strode - 1:2.21.10-29 +- add bug reference + +* Wed Apr 16 2008 Ray Strode - 1:2.21.10-28 +- Disable typeahead when asking for password so password can't get shown in + clear text + +* Wed Apr 16 2008 Ray Strode - 1:2.21.10-27 +- Use start-here instead of fedora-logo-icon to aid generic-logos + +* Sat Apr 12 2008 Matthias Clasen - 1:2.21.10-26 +- Fix the XKB fix + +* Fri Apr 11 2008 Ray Strode - 1:2.21.10-25 +- add missing "- " + +* Fri Apr 11 2008 Ray Strode - 1:2.21.10-24 +- Fix security issue in last commit + +* Fri Apr 11 2008 Ray Strode - 1:2.21.10-23 +- Fix focus handling when tabbing from user-chooser to buttons - don't set + real uid to user before setcred - fix permissions on /var/run/gdm ... + again + +* Thu Apr 10 2008 Matthias Clasen - 1:2.21.10-22 +- Work around a XKB problem + +* Wed Apr 09 2008 Ray Strode - 1:2.21.10-21 +- Language list was incomplete (bug 441613) + +* Tue Apr 08 2008 Ray Strode - 1:2.21.10-20 +- Fix permissions on /var/run/gdm + +* Tue Apr 08 2008 Ray Strode - 1:2.21.10-19 +- Install X auth cookies in /var/run/gdm instead of /tmp + +* Tue Apr 08 2008 Ray Strode - 1:2.21.10-18 +- Disable image for automatic login and other user - Act more sanely if + gnome isn't installed + +* Mon Apr 07 2008 Ray Strode - 1:2.21.10-17 +- Allow double-click to select language from list + +* Mon Apr 07 2008 Ray Strode - 1:2.21.10-16 +- Make automatic login timer fade in - No more checkboxes in user-switch + applet + +* Mon Apr 07 2008 Ray Strode - 1:2.21.10-15 +- Focus face browser after failed login attempt - disable debug messages + until 2.22.0 is released + +* Sun Apr 06 2008 Matthias Clasen - 1:2.21.10-14 +- Improve handling of CK error messages + +* Sun Apr 06 2008 Ray Strode - 1:2.21.10-13 +- Fix jump in animation for autologin - Fix crash if LANG="somethingbogus" + +* Sat Apr 05 2008 Ray Strode - 1:2.21.10-12 +- Fix crash when canceling autologin + +* Sat Apr 05 2008 Matthias Clasen - 1:2.21.10-11 +- fix handling of gconf schemas + +* Thu Apr 03 2008 Ray Strode - 1:2.21.10-10 +- Update to snapshot - Improves shrink/grow animation of login window + +* Thu Apr 03 2008 William Jon McCann - 1:2.21.10-9 +- Update to snapshot + +* Mon Mar 31 2008 Matthias Clasen - 1:2.21.10-8 +- Fix a directory ownership oversight + +* Wed Mar 26 2008 William Jon McCann - 1:2.21.10-7 +- Fix build due to #436349 + +* Wed Mar 26 2008 William Jon McCann - 1:2.21.10-6 +- Update to newer snapshot that includes more lockdown + +* Wed Mar 26 2008 Ray Strode - 1:2.21.10-5 +- add unpackaged filed + +* Wed Mar 26 2008 Ray Strode - 1:2.21.10-4 +- Update to snapshot - Turn on profiling + +* Sat Mar 22 2008 Matthias Clasen - 1:2.21.10-3 +- Drop dependency on theme package we don;t use + +* Wed Mar 19 2008 Ray Strode - 1:2.21.10-2 +- Fix default path (bug 430187) + +* Tue Mar 18 2008 William Jon McCann - 1:2.21.10-1 +- Update to snapshot + +* Mon Mar 17 2008 Matthias Clasen - 1:2.21.9-11 +- implement tooltips in the language selection dialog + +* Mon Mar 17 2008 Matthias Clasen - 1:2.21.9-10 +- no fuse in the sandbox + +* Tue Mar 11 2008 Ray Strode - 1:2.21.9-9 +- remove duplication signal definition from bad patch merge which led to + crash for "Other" user + +* Tue Mar 11 2008 William Jon McCann - 1:2.21.9-8 +- Fix case where we can't lookup a user. + +* Tue Mar 11 2008 William Jon McCann - 1:2.21.9-7 +- Update to 2.21.9 + +* Mon Mar 10 2008 Ray Strode - 1:2.21.9-6 +- Prevent some spurious wake ups caused by the timed login timer animation + +* Mon Mar 10 2008 Ray Strode - 1:2.21.9-5 +- add unpackaged files + +* Mon Mar 10 2008 Ray Strode - 1:2.21.9-4 +- Update to latest snapshot + +* Fri Mar 07 2008 David Woodhouse - 1:2.21.9-3 +- fix endianness breakage + +* Tue Mar 04 2008 Ray Strode - 1:2.21.9-2 +- Be more explicit in file list; use less globs - Don't package user- + switcher in both packages! + +* Fri Feb 29 2008 Ray Strode - 1:2.21.9-1 +- Update to snapshot - Split user-switcher out + +* Tue Feb 26 2008 William Jon McCann - 1:2.21.8-1 +- Update to 2.21.8 + +* Wed Feb 13 2008 William Jon McCann - 1:2.21.7-4 +- Update to 2.21.7 + +* Sat Feb 09 2008 Ray Strode - 1:2.21.7-3 +- add a RPM_BUILD_ROOT where needed + +* Sat Feb 09 2008 Ray Strode - 1:2.21.7-2 +- Add BuildRequires Fix changelog entry + +* Sat Feb 09 2008 Ray Strode - 1:2.21.7-1 +- Update to snapshot + +* Thu Jan 31 2008 William Jon McCann - 1:2.21.6-1 +- Update to 2.21.6 + +* Thu Jan 24 2008 Ray Strode - 1:2.21.5-2 +- add BuildRequires for iso-codes-devel + +* Fri Jan 18 2008 William Jon McCann - 1:2.21.5-1 +- Update to 2.21.5 + +* Thu Jan 17 2008 William Jon McCann - 1:2.21.2-27 +- Rebuild + +* Mon Jan 14 2008 Daniel J Walsh - 1:2.21.2-26 +- Fix gdm.pam file so that session include system-auth happens after other + session setup + +* Mon Jan 07 2008 Ray Strode - 1:2.21.2-25 +- hide guest account since it doesn't work + +* Fri Dec 21 2007 Ray Strode - 1:2.21.2-24 +- Fix background (and other settings) + +* Wed Dec 19 2007 Ray Strode - 1:2.21.2-23 +- Improve animation to be less jumpy + +* Wed Dec 19 2007 Ray Strode - 1:2.21.2-22 +- drop unused patches + +* Fri Dec 14 2007 Ray Strode - 1:2.21.2-21 +- one more time... + +* Fri Dec 14 2007 Ray Strode - 1:2.21.2-20 +- fix typo from editing patch in place + +* Fri Dec 14 2007 Ray Strode - 1:2.21.2-19 +- Fix an uninitialized variable that makes the session list stop growing + before its finished sometimes + +* Thu Dec 13 2007 Ray Strode - 1:2.21.2-18 +- add session chooser to login screen - add hoaky animations + +* Fri Nov 30 2007 Ray Strode - 1:2.21.2-17 +- add missing patch + +* Fri Nov 30 2007 Matthias Clasen - 1:2.21.2-16 +- Make keyring unlocking work + +* Wed Nov 21 2007 Ray Strode - 1:2.21.2-15 +- use metacity for now + +* Tue Nov 20 2007 Ray Strode - 1:2.21.2-14 +- Drop dont run profile patch since dwalsh changed /usr/sbin/gdm label + +* Tue Nov 20 2007 Ray Strode - 1:2.21.2-13 +- Update to today's snapshot + +* Mon Nov 19 2007 Ray Strode - 1:2.21.2-12 +- fix permissions on homedir + +* Mon Nov 19 2007 Ray Strode - 1:2.21.2-11 +- move homedir to /var/lib/gdm + +* Mon Nov 19 2007 Ray Strode - 1:2.21.2-10 +- more file list fixups + +* Mon Nov 19 2007 Ray Strode - 1:2.21.2-9 +- add other patch + +* Mon Nov 19 2007 Ray Strode - 1:2.21.2-8 +- add dropped patch + +* Mon Nov 19 2007 Ray Strode - 1:2.21.2-7 +- update filelist + +* Mon Nov 19 2007 Ray Strode - 1:2.21.2-6 +- Update to today's snapshot + +* Thu Nov 15 2007 Ray Strode - 1:2.21.2-5 +- don't source /etc/profile at startup + +* Wed Nov 14 2007 Ray Strode - 1:2.21.2-4 +- Update to today's snapshot + +* Fri Nov 09 2007 Ray Strode - 1:2.21.2-3 +- one more time... + +* Fri Nov 09 2007 Ray Strode - 1:2.21.2-2 +- s/config/data/ + +* Fri Nov 09 2007 Ray Strode - 1:2.21.2-1 +- Update to today's snapshot + +* Tue Oct 30 2007 Ray Strode - 1:2.21.1-5 +- Update to today's snapshot + +* Tue Oct 30 2007 Ray Strode - 1:2.21.1-4 +- Update to today's snapshot + +* Wed Oct 24 2007 Ray Strode - 1:2.21.1-3 +- Update to today's snapshot + +* Mon Oct 22 2007 Ray Strode - 1:2.21.1-2 +- remove some upstreamed patches + +* Mon Oct 22 2007 Ray Strode - 1:2.21.1-1 +- Add a snapshot gdm trunk, totally different unfinished ui... + +* Wed Oct 17 2007 Daniel J Walsh - 1:2.99.0-4 +- keyinit has to happen after selinux open + +* Mon Oct 15 2007 Bill Nottingham - 1:2.99.0-3 +- makefile update to properly grab makefile.common + +* Sun Oct 14 2007 Ray Strode - 1:2.99.0-2 +- update patches + +* Sun Oct 14 2007 Ray Strode - 1:2.99.0-1 +- Add a snapshot from the mccann-gobject branch, totally different + unfinished ui... + +* Fri Oct 05 2007 Daniel J Walsh - 1:2.20.0-18 +- Update spec for pam changes + +* Fri Oct 05 2007 Daniel J Walsh - 1:2.20.0-17 +- add pam_selinux_permit and pam_namespace so xguest autologin will work + and pam_namespace will work + +* Wed Oct 03 2007 Alexander Larsson - 1:2.20.0-16 +- Fix up pam keyring integration to be what the latest version of the docs + says + +* Tue Oct 02 2007 Ray Strode - 1:2.20.0-15 +- Actually add said escape == cancel behavior back + +* Tue Oct 02 2007 Ray Strode - 1:2.20.0-14 +- Add escape == cancel behavior back + +* Mon Oct 01 2007 Matthias Clasen - 1:2.20.0-13 +- fix a reference handling issue + +* Mon Oct 01 2007 Ray Strode - 1:2.20.0-12 +- apply upstream patch from Brady Anderson to + fix writing out .dmrc file when setting default language (upstream bug + 453916) + +* Fri Sep 28 2007 Ray Strode - 1:2.20.0-11 +- drop redhat-artwork dep, add fedorainfinity-gdm-theme dep + +* Fri Sep 28 2007 Ray Strode - 1:2.20.0-10 +- update bug link + +* Fri Sep 28 2007 Ray Strode - 1:2.20.0-9 +- Another crack at 240853 + +* Fri Sep 28 2007 Matthias Clasen - 1:2.20.0-8 +- fix the stupid bullets + +* Thu Sep 27 2007 Ray Strode - 1:2.20.0-7 +- The previously mentioned typo didn't matter before because the compiled + in default matched what the config file was supposed to say. This commit + restores matched default behavior (bug 301031) + +* Thu Sep 27 2007 Ray Strode - 1:2.20.0-6 +- Fix an apparent typo in the securitytokens.conf config file (bug 301031) + +* Thu Sep 20 2007 Matthias Clasen - 1:2.20.0-5 +- reenable root login + +* Wed Sep 19 2007 Matthias Clasen - 1:2.20.0-4 +- FedoraInfinity + +* Wed Sep 19 2007 Matthias Clasen - 1:2.20.0-3 +- fix a hang + +* Tue Sep 18 2007 Matthias Clasen - 1:2.20.0-2 +- re-add faces to sources + +* Tue Sep 18 2007 Matthias Clasen - 1:2.20.0-1 +- 2.20.0 + +* Wed Sep 12 2007 Ray Strode - 1:2.19.8-7 +- Change default password character back to circle instead of asterisk (bug + 287951) + +* Fri Sep 07 2007 Ray Strode - 1:2.19.8-6 +- add buildrequires for libselinux-devel + +* Fri Sep 07 2007 Ray Strode - 1:2.19.8-5 +- rev release + +* Fri Sep 07 2007 Ray Strode - 1:2.19.8-4 +- rebuild --with-selinux + +* Fri Sep 07 2007 Ray Strode - 1:2.19.8-3 +- rev release + +* Fri Sep 07 2007 Ray Strode - 1:2.19.8-2 +- make things work better for xguest users (bug 254164) + +* Fri Sep 07 2007 Matthias Clasen - 1:2.19.8-1 +- 2.19.8 + +* Tue Sep 04 2007 Matthias Clasen - 1:2.19.7-1 +- 2.19.7 + +* Fri Aug 24 2007 Ray Strode - 1:2.19.6-9 +- use pam_selinux instead of home grown selinux code (bug 254164) + +* Wed Aug 22 2007 Kristian Høgsberg - 1:2.19.6-8 +- Pass -br to the default X server too. + +* Sat Aug 18 2007 Ray Strode - 1:2.19.6-7 +- update previous changelog entry to actually make sense + +* Sat Aug 18 2007 Ray Strode - 1:2.19.6-6 +- le sigh + +* Sat Aug 18 2007 Ray Strode - 1:2.19.6-5 +- disable root password (see "low-hanging fruit" discussion on fedora- + desktop-list) + +* Thu Aug 16 2007 Ray Strode - 1:2.19.6-4 +- disable type ahead in user list (bug 252991) + +* Thu Aug 16 2007 Matthias Clasen - 1:2.19.6-3 +- use find_lang for help files + +* Thu Aug 16 2007 Matthias Clasen - 1:2.19.6-2 +- re-add faces to sources + +* Thu Aug 16 2007 Matthias Clasen - 1:2.19.6-1 +- 2.19.6 + +* Mon Aug 13 2007 Adam Jackson - 1:2.19.5-11 +- Remove the filereq on /etc/pam.d/system-auth, pam alone is sufficient. - + Bump the pam requirement to 0.99, 0.75 is ancient. + +* Sun Aug 12 2007 Matthias Clasen - 1:2.19.5-10 +- fix the previous fix + +* Sun Aug 12 2007 Matthias Clasen - 1:2.19.5-9 +- make gdmsetup work with consolehelper and pam, again + +* Mon Aug 06 2007 Matthias Clasen - 1:2.19.5-8 +- remove a conflict marker + +* Mon Aug 06 2007 Matthias Clasen - 1:2.19.5-7 +- require gnome-keyring-pam + +* Mon Aug 06 2007 Ray Strode - 1:2.19.5-6 +- change previous patch to drop even more code + +* Mon Aug 06 2007 Ray Strode - 1:2.19.5-5 +- turn off dwellmouselistener if devices don't send core events. don't warp + pointer to stylus ever (upstream bug 457998) + +* Fri Aug 03 2007 Ray Strode - 1:2.19.5-4 +- remove dwellmouselistener module from default configuration. It's pretty + broken (bug 248752) + +* Fri Aug 03 2007 Matthias Clasen - 1:2.19.5-3 +- update license field + +* Tue Jul 31 2007 Matthias Clasen - 1:2.19.5-2 +- update sources + +* Tue Jul 31 2007 Matthias Clasen - 1:2.19.5-1 +- 2.19.5 + +* Mon Jul 30 2007 Matthias Clasen - 1:2.19.4-3 +- add optional gnome-keyring support to the gdm pam stack + +* Wed Jul 11 2007 Ray Strode - 1:2.19.4-2 +- update sources file + +* Wed Jul 11 2007 Ray Strode - 1:2.19.4-1 +- Update to 2.19.4 + +* Thu Jun 28 2007 Ray Strode - 1:2.19.3-4 +- set Browser=true by default + +* Wed Jun 27 2007 Matthias Clasen - 1:2.19.3-3 +- drop unneeded requires + +* Mon Jun 18 2007 Ray Strode - 1:2.19.3-2 +- add sources file + +* Mon Jun 18 2007 Ray Strode - 1:2.19.3-1 +- Update to 2.19.3 + +* Tue Jun 05 2007 Matthias Clasen - 1:2.19.2-3 +- Fix file list + +* Tue Jun 05 2007 Matthias Clasen - 1:2.19.2-2 +- Fix up file lists + +* Tue Jun 05 2007 Matthias Clasen - 1:2.19.2-1 +- 2.19.2 + +* Tue May 22 2007 Matthias Clasen - 1:2.19.1-10 +- remove wrong bug ref + +* Mon May 21 2007 Matthias Clasen - 1:2.19.1-9 +- move patch fixes + +* Mon May 21 2007 Matthias Clasen - 1:2.19.1-8 +- grr, syslog missing + +* Mon May 21 2007 Matthias Clasen - 1:2.19.1-7 +- another try + +* Mon May 21 2007 Matthias Clasen - 1:2.19.1-6 +- fix another patch + +* Mon May 21 2007 Matthias Clasen - 1:2.19.1-5 +- more display list fixing + +* Mon May 21 2007 Matthias Clasen - 1:2.19.1-4 +- fix patch + +* Mon May 21 2007 Matthias Clasen - 1:2.19.1-3 +- fix patch + +* Mon May 21 2007 Matthias Clasen - 1:2.19.1-2 +- fix sources + +* Mon May 21 2007 Matthias Clasen - 1:2.19.1-1 +- Update tons of patches + +* Tue May 15 2007 Ray Strode - 1:2.18.0-22 +- remove erroneous patch line + +* Tue May 15 2007 Ray Strode - 1:2.18.0-21 +- hide users from userlist that have disabled shells (bug 240148) + +* Fri May 11 2007 Matthias Clasen - 1:2.18.0-20 +- Follow packaging guidelines for scrollkeeper dependencies + +* Mon May 07 2007 Ray Strode - 1:2.18.0-19 +- reenable utmp logging (bug 209537) + +* Thu May 03 2007 Ray Strode - 1:2.18.0-18 +- i'm going to say "spandex" now, so I hope no one is reading + +* Tue Apr 17 2007 Ray Strode - 1:2.18.0-17 +- Be more verbose to help isolate the problem in bug 234567 + +* Thu Apr 12 2007 Ray Strode - 1:2.18.0-16 +- add "Default" session back to the sessions menu (bug 234218) + +* Thu Apr 05 2007 Ray Strode - 1:2.18.0-15 +- grr fix typo in patch + +* Thu Apr 05 2007 Ray Strode - 1:2.18.0-14 +- add upstream bug reference for "hide uninstalled languages" patch + +* Thu Apr 05 2007 Ray Strode - 1:2.18.0-13 +- don't expect utf-8 usernames for plain greeter face browser either. + +* Thu Apr 05 2007 Ray Strode - 1:2.18.0-12 +- don't expect utf8 in plain greeter either + +* Thu Apr 05 2007 Ray Strode - 1:2.18.0-11 +- don't expect utf-8 usernames for face browser (bug 235351). + +* Thu Mar 29 2007 Ray Strode - 1:2.18.0-10 +- don't strcpy overlapping strings (bug 208181). + +* Tue Mar 27 2007 Matthias Clasen - 1:2.18.0-9 +- Hide gdmphotosetup + +* Tue Mar 20 2007 Ray Strode - 1:2.18.0-8 +- add bugzilla reference + +* Tue Mar 20 2007 Ray Strode - 1:2.18.0-7 +- add fix to allow themes to cope with low resolution modes better (bug + 232672) + +* Tue Mar 20 2007 Ray Strode - 1:2.18.0-6 +- uncomment securitytoken conf file from file list + +* Tue Mar 20 2007 Ray Strode - 1:2.18.0-5 +- update and reenable security token patch + +* Tue Mar 20 2007 David Zeuthen - 1:2.18.0-4 +- Also pass AT's to the session from the plain greeter (#232518) - New + faces including new subpackage gdm-extra-faces + +* Tue Mar 13 2007 David Zeuthen - 1:2.18.0-3 +- bump + +* Tue Mar 13 2007 David Zeuthen - 1:2.18.0-2 +- Update to upstream release 2.18.0 - Switch default theme to + FedoraFlyingHigh and show /etc/passwd users - Fix accessibility in the + themed greeter (GNOME #412576) - Enable accessible login, make sure gdm + can access devices and pass activated AT's to the login session (#229912) + - Disable smart card login for now as patch doesn't apply anymore + +* Tue Mar 13 2007 Matthias Clasen - 1:2.18.0-1 +- 2.18.0 + +* Fri Mar 09 2007 Ray Strode - 1:2.17.8-4 +- fix a typo in patch + +* Fri Mar 09 2007 Ray Strode - 1:2.17.8-3 +- hide langauges that aren't displayable from the list (bug 206048) + +* Tue Mar 06 2007 Ray Strode - 1:2.17.8-2 +- turn off pam sanity check because it conflicts with audit + +* Wed Feb 28 2007 Matthias Clasen - 1:2.17.8-1 +- 2.17.8 + +* Sat Feb 24 2007 Matthias Clasen - 1:2.17.7-6 +- fix keynav in the face browser + +* Sat Feb 24 2007 David Zeuthen - 1:2.17.7-5 +- Add some enhancements to the greeter (bgo #411427) + +* Sat Feb 24 2007 Ray Strode - 1:2.17.7-4 +- readd audit patch + +* Sat Feb 24 2007 Ray Strode - 1:2.17.7-3 +- drop the dot + +* Sat Feb 24 2007 Ray Strode +- Update to 2.17.7 + +* Fri Feb 23 2007 Matthias Clasen - 1:2.17.7-1 +- small fixes + +* Mon Feb 12 2007 Matthias Clasen - 1:2.17.6-4 +- more fast user switching fixups + +* Sat Feb 10 2007 Matthias Clasen - 1:2.17.6-3 +- fix a consolekit problem + +* Wed Feb 07 2007 Matthias Clasen - 1:2.17.6-2 +- improve fast user switching experience + +* Tue Jan 23 2007 Matthias Clasen - 1:2.17.6-1 +- 2.17.6 + +* Sat Jan 13 2007 Matthias Clasen - 1:2.17.5-2 +- Enable ConsoleKit + +* Thu Jan 11 2007 Matthias Clasen - 1:2.17.5-1 +- 2.17.5 + +* Fri Dec 15 2006 Matthias Clasen - 1:2.17.4-2 +- fix spec + +* Fri Dec 15 2006 Matthias Clasen - 1:2.17.4-1 +- 2.17.4 + +* Tue Dec 05 2006 Matthias Clasen - 1:2.17.3-2 +- 2.17.3 + +* Tue Dec 05 2006 Matthias Clasen - 1:2.17.3-1 +- 2.17.3 + +* Tue Nov 07 2006 Matthias Clasen - 1:2.17.2-1 +- 2.17.2 + +* Sun Nov 05 2006 Matthias Clasen - 1:2.17.1-1 +- 2.17.1 + +* Thu Oct 26 2006 Matthias Clasen - 1:2.17.0-2 +- fix a gdm crash + +* Mon Oct 23 2006 Matthias Clasen - 1:2.17.0-1 +- 2.17.0 + +* Tue Oct 17 2006 Matthias Clasen - 1:2.16.0-17 +- fix a nonworking help button + +* Mon Oct 16 2006 Ray Strode - 1:2.16.0-16 +- don't log canceled pam conversations as failed login attempts + +* Sun Oct 15 2006 Ray Strode - 1:2.16.0-15 +- Prefer modules in secmod db over hardcoded coolkey path + +* Sun Oct 15 2006 Ray Strode - 1:2.16.0-14 +- have security token monitor helper process kill itself when the + communication pipe to the main process goes away (bug 210677). + +* Fri Oct 13 2006 Ray Strode - 1:2.16.0-13 +- desensitize entry fields until pam asks for input, so if pam doesn't + initially ask for input (like in smart card required mode) the user can't + type something and confuse gdm (bug 201344) + +* Fri Oct 06 2006 Ray Strode - 1:2.16.0-12 +- invoke standard X server with -br option to ensure we get a black root on + startup + +* Fri Oct 06 2006 Ray Strode - 1:2.16.0-11 +- make monitoring code more reliable (bug 208018) + +* Wed Sep 27 2006 Matthias Clasen - 1:2.16.0-10 +- Fix a small gdmsetup bug + +* Wed Sep 27 2006 Matthias Clasen - 1:2.16.0-9 +- fix a markup problem + +* Tue Sep 19 2006 Ray Strode - 1:2.16.0-8 +- Add as_IN, si_LK to language list (bug 203917) + +* Mon Sep 18 2006 Ray Strode - 1:2.16.0-7 +- fix a problem recently introduced in the smart card forking code + +* Mon Sep 18 2006 Ray Strode - 1:2.16.0-6 +- fix a problem recently introduced in the smart card driver loading code + (bug 206882) + +* Fri Sep 15 2006 Ray Strode - 1:2.16.0-5 +- don't leak pipe fds (bug 206709) + +* Thu Sep 14 2006 Ray Strode - 1:2.16.0-4 +- update security token patch to not poll + +* Sat Sep 09 2006 Jesse Keating - 1:2.16.0-3 +- use correct defaults patch + +* Thu Sep 07 2006 Matthias Clasen - 1:2.16.0-2 +- Use new default theme + +* Tue Sep 05 2006 Matthias Clasen - 1:2.16.0-1 +- 2.16.0 + +* Sat Aug 26 2006 Karsten Hopp - 1:2.15.10-3 +- buildrequire inttools as this isn't a requirement of scrollkeeper anymore + and thus missing from the buildroot + +* Mon Aug 21 2006 Matthias Clasen - 1:2.15.10-2 +- drop patch + +* Mon Aug 21 2006 Matthias Clasen - 1:2.15.10-1 +- 2.15.10 + +* Mon Aug 14 2006 Ray Strode - 1:2.15.9-1 +- update to 2.15.9 + +* Fri Aug 04 2006 Ray Strode - 1:2.15.7-4 +- update gdmsetup pam file to use config-util stacks + +* Thu Aug 03 2006 Ray Strode - 1:2.15.7-3 +- add new source tarball + +* Thu Aug 03 2006 Ray Strode - 1:2.15.7-2 +- update to 2.15.7 - drop selinux patch that I don't think was ever + finished + +* Thu Aug 03 2006 Ray Strode - 1:2.15.7-1 +- update to 2.15.7 + +* Thu Aug 03 2006 Ray Strode - 1:2.15.6-15 +- fix face browser (http://bugzilla.gnome.org/show_bug.cgi?id=349640) - fix + error message reporting + (http://bugzilla.gnome.org/show_bug.cgi?id=349758) + +* Sat Jul 22 2006 Ray Strode - 1:2.15.6-14 +- simplify all the security token code by only using one pam stack - drop + lame kill on token removal feature + +* Fri Jul 21 2006 Ray Strode - 1:2.15.6-13 +- move authcookies out of home directories to prevent problems on nfs/afs + mounted home directories (bug 178233). + +* Fri Jul 21 2006 Ray Strode - 1:2.15.6-12 +- really fix annoying dialog problem mentioned in 2.15.6-6 + +* Wed Jul 19 2006 Ray Strode - 1:2.15.6-11 +- center cursor on xinerama head (bug 180085) + +* Wed Jul 19 2006 Ray Strode - 1:2.15.6-10 +- add "kill all sessions on token removal" feature + +* Tue Jul 18 2006 Ray Strode - 1:2.15.6-9 +- rev release + +* Tue Jul 18 2006 Ray Strode - 1:2.15.6-8 +- reenable session keyring support in pam module (bug 198629) + +* Tue Jul 18 2006 Ray Strode - 1:2.15.6-7 +- add /etc/gdm/securitytoken.conf to file list + +* Tue Jul 18 2006 Ray Strode - 1:2.15.6-6 +- make security token support use its own config file in preparation for + modularizing it. + +* Mon Jul 17 2006 Ray Strode - 1:2.15.6-5 +- fix off-by-one in the process-all-ops patch that was causing an anoying + dialog to pop up on each login + +* Mon Jul 17 2006 Ray Strode - 1:2.15.6-4 +- add initial wtmp and btmp logging support 2.15.6-4 - fix bug in security + token support + +* Fri Jul 14 2006 Ray Strode - 1:2.15.6-3 +- fix hang in gdmsetup + +* Fri Jul 14 2006 Ray Strode - 1:2.15.6-2 +- put new pam module at top of stack (bug 198629) + +* Wed Jul 12 2006 Ray Strode - 1:2.15.6-1 +- Update to 2.15.6 + +* Wed Jul 12 2006 Ray Strode - 1:2.15.5-9 +- add new pam module to pam files to support kernel session keyring + +* Wed Jul 12 2006 Jesse Keating - 1:2.15.5-8 +- bumped for rebuild + +* Wed Jul 12 2006 Ray Strode - 1:2.15.5-7 +- add missing buildrequires + +* Wed Jul 12 2006 Ray Strode - 1:2.15.5-6 +- add initial support for smart card security tokens + +* Fri Jul 07 2006 Ray Strode - 1:2.15.5-5 +- rev release + +* Fri Jul 07 2006 Ray Strode - 1:2.15.5-4 +- add patch to process all operations when more than one comes in really + quickly - move default "Please enter your username" message to the + greeter instead of the slave so that it doesn't get stacked if a pam + module has a non default message - add new message for reseting the + current login operation (like the cancel button does, but accessible via + the gdm fifo) + +* Tue Jun 13 2006 Matthias Clasen - 1:2.15.5-3 +- drop more patches + +* Tue Jun 13 2006 Matthias Clasen - 1:2.15.5-2 +- drop upstreamed patches + +* Tue Jun 13 2006 Matthias Clasen - 1:2.15.5-1 +- 2.15.5 + +* Tue Jun 13 2006 Bill Nottingham - 1:2.15.3-13 +- we call automake-1.9, don't buildreq automake14 + +* Thu Jun 08 2006 Ray Strode - 1:2.15.3-12 +- fix CVE-2006-2452 + +* Wed Jun 07 2006 Jeremy Katz - 1:2.15.3-11 +- no xserver on ppc64 yet + +* Wed Jun 07 2006 Jeremy Katz - 1:2.15.3-10 +- fix s390 build + +* Wed Jun 07 2006 Jeremy Katz - 1:2.15.3-9 +- buildrequire the server so that we get the path right in the config file + +* Tue Jun 06 2006 Karsten Hopp - 1:2.15.3-8 +- gdm looses DMX support when built in mock/brew without buildrequiring + libdmx-devel + +* Mon Jun 05 2006 Matthias Clasen - 1:2.15.3-7 +- fix requires + +* Tue May 23 2006 Ray Strode - 1:2.15.3-6 +- Support xdm -nodaemon option (bug 192461) + +* Mon May 22 2006 Matthias Clasen - 1:2.15.3-5 +- fix build reqs + +* Mon May 22 2006 Matthias Clasen - 1:2.15.3-4 +- fix build reqs + +* Thu May 18 2006 Matthias Clasen - 1:2.15.3-3 +- make it build` + +* Wed May 17 2006 Matthias Clasen - 1:2.15.3-2 +- remove obsolete patch + +* Wed May 17 2006 Matthias Clasen - 1:2.15.3-1 +- 2.15.3 + +* Wed May 10 2006 Matthias Clasen - 1:2.15.0-2 +- make it compile + +* Wed May 10 2006 Matthias Clasen - 1:2.15.0-1 +- 2.15.0 + +* Wed Apr 26 2006 Matthias Clasen - 1:2.14.4-1 +- 2.14.4 + +* Wed Apr 12 2006 Ray Strode - 1:2.14.1-4 +- fix libexecdir substitution problem in configuration file + +* Tue Apr 11 2006 Ray Strode - 1:2.14.1-3 +- Add gdmthemetester.in to the mix (upstream bug 338079) + +* Tue Apr 11 2006 Matthias Clasen - 1:2.14.1-2 +- 2.14.1 + +* Tue Apr 11 2006 Matthias Clasen - 1:2.14.1-1 +- 2.14.1 + +* Mon Mar 13 2006 Ray Strode - 1:2.14.0-1 +- Update to 2.14.0 + +* Tue Mar 07 2006 Ray Strode - 1:2.13.0.9-4 +- Follow Solaris's lead and default to AlwaysRestartServer=True (may work + around bug 182957) + +* Tue Mar 07 2006 Ray Strode - 1:2.13.0.9-3 +- migrate users with baseXsession=/etc/X11/gdm/Xsession to + /etc/X11/xinit/Xsession + +* Mon Mar 06 2006 Ray Strode - 1:2.13.0.9-2 +- disable sounds completely when disabled in configuration file (upstream + bug 333435) + +* Tue Feb 28 2006 Ray Strode - 1:2.13.0.9-1 +- Update to 2.13.0.9 - Use new %%%%post section, written by Michal + Jaegermann (bug 183082) + +* Sun Feb 26 2006 Ray Strode - 1:2.13.0.8-8 +- Use new %%%%post section, written by Michal Jaegermann + (bug 183082) + +* Sat Feb 25 2006 Ray Strode - 1:2.13.0.8-7 +- fix a broken link + +* Fri Feb 24 2006 Ray Strode - 1:2.13.0.8-6 +- change some /etc/X11 bits in the spec file to /etc + +* Fri Feb 24 2006 Ray Strode - 1:2.13.0.8-5 +- change some /etc/X11 bits in the spec file to /etc + +* Sun Feb 19 2006 Ray Strode - 1:2.13.0.8-4 +- add server entry for accel-indirect branch of xorg + +* Wed Feb 15 2006 Matthias Clasen - 1:2.13.0.8-3 +- fix a double free crash + +* Mon Feb 13 2006 Ray Strode - 1:2.13.0.8-2 +- s/bz2/gz/ + +* Mon Feb 13 2006 Ray Strode - 1:2.13.0.8-1 +- update to 2.13.0.8 + +* Mon Feb 13 2006 Ray Strode - 1:2.13.0.7.0.2006.02.12-2 +- migrate custom.conf settings with /etc/X11/gdm to /etc/gdm + +* Sun Feb 12 2006 Ray Strode - 1:2.13.0.7.0.2006.02.12-1 +- update to cvs snapshot - move gdm to /etc instead of /etc/X11 - move + custom gdm.conf to sysconfdir instead of symlinking from datadir (bug + 180364) + +* Sat Feb 11 2006 Jesse Keating - 1:2.13.0.7-5 +- bump for bug in double-long on ppc(64) + +* Thu Feb 09 2006 Matthias Clasen - 1:2.13.0.7-4 +- misc fixes + +* Thu Feb 09 2006 Matthias Clasen - 1:2.13.0.7-3 +- misc fixes + +* Tue Feb 07 2006 Jesse Keating - 1:2.13.0.7-2 +- bump for new gcc/glibc + +* Tue Jan 31 2006 Ray Strode - 1:2.13.0.7-1 +- update to 2.13.0.7 + +* Mon Jan 30 2006 Bill Nottingham - 1:2.13.0.5-7 +- be quiet! :) + +* Thu Jan 19 2006 Ray Strode - 1:2.13.0.5-6 +- sed -ie isn't the same as sed -i -e (we want the latter) + +* Thu Jan 19 2006 Ray Strode - 1:2.13.0.5-5 +- sed -ie isn't the same as sed -i -e (we want the latter) + +* Thu Jan 19 2006 Christopher Aillon - 1:2.13.0.5-4 +- Add patch to fix clock to default to 24h in locales that expect it + (175453) + +* Wed Jan 18 2006 Bill Nottingham - 1:2.13.0.5-3 +- UTF8! + +* Tue Jan 17 2006 Ray Strode - 1:2.13.0.5-2 +- remove selinux patch + +* Tue Jan 17 2006 Ray Strode - 1:2.13.0.5-1 +- update to 2.13.0.5 (bug 178099) + +* Tue Jan 17 2006 Ray Strode - 1:2.13.0.4-9 +- add new theme by Diana Fong, Máirín Duffy, and me + +* Mon Jan 16 2006 Ray Strode - 1:2.13.0.4-8 +- improve migration snippet (bug 177443). + +* Mon Jan 16 2006 Ray Strode - 1:2.13.0.4-7 +- add patch3 back + +* Mon Jan 16 2006 Ray Strode - 1:2.13.0.4-6 +- migrate to new greeter location (bug 177443). + +* Fri Jan 13 2006 Ray Strode - 1:2.13.0.4-5 +- migrate X server configuration for pre-modular X configurations. Problems + reported by Dennis Gregorovic + +* Mon Jan 09 2006 Ray Strode - 1:2.13.0.4-4 +- use xinit Xsession again. + +* Mon Jan 09 2006 Ray Strode - 1:2.13.0.4-3 +- update sources + +* Mon Jan 09 2006 Ray Strode - 1:2.13.0.4-2 +- fix changelog entry year to be right + +* Mon Jan 09 2006 Ray Strode - 1:2.13.0.4-1 +- update to 2.13.0.4 + +* Fri Dec 09 2005 Jesse Keating - 1:2.8.0.4-17 +- gcc update bump + +* Wed Nov 16 2005 Ray Strode - 1:2.8.0.4-16 +- Don't fallback to xsm, try gnome-session instead - Require xorg-x11-xinit + +* Mon Nov 14 2005 Ray Strode - 1:2.8.0.4-15 +- Make sure that dbus-launch gets called if available + +* Mon Nov 14 2005 Ray Strode - 1:2.8.0.4-14 +- add /etc/X11/gdm/Xsession to file list + +* Mon Nov 14 2005 Ray Strode - 1:2.8.0.4-13 +- Don't use X session / setup files anymore. - Don't install early login + init scripts - remove xsri dependency - don't prune language lists + anymore + +* Mon Nov 14 2005 Jeremy Katz - 1:2.8.0.4-12 +- also fix default xsession for where its moved in modular X + +* Sun Nov 13 2005 Jeremy Katz - 1:2.8.0.4-11 +- change requirements for modular X - patch to find x server with modular X + +* Thu Oct 20 2005 Ray Strode - 1:2.8.0.4-10 +- redhat-artwork was busted, require new version + +* Tue Oct 18 2005 Ray Strode - 1:2.8.0.4-9 +- zero-initialize message buffer, bug fixed by Josh Parson + (jbparsons@usdavis.edu) (bug 160603) - fix typo in redhat-artwork + requires line + +* Mon Oct 17 2005 Steve Grubb - 1:2.8.0.4-8 +- add login audit patch (bug 170569) + +* Mon Oct 17 2005 Ray Strode - 1:2.8.0.4-7 +- bump redhat-artwork requirement to get rid of the boot throbber for now, + since it seems to have reappeared mysteriously (bug 171025) + +* Fri Oct 14 2005 Daniel J Walsh - 1:2.8.0.4-6 +- Change to use getseuserbyname + +* Wed Sep 28 2005 Daniel J Walsh - 1:2.8.0.4-5 +- Fix selinux not to fail when in permissive mode + +* Tue Sep 27 2005 Ray Strode - 1:2.8.0.4-4 +- remove flexiserver from menus + +* Thu Sep 08 2005 Ray Strode - 1:2.8.0.4-3 +- gdmphotosetup.desktop moved + +* Thu Sep 08 2005 Ray Strode - 1:2.8.0.4-2 +- actually update source tarball + +* Thu Sep 08 2005 Ray Strode - 1:2.8.0.4-1 +- update to 2.8.0.4 + +* Tue Sep 06 2005 Ray Strode - 1:2.8.0.2-4 +- Apply clean up patch from Steve Grubb (gnome bug 315388). + +* Tue Aug 30 2005 Ray Strode - 1:2.8.0.2-3 +- Prune language list of installed languages - Make config file noreplace + again (bug 167087). + +* Mon Aug 22 2005 Ray Strode - 1:2.8.0.2-2 +- hide throbber + +* Fri Aug 19 2005 Ray Strode - 1:2.8.0.2-1 +- update to 2.8.0.2 - disable early login stuff temporarily + +* Thu Aug 18 2005 Ray Strode - 1:2.6.0.8-26 +- add patch i forgot about to cvs - disable patch in spec file + +* Thu Aug 18 2005 Ray Strode - 1:2.6.0.8-25 +- rebuild + +* Mon May 23 2005 Ray Strode - 1:2.6.0.8-24 +- Make sure username/password incorrect message gets displayed (bug + 158127). - reread system locale before starting gdm in early login mode + (bug 158376). + +* Thu May 19 2005 Ray Strode - 1:2.6.0.8-23 +- Take out some syslog spew (bug 157711). + +* Mon May 16 2005 Ray Strode - 1:2.6.0.8-22 +- workaround some cvs funkiness + +* Mon May 16 2005 Ray Strode - 1:2.6.0.8-21 +- Fix processing of new-line characters that got broken in 2.6.0.8-11 (bug + 157442). + +* Tue May 03 2005 Ray Strode - 1:2.6.0.8-20 +- rev release + +* Tue May 03 2005 Ray Strode - 1:2.6.0.8-19 +- Fix processing of non-ascii characters that got broken in 2.6.0.8-11, + found by Miloslav Trmac , (bug 156590). + +* Thu Apr 28 2005 Ray Strode - 1:2.6.0.8-18 +- Fix halt command (bug 156299) - Process all messages sent to the greeter + in a read, not just the first + +* Wed Apr 27 2005 Jeremy Katz - 1:2.6.0.8-17 +- silence %%postun + +* Tue Apr 26 2005 Ray Strode - 1:2.6.0.8-16 +- Change default standard greeter theme to clearlooks and default graphical + greeter theme to Bluecurve specifically. - Change default path values + (bug 154280) + +* Mon Apr 25 2005 Matthias Clasen - 1:2.6.0.8-15 +- Delay XDMCP initialization with early-login + +* Mon Apr 25 2005 Ray Strode - 1:2.6.0.8-14 +- add patch + +* Mon Apr 25 2005 Ray Strode - 1:2.6.0.8-13 +- rev release + +* Mon Apr 25 2005 Ray Strode - 1:2.6.0.8-12 +- calling gdm_debug and g_strdup_printf from signal handlers are bad news + (Spotted by Mark McLoughlin ). + +* Wed Apr 20 2005 Matthias Clasen - 1:2.6.0.8-11 +- Make it build + +* Wed Apr 20 2005 Matthias Clasen - 1:2.6.0.8-10 +- Boot throbber + +* Mon Apr 18 2005 Ray Strode - 1:2.6.0.8-9 +- Don't install gnome.desktop to /usr/share/xsessions (bug 145791) + +* Fri Apr 15 2005 Matthias Clasen - 1:2.6.0.8-8 +- Bump revision + +* Fri Apr 15 2005 Matthias Clasen - 1:2.6.0.8-7 +- Work on early-login + +* Thu Apr 14 2005 Matthias Clasen - 1:2.6.0.8-6 +- Make early-login work with firstboot + +* Thu Apr 14 2005 Ray Strode - 1:2.6.0.8-5 +- Fix invalid bug reference + +* Wed Apr 13 2005 Ray Strode - 1:2.6.0.8-4 +- Don't hard code dpi setting to 96.0, but instead look at Xft.dpi + +* Wed Apr 13 2005 Ray Strode - 1:2.6.0.8-3 +- touch /var/lock/subsys/gdm-early-login so gdm gets killed on runlevel + changes (bug 113107) - don't try to use system dpi settings for canvas + text (bug 127532) - merge resource database from displays other than :0 + +* Sat Apr 02 2005 Ray Strode - 1:2.6.0.8-2 +- update sources file for new source tarball + +* Sat Apr 02 2005 Ray Strode - 1:2.6.0.8-1 +- update to 2.6.0.8 - add new init scripts to support early-login mode + +* Tue Mar 29 2005 Ray Strode - 1:2.6.0.7-11 +- Update patch to hopefully build on x86_64 + +* Tue Mar 29 2005 Ray Strode - 1:2.6.0.7-10 +- Add a --wait-for-bootup cmdline option. + +* Mon Mar 28 2005 Matthias Clasen - 1:2.6.0.7-9 +- Add a --wait-for-system-started cmdline option + +* Mon Mar 28 2005 Christopher Aillon - 1:2.6.0.7-8 +- Fix if check in specfiles. + +* Fri Mar 25 2005 Christopher Aillon - 1:2.6.0.7-7 +- Update the GTK+ theme icon cache on (un)install + +* Fri Mar 11 2005 aoliva - 1:2.6.0.7-6 +- fix patch for bug 149899 (fixes bug 150745) + +* Wed Mar 09 2005 Than Ngo - 1:2.6.0.7-5 +- OnlyShowIn=GNOME; + +* Mon Feb 28 2005 Ray Strode - 1:2.6.0.7-4 +- seteuid/egid as user before testing for presence of user's home directory + (fixes bug 149899) + +* Thu Feb 10 2005 Ray Strode - 1:2.6.0.7-3 +- Turn off "switchdesk" mode by default which accidentally got turned on by + default in 2.6.0.5-4 + +* Wed Feb 02 2005 Matthias Clasen - 1:2.6.0.7-2 +- Upload new source + +* Wed Feb 02 2005 Matthias Clasen - 1:2.6.0.7-1 +- Update to 2.6.0.7 + +* Tue Jan 25 2005 Ray Strode - 1:2.6.0.5-12 +- Fix date in changelog entry. I'm a year behind the times aparently. + +* Tue Jan 25 2005 Ray Strode - 1:2.6.0.5-11 +- Fix bug in greeter sort-session-list patch where selecting a session did + nothing (bug 145626) + +* Thu Dec 09 2004 Daniel J Walsh - 1:2.6.0.5-10 +- Remove pam_selinux from gdmsetup pam file + +* Wed Dec 01 2004 Ray Strode - 1:2.6.0.5-9 +- Look up and use username instead of assuming that user entered login is + cannonical. Patch from Mike Patnode (fixes + bug 141380). + +* Fri Nov 12 2004 Ray Strode - 1:2.6.0.5-8 +- Sort session list so that default session comes out on top (fixes bug + 107324) + +* Thu Nov 11 2004 Ray Strode - 1:2.6.0.5-7 +- Make desktop file symlink instead of absolute (bug 104390) - Add + flexiserver back to menus + +* Wed Oct 20 2004 Ray Strode - 1:2.6.0.5-6 +- Clean up xses if the session was successfullly completed. (fixes bug + #136382) + +* Tue Oct 19 2004 Ray Strode - 1:2.6.0.5-5 +- Prefer nb_NO over no_NO for Norwegian (fixes bug #136033) + +* Thu Oct 07 2004 Alexander Larsson - 1:2.6.0.5-4 +- Change default greeter theme to "Default", require redhat-artwork with + Default symlink. + +* Wed Sep 29 2004 Ray Strode - 1:2.6.0.5-3 +- Check if there is a selected node before using iterator. (fixes bug + #133329). + +* Fri Sep 24 2004 Ray Strode - 1:2.6.0.5-2 +- Don't mess with gdmphotosetup categories. Upstream categories are fine. + +* Mon Sep 20 2004 Ray Strode - 1:2.6.0.5-1 +- update to 2.6.0.5 + +* Thu Sep 09 2004 cvsdist - 1:2.6.0.3-5 +- auto-import gdm-2.6.0.3-5 from gdm-2.6.0.3-5.src.rpm + +* Thu Sep 09 2004 cvsdist - 1:2.6.0.3-4 +- auto-import changelog data from gdm-2.6.0.3-4.src.rpm 2.6.0.3-4 - rebuilt + +* Thu Sep 09 2004 cvsdist - 1:2.6.0.3-3 +- auto-import changelog data from gdm-2.6.0.3-3.src.rpm 2.6.0.3-3 - rebuilt + +* Thu Sep 09 2004 cvsdist - 1:2.6.0.3-2 +- auto-import changelog data from gdm-2.6.0.3-2.src.rpm 2.6.0.3-2 - fix + theme (#128599) + +* Thu Sep 09 2004 cvsdist - 1:2.6.0.3-1 +- auto-import changelog data from gdm-2.6.0.3-1.src.rpm 2.6.0.3-1 - update + to 2.6.0.3 (fixes bug #117677) + +* Thu Sep 09 2004 cvsdist - 1:2.6.0.0-4 +- auto-import changelog data from gdm-2.6.0.0-6.src.rpm Tue Jun 15 2004 + Elliot Lee - rebuilt + +* Thu Sep 09 2004 cvsdist - 1:2.6.0.0-3 +- auto-import changelog data from gdm-2.6.0.0-5.src.rpm 2.6.0.0-5 - rebuild + +* Thu Sep 09 2004 cvsdist - 1:2.6.0.0-2 +- auto-import changelog data from gdm-2.6.0.0-4.src.rpm 2.6.0.0-4 - add + patch to build gdm-binary with PIE + +* Thu Sep 09 2004 cvsdist - 1:2.6.0.0-1 +- auto-import changelog data from gdm-2.6.0.0-3.src.rpm 2.6.0.0-3 - Update + the "use switchdesk" message to only be display when switchdesk-gui is + installed and to not reference a non existant menu item (bug #121460) + 2.6.0.0-2 - Always put session errors in /tmp, in preparation for + completely preventing gdm from writing to /home/ 2.6.0.0-1 - update to + 2.6.0.0 + +* Thu Sep 09 2004 cvsdist - 1:2.5.90.2-1 +- auto-import changelog data from gdm-2.5.90.2-3.src.rpm 2.5.90.3-1 - Use + selinux patch again 2.5.90.3-1 - Stop using selinux patch and use + pam_selinux instead. 2.5.90.2-1 - update to 2.5.90.2 Tue Mar 02 2004 + Elliot Lee - rebuilt 2.5.90.1-1 - update to 2.5.90.1 + Fri Feb 13 2004 Elliot Lee - rebuilt + +* Thu Sep 09 2004 cvsdist - 1:2.4.4.5-3 +- auto-import gdm-2.4.4.5-7 from gdm-2.4.4.5-7.src.rpm + +* Thu Sep 09 2004 cvsdist - 1:2.4.4.5-2 +- auto-import changelog data from gdm-2.4.4.5-1.2.src.rpm 2.4.4.5-1.2 - + renamed for FC1 update 2.4.4.5-9 - add two lines to match upstream CVS to + xdmcp_sessions.patch Fully resolves #110315 and #113154 2.4.4.5-8 - + patch30 xdmcp_session counter fix from gdm-2.5.90.0 #110315 - automake14 + really needed, not automake - BR libcroco-devel, libcroco-devel, libattr- + devel, gettext - conditionally BR libselinux-devel - explicit epoch in + all deps - make the ja.po time format change with a sed expression rather + than overwriting the whole file (Petersen #113995) 2.4.4.5-7 - fix build + with current auto* 2.4.4.5-5 - try a simple rebuild for libcroco abi + change 2.4.4.5-4 - Fix call to is_selinux_enabled 2.4.4.5-3 - Use + /sbin/reboot and /sbin/poweroff instead of consolehelper version + 2.4.4.5-2.sel - turn on SELinux 2.4.4.5-1 - get rid of the teal + +* Thu Sep 09 2004 cvsdist - 1:2.4.4.5-1 +- auto-import changelog data from gdm-2.4.4.5-1.src.rpm 2.4.4.5-1 - new + version 2.4.4.3-6.sel - new patch from George to fix #106189 - change bg + color in rhdefaults patch - turn off SELinux 2.4.4.3-6.sel - turn on + SELinux 2.4.4.3-5 - Fix greeter line-breaking crash (rest of #106189) + 2.4.4.3-4 - Set the BaseXSession properly in the config. - This fixes + parts of bug #106189 2.4.4.3-3 - change DefaultSession=Default.desktop to + DefaultSession=default.desktop - SELinux off again 2.4.4.3-2.sel - turn + on SELinux 2.4.4.3-1 - 2.4.4.3 - --without-selinux for now, since + libselinux not in the buildroot 2.4.4.0-4 - turn off SELinux + 2.4.4.0-3.sel - turn on SELinux 2.4.4.0-2 - Use the right default session + (#103546) 2.4.4.0-1 - update to 2.4.4.0 - update to georges new selinux + patch 2.4.2.102-2 - Remove scrollkeeper files 2.4.2.102-1 - updated to + 2.4.2.102 - removed outdated patches - Use Xsetup_0 only for :0 since + that's the way it works for xdm - remove the gnome.desktop file, its + going into gnome-session 2.4.1.6-1 - update to latest bugfix version on + george's advice - remove setlocale patch that's upstream - remove console + setup patches that are upstream + +* Thu Sep 09 2004 cvsdist - 1:2.4.1.3-2 +- auto-import gdm-2.4.1.3-5.1 from gdm-2.4.1.3-5.1.src.rpm + +* Thu Sep 09 2004 cvsdist - 1:2.4.1.3-1 +- auto-import gdm-2.4.1.3-5 from gdm-2.4.1.3-5.src.rpm + +* Thu Sep 09 2004 cvsdist - 1:2.4.0.7-12 +- auto-import gdm-2.4.0.7-14 from gdm-2.4.0.7-14.src.rpm + +* Thu Sep 09 2004 cvsdist - 1:2.4.0.7-11 +- auto-import gdm-2.4.0.7-13 from gdm-2.4.0.7-13.src.rpm + +* Thu Sep 09 2004 cvsdist - 1:2.4.0.7-10 +- auto-import gdm-2.4.0.7-12 from gdm-2.4.0.7-12.src.rpm + +* Thu Sep 09 2004 cvsdist - 1:2.4.0.7-9 +- auto-import gdm-2.4.0.7-11 from gdm-2.4.0.7-11.src.rpm + +* Thu Sep 09 2004 cvsdist - 1:2.4.0.7-8 +- auto-import gdm-2.4.0.7-10 from gdm-2.4.0.7-10.src.rpm + +* Thu Sep 09 2004 cvsdist - 1:2.4.0.7-7 +- auto-import gdm-2.4.0.7-9 from gdm-2.4.0.7-9.src.rpm + +* Thu Sep 09 2004 cvsdist - 1:2.4.0.7-6 +- auto-import gdm-2.4.0.7-8 from gdm-2.4.0.7-8.src.rpm + +* Thu Sep 09 2004 cvsdist - 1:2.4.0.7-5 +- auto-import gdm-2.4.0.7-7 from gdm-2.4.0.7-7.src.rpm + +* Thu Sep 09 2004 cvsdist - 1:2.4.0.7-4 +- auto-import gdm-2.4.0.7-6 from gdm-2.4.0.7-6.src.rpm + +* Thu Sep 09 2004 cvsdist - 1:2.4.0.7-3 +- auto-import gdm-2.4.0.7-5 from gdm-2.4.0.7-5.src.rpm + +* Thu Sep 09 2004 cvsdist - 1:2.4.0.7-2 +- auto-import gdm-2.4.0.7-4 from gdm-2.4.0.7-4.src.rpm + +* Thu Sep 09 2004 cvsdist - 1:2.4.0.7-1 +- auto-import gdm-2.4.0.7-3 from gdm-2.4.0.7-3.src.rpm + +* Thu Sep 09 2004 cvsdist - 1:2.4.0.0-1 +- auto-import gdm-2.4.0.0-1 from gdm-2.4.0.0-1.src.rpm + +* Thu Sep 09 2004 cvsdist - 1:2.2.3.1-12 +- auto-import gdm-2.2.3.1-23 from gdm-2.2.3.1-23.src.rpm + +* Thu Sep 09 2004 cvsdist - 1:2.2.3.1-11 +- auto-import gdm-2.2.3.1-22 from gdm-2.2.3.1-22.src.rpm + +* Thu Sep 09 2004 cvsdist - 1:2.2.3.1-10 +- auto-import gdm-2.2.3.1-21 from gdm-2.2.3.1-21.src.rpm + +* Thu Sep 09 2004 cvsdist - 1:2.2.3.1-9 +- auto-import gdm-2.2.3.1-20 from gdm-2.2.3.1-20.src.rpm + +* Thu Sep 09 2004 cvsdist - 1:2.2.3.1-8 +- auto-import gdm-2.2.3.1-18 from gdm-2.2.3.1-18.src.rpm + +* Thu Sep 09 2004 cvsdist - 1:2.2.3.1-7 +- auto-import gdm-2.2.3.1-17 from gdm-2.2.3.1-17.src.rpm + +* Thu Sep 09 2004 cvsdist - 1:2.2.3.1-6 +- auto-import gdm-2.2.3.1-16 from gdm-2.2.3.1-16.src.rpm + +* Thu Sep 09 2004 cvsdist +- auto-import changelog data from gdm-2.0beta2-46.src.rpm Wed Aug 13 2003 + Havoc Pennington - fix a security issue CAN-2003-0547 + bugzilla #102275 + +* Thu Sep 09 2004 cvsdist +- auto-import changelog data from gdm-2.0beta2-45.src.rpm Fri Mar 23 2001 + Nalin Dahyabhai - reinitialize pam credentials after + calling initgroups() -- the credentials may be group memberships Tue Mar + 20 2001 Owen Taylor - Fix colors patch Fri Mar 16 + 2001 Havoc Pennington - translations Tue Mar 06 2001 + Preston Brown - don't screw up color map on 8 bit + displays Sat Feb 24 2001 Trond Eivind Glomsr�d - langify + - Don't define and use "ver" and "nam" at the top of the spec file - use + %%{_tmppath} Wed Feb 14 2001 Tim Powers - don't allow + gdm to show some system accounts in the browser bugzilla Sat Jan 20 2001 + Akira TAGOH - Updated Japanese translation. + +* Thu Sep 09 2004 cvsdist +- auto-import changelog data from gdm-2.0beta2-37tc1.src.rpm Sun Jan 07 + 2001 Jason Wilson - added Traditional Chinese + translations - added Chinese and Korean to locale list + +* Thu Sep 09 2004 cvsdist +- auto-import changelog data from gdm-2.0beta2-37j1.src.rpm Tue Sep 12 2000 + Matt Wilson - updated Japanese translation from Nakai- + san + +* Thu Sep 09 2004 cvsdist +- auto-import changelog data from gdm-2.0beta2-37.src.rpm Sun Aug 13 2000 + Owen Taylor - Return to toplevel main loop and start + Xdcmp if enabled (Bug #16106) Fri Aug 11 2000 Jonathan Blandford + - Up Epoch and release Wed Aug 02 2000 Havoc Pennington + - Requires Xsession script Wed Jul 19 2000 Owen Taylor + - Italian is better as it_IT than it_CH (bugzilla + 12425) Mon Jul 17 2000 Jonathan Blandford - Don't + instally gdmconfig as it doesn't work. Fri Jul 14 2000 Havoc Pennington + - Rearrange code to avoid calling innumerable system + calls in a signal handler Fri Jul 14 2000 Havoc Pennington + - Verbose debug spew for infinite loop stuff Fri Jul 14 + 2000 Havoc Pennington - Try to fix infinite loops on X + server failure Thu Jul 13 2000 Prospector - + automatic rebuild Thu Jun 29 2000 Havoc Pennington - + Remove Docdir Mon Jun 19 2000 Havoc Pennington - Fix file + descriptor leak (Bugzilla 12301) Mon Jun 19 2000 Havoc Pennington + - Apply security errata patch we released for 6.2 - Add + Gnome.session back, don't know when it disappeared or why Thu Jun 01 2000 + Nalin Dahyabhai - modify PAM setup to use system-auth + Fri May 19 2000 Havoc Pennington - rebuild for the + Winston tree Fri Feb 04 2000 Havoc Pennington - Modify + Default.session and Failsafe.session not to add -login option to bash - + exec the session scripts with the user's shell with a hyphen prepended - + doesn't seem to actually work yet with tcsh, but it doesn't seem to break + anything. needs a look to see why it doesn't work Fri Feb 04 2000 Havoc + Pennington - Link PreSession/Default to xdm/GiveConsole - + Link PostSession/Default to xdm/TakeConsole Fri Feb 04 2000 Havoc + Pennington - Fix the fix to the fix (8877) - remove + docs/gdm-manual.txt which doesn't seem to exist from %%doc Fri Feb 04 + 2000 Havoc Pennington - Enhance 8877 fix by not deleting + the "Please login" message Fri Feb 04 2000 Havoc Pennington + - Try to fix bug 8877 by clearing the message below the + entry box when the prompt changes. may turn out to be a bad idea. Mon Jan + 17 2000 Elliot Lee - Fix bug #7666: exec Xsession + instead of just running it Mon Oct 25 1999 Jakub Jelinek + - Work around so that russian works (uses koi8-r + instead of the default iso8859-5) Tue Oct 12 1999 Owen Taylor + - Try again Tue Oct 12 1999 Owen Taylor + - More fixes for i18n Tue Oct 12 1999 Owen Taylor + - Fixes for i18n Sun Sep 26 1999 Elliot Lee + - Fixed pipewrite bug (found by mkj & ewt). Fri Sep + 17 1999 Michael Fulbright - added requires for pam >= + 0.68 Fri Sep 10 1999 Elliot Lee - I just update this + package every five minutes, so any recent changes are my fault. Thu Sep + 02 1999 Michael K. Johnson - built gdm-2.0beta2 Mon + Aug 30 1999 Michael K. Johnson - built gdm-2.0beta1 + Tue Aug 17 1999 Michael Fulbright - included + rmeier@liberate.com patch for tcp socket X connections Mon Apr 19 1999 + Michael Fulbright - fix to handling ancient gdm + config files with non-standard language specs - dont close display + connection for xdmcp connections, else we die if remote end dies. Fri Apr + 16 1999 Michael Fulbright - fix language handling to + set GDM_LANG variable so gnome-session can pick it up Wed Apr 14 1999 + Michael Fulbright - fix so certain dialog boxes dont + overwrite background images Wed Apr 14 1999 Michael K. Johnson + - do not specify -r 42 to useradd -- it doesn't + know how to fall back if id 42 is already taken Fri Apr 09 1999 Michael + Fulbright - removed suspend feature Mon Apr 05 1999 + Jonathan Blandford - added patch from otaylor to not + call gtk funcs from a signal. - added patch to tab when username not + added. - added patch to center About box (and bring up only one) and + ignore "~" and ".rpm" files. Fri Mar 26 1999 Michael Fulbright + - fixed handling of default session, merged all + gdmgreeter patches into one Tue Mar 23 1999 Michael Fulbright + - remove GNOME/KDE/AnotherLevel session scripts, + these have been moved to the appropriate packages instead. - added patch + to make option menus always active (security problem otherwise) - added + jrb's patch to disable stars in passwd entry field Fri Mar 19 1999 + Michael Fulbright - made sure /usr/bin isnt in + default path twice - strip binaries Wed Mar 17 1999 Michael Fulbright + - fixed to use proper system path when root logs in + Tue Mar 16 1999 Michael Fulbright - linked + Init/Default to Red Hat default init script for xdm - removed logo from + login dialog box Mon Mar 15 1999 Michael Johnson - + pam_console integration Tue Mar 09 1999 Michael Fulbright + - added session files for + GNOME/KDE/AnotherLevel/Default/Failsafe - patched gdmgreeter to not + complete usernames - patched gdmgreeter to not safe selected session + permanently - patched gdmgreeter to center dialog boxes Mon Mar 08 1999 + Michael Fulbright - removed comments from gdm.conf + file, these are not parsed correctly Sun Mar 07 1999 Michael Fulbright + - updated source line for accuracy Fri Feb 26 1999 + Owen Taylor - Updated patches for 1.0.0 - Fixed some + problems in 1.0.0 with installation directories - moved /usr/var/gdm + /var/gdm Thu Feb 25 1999 Michael Fulbright - moved + files from /usr/etc to /etc Tue Feb 16 1999 Michael Johnson + - removed commented-out #1 definition -- put back + after testing gnome-libs comment patch Sat Feb 06 1999 Michael Johnson + - initial packaging +## END: Generated by rpmautospec diff --git a/gdm.sysusers b/gdm.sysusers new file mode 100644 index 0000000..78a1630 --- /dev/null +++ b/gdm.sysusers @@ -0,0 +1 @@ +u gdm 42 "GNOME Display Manager" /var/lib/gdm diff --git a/SOURCES/org.gnome.login-screen.gschema.override b/org.gnome.login-screen.gschema.override similarity index 100% rename from SOURCES/org.gnome.login-screen.gschema.override rename to org.gnome.login-screen.gschema.override diff --git a/sources b/sources new file mode 100644 index 0000000..5d2ad50 --- /dev/null +++ b/sources @@ -0,0 +1 @@ +SHA512 (gdm-47.alpha.tar.xz) = 768931fc80b09754135ea0f8014bd3ba24ab2f74428efcfafb09720915264644186fbbcfd59004ca76df8ff29c8f41a224afb1d3ccaead47fae1e77ab4e7ae2e diff --git a/wayland-only.patch b/wayland-only.patch new file mode 100644 index 0000000..a4dc03c --- /dev/null +++ b/wayland-only.patch @@ -0,0 +1,311 @@ +From a5dcb9699cbb18c70da0a6ee57faa20124130787 Mon Sep 17 00:00:00 2001 +From: rpm-build +Date: Fri, 26 Jul 2024 16:21:35 -0400 +Subject: [PATCH] wayland-only.patch + +--- + daemon/gdm-local-display-factory.c | 12 +++++++++++- + libgdm/gdm-sessions.c | 20 ++++++++++++-------- + 2 files changed, 23 insertions(+), 9 deletions(-) + +diff --git a/daemon/gdm-local-display-factory.c b/daemon/gdm-local-display-factory.c +index f2d8e15..cfbd598 100644 +--- a/daemon/gdm-local-display-factory.c ++++ b/daemon/gdm-local-display-factory.c +@@ -192,75 +192,81 @@ take_next_display_number (GdmLocalDisplayFactory *factory) + + /* now reserve this number */ + g_debug ("GdmLocalDisplayFactory: Reserving X display: %u", ret); + g_hash_table_insert (factory->used_display_numbers, GUINT_TO_POINTER (ret), NULL); + + return ret; + } + + static char * + get_preferred_display_server (GdmLocalDisplayFactory *factory) + { + g_autofree gchar *preferred_display_server = NULL; + gboolean wayland_enabled = FALSE, xorg_enabled = FALSE; + + gdm_settings_direct_get_boolean (GDM_KEY_WAYLAND_ENABLE, &wayland_enabled); + gdm_settings_direct_get_boolean (GDM_KEY_XORG_ENABLE, &xorg_enabled); + + if (wayland_enabled && !xorg_enabled) { + return g_strdup ("wayland"); + } + + if (!wayland_enabled && !xorg_enabled) { + return g_strdup ("none"); + } + + gdm_settings_direct_get_string (GDM_KEY_PREFERRED_DISPLAY_SERVER, &preferred_display_server); + + if (g_strcmp0 (preferred_display_server, "wayland") == 0) { + if (wayland_enabled) + return g_strdup (preferred_display_server); ++#ifdef ENABLE_XORG_SUPPORT + else + return g_strdup ("xorg"); ++#endif + } + + if (g_strcmp0 (preferred_display_server, "xorg") == 0) { ++#ifdef ENABLE_XORG_SUPPORT + if (xorg_enabled) + return g_strdup (preferred_display_server); + else ++#endif + return g_strdup ("wayland"); + } + ++#ifdef ENABLE_XORG_SUPPORT + if (g_strcmp0 (preferred_display_server, "legacy-xorg") == 0) { + if (xorg_enabled) + return g_strdup (preferred_display_server); + } ++#endif + + return g_strdup ("none"); + } + + struct GdmDisplayServerConfiguration { + const char *display_server; + const char *key; + const char *binary; + const char *session_type; + } display_server_configuration[] = { + #ifdef ENABLE_WAYLAND_SUPPORT + { "wayland", GDM_KEY_WAYLAND_ENABLE, "/usr/bin/Xwayland", "wayland" }, + #endif + { "xorg", GDM_KEY_XORG_ENABLE, "/usr/bin/Xorg", "x11" }, + { NULL, NULL, NULL }, + }; + + static gboolean + display_server_enabled (GdmLocalDisplayFactory *factory, + const char *display_server) + { + size_t i; + + for (i = 0; display_server_configuration[i].display_server != NULL; i++) { + const char *key = display_server_configuration[i].key; + const char *binary = display_server_configuration[i].binary; + gboolean enabled = FALSE; + + if (!g_str_equal (display_server_configuration[i].display_server, + display_server)) +@@ -289,74 +295,78 @@ get_session_type_for_display_server (GdmLocalDisplayFactory *factory, + display_server)) + continue; + + return display_server_configuration[i].session_type; + } + + return NULL; + } + + static char ** + gdm_local_display_factory_get_session_types (GdmLocalDisplayFactory *factory, + gboolean should_fall_back) + { + g_autofree gchar *preferred_display_server = NULL; + const char *fallback_display_server = NULL; + gboolean wayland_preferred = FALSE; + gboolean xorg_preferred = FALSE; + g_autoptr (GPtrArray) session_types_array = NULL; + char **session_types; + + session_types_array = g_ptr_array_new (); + + preferred_display_server = get_preferred_display_server (factory); + + g_debug ("GdmLocalDisplayFactory: Getting session type (prefers %s, falling back: %s)", + preferred_display_server, should_fall_back? "yes" : "no"); + + wayland_preferred = g_str_equal (preferred_display_server, "wayland"); + xorg_preferred = g_str_equal (preferred_display_server, "xorg"); + ++#ifdef ENABLE_XORG_SUPPORT + if (wayland_preferred) + fallback_display_server = "xorg"; + else if (xorg_preferred) + fallback_display_server = "wayland"; + else + return NULL; ++#endif + +- if (!should_fall_back) { ++ if (!should_fall_back || fallback_display_server == NULL) { + if (display_server_enabled (factory, preferred_display_server)) + g_ptr_array_add (session_types_array, (gpointer) get_session_type_for_display_server (factory, preferred_display_server)); + } + ++#ifdef ENABLE_XORG_SUPPORT + if (display_server_enabled (factory, fallback_display_server)) + g_ptr_array_add (session_types_array, (gpointer) get_session_type_for_display_server (factory, fallback_display_server)); ++#endif + + if (session_types_array->len == 0) + return NULL; + + g_ptr_array_add (session_types_array, NULL); + + session_types = g_strdupv ((char **) session_types_array->pdata); + + return session_types; + } + + static void + on_display_disposed (GdmLocalDisplayFactory *factory, + GdmDisplay *display) + { + g_debug ("GdmLocalDisplayFactory: Display %p disposed", display); + } + + static void + store_display (GdmLocalDisplayFactory *factory, + GdmDisplay *display) + { + GdmDisplayStore *store; + + store = gdm_display_factory_get_display_store (GDM_DISPLAY_FACTORY (factory)); + gdm_display_store_add (store, display); + } + + /* + Example: +diff --git a/libgdm/gdm-sessions.c b/libgdm/gdm-sessions.c +index 0aedcf9..211b6f6 100644 +--- a/libgdm/gdm-sessions.c ++++ b/libgdm/gdm-sessions.c +@@ -304,115 +304,119 @@ collect_sessions_from_directory (const char *dirname) + g_autofree char *other_path = g_build_filename (dirname, other_name, NULL); + + if (g_file_test (other_path, G_FILE_TEST_EXISTS)) { + g_debug ("Running under X11, ignoring %s", filename); + continue; + } + } + } + + id = g_strndup (filename, strlen (filename) - strlen (".desktop")); + + full_path = g_build_filename (dirname, filename, NULL); + + load_session_file (id, full_path); + + g_free (id); + g_free (full_path); + } + + g_dir_close (dir); + } + + static void + collect_sessions (void) + { + g_autoptr(GHashTable) names_seen_before = NULL; + g_autoptr(GPtrArray) xorg_search_array = NULL; + g_autoptr(GPtrArray) wayland_search_array = NULL; + gchar *session_dir = NULL; + int i; +- const char *xorg_search_dirs[] = { +- "/etc/X11/sessions/", +- DMCONFDIR "/Sessions/", +- DATADIR "/gdm/BuiltInSessions/", +- DATADIR "/xsessions/", +- }; + const gchar *supported_session_types_env = NULL; + g_auto (GStrv) supported_session_types = NULL; ++ const gchar * const *system_data_dirs = g_get_system_data_dirs (); + + supported_session_types_env = g_getenv ("GDM_SUPPORTED_SESSION_TYPES"); + if (supported_session_types_env != NULL) { + supported_session_types = g_strsplit (supported_session_types_env, ":", -1); + } + + names_seen_before = g_hash_table_new (g_str_hash, g_str_equal); +- xorg_search_array = g_ptr_array_new_with_free_func (g_free); + +- const gchar * const *system_data_dirs = g_get_system_data_dirs (); ++#ifdef ENABLE_XORG_SUPPORT ++ const char *xorg_search_dirs[] = { ++ "/etc/X11/sessions/", ++ DMCONFDIR "/Sessions/", ++ DATADIR "/gdm/BuiltInSessions/", ++ DATADIR "/xsessions/", ++ }; ++ xorg_search_array = g_ptr_array_new_with_free_func (g_free); + + for (i = 0; system_data_dirs[i]; i++) { + session_dir = g_build_filename (system_data_dirs[i], "xsessions", NULL); + g_ptr_array_add (xorg_search_array, session_dir); + } + + for (i = 0; i < G_N_ELEMENTS (xorg_search_dirs); i++) { + g_ptr_array_add (xorg_search_array, g_strdup (xorg_search_dirs[i])); + } ++#endif + + #ifdef ENABLE_WAYLAND_SUPPORT + const char *wayland_search_dirs[] = { + DATADIR "/wayland-sessions/", + }; + + wayland_search_array = g_ptr_array_new_with_free_func (g_free); + + for (i = 0; system_data_dirs[i]; i++) { + session_dir = g_build_filename (system_data_dirs[i], "wayland-sessions", NULL); + g_ptr_array_add (wayland_search_array, session_dir); + } + + for (i = 0; i < G_N_ELEMENTS (wayland_search_dirs); i++) { + g_ptr_array_add (wayland_search_array, g_strdup (wayland_search_dirs[i])); + } + #endif + + if (gdm_available_sessions_map == NULL) { + gdm_available_sessions_map = g_hash_table_new_full (g_str_hash, g_str_equal, + g_free, (GDestroyNotify)gdm_session_file_free); + } + ++#ifdef ENABLE_XORG_SUPPORT + if (!supported_session_types || g_strv_contains ((const char * const *) supported_session_types, "x11")) { + for (i = xorg_search_array->len - 1; i >= 0; i--) { + collect_sessions_from_directory (g_ptr_array_index (xorg_search_array, i)); + } + } ++#endif + + #ifdef ENABLE_WAYLAND_SUPPORT + #ifdef ENABLE_USER_DISPLAY_SERVER + if (!supported_session_types || g_strv_contains ((const char * const *) supported_session_types, "wayland")) { + for (i = wayland_search_array->len - 1; i >= 0; i--) { + collect_sessions_from_directory (g_ptr_array_index (wayland_search_array, i)); + } + } + #endif + #endif + + g_hash_table_foreach_remove (gdm_available_sessions_map, + remove_duplicate_sessions, + names_seen_before); + } + + static gint + compare_session_ids (gconstpointer a, + gconstpointer b) + { + GdmSessionFile *session_a, *session_b; + session_a = (GdmSessionFile *) g_hash_table_lookup (gdm_available_sessions_map, a); + session_b = (GdmSessionFile *) g_hash_table_lookup (gdm_available_sessions_map, b); + + if (session_a == NULL) + return -1; + + if (session_b == NULL) + return 1; + +-- +2.44.0 +