Hello community, here is the log from the commit of package sddm for openSUSE:Factory checked in at 2015-05-11 19:32:57 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/sddm (Old) and /work/SRC/openSUSE:Factory/.sddm.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "sddm" Changes: -------- --- /work/SRC/openSUSE:Factory/sddm/sddm.changes 2015-03-18 13:06:30.000000000 +0100 +++ /work/SRC/openSUSE:Factory/.sddm.new/sddm.changes 2015-05-11 19:33:01.000000000 +0200 @@ -1,0 +2,18 @@ +Mon May 4 18:41:58 UTC 2015 - [email protected] + +- Add sysconfig-support.patch: Support DISPLAYMANAGER_AUTOLOGIN + entry from /etc/sysconfig/displaymanager, the value overwrites + any entry in sddm.conf/[Autologin]/User. Patch also defaults + to plasma5.desktop as default autologin and last selected + sessions. This is controlled only by sddm.conf file. +- Mark sddm.conf as %config(noreplace) + +------------------------------------------------------------------- +Wed Apr 29 22:18:05 UTC 2015 - [email protected] + +- Added sddm-relaxed-auth.diff: Insert XAUTHLOCALHOSTNAME into + users enviroment, so the session handles hostname changes with + a single X instance/run +- Use breeze_cursors in openSUSE branding + +------------------------------------------------------------------- New: ---- sddm-relaxed-auth.diff sysconfig-support.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ sddm.spec ++++++ --- /var/tmp/diff_new_pack.wVxODe/_old 2015-05-11 19:33:02.000000000 +0200 +++ /var/tmp/diff_new_pack.wVxODe/_new 2015-05-11 19:33:02.000000000 +0200 @@ -33,6 +33,12 @@ Patch0: proper_pam.diff # PATCH-FIX-OPENSUSE create_pid_file.patch -- openSUSE's generic display-manager service doesn't know what to do without a pid file. drop the patch as soon as that sick dinosaur is killed Patch1: create_pid_file.patch +# PATCH-FIX-OPENSUSE sddm-relaxed-auth.diff -- Insert XAUTHLOCALHOSTNAME into users enviroment, so the session handles hostname changes with a single X instance/run +# related patches: libxcb/bug-262309_xcb-xauthlocalhostname.diff, xauth/xauth-tolerant-hostname-changes.diff, kdebase4-workspace/kdm-relaxed-auth.diff +Patch2: sddm-relaxed-auth.diff +# PATCH-FIX-OPENSUSE sysconfig-support.patch -- Support DISPLAYMANAGER_AUTOLOGIN entry from /etc/sysconfig/displaymanager, the value overwrites +# any entry in sddm.conf/[Autologin]/User. Patch also defaults to plasma5.desktop as default autologin session. This is controlled only by sddm.conf file. +Patch3: sysconfig-support.patch BuildRequires: cmake BuildRequires: fdupes BuildRequires: kf5-filesystem @@ -89,6 +95,8 @@ %setup -q -n %{name}-%{version} %patch0 -p1 %patch1 -p1 +%patch2 -p1 +%patch3 -p1 %build %cmake \ @@ -135,7 +143,7 @@ %files %defattr(-,root,root) %doc COPYING* README* -%config %{_sysconfdir}/%{name}.conf +%config(noreplace) %{_sysconfdir}/%{name}.conf %config %{_sysconfdir}/pam.d/sddm %config %{_sysconfdir}/pam.d/sddm-autologin %config %{_sysconfdir}/pam.d/sddm-greeter ++++++ sddm-relaxed-auth.diff ++++++ diff --git a/src/daemon/XorgDisplayServer.cpp b/src/daemon/XorgDisplayServer.cpp index f10ad82..f7dddbb 100644 --- a/src/daemon/XorgDisplayServer.cpp +++ b/src/daemon/XorgDisplayServer.cpp @@ -229,6 +229,7 @@ namespace SDDM { // set process environment QProcessEnvironment env; env.insert("DISPLAY", m_display); + env.insert("XAUTHLOCALHOSTNAME", daemonApp->hostName()); env.insert("HOME", "/"); env.insert("PATH", mainConfig.Users.DefaultPath.get()); env.insert("XAUTHORITY", m_authPath); diff --git a/src/helper/Backend.cpp b/src/helper/Backend.cpp index fc933f9..6cb6fa9 100644 --- a/src/helper/Backend.cpp +++ b/src/helper/Backend.cpp @@ -26,6 +26,7 @@ #include "UserSession.h" #include <QtCore/QProcessEnvironment> +#include <QtNetwork/QHostInfo> #include <pwd.h> @@ -64,6 +65,7 @@ namespace SDDM { env.insert("LOGNAME", pw->pw_name); if (env.contains("DISPLAY") && !env.contains("XAUTHORITY")) env.insert("XAUTHORITY", QString("%1/.Xauthority").arg(pw->pw_dir)); + env.insert("XAUTHLOCALHOSTNAME", QHostInfo::localHostName()); // TODO: I'm fairly sure this shouldn't be done for PAM sessions, investigate! m_app->session()->setProcessEnvironment(env); } ++++++ sddm.conf ++++++ --- /var/tmp/diff_new_pack.wVxODe/_old 2015-05-11 19:33:02.000000000 +0200 +++ /var/tmp/diff_new_pack.wVxODe/_new 2015-05-11 19:33:02.000000000 +0200 @@ -1,8 +1,9 @@ [Theme] Current=breeze +CursorTheme=breeze_cursors [XDisplay] ServerPath=/usr/bin/X SessionCommand=/etc/X11/xdm/Xsession DisplayCommand=/etc/X11/xdm/Xsetup -MinimumVT=7 \ No newline at end of file +MinimumVT=7 ++++++ sysconfig-support.patch ++++++ diff --git a/CMakeLists.txt b/CMakeLists.txt index 4d6e0a9d1bdb0742bf5ae23a522091f3f1d14dda..a2af8bb6559826252b8abe63217eca1cacb5d842 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -130,6 +130,7 @@ set(RUNTIME_DIR "${CMAKE_INSTALL_FULL_LOCALSTATEDIR}/run/sddm" set(SESSION_COMMAND "${DATA_INSTALL_DIR}/scripts/Xsession" CACHE PATH "Script to execute when starting the desktop session") set(CONFIG_FILE "${CMAKE_INSTALL_FULL_SYSCONFDIR}/sddm.conf" CACHE PATH "Path of the sddm config file") +set(DYSPLAY_MANAGER_CONFIG_FILE "${CMAKE_INSTALL_FULL_SYSCONFDIR}/sysconfig/displaymanager" CACHE PATH "Path of the sysconfig/displaymanager config file") set(LOG_FILE "${CMAKE_INSTALL_FULL_LOCALSTATEDIR}/log/sddm.log" CACHE PATH "Path of the sddm log file") set(COMPONENTS_TRANSLATION_DIR "${DATA_INSTALL_DIR}/translations" CACHE PATH "Components translations directory") diff --git a/src/common/Configuration.h b/src/common/Configuration.h index 72aa6f4..95447c1 100644 --- a/src/common/Configuration.h +++ b/src/common/Configuration.h @@ -75,14 +75,14 @@ namespace SDDM { ); Section(Autologin, Entry(User, QString, QString(), _S("Autologin user")); - Entry(Session, QString, QString(), _S("Autologin session")); + Entry(Session, QString, _S("plasma5.desktop"), _S("Autologin session")); Entry(Relogin, bool, false, _S("Autologin again on session exit")); ); ); Config(StateConfig, []()->QString{auto tmp = getpwnam("sddm"); return tmp ? tmp->pw_dir : STATE_DIR;}().append("/state.conf"), Section(Last, - Entry(Session, QString, QString(), _S("Name of the session file of the last session selected. This session will be preselected when the login screen shows up.")); + Entry(Session, QString, _S("plasma5.desktop"), _S("Name of the session file of the last session selected. This session will be preselected when the login screen shows up.")); Entry(User, QString, QString(), _S("Name of the last logged-in user. This username will be preselected/shown when the login screen shows up")); ); ); diff --git a/src/common/Constants.h.in b/src/common/Constants.h.in index 654331d6f22ce2c90ca510678cd137308c1000bd..9ca4b8c05f1d4b9a3533dbce83df0e12979a4809 100644 --- a/src/common/Constants.h.in +++ b/src/common/Constants.h.in @@ -32,6 +32,7 @@ #define SESSION_COMMAND "@SESSION_COMMAND@" #define CONFIG_FILE "@CONFIG_FILE@" +#define DYSPLAY_MANAGER_CONFIG_FILE "@DYSPLAY_MANAGER_CONFIG_FILE@" #define LOG_FILE "@LOG_FILE@" #define PID_FILE "@PID_FILE@" #define MINIMUM_VT @MINIMUM_VT@ diff --git a/src/daemon/Display.cpp b/src/daemon/Display.cpp index 87d0cc37c0f97b801ba1b7ffd1dd534e9fe92875..2f15cc62976d661977905f9964a1a558facc126c 100644 --- a/src/daemon/Display.cpp +++ b/src/daemon/Display.cpp @@ -35,6 +35,7 @@ #include <QDir> #include <QFile> #include <QTimer> +#include <QSettings> #include <pwd.h> #include <unistd.h> @@ -113,8 +114,19 @@ namespace SDDM { // log message qDebug() << "Display server started."; + QSettings sysconfSettings(DYSPLAY_MANAGER_CONFIG_FILE, QSettings::NativeFormat); + QString sysconfigUser = sysconfSettings.value("DISPLAYMANAGER_AUTOLOGIN", "").toString(); + + if (!sysconfigUser.isEmpty()) { + mainConfig.Autologin.User.set(sysconfigUser); + mainConfig.save(); + } else { + mainConfig.Autologin.User.set(QString()); + mainConfig.save(); + } + if ((daemonApp->first || mainConfig.Autologin.Relogin.get()) && - !mainConfig.Autologin.User.get().isEmpty() && !mainConfig.Autologin.Session.get().isEmpty()) { + !mainConfig.Autologin.User.get().isEmpty()) { // reset first flag daemonApp->first = false;
