From f0af27ebcc242f9f71178e221da734debef6fab14fe68398e37a20fbb74114f4 Mon Sep 17 00:00:00 2001 From: Fabian Vogt Date: Mon, 16 Jul 2018 17:23:26 +0000 Subject: [PATCH 1/5] - Add patch to fix fallback to embedded theme: * 0001-Skip-theme-for-greeter-call-if-none-is-set.patch - Remove patch as libxcb bug is fixed meanwhile (bsc#1099908): * 0001-Move-Xauthority-to-a-different-location-and-truncate.patch OBS-URL: https://build.opensuse.org/package/show/KDE:Frameworks5/sddm?expand=0&rev=110 --- ...to-a-different-location-and-truncate.patch | 85 ------------------- ...heme-for-greeter-call-if-none-is-set.patch | 30 +++++++ sddm.changes | 12 +++ sddm.spec | 2 +- 4 files changed, 43 insertions(+), 86 deletions(-) delete mode 100644 0001-Move-Xauthority-to-a-different-location-and-truncate.patch create mode 100644 0001-Skip-theme-for-greeter-call-if-none-is-set.patch diff --git a/0001-Move-Xauthority-to-a-different-location-and-truncate.patch b/0001-Move-Xauthority-to-a-different-location-and-truncate.patch deleted file mode 100644 index 4b140fd..0000000 --- a/0001-Move-Xauthority-to-a-different-location-and-truncate.patch +++ /dev/null @@ -1,85 +0,0 @@ -From 87ff59b5558c3df9384a1d55590a53b9aca74bd0 Mon Sep 17 00:00:00 2001 -From: Fabian Vogt -Date: Thu, 30 Nov 2017 13:38:27 +0100 -Subject: [PATCH] Move Xauthority to a different location and truncate it again - -When the hostname changes, started X applications try the new hostname -first. If a cookie is found for that new hostname, they try to authenticate -(which fails) and exit. So .Xauthority must not contain old cookies. -Truncating ~/.Xauthority breaks ssh forwarding though, so the default -location is changed to something sddm specific. -As it's not possible to login twice as the same user simultaneously, -a fixed path at a fixed location is enough. - -Issue #944 ---- - data/man/sddm.conf.rst.in | 2 +- - src/common/Configuration.h | 2 +- - src/daemon/XorgDisplayServer.cpp | 7 +++++-- - src/helper/UserSession.cpp | 4 ++-- - 4 files changed, 9 insertions(+), 6 deletions(-) - -Index: sddm-0.17.0/data/man/sddm.conf.rst.in -=================================================================== ---- sddm-0.17.0.orig/data/man/sddm.conf.rst.in -+++ sddm-0.17.0/data/man/sddm.conf.rst.in -@@ -119,7 +119,7 @@ OPTIONS - - `UserAuthFile=` - Path to the Xauthority file, relative to the home directory. -- Default value is ".Xauthority". -+ Default value is ".local/share/sddm/.Xauthority". - - `DisplayCommand=` - Path of script to execute when starting the display server. -Index: sddm-0.17.0/src/common/Configuration.h -=================================================================== ---- sddm-0.17.0.orig/src/common/Configuration.h -+++ sddm-0.17.0/src/common/Configuration.h -@@ -65,7 +65,7 @@ namespace SDDM { - Entry(SessionDir, QString, _S("/usr/share/xsessions"), _S("Directory containing available X sessions")); - Entry(SessionCommand, QString, _S(SESSION_COMMAND), _S("Path to a script to execute when starting the desktop session")); - Entry(SessionLogFile, QString, _S(".local/share/sddm/xorg-session.log"), _S("Path to the user session log file")); -- Entry(UserAuthFile, QString, _S(".Xauthority"), _S("Path to the Xauthority file")); -+ Entry(UserAuthFile, QString, _S(".local/share/sddm/.Xauthority"), _S("Path to the Xauthority file")); - Entry(DisplayCommand, QString, _S(DATA_INSTALL_DIR "/scripts/Xsetup"), _S("Path to a script to execute when starting the display server")); - Entry(DisplayStopCommand, QString, _S(DATA_INSTALL_DIR "/scripts/Xstop"), _S("Path to a script to execute when stopping the display server")); - Entry(MinimumVT, int, MINIMUM_VT, _S("The lowest virtual terminal number that will be used.")); -Index: sddm-0.17.0/src/daemon/XorgDisplayServer.cpp -=================================================================== ---- sddm-0.17.0.orig/src/daemon/XorgDisplayServer.cpp -+++ sddm-0.17.0/src/daemon/XorgDisplayServer.cpp -@@ -91,9 +91,12 @@ namespace SDDM { - // log message - qDebug() << "Adding cookie to" << file; - -- // Touch file -+ // Create and truncate the file -+ QFileInfo finfo(file); -+ QDir().mkpath(finfo.absolutePath()); -+ - QFile file_handler(file); -- file_handler.open(QIODevice::Append); -+ file_handler.open(QIODevice::WriteOnly); - file_handler.close(); - - QString cmd = QStringLiteral("%1 -f %2 -q").arg(mainConfig.X11.XauthPath.get()).arg(file); -Index: sddm-0.17.0/src/helper/UserSession.cpp -=================================================================== ---- sddm-0.17.0.orig/src/helper/UserSession.cpp -+++ sddm-0.17.0/src/helper/UserSession.cpp -@@ -174,12 +174,12 @@ namespace SDDM { - qDebug() << "Adding cookie to" << file; - - -- // create the path -+ // Create and truncate the file - QFileInfo finfo(file); - QDir().mkpath(finfo.absolutePath()); - - QFile file_handler(file); -- file_handler.open(QIODevice::Append); -+ file_handler.open(QIODevice::WriteOnly); - file_handler.close(); - - QString cmd = QStringLiteral("%1 -f %2 -q").arg(mainConfig.X11.XauthPath.get()).arg(file); diff --git a/0001-Skip-theme-for-greeter-call-if-none-is-set.patch b/0001-Skip-theme-for-greeter-call-if-none-is-set.patch new file mode 100644 index 0000000..252df3c --- /dev/null +++ b/0001-Skip-theme-for-greeter-call-if-none-is-set.patch @@ -0,0 +1,30 @@ +From bf55fcad4c35884897c0b862c5f480f00d1f1dff Mon Sep 17 00:00:00 2001 +From: Christoph Roick +Date: Sat, 7 Apr 2018 02:45:33 +0200 +Subject: [PATCH] Skip theme for greeter call if none is set + +- fix loading default theme if none is set +--- + src/daemon/Greeter.cpp | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/src/daemon/Greeter.cpp b/src/daemon/Greeter.cpp +index 0240085..11ec19d 100644 +--- a/src/daemon/Greeter.cpp ++++ b/src/daemon/Greeter.cpp +@@ -89,8 +89,10 @@ namespace SDDM { + + // greeter command + QStringList args; +- args << QLatin1String("--socket") << m_socket +- << QLatin1String("--theme") << m_themePath; ++ args << QLatin1String("--socket") << m_socket; ++ ++ if (!m_themePath.isEmpty()) ++ args << QLatin1String("--theme") << m_themePath; + if (!platformTheme.isEmpty()) + args << QLatin1String("-platformtheme") << platformTheme; + if (!style.isEmpty()) +-- +2.18.0 + diff --git a/sddm.changes b/sddm.changes index fdf5f4d..7c7c014 100644 --- a/sddm.changes +++ b/sddm.changes @@ -1,9 +1,21 @@ +------------------------------------------------------------------- +Mon Jul 16 15:08:57 UTC 2018 - fabian@ritter-vogt.de + +- Add patch to fix fallback to embedded theme: + * 0001-Skip-theme-for-greeter-call-if-none-is-set.patch + ------------------------------------------------------------------- Sat Jul 7 11:27:49 UTC 2018 - w01dnick@gmail.com - Fix 0001-Support-both-X11-XDisplay-Wayland-and-WaylandDisplay.patch * Corrected section name for Wayland +------------------------------------------------------------------- +Tue Jul 3 07:26:24 UTC 2018 - fabian@ritter-vogt.de + +- Remove patch as libxcb bug is fixed meanwhile (bsc#1099908): + * 0001-Move-Xauthority-to-a-different-location-and-truncate.patch + ------------------------------------------------------------------- Mon Jul 2 20:53:55 UTC 2018 - luizluca@gmail.com diff --git a/sddm.spec b/sddm.spec index 6bd8e99..7090c5b 100644 --- a/sddm.spec +++ b/sddm.spec @@ -40,6 +40,7 @@ Patch9: 0005-UserModel-optimize-setting-of-default-user-icon-999.patch Patch10: 0001-Fix-build-with-Qt-5.11-1024.patch # Backport: https://github.com/sddm/sddm/commit/1bc813d08b8130e458a6550ec47fb2bfbe6de080 Patch11: 0007-Honor-PAMs-ambient-supplemental-groups.patch +Patch12: 0001-Skip-theme-for-greeter-call-if-none-is-set.patch # Not merged yet: https://github.com/sddm/sddm/pull/997 Patch50: 0001-Remove-suffix-for-Wayland-session.patch # Not merged yet: https://github.com/sddm/sddm/pull/1017 @@ -59,7 +60,6 @@ Patch103: 0001-Read-the-DISPLAYMANAGER_AUTOLOGIN-value-from-sysconf.patch Patch104: sddm-service-handle-plymouth.patch # Use tty7 by default in the systemd service unit Patch105: 0001-Systemd-service-unit-Use-tty7-by-default.patch -Patch106: 0001-Move-Xauthority-to-a-different-location-and-truncate.patch Patch107: 0003-Leave-duplicate-symlinks-out-of-the-SessionModel.patch Patch108: 0001-Support-both-X11-XDisplay-Wayland-and-WaylandDisplay.patch BuildRequires: cmake From e4e404c2dfa7e855f2a26b441f22cfdc6d929b08d6bfd2f2cf75c3c406ebf7f3 Mon Sep 17 00:00:00 2001 From: Fabian Vogt Date: Mon, 16 Jul 2018 17:25:37 +0000 Subject: [PATCH 2/5] - Use %license OBS-URL: https://build.opensuse.org/package/show/KDE:Frameworks5/sddm?expand=0&rev=111 --- sddm.changes | 1 + sddm.spec | 9 ++++++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/sddm.changes b/sddm.changes index 7c7c014..d5448e8 100644 --- a/sddm.changes +++ b/sddm.changes @@ -3,6 +3,7 @@ Mon Jul 16 15:08:57 UTC 2018 - fabian@ritter-vogt.de - Add patch to fix fallback to embedded theme: * 0001-Skip-theme-for-greeter-call-if-none-is-set.patch +- Use %license ------------------------------------------------------------------- Sat Jul 7 11:27:49 UTC 2018 - w01dnick@gmail.com diff --git a/sddm.spec b/sddm.spec index 7090c5b..9820ed9 100644 --- a/sddm.spec +++ b/sddm.spec @@ -234,7 +234,8 @@ fi : %files -%doc LICENSE* README* +%license LICENSE* +%doc README* %config(noreplace) %{_sysconfdir}/sddm.conf %dir %{_sysconfdir}/sddm.conf.d/ %config %{_sysconfdir}/pam.d/sddm @@ -264,10 +265,12 @@ fi %{_unitdir}/sddm.service %files branding-openSUSE -%doc LICENSE* README* +%license LICENSE* +%doc README* %{_prefix}/lib/sddm/sddm.conf.d/10-theme.conf %files branding-upstream -%doc LICENSE* README* +%license LICENSE* +%doc README* %changelog From 4759a652ae309b913ddf021e2fa4318b3d1f9ef2a186fff80423afabb2e15dfe Mon Sep 17 00:00:00 2001 From: Fabian Vogt Date: Tue, 17 Jul 2018 14:55:43 +0000 Subject: [PATCH 3/5] - Add patch to fix authentication when reusing an existing session (boo#1101450): * 0001-Fix-authentication-when-reusing-an-existing-session.patch OBS-URL: https://build.opensuse.org/package/show/KDE:Frameworks5/sddm?expand=0&rev=112 --- ...ion-when-reusing-an-existing-session.patch | 43 +++++++++++++++++++ sddm.changes | 2 + sddm.spec | 3 +- 3 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 0001-Fix-authentication-when-reusing-an-existing-session.patch diff --git a/0001-Fix-authentication-when-reusing-an-existing-session.patch b/0001-Fix-authentication-when-reusing-an-existing-session.patch new file mode 100644 index 0000000..ce97e41 --- /dev/null +++ b/0001-Fix-authentication-when-reusing-an-existing-session.patch @@ -0,0 +1,43 @@ +From 19f31cd14b343b203fc367af07645f8a73341136 Mon Sep 17 00:00:00 2001 +From: Fabian Vogt +Date: Wed, 11 Jul 2018 19:45:40 +0200 +Subject: [PATCH] Fix authentication when reusing an existing session + +- Check the success value before unlocking the session +- Don't attempt to use the nonexistant "sddm-check" PAM service +--- + src/daemon/Display.cpp | 4 +++- + src/helper/backend/PamBackend.cpp | 2 -- + 2 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/src/daemon/Display.cpp b/src/daemon/Display.cpp +index 5abfc9a..57d7ecb 100644 +--- a/src/daemon/Display.cpp ++++ b/src/daemon/Display.cpp +@@ -339,7 +339,9 @@ namespace SDDM { + } else { + //we only want to unlock the session if we can lock in, so we want to go via PAM auth, but not start a new session + //by not setting the session and the helper will emit authentication and then quit +- connect(m_auth, &Auth::authentication, this, [=](){ ++ connect(m_auth, &Auth::authentication, this, [=](const QString &, bool success){ ++ if(!success) ++ return; + qDebug() << "activating existing seat"; + OrgFreedesktopLogin1ManagerInterface manager(Logind::serviceName(), Logind::managerPath(), QDBusConnection::systemBus()); + manager.UnlockSession(existingSessionId); +diff --git a/src/helper/backend/PamBackend.cpp b/src/helper/backend/PamBackend.cpp +index 69cbd2c..5467282 100644 +--- a/src/helper/backend/PamBackend.cpp ++++ b/src/helper/backend/PamBackend.cpp +@@ -219,8 +219,6 @@ namespace SDDM { + + if (user == QStringLiteral("sddm") && m_greeter) + service = QStringLiteral("sddm-greeter"); +- else if (m_app->session()->path().isEmpty()) +- service = QStringLiteral("sddm-check"); + else if (m_autologin) + service = QStringLiteral("sddm-autologin"); + result = m_pam->start(service, user); +-- +2.18.0 + diff --git a/sddm.changes b/sddm.changes index d5448e8..3364b94 100644 --- a/sddm.changes +++ b/sddm.changes @@ -4,6 +4,8 @@ Mon Jul 16 15:08:57 UTC 2018 - fabian@ritter-vogt.de - Add patch to fix fallback to embedded theme: * 0001-Skip-theme-for-greeter-call-if-none-is-set.patch - Use %license +- Add patch to fix authentication when reusing an existing session (boo#1101450): + * 0001-Fix-authentication-when-reusing-an-existing-session.patch ------------------------------------------------------------------- Sat Jul 7 11:27:49 UTC 2018 - w01dnick@gmail.com diff --git a/sddm.spec b/sddm.spec index 9820ed9..c4c0e52 100644 --- a/sddm.spec +++ b/sddm.spec @@ -39,8 +39,9 @@ Patch8: 0004-UserModel-fix-filtering-out-duplicate-users-998.patch Patch9: 0005-UserModel-optimize-setting-of-default-user-icon-999.patch Patch10: 0001-Fix-build-with-Qt-5.11-1024.patch # Backport: https://github.com/sddm/sddm/commit/1bc813d08b8130e458a6550ec47fb2bfbe6de080 -Patch11: 0007-Honor-PAMs-ambient-supplemental-groups.patch +Patch11: 0007-Honor-PAMs-ambient-supplemental-groups.patch Patch12: 0001-Skip-theme-for-greeter-call-if-none-is-set.patch +Patch13: 0001-Fix-authentication-when-reusing-an-existing-session.patch # Not merged yet: https://github.com/sddm/sddm/pull/997 Patch50: 0001-Remove-suffix-for-Wayland-session.patch # Not merged yet: https://github.com/sddm/sddm/pull/1017 From b2c499cdccb42be530dca7c9a2f152cb292e85fe2d11f7fb15429331cf4f46da Mon Sep 17 00:00:00 2001 From: Fabian Vogt Date: Tue, 17 Jul 2018 14:58:53 +0000 Subject: [PATCH 4/5] - Add patch to fix authentication when reusing an existing session (boo#1101450, CVE-2018-14345): OBS-URL: https://build.opensuse.org/package/show/KDE:Frameworks5/sddm?expand=0&rev=113 --- sddm.changes | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sddm.changes b/sddm.changes index 3364b94..6f79e11 100644 --- a/sddm.changes +++ b/sddm.changes @@ -4,7 +4,8 @@ Mon Jul 16 15:08:57 UTC 2018 - fabian@ritter-vogt.de - Add patch to fix fallback to embedded theme: * 0001-Skip-theme-for-greeter-call-if-none-is-set.patch - Use %license -- Add patch to fix authentication when reusing an existing session (boo#1101450): +- Add patch to fix authentication when reusing an existing session + (boo#1101450, CVE-2018-14345): * 0001-Fix-authentication-when-reusing-an-existing-session.patch ------------------------------------------------------------------- From 5a52a4eff66ee779ca66b82f939919adead1a153d3b4b5aa2c71605c4c5c1dcb Mon Sep 17 00:00:00 2001 From: Luca Beltrame Date: Wed, 18 Jul 2018 12:00:41 +0000 Subject: [PATCH 5/5] Accepting request 623637 from home:Vogtinator:sddm-0.18 OBS-URL: https://build.opensuse.org/request/show/623637 OBS-URL: https://build.opensuse.org/package/show/KDE:Frameworks5/sddm?expand=0&rev=114 --- 00-general.conf | 6 + ...n-files-with-NoDisplay-true-to-Sessi.patch | 84 ---- 0001-Don-t-quit-on-SIGHUP.patch | 28 -- ...ion-when-reusing-an-existing-session.patch | 43 -- ...t-5.10-Use-QString-instead-of-QLatin.patch | 50 --- 0001-Fix-build-with-Qt-5.11-1024.patch | 39 -- ...x-platform-detection-for-EnableHiDPI.patch | 50 --- ...heme-for-greeter-call-if-none-is-set.patch | 30 -- ...t-for-theme-supplied-default-avatars.patch | 45 --- ...emd-service-unit-Use-tty7-by-default.patch | 15 +- 0001-greeter-Use-Qt-command-line-parser.patch | 379 ------------------ 0002-Remove-trailing-spaces.patch | 28 -- ...ze-filtering-out-duplicate-users-995.patch | 47 --- ...ix-filtering-out-duplicate-users-998.patch | 29 -- ...ize-setting-of-default-user-icon-999.patch | 42 -- ...nor-PAMs-ambient-supplemental-groups.patch | 96 ----- proper_pam.diff | 69 ++-- sddm-0.17.0.tar.gz | 3 - sddm-0.18.0.tar.gz | 3 + sddm.changes | 36 ++ sddm.spec | 18 +- 21 files changed, 86 insertions(+), 1054 deletions(-) delete mode 100644 0001-Don-t-add-session-files-with-NoDisplay-true-to-Sessi.patch delete mode 100644 0001-Don-t-quit-on-SIGHUP.patch delete mode 100644 0001-Fix-authentication-when-reusing-an-existing-session.patch delete mode 100644 0001-Fix-build-with-Qt-5.10-Use-QString-instead-of-QLatin.patch delete mode 100644 0001-Fix-build-with-Qt-5.11-1024.patch delete mode 100644 0001-Fix-platform-detection-for-EnableHiDPI.patch delete mode 100644 0001-Skip-theme-for-greeter-call-if-none-is-set.patch delete mode 100644 0001-Support-for-theme-supplied-default-avatars.patch delete mode 100644 0001-greeter-Use-Qt-command-line-parser.patch delete mode 100644 0002-Remove-trailing-spaces.patch delete mode 100644 0003-UserModel-optimize-filtering-out-duplicate-users-995.patch delete mode 100644 0004-UserModel-fix-filtering-out-duplicate-users-998.patch delete mode 100644 0005-UserModel-optimize-setting-of-default-user-icon-999.patch delete mode 100644 0007-Honor-PAMs-ambient-supplemental-groups.patch delete mode 100644 sddm-0.17.0.tar.gz create mode 100644 sddm-0.18.0.tar.gz diff --git a/00-general.conf b/00-general.conf index af08ed1..0eafd3e 100644 --- a/00-general.conf +++ b/00-general.conf @@ -3,3 +3,9 @@ ServerPath=/usr/bin/X SessionCommand=/etc/X11/xdm/Xsession DisplayCommand=/etc/X11/xdm/Xsetup MinimumVT=7 +# boo#1089932 +EnableHiDPI=true + +[Users] +# boo#979775 +ReuseSession=true diff --git a/0001-Don-t-add-session-files-with-NoDisplay-true-to-Sessi.patch b/0001-Don-t-add-session-files-with-NoDisplay-true-to-Sessi.patch deleted file mode 100644 index cef0b38..0000000 --- a/0001-Don-t-add-session-files-with-NoDisplay-true-to-Sessi.patch +++ /dev/null @@ -1,84 +0,0 @@ -From 9f72d78cd729b76bac96a79ab767b02e30b118c7 Mon Sep 17 00:00:00 2001 -From: Fabian Vogt -Date: Mon, 14 May 2018 10:06:34 +0200 -Subject: [PATCH] Don't add session files with NoDisplay=true to SessionModel - -Same treatment as for Hidden. SessionModel is not used for autologin, -so for all intents and purposes it's the same. If a user logged in with -a NoDisplay=true session, the last session index will be incorrect, but -IMO that's the intended behaviour of NoDisplay. ---- - src/common/Session.cpp | 8 ++++++++ - src/common/Session.h | 2 ++ - src/greeter/SessionModel.cpp | 2 +- - 3 files changed, 11 insertions(+), 1 deletion(-) - -diff --git a/src/common/Session.cpp b/src/common/Session.cpp -index 4812d67..aa4dad3 100644 ---- a/src/common/Session.cpp -+++ b/src/common/Session.cpp -@@ -32,6 +32,7 @@ namespace SDDM { - : m_valid(false) - , m_type(UnknownSession) - , m_isHidden(false) -+ , m_isNoDisplay(false) - { - } - -@@ -111,6 +112,11 @@ namespace SDDM { - return m_isHidden; - } - -+ bool Session::isNoDisplay() const -+ { -+ return m_isNoDisplay; -+ } -+ - void Session::setTo(Type type, const QString &_fileName) - { - QString fileName(_fileName); -@@ -177,6 +183,8 @@ namespace SDDM { - m_desktopNames = line.mid(13).replace(QLatin1Char(';'), QLatin1Char(':')); - if (line.startsWith(QLatin1String("Hidden="))) - m_isHidden = line.mid(7).toLower() == QLatin1String("true"); -+ if (line.startsWith(QLatin1String("NoDisplay="))) -+ m_isNoDisplay = line.mid(10).toLower() == QLatin1String("true"); - } - - file.close(); -diff --git a/src/common/Session.h b/src/common/Session.h -index c8c527e..d285a3f 100644 ---- a/src/common/Session.h -+++ b/src/common/Session.h -@@ -60,6 +60,7 @@ namespace SDDM { - QString desktopNames() const; - - bool isHidden() const; -+ bool isNoDisplay() const; - - void setTo(Type type, const QString &name); - -@@ -79,6 +80,7 @@ namespace SDDM { - QString m_xdgSessionType; - QString m_desktopNames; - bool m_isHidden; -+ bool m_isNoDisplay; - - friend class SessionModel; - }; -diff --git a/src/greeter/SessionModel.cpp b/src/greeter/SessionModel.cpp -index 27e8c40..2a3c091 100644 ---- a/src/greeter/SessionModel.cpp -+++ b/src/greeter/SessionModel.cpp -@@ -143,7 +143,7 @@ namespace SDDM { - } - } - // add to sessions list -- if (!si->isHidden() && execAllowed) -+ if (!si->isHidden() && !si->isNoDisplay() && execAllowed) - d->sessions.push_back(si); - else - delete si; --- -2.16.2 - diff --git a/0001-Don-t-quit-on-SIGHUP.patch b/0001-Don-t-quit-on-SIGHUP.patch deleted file mode 100644 index 59fb41e..0000000 --- a/0001-Don-t-quit-on-SIGHUP.patch +++ /dev/null @@ -1,28 +0,0 @@ -From f6a82a27a0481b761218a5208134c7a72ec8206a Mon Sep 17 00:00:00 2001 -From: Fabian Vogt -Date: Sat, 3 Mar 2018 20:07:16 +0100 -Subject: [PATCH] Don't quit on SIGHUP - -SIGHUP is sent to daemons on reload, so they should reread their configuration. -Currently sddm would just quit on reload, which is very unexpected. ---- - src/daemon/DaemonApp.cpp | 3 +-- - 1 file changed, 1 insertion(+), 2 deletions(-) - -diff --git a/src/daemon/DaemonApp.cpp b/src/daemon/DaemonApp.cpp -index b5c8d49..de78e75 100644 ---- a/src/daemon/DaemonApp.cpp -+++ b/src/daemon/DaemonApp.cpp -@@ -68,8 +68,7 @@ namespace SDDM { - // initialize signal signalHandler - SignalHandler::initialize(); - -- // quit when SIGHUP, SIGINT, SIGTERM received -- connect(m_signalHandler, SIGNAL(sighupReceived()), this, SLOT(quit())); -+ // quit when SIGINT, SIGTERM received - connect(m_signalHandler, SIGNAL(sigintReceived()), this, SLOT(quit())); - connect(m_signalHandler, SIGNAL(sigtermReceived()), this, SLOT(quit())); - --- -2.16.1 - diff --git a/0001-Fix-authentication-when-reusing-an-existing-session.patch b/0001-Fix-authentication-when-reusing-an-existing-session.patch deleted file mode 100644 index ce97e41..0000000 --- a/0001-Fix-authentication-when-reusing-an-existing-session.patch +++ /dev/null @@ -1,43 +0,0 @@ -From 19f31cd14b343b203fc367af07645f8a73341136 Mon Sep 17 00:00:00 2001 -From: Fabian Vogt -Date: Wed, 11 Jul 2018 19:45:40 +0200 -Subject: [PATCH] Fix authentication when reusing an existing session - -- Check the success value before unlocking the session -- Don't attempt to use the nonexistant "sddm-check" PAM service ---- - src/daemon/Display.cpp | 4 +++- - src/helper/backend/PamBackend.cpp | 2 -- - 2 files changed, 3 insertions(+), 3 deletions(-) - -diff --git a/src/daemon/Display.cpp b/src/daemon/Display.cpp -index 5abfc9a..57d7ecb 100644 ---- a/src/daemon/Display.cpp -+++ b/src/daemon/Display.cpp -@@ -339,7 +339,9 @@ namespace SDDM { - } else { - //we only want to unlock the session if we can lock in, so we want to go via PAM auth, but not start a new session - //by not setting the session and the helper will emit authentication and then quit -- connect(m_auth, &Auth::authentication, this, [=](){ -+ connect(m_auth, &Auth::authentication, this, [=](const QString &, bool success){ -+ if(!success) -+ return; - qDebug() << "activating existing seat"; - OrgFreedesktopLogin1ManagerInterface manager(Logind::serviceName(), Logind::managerPath(), QDBusConnection::systemBus()); - manager.UnlockSession(existingSessionId); -diff --git a/src/helper/backend/PamBackend.cpp b/src/helper/backend/PamBackend.cpp -index 69cbd2c..5467282 100644 ---- a/src/helper/backend/PamBackend.cpp -+++ b/src/helper/backend/PamBackend.cpp -@@ -219,8 +219,6 @@ namespace SDDM { - - if (user == QStringLiteral("sddm") && m_greeter) - service = QStringLiteral("sddm-greeter"); -- else if (m_app->session()->path().isEmpty()) -- service = QStringLiteral("sddm-check"); - else if (m_autologin) - service = QStringLiteral("sddm-autologin"); - result = m_pam->start(service, user); --- -2.18.0 - diff --git a/0001-Fix-build-with-Qt-5.10-Use-QString-instead-of-QLatin.patch b/0001-Fix-build-with-Qt-5.10-Use-QString-instead-of-QLatin.patch deleted file mode 100644 index 7f2d103..0000000 --- a/0001-Fix-build-with-Qt-5.10-Use-QString-instead-of-QLatin.patch +++ /dev/null @@ -1,50 +0,0 @@ -From be2f6c82c67a5511b56af66bfe77970c9f72a8c1 Mon Sep 17 00:00:00 2001 -From: Fabian Vogt -Date: Thu, 22 Mar 2018 09:54:49 +0100 -Subject: [PATCH] Fix build with Qt < 5.10: Use QString instead of - QLatin1String - -QLatin1String only got more QString-like with Qt 5.10, so we can't use -those methods. ---- - src/greeter/GreeterApp.cpp | 12 ++++++------ - 1 file changed, 6 insertions(+), 6 deletions(-) - -diff --git a/src/greeter/GreeterApp.cpp b/src/greeter/GreeterApp.cpp -index 5181e4e..baeb982 100644 ---- a/src/greeter/GreeterApp.cpp -+++ b/src/greeter/GreeterApp.cpp -@@ -281,24 +281,24 @@ int main(int argc, char **argv) - // We set an attribute based on the platform we run on. - // We only know the platform after we constructed QGuiApplication - // though, so we need to find it out ourselves. -- QLatin1String platform; -+ QString platform; - for (int i = 1; i < argc - 1; ++i) { - if(qstrcmp(argv[i], "-platform") == 0) { -- platform = QLatin1String(argv[i + 1]); -+ platform = QString::fromUtf8(argv[i + 1]); - } - } - if (platform.isEmpty()) { -- platform = QLatin1String(qgetenv("QT_QPA_PLATFORM")); -+ platform = QString::fromUtf8(qgetenv("QT_QPA_PLATFORM")); - } - if (platform.isEmpty()) { -- platform = QLatin1String("xcb"); -+ platform = QStringLiteral("xcb"); - } - - // HiDPI - bool hiDpiEnabled = false; -- if (platform == QLatin1String("xcb")) -+ if (platform == QStringLiteral("xcb")) - hiDpiEnabled = SDDM::mainConfig.X11.EnableHiDPI.get(); -- else if (platform.startsWith(QLatin1String("wayland"))) -+ else if (platform.startsWith(QStringLiteral("wayland"))) - hiDpiEnabled = SDDM::mainConfig.Wayland.EnableHiDPI.get(); - if (hiDpiEnabled) { - qDebug() << "High-DPI autoscaling Enabled"; --- -2.16.2 - diff --git a/0001-Fix-build-with-Qt-5.11-1024.patch b/0001-Fix-build-with-Qt-5.11-1024.patch deleted file mode 100644 index 3fce600..0000000 --- a/0001-Fix-build-with-Qt-5.11-1024.patch +++ /dev/null @@ -1,39 +0,0 @@ -From 287e4b11b940140764131a04dfb4afb3a3d8a84d Mon Sep 17 00:00:00 2001 -From: Fabian Vogt -Date: Sat, 28 Apr 2018 11:38:32 +0200 -Subject: [PATCH] Fix build with Qt 5.11 (#1024) - -qt5_use_modules was deprecated for quite some time and got finally removed. ---- - CMakeLists.txt | 2 +- - test/CMakeLists.txt | 3 +-- - 2 files changed, 2 insertions(+), 3 deletions(-) - -Index: sddm-0.17.0/CMakeLists.txt -=================================================================== ---- sddm-0.17.0.orig/CMakeLists.txt -+++ sddm-0.17.0/CMakeLists.txt -@@ -93,7 +93,7 @@ find_package(XCB REQUIRED) - find_package(XKB REQUIRED) - - # Qt 5 --find_package(Qt5 5.6.0 CONFIG REQUIRED Core DBus Gui Qml Quick LinguistTools) -+find_package(Qt5 5.6.0 CONFIG REQUIRED Core DBus Gui Qml Quick LinguistTools Test) - - # find qt5 imports dir - get_target_property(QMAKE_EXECUTABLE Qt5::qmake LOCATION) -Index: sddm-0.17.0/test/CMakeLists.txt -=================================================================== ---- sddm-0.17.0.orig/test/CMakeLists.txt -+++ sddm-0.17.0/test/CMakeLists.txt -@@ -2,9 +2,8 @@ set(QT_USE_QTTEST TRUE) - - include_directories(../src/common) - -- - set(ConfigurationTest_SRCS ConfigurationTest.cpp ../src/common/ConfigReader.cpp) - add_executable(ConfigurationTest ${ConfigurationTest_SRCS}) - add_test(NAME Configuration COMMAND ConfigurationTest) - --qt5_use_modules(ConfigurationTest Test) -+target_link_libraries(ConfigurationTest Qt5::Core Qt5::Test) diff --git a/0001-Fix-platform-detection-for-EnableHiDPI.patch b/0001-Fix-platform-detection-for-EnableHiDPI.patch deleted file mode 100644 index abe22bd..0000000 --- a/0001-Fix-platform-detection-for-EnableHiDPI.patch +++ /dev/null @@ -1,50 +0,0 @@ -From 70b1059cebd0bc98d1545a7a702c1c1779286c42 Mon Sep 17 00:00:00 2001 -From: Fabian Vogt -Date: Thu, 8 Mar 2018 10:47:03 +0100 -Subject: [PATCH] Fix platform detection for EnableHiDPI - -We can't use QGuiApplication before it's constructed, so find out which -platform is requested ourselves. - -Fixes #894 ---- - src/greeter/GreeterApp.cpp | 20 ++++++++++++++++++-- - 1 file changed, 18 insertions(+), 2 deletions(-) - -diff --git a/src/greeter/GreeterApp.cpp b/src/greeter/GreeterApp.cpp -index 1230efa..5181e4e 100644 ---- a/src/greeter/GreeterApp.cpp -+++ b/src/greeter/GreeterApp.cpp -@@ -278,11 +278,27 @@ int main(int argc, char **argv) - // Install message handler - qInstallMessageHandler(SDDM::GreeterMessageHandler); - -+ // We set an attribute based on the platform we run on. -+ // We only know the platform after we constructed QGuiApplication -+ // though, so we need to find it out ourselves. -+ QLatin1String platform; -+ for (int i = 1; i < argc - 1; ++i) { -+ if(qstrcmp(argv[i], "-platform") == 0) { -+ platform = QLatin1String(argv[i + 1]); -+ } -+ } -+ if (platform.isEmpty()) { -+ platform = QLatin1String(qgetenv("QT_QPA_PLATFORM")); -+ } -+ if (platform.isEmpty()) { -+ platform = QLatin1String("xcb"); -+ } -+ - // HiDPI - bool hiDpiEnabled = false; -- if (QGuiApplication::platformName() == QLatin1String("xcb")) -+ if (platform == QLatin1String("xcb")) - hiDpiEnabled = SDDM::mainConfig.X11.EnableHiDPI.get(); -- else if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"))) -+ else if (platform.startsWith(QLatin1String("wayland"))) - hiDpiEnabled = SDDM::mainConfig.Wayland.EnableHiDPI.get(); - if (hiDpiEnabled) { - qDebug() << "High-DPI autoscaling Enabled"; --- -2.16.1 - diff --git a/0001-Skip-theme-for-greeter-call-if-none-is-set.patch b/0001-Skip-theme-for-greeter-call-if-none-is-set.patch deleted file mode 100644 index 252df3c..0000000 --- a/0001-Skip-theme-for-greeter-call-if-none-is-set.patch +++ /dev/null @@ -1,30 +0,0 @@ -From bf55fcad4c35884897c0b862c5f480f00d1f1dff Mon Sep 17 00:00:00 2001 -From: Christoph Roick -Date: Sat, 7 Apr 2018 02:45:33 +0200 -Subject: [PATCH] Skip theme for greeter call if none is set - -- fix loading default theme if none is set ---- - src/daemon/Greeter.cpp | 6 ++++-- - 1 file changed, 4 insertions(+), 2 deletions(-) - -diff --git a/src/daemon/Greeter.cpp b/src/daemon/Greeter.cpp -index 0240085..11ec19d 100644 ---- a/src/daemon/Greeter.cpp -+++ b/src/daemon/Greeter.cpp -@@ -89,8 +89,10 @@ namespace SDDM { - - // greeter command - QStringList args; -- args << QLatin1String("--socket") << m_socket -- << QLatin1String("--theme") << m_themePath; -+ args << QLatin1String("--socket") << m_socket; -+ -+ if (!m_themePath.isEmpty()) -+ args << QLatin1String("--theme") << m_themePath; - if (!platformTheme.isEmpty()) - args << QLatin1String("-platformtheme") << platformTheme; - if (!style.isEmpty()) --- -2.18.0 - diff --git a/0001-Support-for-theme-supplied-default-avatars.patch b/0001-Support-for-theme-supplied-default-avatars.patch deleted file mode 100644 index 273de38..0000000 --- a/0001-Support-for-theme-supplied-default-avatars.patch +++ /dev/null @@ -1,45 +0,0 @@ -From 2f079338408dfead4ba0e3e424a4d84a6bdf6019 Mon Sep 17 00:00:00 2001 -From: Sogatori -Date: Sun, 4 Mar 2018 00:42:28 +0100 -Subject: [PATCH 1/6] Support for theme supplied default avatars - -This patch adds support for custom default avatars -under $ThemeDir/themeName/faces. - -This will make sddm use an avatar icon that is provided by -the theme and is consistent with its look. ---- - src/greeter/UserModel.cpp | 10 ++++++++-- - 1 file changed, 8 insertions(+), 2 deletions(-) - -diff --git a/src/greeter/UserModel.cpp b/src/greeter/UserModel.cpp -index ebc1819..c790336 100644 ---- a/src/greeter/UserModel.cpp -+++ b/src/greeter/UserModel.cpp -@@ -52,7 +52,10 @@ namespace SDDM { - - UserModel::UserModel(QObject *parent) : QAbstractListModel(parent), d(new UserModelPrivate()) { - const QString facesDir = mainConfig.Theme.FacesDir.get(); -- const QString defaultFace = QStringLiteral("file://%1/.face.icon").arg(facesDir); -+ const QString themeDir = mainConfig.Theme.ThemeDir.get(); -+ const QString currentTheme = mainConfig.Theme.Current.get(); -+ const QString themeDefaultFace = QStringLiteral("%1/%2/faces/.face.icon").arg(themeDir).arg(currentTheme); -+ const QString defaultFace = QStringLiteral("%1/.face.icon").arg(facesDir); - - struct passwd *current_pw; - while ((current_pw = getpwent()) != nullptr) { -@@ -91,7 +94,10 @@ namespace SDDM { - user->needsPassword = strcmp(current_pw->pw_passwd, "") != 0; - - // search for face icon -- user->icon = defaultFace; -+ if (QFile::exists(themeDefaultFace)) -+ user->icon = QStringLiteral("file://%1").arg(themeDefaultFace); -+ else -+ user->icon = QStringLiteral("file://%1").arg(defaultFace); - - // add user - d->users << user; --- -2.16.2 - diff --git a/0001-Systemd-service-unit-Use-tty7-by-default.patch b/0001-Systemd-service-unit-Use-tty7-by-default.patch index bb441da..1a8089f 100644 --- a/0001-Systemd-service-unit-Use-tty7-by-default.patch +++ b/0001-Systemd-service-unit-Use-tty7-by-default.patch @@ -8,21 +8,18 @@ Subject: [PATCH] Systemd service unit: Use tty7 by default services/sddm.service.in | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -diff --git a/services/sddm.service.in b/services/sddm.service.in -index df03d92..0ef4b5d 100644 ---- a/services/sddm.service.in -+++ b/services/sddm.service.in +Index: sddm-0.18.0/services/sddm.service.in +=================================================================== +--- sddm-0.18.0.orig/services/sddm.service.in ++++ sddm-0.18.0/services/sddm.service.in @@ -1,8 +1,8 @@ [Unit] Description=Simple Desktop Display Manager Documentation=man:sddm(1) man:sddm.conf(5) -Conflicts=getty@tty1.service --After=systemd-user-sessions.service getty@tty1.service plymouth-quit.service +-After=systemd-user-sessions.service getty@tty1.service plymouth-quit.service systemd-logind.service +Conflicts=getty@tty7.service -+After=systemd-user-sessions.service getty@tty7.service plymouth-quit.service ++After=systemd-user-sessions.service getty@tty7.service plymouth-quit.service systemd-logind.service [Service] ExecStart=@CMAKE_INSTALL_FULL_BINDIR@/sddm --- -2.12.0 - diff --git a/0001-greeter-Use-Qt-command-line-parser.patch b/0001-greeter-Use-Qt-command-line-parser.patch deleted file mode 100644 index 0bfbae2..0000000 --- a/0001-greeter-Use-Qt-command-line-parser.patch +++ /dev/null @@ -1,379 +0,0 @@ -From 66b764abc0f7fa1562cf2b9ef4d751fd5d5a686e Mon Sep 17 00:00:00 2001 -From: Pier Luigi Fiorini -Date: Sun, 4 Mar 2018 04:12:55 +0100 -Subject: [PATCH 1/2] greeter: Use Qt command line parser - -Do not reinvent the wheel with a command line parser. -Restructure the code so that GreeterApp no longer need to -parse arguments itself. ---- - src/greeter/GreeterApp.cpp | 211 +++++++++++++++++++++++++++------------------ - src/greeter/GreeterApp.h | 30 +++++-- - 2 files changed, 149 insertions(+), 92 deletions(-) - -diff --git a/src/greeter/GreeterApp.cpp b/src/greeter/GreeterApp.cpp -index 5fb70ea..1230efa 100644 ---- a/src/greeter/GreeterApp.cpp -+++ b/src/greeter/GreeterApp.cpp -@@ -1,5 +1,5 @@ - /*************************************************************************** --* Copyright (c) 2015-2016 Pier Luigi Fiorini -+* Copyright (c) 2015-2018 Pier Luigi Fiorini - * Copyright (c) 2013 Abdurrahman AVCI - * - * This program is free software; you can redistribute it and/or modify -@@ -31,6 +31,7 @@ - - #include "MessageHandler.h" - -+#include - #include - #include - #include -@@ -42,98 +43,91 @@ - - #include - --namespace SDDM { -- QString parameter(const QStringList &arguments, const QString &key, const QString &defaultValue) { -- int index = arguments.indexOf(key); -+#define TR(x) QT_TRANSLATE_NOOP("Command line parser", QStringLiteral(x)) - -- if ((index < 0) || (index >= arguments.size() - 1)) -- return defaultValue; -+static const QEvent::Type StartupEventType = static_cast(QEvent::registerEventType()); - -- QString value = arguments.at(index + 1); -+namespace SDDM { -+ GreeterApp::GreeterApp(QObject *parent) -+ : QObject(parent) -+ { -+ // Translations -+ // Components translation -+ m_components_tranlator = new QTranslator(); -+ if (m_components_tranlator->load(QLocale::system(), QString(), QString(), QStringLiteral(COMPONENTS_TRANSLATION_DIR))) -+ QCoreApplication::installTranslator(m_components_tranlator); - -- if (value.startsWith(QLatin1Char('-'))) -- return defaultValue; - -- return value; -+ // Create models -+ m_sessionModel = new SessionModel(); -+ m_userModel = new UserModel(); -+ m_keyboard = new KeyboardModel(); - } - -- GreeterApp *GreeterApp::self = nullptr; -+ bool GreeterApp::isTestModeEnabled() const -+ { -+ return m_testing; -+ } - -- GreeterApp::GreeterApp(int &argc, char **argv) : QGuiApplication(argc, argv) { -- // point instance to this -- self = this; -+ void GreeterApp::setTestModeEnabled(bool value) -+ { -+ m_testing = value; -+ } - -- // Parse arguments -- bool testing = false; -+ QString GreeterApp::socketName() const -+ { -+ return m_socket; -+ } - -- if (arguments().contains(QStringLiteral("--test-mode"))) -- testing = true; -+ void GreeterApp::setSocketName(const QString &name) -+ { -+ m_socket = name; -+ } - -- // get socket name -- QString socket = parameter(arguments(), QStringLiteral("--socket"), QString()); -+ QString GreeterApp::themePath() const -+ { -+ return m_themePath; -+ } - -- // get theme path (fallback to internal theme) -- m_themePath = parameter(arguments(), QStringLiteral("--theme"), QString()); -+ void GreeterApp::setThemePath(const QString &path) -+ { -+ m_themePath = path; - if (m_themePath.isEmpty()) - m_themePath = QLatin1String("qrc:/theme"); - -- // read theme metadata -- m_metadata = new ThemeMetadata(QStringLiteral("%1/metadata.desktop").arg(m_themePath)); -- -- // Translations -- // Components translation -- m_components_tranlator = new QTranslator(); -- if (m_components_tranlator->load(QLocale::system(), QString(), QString(), QStringLiteral(COMPONENTS_TRANSLATION_DIR))) -- installTranslator(m_components_tranlator); -- -- // Theme specific translation -- m_theme_translator = new QTranslator(); -- if (m_theme_translator->load(QLocale::system(), QString(), QString(), -- QStringLiteral("%1/%2/").arg(m_themePath, m_metadata->translationsDirectory()))) -- installTranslator(m_theme_translator); -+ // Read theme metadata -+ const QString metadataPath = QStringLiteral("%1/metadata.desktop").arg(m_themePath); -+ if (m_metadata) -+ m_metadata->setTo(metadataPath); -+ else -+ m_metadata = new ThemeMetadata(metadataPath); - -- // get theme config file -+ // Get theme config file - QString configFile = QStringLiteral("%1/%2").arg(m_themePath).arg(m_metadata->configFile()); - -- // read theme config -- m_themeConfig = new ThemeConfig(configFile); -+ // Read theme config -+ if (m_themeConfig) -+ m_themeConfig->setTo(configFile); -+ else -+ m_themeConfig = new ThemeConfig(configFile); - -- // set default icon theme from greeter theme -+ // Set default icon theme from greeter theme - if (m_themeConfig->contains(QStringLiteral("iconTheme"))) - QIcon::setThemeName(m_themeConfig->value(QStringLiteral("iconTheme")).toString()); - -- // create models -- -- m_sessionModel = new SessionModel(); -- m_userModel = new UserModel(); -- m_proxy = new GreeterProxy(socket); -- m_keyboard = new KeyboardModel(); -- -- if(!testing && !m_proxy->isConnected()) { -- qCritical() << "Cannot connect to the daemon - is it running?"; -- exit(EXIT_FAILURE); -- } -- -- // Set numlock upon start -- if (m_keyboard->enabled()) { -- if (mainConfig.Numlock.get() == MainConfig::NUM_SET_ON) -- m_keyboard->setNumLockState(true); -- else if (mainConfig.Numlock.get() == MainConfig::NUM_SET_OFF) -- m_keyboard->setNumLockState(false); -- } -- -- m_proxy->setSessionModel(m_sessionModel); -- -- // create views -- QList screens = primaryScreen()->virtualSiblings(); -- Q_FOREACH (QScreen *screen, screens) -- addViewForScreen(screen); -+ // Theme specific translation -+ if (m_theme_translator) -+ m_theme_translator->deleteLater(); -+ m_theme_translator = new QTranslator(); -+ if (m_theme_translator->load(QLocale::system(), QString(), QString(), -+ QStringLiteral("%1/%2/").arg(m_themePath, m_metadata->translationsDirectory()))) -+ QCoreApplication::installTranslator(m_theme_translator); -+ } - -- // handle screens -- connect(this, &GreeterApp::screenAdded, this, &GreeterApp::addViewForScreen); -- connect(this, &GreeterApp::primaryScreenChanged, this, [this](QScreen *) { -- activatePrimary(); -- }); -+ void GreeterApp::customEvent(QEvent *event) -+ { -+ if (event->type() == StartupEventType) -+ startup(); - } - - void GreeterApp::addViewForScreen(QScreen *screen) { -@@ -149,7 +143,7 @@ namespace SDDM { - // need to be careful here since Qt will move the view to - // another screen before this signal is emitted so we - // pass a pointer to the view to our slot -- connect(this, &GreeterApp::screenRemoved, this, [view, this](QScreen *) { -+ connect(qGuiApp, &QGuiApplication::screenRemoved, this, [view, this](QScreen *) { - removeViewForScreen(view); - }); - -@@ -231,6 +225,38 @@ namespace SDDM { - view->deleteLater(); - } - -+ void GreeterApp::startup() -+ { -+ // Connect to the daemon -+ m_proxy = new GreeterProxy(m_socket); -+ if (!m_testing && !m_proxy->isConnected()) { -+ qCritical() << "Cannot connect to the daemon - is it running?"; -+ QCoreApplication::exit(EXIT_FAILURE); -+ } -+ -+ // Set numlock upon start -+ if (m_keyboard->enabled()) { -+ if (mainConfig.Numlock.get() == MainConfig::NUM_SET_ON) -+ m_keyboard->setNumLockState(true); -+ else if (mainConfig.Numlock.get() == MainConfig::NUM_SET_OFF) -+ m_keyboard->setNumLockState(false); -+ } -+ -+ // Set session model on proxy -+ m_proxy->setSessionModel(m_sessionModel); -+ -+ // Create views -+ QList screens = qGuiApp->primaryScreen()->virtualSiblings(); -+ Q_FOREACH (QScreen *screen, screens) -+ addViewForScreen(screen); -+ -+ // Handle screens -+ connect(qGuiApp, &QGuiApplication::screenAdded, this, &GreeterApp::addViewForScreen); -+ connect(qGuiApp, &QGuiApplication::primaryScreenChanged, this, [this](QScreen *) { -+ activatePrimary(); -+ }); -+ } -+ - void GreeterApp::activatePrimary() { - // activate and give focus to the window assigned to the primary screen - Q_FOREACH (QQuickView *view, m_views) { -@@ -240,10 +266,16 @@ namespace SDDM { - } - } - } -+ -+ StartupEvent::StartupEvent() -+ : QEvent(StartupEventType) -+ { -+ } - } - --int main(int argc, char **argv) { -- // install message handler -+int main(int argc, char **argv) -+{ -+ // Install message handler - qInstallMessageHandler(SDDM::GreeterMessageHandler); - - // HiDPI -@@ -259,22 +291,29 @@ int main(int argc, char **argv) { - qDebug() << "High-DPI autoscaling not Enabled"; - } - -- QStringList arguments; -+ QGuiApplication app(argc, argv); - -- for (int i = 0; i < argc; i++) -- arguments << QString::fromLocal8Bit(argv[i]); -+ QCommandLineParser parser; -+ parser.setApplicationDescription(TR("SDDM greeter")); -+ parser.addHelpOption(); -+ parser.addVersionOption(); - -- if (arguments.contains(QStringLiteral("--help")) || arguments.contains(QStringLiteral("-h"))) { -- std::cout << "Usage: " << argv[0] << " [options] [arguments]\n" -- "Options: \n" -- " --theme Set greeter theme\n" -- " --socket Set socket name\n" -- " --test-mode Start greeter in test mode" << std::endl; -+ QCommandLineOption testModeOption(QLatin1String("test-mode"), TR("Start greeter in test mode")); -+ parser.addOption(testModeOption); - -- return EXIT_FAILURE; -- } -+ QCommandLineOption socketOption(QLatin1String("socket"), TR("Socket name"), TR("name")); -+ parser.addOption(socketOption); -+ -+ QCommandLineOption themeOption(QLatin1String("theme"), TR("Greeter theme"), TR("path")); -+ parser.addOption(themeOption); -+ -+ parser.process(app); - -- SDDM::GreeterApp app(argc, argv); -+ SDDM::GreeterApp *greeter = new SDDM::GreeterApp(); -+ greeter->setTestModeEnabled(parser.isSet(testModeOption)); -+ greeter->setSocketName(parser.value(socketOption)); -+ greeter->setThemePath(parser.value(themeOption)); -+ QCoreApplication::postEvent(greeter, new SDDM::StartupEvent()); - - return app.exec(); - } -diff --git a/src/greeter/GreeterApp.h b/src/greeter/GreeterApp.h -index 1ebd981..ed63595 100644 ---- a/src/greeter/GreeterApp.h -+++ b/src/greeter/GreeterApp.h -@@ -21,7 +21,7 @@ - #ifndef GREETERAPP_H - #define GREETERAPP_H - --#include -+#include - #include - #include - -@@ -38,27 +38,38 @@ namespace SDDM { - class KeyboardModel; - - -- class GreeterApp : public QGuiApplication -+ class GreeterApp : public QObject - { - Q_OBJECT - Q_DISABLE_COPY(GreeterApp) - public: -- explicit GreeterApp(int &argc, char **argv); -+ explicit GreeterApp(QObject *parent = nullptr); - -- static GreeterApp *instance() { return self; } -+ bool isTestModeEnabled() const; -+ void setTestModeEnabled(bool value); -+ -+ QString socketName() const; -+ void setSocketName(const QString &name); -+ -+ QString themePath() const; -+ void setThemePath(const QString &path); -+ -+ protected: -+ void customEvent(QEvent *event) override; - - private slots: - void addViewForScreen(QScreen *screen); - void removeViewForScreen(QQuickView *view); - - private: -- static GreeterApp *self; -+ bool m_testing = false; -+ QString m_socket; -+ QString m_themePath; - - QList m_views; - QTranslator *m_theme_translator { nullptr }, - *m_components_tranlator { nullptr }; - -- QString m_themePath; - ThemeMetadata *m_metadata { nullptr }; - ThemeConfig *m_themeConfig { nullptr }; - SessionModel *m_sessionModel { nullptr }; -@@ -66,8 +77,15 @@ namespace SDDM { - GreeterProxy *m_proxy { nullptr }; - KeyboardModel *m_keyboard { nullptr }; - -+ void startup(); - void activatePrimary(); - }; -+ -+ class StartupEvent : public QEvent -+ { -+ public: -+ StartupEvent(); -+ }; - } - - --- -2.16.1 - diff --git a/0002-Remove-trailing-spaces.patch b/0002-Remove-trailing-spaces.patch deleted file mode 100644 index 871a3ee..0000000 --- a/0002-Remove-trailing-spaces.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 719e6590f325e60e415defc9af3642dbd0183a9f Mon Sep 17 00:00:00 2001 -From: Pier Luigi Fiorini -Date: Sat, 17 Mar 2018 20:02:48 +0100 -Subject: [PATCH 2/6] Remove trailing spaces - ---- - src/greeter/UserModel.cpp | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/src/greeter/UserModel.cpp b/src/greeter/UserModel.cpp -index c790336..fae5cfa 100644 ---- a/src/greeter/UserModel.cpp -+++ b/src/greeter/UserModel.cpp -@@ -94,9 +94,9 @@ namespace SDDM { - user->needsPassword = strcmp(current_pw->pw_passwd, "") != 0; - - // search for face icon -- if (QFile::exists(themeDefaultFace)) -+ if (QFile::exists(themeDefaultFace)) - user->icon = QStringLiteral("file://%1").arg(themeDefaultFace); -- else -+ else - user->icon = QStringLiteral("file://%1").arg(defaultFace); - - // add user --- -2.16.2 - diff --git a/0003-UserModel-optimize-filtering-out-duplicate-users-995.patch b/0003-UserModel-optimize-filtering-out-duplicate-users-995.patch deleted file mode 100644 index 14c6fa3..0000000 --- a/0003-UserModel-optimize-filtering-out-duplicate-users-995.patch +++ /dev/null @@ -1,47 +0,0 @@ -From 47f28bb0b903ae1603b8f855e77bbeb79d8e6ace Mon Sep 17 00:00:00 2001 -From: Dmitry Torokhov -Date: Mon, 19 Mar 2018 19:07:12 -0700 -Subject: [PATCH 3/6] UserModel: optimize filtering out duplicate users (#995) - -Instead of using naive approach of trying to detect duplicates when -inserting a new user into the list of users, which is O(n^2) complexity, -let's filter them out after the fact, which is much more efficient on -real-world data. - -With this change time to load user list in our environment (over 500000 -account entries) is reduced from over 1 hour to about 2 seconds. ---- - src/greeter/UserModel.cpp | 10 +++------- - 1 file changed, 3 insertions(+), 7 deletions(-) - -diff --git a/src/greeter/UserModel.cpp b/src/greeter/UserModel.cpp -index fae5cfa..daf93c5 100644 ---- a/src/greeter/UserModel.cpp -+++ b/src/greeter/UserModel.cpp -@@ -75,13 +75,6 @@ namespace SDDM { - if (mainConfig.Users.HideShells.get().contains(QString::fromLocal8Bit(current_pw->pw_shell))) - continue; - -- // skip duplicates -- // Note: getpwent() makes no attempt to suppress duplicate information -- // if multiple sources are specified in nsswitch.conf(5). -- if (d->users.cend() -- != std::find_if(d->users.cbegin(), d->users.cend(), [current_pw](const UserPtr & u) { return u->uid == current_pw->pw_uid; })) -- continue; -- - // create user - UserPtr user { new User() }; - user->name = QString::fromLocal8Bit(current_pw->pw_name); -@@ -107,6 +100,9 @@ namespace SDDM { - - // sort users by username - std::sort(d->users.begin(), d->users.end(), [&](const UserPtr &u1, const UserPtr &u2) { return u1->name < u2->name; }); -+ // Remove duplicates in case we have several sources specified -+ // in nsswitch.conf(5). -+ std::unique(d->users.begin(), d->users.end(), [&](const UserPtr &u1, const UserPtr &u2) { return u1->name == u2->name; }); - - bool avatarsEnabled = mainConfig.Theme.EnableAvatars.get(); - if (avatarsEnabled && mainConfig.Theme.EnableAvatars.isDefault()) { --- -2.16.2 - diff --git a/0004-UserModel-fix-filtering-out-duplicate-users-998.patch b/0004-UserModel-fix-filtering-out-duplicate-users-998.patch deleted file mode 100644 index 37af179..0000000 --- a/0004-UserModel-fix-filtering-out-duplicate-users-998.patch +++ /dev/null @@ -1,29 +0,0 @@ -From 126a722a4a36cb4cc6d17714ff4b18b6657493e4 Mon Sep 17 00:00:00 2001 -From: Dmitry Torokhov -Date: Wed, 21 Mar 2018 14:24:39 -0700 -Subject: [PATCH 4/6] UserModel: fix filtering out duplicate users (#998) - -std::unique() is "interesting": it modifies the container, rearranging -elements in it, but does not reduce the size of the container, so there -are invalid elements at the end that have to be erased explicitly. ---- - src/greeter/UserModel.cpp | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/src/greeter/UserModel.cpp b/src/greeter/UserModel.cpp -index daf93c5..57f236d 100644 ---- a/src/greeter/UserModel.cpp -+++ b/src/greeter/UserModel.cpp -@@ -102,7 +102,8 @@ namespace SDDM { - std::sort(d->users.begin(), d->users.end(), [&](const UserPtr &u1, const UserPtr &u2) { return u1->name < u2->name; }); - // Remove duplicates in case we have several sources specified - // in nsswitch.conf(5). -- std::unique(d->users.begin(), d->users.end(), [&](const UserPtr &u1, const UserPtr &u2) { return u1->name == u2->name; }); -+ auto newEnd = std::unique(d->users.begin(), d->users.end(), [&](const UserPtr &u1, const UserPtr &u2) { return u1->name == u2->name; }); -+ d->users.erase(newEnd, d->users.end()); - - bool avatarsEnabled = mainConfig.Theme.EnableAvatars.get(); - if (avatarsEnabled && mainConfig.Theme.EnableAvatars.isDefault()) { --- -2.16.2 - diff --git a/0005-UserModel-optimize-setting-of-default-user-icon-999.patch b/0005-UserModel-optimize-setting-of-default-user-icon-999.patch deleted file mode 100644 index fe59231..0000000 --- a/0005-UserModel-optimize-setting-of-default-user-icon-999.patch +++ /dev/null @@ -1,42 +0,0 @@ -From 1ea5a0a85488e425c2d1ffcf3eafa8d8b0abe0b1 Mon Sep 17 00:00:00 2001 -From: Dmitry Torokhov -Date: Fri, 6 Apr 2018 19:56:14 -0700 -Subject: [PATCH 5/6] UserModel: optimize setting of default user icon (#999) - -Instead of checking for existence of theme-specific icon and re-creating -string literals every time we add a new user to the list, do it once. -It helps in large organizations with a lot of users. ---- - src/greeter/UserModel.cpp | 9 +++------ - 1 file changed, 3 insertions(+), 6 deletions(-) - -diff --git a/src/greeter/UserModel.cpp b/src/greeter/UserModel.cpp -index 57f236d..f6f4f95 100644 ---- a/src/greeter/UserModel.cpp -+++ b/src/greeter/UserModel.cpp -@@ -56,6 +56,8 @@ namespace SDDM { - const QString currentTheme = mainConfig.Theme.Current.get(); - const QString themeDefaultFace = QStringLiteral("%1/%2/faces/.face.icon").arg(themeDir).arg(currentTheme); - const QString defaultFace = QStringLiteral("%1/.face.icon").arg(facesDir); -+ const QString iconURI = QStringLiteral("file://%1").arg( -+ QFile::exists(themeDefaultFace) ? themeDefaultFace : defaultFace); - - struct passwd *current_pw; - while ((current_pw = getpwent()) != nullptr) { -@@ -85,12 +87,7 @@ namespace SDDM { - // if shadow is used pw_passwd will be 'x' nevertheless, so this - // will always be true - user->needsPassword = strcmp(current_pw->pw_passwd, "") != 0; -- -- // search for face icon -- if (QFile::exists(themeDefaultFace)) -- user->icon = QStringLiteral("file://%1").arg(themeDefaultFace); -- else -- user->icon = QStringLiteral("file://%1").arg(defaultFace); -+ user->icon = iconURI; - - // add user - d->users << user; --- -2.16.2 - diff --git a/0007-Honor-PAMs-ambient-supplemental-groups.patch b/0007-Honor-PAMs-ambient-supplemental-groups.patch deleted file mode 100644 index 87c5e56..0000000 --- a/0007-Honor-PAMs-ambient-supplemental-groups.patch +++ /dev/null @@ -1,96 +0,0 @@ -From 1bc813d08b8130e458a6550ec47fb2bfbe6de080 Mon Sep 17 00:00:00 2001 -From: Konrad Tegtmeier -Date: Fri, 13 Apr 2018 14:06:11 +0200 -Subject: [PATCH] Honor PAM's ambient supplemental groups. (#834) - -When compiled with USE_PAM, prefer a combination of -getgroups(3) and getgrouplist(3) for ambient and user -groups, respectively, to initgroups(3). - -This way, groups injected into the PAM environment -by means of pam_groups.so aren't ignored. - -Signed-off-by: J. Konrad Tegtmeier-Rottach - -Backported to 0.17.0 - -Signed-off-by: Luiz Angelo Daros de Luca - ---- - src/helper/UserSession.cpp | 59 ++++++++++++++++++++++++++++++++++++++++++++++ - 1 file changed, 59 insertions(+) - -diff --git a/src/helper/UserSession.cpp b/src/helper/UserSession.cpp -index 4221ada0..d4fd2cff 100644 ---- a/src/helper/UserSession.cpp -+++ b/src/helper/UserSession.cpp -@@ -116,10 +116,69 @@ - qCritical() << "setgid(" << pw->pw_gid << ") failed for user: " << username; - exit(Auth::HELPER_OTHER_ERROR); - } -+ -+#ifdef USE_PAM -+ -+ // fetch ambient groups from PAM's environment; -+ // these are set by modules such as pam_groups.so -+ int n_pam_groups = getgroups(0, NULL); -+ gid_t *pam_groups = NULL; -+ if (n_pam_groups > 0) { -+ pam_groups = new gid_t[n_pam_groups]; -+ if ((n_pam_groups = getgroups(n_pam_groups, pam_groups)) == -1) { -+ qCritical() << "getgroups() failed to fetch supplemental" -+ << "PAM groups for user:" << username; -+ exit(Auth::HELPER_OTHER_ERROR); -+ } -+ } else { -+ n_pam_groups = 0; -+ } -+ -+ // fetch session's user's groups -+ int n_user_groups = 0; -+ gid_t *user_groups = NULL; -+ if (-1 == getgrouplist(username.constData(), pw->pw_gid, -+ NULL, &n_user_groups)) { -+ user_groups = new gid_t[n_user_groups]; -+ if ((n_user_groups = getgrouplist(username.constData(), -+ pw->pw_gid, user_groups, -+ &n_user_groups)) == -1 ) { -+ qCritical() << "getgrouplist(" << username << ", " << pw->pw_gid -+ << ") failed"; -+ //free(buffer); -+ exit(Auth::HELPER_OTHER_ERROR); -+ } -+ } -+ -+ // set groups to concatenation of PAM's ambient -+ // groups and the session's user's groups -+ int n_groups = n_pam_groups + n_user_groups; -+ if (n_groups > 0) { -+ gid_t *groups = new gid_t[n_groups]; -+ memcpy(groups, pam_groups, (n_pam_groups * sizeof(gid_t))); -+ memcpy((groups + n_pam_groups), user_groups, -+ (n_user_groups * sizeof(gid_t))); -+ -+ // setgroups(2) handles duplicate groups -+ if (setgroups(n_groups, groups) != 0) { -+ qCritical() << "setgroups() failed for user: " << username; -+ //free(buffer); -+ exit (Auth::HELPER_OTHER_ERROR); -+ } -+ delete[] groups; -+ } -+ delete[] pam_groups; -+ delete[] user_groups; -+ -+#else -+ - if (initgroups(pw->pw_name, pw->pw_gid) != 0) { - qCritical() << "initgroups(" << pw->pw_name << ", " << pw->pw_gid << ") failed for user: " << username; - exit(Auth::HELPER_OTHER_ERROR); - } -+ -+#endif /* USE_PAM */ -+ - if (setuid(pw->pw_uid) != 0) { - qCritical() << "setuid(" << pw->pw_uid << ") failed for user: " << username; - exit(Auth::HELPER_OTHER_ERROR); diff --git a/proper_pam.diff b/proper_pam.diff index fe6dfe6..41dfbe7 100644 --- a/proper_pam.diff +++ b/proper_pam.diff @@ -1,7 +1,7 @@ -Index: sddm-0.15.0~git/services/sddm-autologin.pam +Index: sddm-0.18.0/services/sddm-autologin.pam =================================================================== ---- sddm-0.15.0~git.orig/services/sddm-autologin.pam -+++ sddm-0.15.0~git/services/sddm-autologin.pam +--- sddm-0.18.0.orig/services/sddm-autologin.pam ++++ sddm-0.18.0/services/sddm-autologin.pam @@ -1,13 +1,6 @@ #%PAM-1.0 -auth required pam_env.so @@ -21,39 +21,10 @@ Index: sddm-0.15.0~git/services/sddm-autologin.pam +password include common-password +session required pam_loginuid.so +session include common-session -Index: sddm-0.15.0~git/services/sddm-greeter.pam +Index: sddm-0.18.0/services/sddm.pam =================================================================== ---- sddm-0.15.0~git.orig/services/sddm-greeter.pam -+++ sddm-0.15.0~git/services/sddm-greeter.pam -@@ -1,18 +1,7 @@ - #%PAM-1.0 -- --# Load environment from /etc/environment and ~/.pam_environment --auth required pam_env.so -- --# Always let the greeter start without authentication --auth required pam_permit.so -- --# No action required for account management --account required pam_permit.so -- --# Can't change password --password required pam_deny.so -- --# Setup session --session required pam_unix.so ---session optional pam_systemd.so ---session optional pam_elogind.so -+# PAM configuration used only for the greeter session -+auth required pam_permit.so -+account required pam_permit.so -+password include common-password -+session required pam_loginuid.so -+session include common-session -Index: sddm-0.15.0~git/services/sddm.pam -=================================================================== ---- sddm-0.15.0~git.orig/services/sddm.pam -+++ sddm-0.15.0~git/services/sddm.pam +--- sddm-0.18.0.orig/services/sddm.pam ++++ sddm-0.18.0/services/sddm.pam @@ -1,15 +1,6 @@ #%PAM-1.0 - @@ -75,3 +46,31 @@ Index: sddm-0.15.0~git/services/sddm.pam +password include common-password +session required pam_loginuid.so +session include common-session +Index: sddm-0.18.0/services/sddm-greeter.pam.in +=================================================================== +--- sddm-0.18.0.orig/services/sddm-greeter.pam.in ++++ sddm-0.18.0/services/sddm-greeter.pam.in +@@ -1,17 +1,7 @@ + #%PAM-1.0 +- +-# Load environment from /etc/environment and ~/.pam_environment +-auth required pam_env.so +- +-# Always let the greeter start without authentication +-auth required pam_permit.so +- +-# No action required for account management +-account required pam_permit.so +- +-# Can't change password +-password required pam_deny.so +- +-# Setup session +-session required pam_unix.so +-session optional @LOGIND_PAM_MODULE@ ++# PAM configuration used only for the greeter session ++auth required pam_permit.so ++account required pam_permit.so ++password include common-password ++session required pam_loginuid.so ++session include common-session diff --git a/sddm-0.17.0.tar.gz b/sddm-0.17.0.tar.gz deleted file mode 100644 index d707a17..0000000 --- a/sddm-0.17.0.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0743895b082becb24318564da0de3c2d4d93d567cee78174343716806a6c5704 -size 3527180 diff --git a/sddm-0.18.0.tar.gz b/sddm-0.18.0.tar.gz new file mode 100644 index 0000000..b8edef8 --- /dev/null +++ b/sddm-0.18.0.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9c50b6194f1b4dbf6e1a1b21f23c2c5e384871172985e192b91585986d38eec4 +size 3526688 diff --git a/sddm.changes b/sddm.changes index 6f79e11..b18c30c 100644 --- a/sddm.changes +++ b/sddm.changes @@ -1,3 +1,39 @@ +------------------------------------------------------------------- +Wed Jul 18 11:16:05 UTC 2018 - fabian@ritter-vogt.de + +- Update to 0.18.0: + * Support theme supplied avatars + * Compile against Qt 5.11 + * Fix platform detection for HighDPI + * On close, switch VT to a running session if applicable + * Better ConsoleKit support + * Fix authentication when reusing existing sessions + * Hide sessions with NoDisplay=true + * Honor PAM's ambient supplemental groups + * Cleanup socket destruction + * Don't quit on SIGHUP + * Updated translations +- Set EnableHiDPI=true by default (boo#1089932) +- Set ReuseSession=true by default (boo#979775) +- Drop patches, now upstream: + * 0001-Don-t-add-session-files-with-NoDisplay-true-to-Sessi.patch + * 0001-Don-t-quit-on-SIGHUP.patch + * 0001-Fix-authentication-when-reusing-an-existing-session.patch + * 0001-Fix-build-with-Qt-5.10-Use-QString-instead-of-QLatin.patch + * 0001-Fix-build-with-Qt-5.11-1024.patch + * 0001-Fix-platform-detection-for-EnableHiDPI.patch + * 0001-Skip-theme-for-greeter-call-if-none-is-set.patch + * 0001-Support-for-theme-supplied-default-avatars.patch + * 0001-greeter-Use-Qt-command-line-parser.patch + * 0002-Remove-trailing-spaces.patch + * 0003-UserModel-optimize-filtering-out-duplicate-users-995.patch + * 0004-UserModel-fix-filtering-out-duplicate-users-998.patch + * 0005-UserModel-optimize-setting-of-default-user-icon-999.patch + * 0007-Honor-PAMs-ambient-supplemental-groups.patch +- Refresh patches: + * proper_pam.diff + * 0001-Systemd-service-unit-Use-tty7-by-default.patch + ------------------------------------------------------------------- Mon Jul 16 15:08:57 UTC 2018 - fabian@ritter-vogt.de diff --git a/sddm.spec b/sddm.spec index c4c0e52..58f0a05 100644 --- a/sddm.spec +++ b/sddm.spec @@ -17,7 +17,7 @@ Name: sddm -Version: 0.17.0 +Version: 0.18.0 Release: 0 Summary: QML-based display manager License: GPL-2.0+ @@ -28,26 +28,10 @@ Source1: X11-displaymanagers-%{name} Source2: 00-general.conf Source3: 10-theme.conf # Patch0-100: PATCH-FIX-UPSTREAM -Patch1: 0001-Don-t-quit-on-SIGHUP.patch -Patch2: 0001-greeter-Use-Qt-command-line-parser.patch -Patch3: 0001-Fix-platform-detection-for-EnableHiDPI.patch -Patch4: 0001-Fix-build-with-Qt-5.10-Use-QString-instead-of-QLatin.patch -Patch5: 0001-Support-for-theme-supplied-default-avatars.patch -Patch6: 0002-Remove-trailing-spaces.patch -Patch7: 0003-UserModel-optimize-filtering-out-duplicate-users-995.patch -Patch8: 0004-UserModel-fix-filtering-out-duplicate-users-998.patch -Patch9: 0005-UserModel-optimize-setting-of-default-user-icon-999.patch -Patch10: 0001-Fix-build-with-Qt-5.11-1024.patch -# Backport: https://github.com/sddm/sddm/commit/1bc813d08b8130e458a6550ec47fb2bfbe6de080 -Patch11: 0007-Honor-PAMs-ambient-supplemental-groups.patch -Patch12: 0001-Skip-theme-for-greeter-call-if-none-is-set.patch -Patch13: 0001-Fix-authentication-when-reusing-an-existing-session.patch # Not merged yet: https://github.com/sddm/sddm/pull/997 Patch50: 0001-Remove-suffix-for-Wayland-session.patch # Not merged yet: https://github.com/sddm/sddm/pull/1017 Patch51: 0006-Don-t-fill-UserModel-if-theme-does-not-require-it.patch -# Not merged yet: https://github.com/sddm/sddm/pull/1029 -Patch52: 0001-Don-t-add-session-files-with-NoDisplay-true-to-Sessi.patch # Patch100-?: PATCH-FIX-OPENSUSE # Use openSUSE pam config Patch100: proper_pam.diff