Hello community, here is the log from the commit of package sddm for openSUSE:Factory checked in at 2017-06-01 16:23:23 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/sddm (Old) and /work/SRC/openSUSE:Factory/.sddm.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Package is "sddm" Thu Jun 1 16:23:23 2017 rev:21 rq:496501 version:0.14.0 Changes: -------- --- /work/SRC/openSUSE:Factory/sddm/sddm.changes 2017-04-28 10:53:28.221537774 +0200 +++ /work/SRC/openSUSE:Factory/.sddm.new/sddm.changes 2017-06-01 16:23:24.689998477 +0200 @@ -1,0 +2,36 @@ +Fri May 19 08:08:55 UTC 2017 - fabian@ritter-vogt.de + +- Also set the default last session in sysconfig-support.patch + (replaces boo949903.patch) +- Adjust 0003-Leave-duplicate-symlinks-out-of-the-SessionModel.patch + to also handle symlinks for the last session + +------------------------------------------------------------------- +Thu May 18 09:56:47 UTC 2017 - fabian@ritter-vogt.de + +- Replace patch with newer version: + * 0001-Also-theme-the-default-cursor-for-the-root-window.patch + +------------------------------------------------------------------- +Mon May 15 13:06:04 UTC 2017 - fvogt@suse.com + +- Add upstream patches: + * 0001-Parse-desktop-file-sections.patch + * 0002-Ignore-session-desktop-files-with-the-Hidden-propert.patch +- Add downstream patch: + * 0003-Leave-duplicate-symlinks-out-of-the-SessionModel.patch +- Fix typo in sysconfig-support.patch (DYSPLAY -> DISPLAY) +- Use default.desktop as default autologin session file + +------------------------------------------------------------------- +Mon May 8 19:30:55 UTC 2017 - fabian@ritter-vogt.de + +- BuildRequire python-docutils instead of python3-docutils on SLE + +------------------------------------------------------------------- +Fri May 5 21:29:14 UTC 2017 - fabian@ritter-vogt.de + +- Add patch to fix the default X cursor appearing sometimes: + * 0001-Also-theme-the-default-cursor-for-the-root-window.patch + +------------------------------------------------------------------- Old: ---- boo949903.patch New: ---- 0001-Also-theme-the-default-cursor-for-the-root-window.patch 0001-Parse-desktop-file-sections.patch 0002-Ignore-session-desktop-files-with-the-Hidden-propert.patch 0003-Leave-duplicate-symlinks-out-of-the-SessionModel.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ sddm.spec ++++++ --- /var/tmp/diff_new_pack.2xBH9b/_old 2017-06-01 16:23:25.677859180 +0200 +++ /var/tmp/diff_new_pack.2xBH9b/_new 2017-06-01 16:23:25.681858617 +0200 @@ -44,12 +44,12 @@ # PATCH-FIX-OPENSUSE sddm-service-handle-plymouth.patch -- sddm has some rudimentary support for plymouth handling, which only works with plymouth-quit.service # (the servce is not enabled on openSUSE). For users of sddm.service, we need to issue plymouth quit command by hand in this case Patch5: sddm-service-handle-plymouth.patch -# PATCH-FIX-OPENSUSE boo949903.patch -- Let sddm also default to plasma5 for last used session (boo#949903) -Patch6: boo949903.patch # PATCH-FIX-UPSTREAM 0001-Make-the-default-cursor-themed.patch -- Make the default cursor themed Patch7: 0001-Make-the-default-cursor-themed.patch # PATCH-FIX-OPENSUSE 0001-Systemd-service-unit-Use-tty7-by-default.patch -- Use tty7 by default in the systemd service unit Patch8: 0001-Systemd-service-unit-Use-tty7-by-default.patch +# PATCH-FIX-UPSTREAM 0001-Also-theme-the-default-cursor-for-the-root-window.patch +Patch9: 0001-Also-theme-the-default-cursor-for-the-root-window.patch # Bugfixes from upstream develop branch Patch10: 0001-Fix-display-of-user-avatars.-684.patch Patch11: 0002-Add-a-config-option-to-enable-high-DPI-scaling-701.patch @@ -57,6 +57,11 @@ Patch13: 0004-Support-Non-Latin-characters-in-theme-settings-708.patch Patch14: 0005-Cleanup-dangling-pointer-in-SocketServer-725.patch Patch15: 0001-Also-set-QT_IM_MODULE-in-non-testing-mode.patch +# PATCH-FIX-UPSTREAM +Patch16: 0001-Parse-desktop-file-sections.patch +Patch17: 0002-Ignore-session-desktop-files-with-the-Hidden-propert.patch +# PATCH-FIX-OPENSUSE +Patch18: 0003-Leave-duplicate-symlinks-out-of-the-SessionModel.patch BuildRequires: cmake BuildRequires: extra-cmake-modules >= 1.4.0 BuildRequires: fdupes @@ -64,7 +69,11 @@ BuildRequires: libqt5-linguist-devel BuildRequires: pam-devel BuildRequires: pkg-config +%if 0%{?sle_version} && !0%{?is_opensuse} +BuildRequires: python-docutils +%else BuildRequires: python3-docutils +%endif # Autodetect UID_MIN and UID_MAX from /etc/login.defs BuildRequires: shadow BuildRequires: pkgconfig(Qt5Core) >= 5.6.0 @@ -122,15 +131,18 @@ %patch3 -p1 %patch4 -p1 %patch5 -p1 -%patch6 -p1 %patch7 -p1 %patch8 -p1 +%patch9 -p1 %patch10 -p1 %patch11 -p1 %patch12 -p1 %patch13 -p1 %patch14 -p1 %patch15 -p1 +%patch16 -p1 +%patch17 -p1 +%patch18 -p1 %build %cmake \ ++++++ 0001-Also-theme-the-default-cursor-for-the-root-window.patch ++++++
From 1b55ad727127f624c31fa656386b13c208455e42 Mon Sep 17 00:00:00 2001 From: Fabian Vogt <fabian@ritter-vogt.de> Date: Fri, 5 May 2017 23:17:26 +0200 Subject: [PATCH] Also theme the default cursor for the root window
The root window is still accessible in some cases, like context menu overlays. --- src/daemon/XorgDisplayServer.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/daemon/XorgDisplayServer.cpp b/src/daemon/XorgDisplayServer.cpp index d06d89a..267ea9d 100644 --- a/src/daemon/XorgDisplayServer.cpp +++ b/src/daemon/XorgDisplayServer.cpp @@ -249,7 +249,7 @@ namespace SDDM { env.insert(QStringLiteral("SHELL"), QStringLiteral("/bin/sh")); displayStopScript->setProcessEnvironment(env); - // start display setup script + // start display stop script qDebug() << "Running display stop script " << displayStopCommand; displayStopScript->start(displayStopCommand); @@ -285,11 +285,21 @@ namespace SDDM { env.insert(QStringLiteral("PATH"), mainConfig.Users.DefaultPath.get()); env.insert(QStringLiteral("XAUTHORITY"), m_authPath); env.insert(QStringLiteral("SHELL"), QStringLiteral("/bin/sh")); + env.insert(QStringLiteral("XCURSOR_THEME"), mainConfig.Theme.CursorTheme.get()); displayScript->setProcessEnvironment(env); // delete displayScript on finish connect(displayScript, SIGNAL(finished(int,QProcess::ExitStatus)), displayScript, SLOT(deleteLater())); + qDebug() << "Setting default cursor"; + displayScript->start(QStringLiteral("xsetroot -cursor_name left_ptr")); + + // wait for finished + if (!displayScript->waitForFinished(1000)) { + qWarning() << "Could not setup default cursor"; + displayScript->kill(); + } + // start display setup script qDebug() << "Running display setup script " << displayCommand; displayScript->start(displayCommand); -- 2.12.0 ++++++ 0001-Parse-desktop-file-sections.patch ++++++
From 7196c7ebb423b258febed24937b6dd01b59db134 Mon Sep 17 00:00:00 2001 From: Fabian Vogt <fabian@ritter-vogt.de> Date: Thu, 11 May 2017 09:56:59 +0200 Subject: [PATCH 1/3] Parse desktop file sections
Some desktop files have multiple sections, but for now we're only interested in [Desktop Entry]. Without this patch, every entry was seen as part of the [Desktop Entry] session, resulting in values getting overwritten. --- src/common/Session.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/common/Session.cpp b/src/common/Session.cpp index 844572c..5c2892a 100644 --- a/src/common/Session.cpp +++ b/src/common/Session.cpp @@ -138,10 +138,22 @@ namespace SDDM { if (!file.open(QIODevice::ReadOnly)) return; + QString current_section; + QTextStream in(&file); while (!in.atEnd()) { QString line = in.readLine(); + if (line.startsWith(QLatin1String("["))) { + // The section name ends before the last ] before the start of a comment + int end = line.lastIndexOf(QLatin1Char(']'), line.indexOf(QLatin1Char('#'))); + if (end != -1) + current_section = line.mid(1, end - 1); + } + + if (current_section != QLatin1String("Desktop Entry")) + continue; // We are only interested in the "Desktop Entry" section + if (line.startsWith(QLatin1String("Name="))) { if (type == WaylandSession) m_displayName = QObject::tr("%1 (Wayland)").arg(line.mid(5)); -- 2.12.0 ++++++ 0002-Ignore-session-desktop-files-with-the-Hidden-propert.patch ++++++
From 1ba30952b942050fe55a9d9c76c615f72f6fcd04 Mon Sep 17 00:00:00 2001 From: Fabian Vogt <fabian@ritter-vogt.de> Date: Thu, 11 May 2017 09:34:31 +0200 Subject: [PATCH 2/3] Ignore session desktop files with the Hidden property set to true
They are still read in the autologin case. Fixes issue #820 --- src/common/Session.cpp | 9 +++++++++ src/common/Session.h | 3 +++ src/greeter/SessionModel.cpp | 2 +- 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/common/Session.cpp b/src/common/Session.cpp index 5c2892a..4812d67 100644 --- a/src/common/Session.cpp +++ b/src/common/Session.cpp @@ -31,10 +31,12 @@ namespace SDDM { Session::Session() : m_valid(false) , m_type(UnknownSession) + , m_isHidden(false) { } Session::Session(Type type, const QString &fileName) + : Session() { setTo(type, fileName); } @@ -104,6 +106,11 @@ namespace SDDM { return m_desktopNames; } + bool Session::isHidden() const + { + return m_isHidden; + } + void Session::setTo(Type type, const QString &_fileName) { QString fileName(_fileName); @@ -168,6 +175,8 @@ namespace SDDM { m_tryExec = line.mid(8); if (line.startsWith(QLatin1String("DesktopNames="))) m_desktopNames = line.mid(13).replace(QLatin1Char(';'), QLatin1Char(':')); + if (line.startsWith(QLatin1String("Hidden="))) + m_isHidden = line.mid(7).toLower() == QLatin1String("true"); } file.close(); diff --git a/src/common/Session.h b/src/common/Session.h index 7ce1e9a..c8c527e 100644 --- a/src/common/Session.h +++ b/src/common/Session.h @@ -59,6 +59,8 @@ namespace SDDM { QString desktopSession() const; QString desktopNames() const; + bool isHidden() const; + void setTo(Type type, const QString &name); Session &operator=(const Session &other); @@ -76,6 +78,7 @@ namespace SDDM { QString m_tryExec; QString m_xdgSessionType; QString m_desktopNames; + bool m_isHidden; friend class SessionModel; }; diff --git a/src/greeter/SessionModel.cpp b/src/greeter/SessionModel.cpp index d3ace84..27e8c40 100644 --- a/src/greeter/SessionModel.cpp +++ b/src/greeter/SessionModel.cpp @@ -143,7 +143,7 @@ namespace SDDM { } } // add to sessions list - if (execAllowed) + if (!si->isHidden() && execAllowed) d->sessions.push_back(si); else delete si; -- 2.12.0 ++++++ 0003-Leave-duplicate-symlinks-out-of-the-SessionModel.patch ++++++
From 793feb3a90f9ff97ebfcc5f77bc6168b32cd5810 Mon Sep 17 00:00:00 2001 From: Fabian Vogt <fabian@ritter-vogt.de> Date: Mon, 15 May 2017 11:33:46 +0200 Subject: [PATCH] Leave duplicate symlinks out of the SessionModel
Used for autologin, default.desktop with update-alternatives. "explicit" needed to be removed from the constructor due to GCC bug 58255 --- src/common/Session.h | 2 +- src/greeter/SessionModel.cpp | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/common/Session.h b/src/common/Session.h index c8c527e..743b7a6 100644 --- a/src/common/Session.h +++ b/src/common/Session.h @@ -35,7 +35,7 @@ namespace SDDM { WaylandSession }; - explicit Session(); + Session(); Session(Type type, const QString &fileName); bool isValid() const; diff --git a/src/greeter/SessionModel.cpp b/src/greeter/SessionModel.cpp index 27e8c40..bd5bbf0 100644 --- a/src/greeter/SessionModel.cpp +++ b/src/greeter/SessionModel.cpp @@ -122,6 +122,12 @@ namespace SDDM { if (!dir.exists(session)) continue; + // Skip symlinks that point to the same directory, + // they will be visited under the real name + QFileInfo fi_link(dir, session); + if (fi_link.isSymLink() && dir.canonicalPath() == fi_link.canonicalPath()) + continue; + Session *si = new Session(type, session); bool execAllowed = true; QFileInfo fi(si->tryExec()); @@ -149,8 +155,9 @@ namespace SDDM { delete si; } // find out index of the last session + QString canonicalLastSession = QFileInfo(stateConfig.Last.Session.get()).canonicalFilePath(); for (int i = 0; i < d->sessions.size(); ++i) { - if (d->sessions.at(i)->fileName() == stateConfig.Last.Session.get()) { + if (d->sessions.at(i)->fileName() == canonicalLastSession) { d->lastIndex = i; break; } -- 2.12.2 ++++++ sysconfig-support.patch ++++++ --- /var/tmp/diff_new_pack.2xBH9b/_old 2017-06-01 16:23:25.841836058 +0200 +++ /var/tmp/diff_new_pack.2xBH9b/_new 2017-06-01 16:23:25.841836058 +0200 @@ -6,7 +6,7 @@ set(WAYLAND_SESSION_COMMAND "${DATA_INSTALL_DIR}/scripts/wayland-session" CACHE PATH "Script to execute when starting the Wayland 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(DISPLAY_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(DBUS_CONFIG_FILENAME "org.freedesktop.DisplayManager.conf" CACHE STRING "Name of the sddm config file") set(COMPONENTS_TRANSLATION_DIR "${DATA_INSTALL_DIR}/translations" CACHE PATH "Components translations directory") @@ -14,15 +14,23 @@ =================================================================== --- sddm-0.14.0.orig/src/common/Configuration.h +++ sddm-0.14.0/src/common/Configuration.h -@@ -90,7 +90,7 @@ namespace SDDM { +@@ -90,14 +90,14 @@ namespace SDDM { Section(Autologin, Entry(User, QString, QString(), _S("Username for autologin session")); - Entry(Session, QString, QString(), _S("Name of session file for autologin session")); -+ Entry(Session, QString, _S("plasma5.desktop"), _S("Name of session file for autologin session")); ++ Entry(Session, QString, _S("default.desktop"), _S("Name of session file for autologin session")); Entry(Relogin, bool, false, _S("Whether sddm should automatically log back into sessions when they exit")); ); ); + + Config(StateConfig, []()->QString{auto tmp = getpwnam("sddm"); return tmp ? QString::fromLocal8Bit(tmp->pw_dir) : QStringLiteral(STATE_DIR);}().append(QStringLiteral("/state.conf")), + Section(Last, +- Entry(Session, QString, QString(), _S("Name of the session for the last logged-in user.\n" ++ Entry(Session, QString, _S("/usr/share/xsessions/default.desktop"), _S("Name of the session for the last logged-in user.\n" + "This session will be preselected when the login screen appears.")); + Entry(User, QString, QString(), _S("Name of the last logged-in user.\n" + "This user will be preselected when the login screen appears")); Index: sddm-0.14.0/src/common/Constants.h.in =================================================================== --- sddm-0.14.0.orig/src/common/Constants.h.in @@ -31,7 +39,7 @@ #define WAYLAND_SESSION_COMMAND "@WAYLAND_SESSION_COMMAND@" #define CONFIG_FILE "@CONFIG_FILE@" -+#define DYSPLAY_MANAGER_CONFIG_FILE "@DYSPLAY_MANAGER_CONFIG_FILE@" ++#define DISPLAY_MANAGER_CONFIG_FILE "@DISPLAY_MANAGER_CONFIG_FILE@" #define LOG_FILE "@LOG_FILE@" #define PID_FILE "@PID_FILE@" #define MINIMUM_VT @MINIMUM_VT@ @@ -51,7 +59,7 @@ // log message qDebug() << "Display server started."; -+ QSettings sysconfSettings(QStringLiteral(DYSPLAY_MANAGER_CONFIG_FILE), QSettings::NativeFormat); ++ QSettings sysconfSettings(QStringLiteral(DISPLAY_MANAGER_CONFIG_FILE), QSettings::NativeFormat); + QString sysconfigUser = sysconfSettings.value(QStringLiteral("DISPLAYMANAGER_AUTOLOGIN"), QStringLiteral("")).toString(); + + if (!sysconfigUser.isEmpty()) {