Accepting request 623643 from KDE:Frameworks5

OBS-URL: https://build.opensuse.org/request/show/623643
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/sddm?expand=0&rev=38
This commit is contained in:
2018-07-25 14:06:19 +00:00
committed by Git OBS Bridge
20 changed files with 108 additions and 1068 deletions

View File

@@ -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

View File

@@ -1,84 +0,0 @@
From 9f72d78cd729b76bac96a79ab767b02e30b118c7 Mon Sep 17 00:00:00 2001
From: Fabian Vogt <fabian@ritter-vogt.de>
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

View File

@@ -1,28 +0,0 @@
From f6a82a27a0481b761218a5208134c7a72ec8206a Mon Sep 17 00:00:00 2001
From: Fabian Vogt <fabian@ritter-vogt.de>
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

View File

@@ -1,50 +0,0 @@
From be2f6c82c67a5511b56af66bfe77970c9f72a8c1 Mon Sep 17 00:00:00 2001
From: Fabian Vogt <fabian@ritter-vogt.de>
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

View File

@@ -1,39 +0,0 @@
From 287e4b11b940140764131a04dfb4afb3a3d8a84d Mon Sep 17 00:00:00 2001
From: Fabian Vogt <fabian@ritter-vogt.de>
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)

View File

@@ -1,50 +0,0 @@
From 70b1059cebd0bc98d1545a7a702c1c1779286c42 Mon Sep 17 00:00:00 2001
From: Fabian Vogt <fabian@ritter-vogt.de>
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

View File

@@ -1,85 +0,0 @@
From 87ff59b5558c3df9384a1d55590a53b9aca74bd0 Mon Sep 17 00:00:00 2001
From: Fabian Vogt <fabian@ritter-vogt.de>
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);

View File

@@ -1,45 +0,0 @@
From 2f079338408dfead4ba0e3e424a4d84a6bdf6019 Mon Sep 17 00:00:00 2001
From: Sogatori <Sogatori@users.noreply.github.com>
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

View File

@@ -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

View File

@@ -1,379 +0,0 @@
From 66b764abc0f7fa1562cf2b9ef4d751fd5d5a686e Mon Sep 17 00:00:00 2001
From: Pier Luigi Fiorini <pierluigi.fiorini@liri.io>
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 <pierluigi.fiorini@gmail.com>
+* Copyright (c) 2015-2018 Pier Luigi Fiorini <pierluigi.fiorini@gmail.com>
* Copyright (c) 2013 Abdurrahman AVCI <abdurrahmanavci@gmail.com>
*
* This program is free software; you can redistribute it and/or modify
@@ -31,6 +31,7 @@
#include "MessageHandler.h"
+#include <QCommandLineParser>
#include <QGuiApplication>
#include <QQuickItem>
#include <QQuickView>
@@ -42,98 +43,91 @@
#include <iostream>
-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::Type>(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<QScreen *> 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<QScreen *> 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 <theme path> Set greeter theme\n"
- " --socket <socket name> 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 <QGuiApplication>
+#include <QObject>
#include <QScreen>
#include <QQuickView>
@@ -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<QQuickView *> 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

View File

@@ -1,28 +0,0 @@
From 719e6590f325e60e415defc9af3642dbd0183a9f Mon Sep 17 00:00:00 2001
From: Pier Luigi Fiorini <pierluigi.fiorini@liri.io>
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

View File

@@ -1,47 +0,0 @@
From 47f28bb0b903ae1603b8f855e77bbeb79d8e6ace Mon Sep 17 00:00:00 2001
From: Dmitry Torokhov <dmitry.torokhov@gmail.com>
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

View File

@@ -1,29 +0,0 @@
From 126a722a4a36cb4cc6d17714ff4b18b6657493e4 Mon Sep 17 00:00:00 2001
From: Dmitry Torokhov <dmitry.torokhov@gmail.com>
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

View File

@@ -1,42 +0,0 @@
From 1ea5a0a85488e425c2d1ffcf3eafa8d8b0abe0b1 Mon Sep 17 00:00:00 2001
From: Dmitry Torokhov <dmitry.torokhov@gmail.com>
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

View File

@@ -1,96 +0,0 @@
From 1bc813d08b8130e458a6550ec47fb2bfbe6de080 Mon Sep 17 00:00:00 2001
From: Konrad Tegtmeier <jktr@users.noreply.github.com>
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 <jktr@0x16.de>
Backported to 0.17.0
Signed-off-by: Luiz Angelo Daros de Luca <luizluca@gmail.com>
---
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);

View File

@@ -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

View File

@@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:0743895b082becb24318564da0de3c2d4d93d567cee78174343716806a6c5704
size 3527180

3
sddm-0.18.0.tar.gz Normal file
View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:9c50b6194f1b4dbf6e1a1b21f23c2c5e384871172985e192b91585986d38eec4
size 3526688

View File

@@ -1,9 +1,61 @@
-------------------------------------------------------------------
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
- 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, CVE-2018-14345):
* 0001-Fix-authentication-when-reusing-an-existing-session.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

View File

@@ -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,24 +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
# 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
@@ -59,7 +45,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
@@ -234,7 +219,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 +250,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