- Intial commit as sddm-kalpa
- Added Requires: group(sddm) - Ported over pam configs from o:F/sddm - Update to 0.21.0 + Sync changes from Fedora - Removed: * sddm.sysconfig * sddm-0.18.0-environment_file.patch - Neither are needed for openSUSE - Specfile cleanup for openSUSE - Initial package forked from Fedora OBS-URL: https://build.opensuse.org/package/show/devel:microos:kalpa/sddm-kalpa?expand=0&rev=1
This commit is contained in:
commit
decde90825
23
.gitattributes
vendored
Normal file
23
.gitattributes
vendored
Normal file
@ -0,0 +1,23 @@
|
||||
## Default LFS
|
||||
*.7z filter=lfs diff=lfs merge=lfs -text
|
||||
*.bsp filter=lfs diff=lfs merge=lfs -text
|
||||
*.bz2 filter=lfs diff=lfs merge=lfs -text
|
||||
*.gem filter=lfs diff=lfs merge=lfs -text
|
||||
*.gz filter=lfs diff=lfs merge=lfs -text
|
||||
*.jar filter=lfs diff=lfs merge=lfs -text
|
||||
*.lz filter=lfs diff=lfs merge=lfs -text
|
||||
*.lzma filter=lfs diff=lfs merge=lfs -text
|
||||
*.obscpio filter=lfs diff=lfs merge=lfs -text
|
||||
*.oxt filter=lfs diff=lfs merge=lfs -text
|
||||
*.pdf filter=lfs diff=lfs merge=lfs -text
|
||||
*.png filter=lfs diff=lfs merge=lfs -text
|
||||
*.rpm filter=lfs diff=lfs merge=lfs -text
|
||||
*.tbz filter=lfs diff=lfs merge=lfs -text
|
||||
*.tbz2 filter=lfs diff=lfs merge=lfs -text
|
||||
*.tgz filter=lfs diff=lfs merge=lfs -text
|
||||
*.ttf filter=lfs diff=lfs merge=lfs -text
|
||||
*.txz filter=lfs diff=lfs merge=lfs -text
|
||||
*.whl filter=lfs diff=lfs merge=lfs -text
|
||||
*.xz filter=lfs diff=lfs merge=lfs -text
|
||||
*.zip filter=lfs diff=lfs merge=lfs -text
|
||||
*.zst filter=lfs diff=lfs merge=lfs -text
|
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
.osc
|
142
0001-Delay-for-logind-and-fallback-to-seat0.patch
Normal file
142
0001-Delay-for-logind-and-fallback-to-seat0.patch
Normal file
@ -0,0 +1,142 @@
|
||||
From 4d44531c8f624f5b479c3ff23e8fecc67eb848ab Mon Sep 17 00:00:00 2001
|
||||
From: Jeremy Linton <jeremy.linton@arm.com>
|
||||
Date: Fri, 22 Oct 2021 14:51:54 -0500
|
||||
Subject: [PATCH] Delay for logind, and fallback to seat0
|
||||
|
||||
There is systemd/logind race with when restarting
|
||||
sddm that causes logind1 not to be available. Previously
|
||||
this meant the seat0 was immediately created regardless
|
||||
of the state of CanGraphical.
|
||||
|
||||
Fixing this, though we still want seat0 to be started
|
||||
if none of the seats appear to be graphical. Presumably
|
||||
there are some graphics on the machine, otherwise
|
||||
why run sddm? Wait a bit, and create seat0 anyway. If
|
||||
this fails the output from Xorg should tell us why. This
|
||||
is generally a better strategy than what happens a good
|
||||
amount of time now, where sddm is started and silent about
|
||||
why the screen is blank.
|
||||
|
||||
References:
|
||||
* https://bugzilla.redhat.com/2011991
|
||||
* https://bugzilla.redhat.com/2016310
|
||||
|
||||
Signed-off-by: Jeremy Linton <jeremy.linton@arm.com>
|
||||
---
|
||||
src/daemon/LogindDBusTypes.cpp | 31 +++++++++++++++++++++----------
|
||||
src/daemon/SeatManager.cpp | 22 ++++++++++++++++++++++
|
||||
src/daemon/SeatManager.h | 1 +
|
||||
3 files changed, 44 insertions(+), 10 deletions(-)
|
||||
|
||||
diff --git a/src/daemon/LogindDBusTypes.cpp b/src/daemon/LogindDBusTypes.cpp
|
||||
index 011bb7f..6255c69 100644
|
||||
--- a/src/daemon/LogindDBusTypes.cpp
|
||||
+++ b/src/daemon/LogindDBusTypes.cpp
|
||||
@@ -8,6 +8,8 @@
|
||||
|
||||
#include <QDebug>
|
||||
|
||||
+#include <unistd.h>
|
||||
+
|
||||
class LogindPathInternal {
|
||||
public:
|
||||
LogindPathInternal();
|
||||
@@ -46,17 +48,26 @@ LogindPathInternal::LogindPathInternal()
|
||||
qRegisterMetaType<UserInfoList>("UserInfoList");
|
||||
qDBusRegisterMetaType<UserInfoList>();
|
||||
|
||||
- if (QDBusConnection::systemBus().interface()->isServiceRegistered(QStringLiteral("org.freedesktop.login1"))) {
|
||||
- qDebug() << "Logind interface found";
|
||||
- available = true;
|
||||
- serviceName = QStringLiteral("org.freedesktop.login1");
|
||||
- managerPath = QStringLiteral("/org/freedesktop/login1");
|
||||
- managerIfaceName = QStringLiteral("org.freedesktop.login1.Manager");
|
||||
- seatIfaceName = QStringLiteral("org.freedesktop.login1.Seat");
|
||||
- sessionIfaceName = QStringLiteral("org.freedesktop.login1.Session");
|
||||
- userIfaceName = QStringLiteral("org.freedesktop.login1.User");
|
||||
- return;
|
||||
+#ifdef HAVE_SYSTEMD
|
||||
+ // systemd-logind should be running, although because it takes a few moments to restart after
|
||||
+ // systemctl isolate calls, it may not yet be running. Wait a few seconds for it, while blocking everything else.
|
||||
+ int logind_wait_seconds = 50;
|
||||
+ while (logind_wait_seconds--) {
|
||||
+ if (QDBusConnection::systemBus().interface()->isServiceRegistered(QStringLiteral("org.freedesktop.login1"))) {
|
||||
+ qDebug() << "Logind interface found";
|
||||
+ available = true;
|
||||
+ serviceName = QStringLiteral("org.freedesktop.login1");
|
||||
+ managerPath = QStringLiteral("/org/freedesktop/login1");
|
||||
+ managerIfaceName = QStringLiteral("org.freedesktop.login1.Manager");
|
||||
+ seatIfaceName = QStringLiteral("org.freedesktop.login1.Seat");
|
||||
+ sessionIfaceName = QStringLiteral("org.freedesktop.login1.Session");
|
||||
+ userIfaceName = QStringLiteral("org.freedesktop.login1.User");
|
||||
+ return;
|
||||
+ }
|
||||
+ qDebug() << "Sleeping for systemd-logind";
|
||||
+ usleep(100000);
|
||||
}
|
||||
+#endif
|
||||
|
||||
if (QDBusConnection::systemBus().interface()->isServiceRegistered(QStringLiteral("org.freedesktop.ConsoleKit"))) {
|
||||
qDebug() << "Console kit interface found";
|
||||
diff --git a/src/daemon/SeatManager.cpp b/src/daemon/SeatManager.cpp
|
||||
index bd207e6..39d8b85 100644
|
||||
--- a/src/daemon/SeatManager.cpp
|
||||
+++ b/src/daemon/SeatManager.cpp
|
||||
@@ -26,6 +26,9 @@
|
||||
#include <QDBusMessage>
|
||||
#include <QDBusPendingReply>
|
||||
#include <QDBusContext>
|
||||
+#include <QDebug>
|
||||
+#include <QFileInfo>
|
||||
+#include <QTimer>
|
||||
|
||||
#include "LogindDBusTypes.h"
|
||||
|
||||
@@ -115,6 +118,8 @@ namespace SDDM {
|
||||
|
||||
QDBusConnection::systemBus().connect(Logind::serviceName(), Logind::managerPath(), Logind::managerIfaceName(), QStringLiteral("SeatNew"), this, SLOT(logindSeatAdded(QString,QDBusObjectPath)));
|
||||
QDBusConnection::systemBus().connect(Logind::serviceName(), Logind::managerPath(), Logind::managerIfaceName(), QStringLiteral("SeatRemoved"), this, SLOT(logindSeatRemoved(QString,QDBusObjectPath)));
|
||||
+
|
||||
+ QTimer::singleShot(5000, this, &SeatManager::checkSeat);
|
||||
}
|
||||
|
||||
void SeatManager::createSeat(const QString &name) {
|
||||
@@ -152,6 +157,23 @@ namespace SDDM {
|
||||
m_seats.value(name)->createDisplay(Display::defaultDisplayServerType());
|
||||
}
|
||||
|
||||
+ // this is a bit hacky, but linux DRM drivers
|
||||
+ // won't initially be available so there is a race
|
||||
+ // between determing if a efifb/etc graphical object
|
||||
+ // is the only graphics on the machine, or a DRM driver
|
||||
+ // will take over the display. So we will hang out for a few
|
||||
+ // seconds and if none of the seats are declared cangraphical
|
||||
+ // its possible the only graphics on the machine don't have
|
||||
+ // a drm driver.
|
||||
+ void SeatManager::checkSeat(void) {
|
||||
+ if (m_seats.isEmpty()) {
|
||||
+ //if (QFileInfo::exists(QStringLiteral("/dev/fb0"))) {
|
||||
+ qWarning() << "No graphical seats found, attempt to start one on the main console anyway...";
|
||||
+ createSeat(QStringLiteral("seat0"));
|
||||
+ //}
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
void SDDM::SeatManager::logindSeatAdded(const QString& name, const QDBusObjectPath& objectPath)
|
||||
{
|
||||
auto logindSeat = new LogindSeat(name, objectPath);
|
||||
diff --git a/src/daemon/SeatManager.h b/src/daemon/SeatManager.h
|
||||
index b2f9796..aa43047 100644
|
||||
--- a/src/daemon/SeatManager.h
|
||||
+++ b/src/daemon/SeatManager.h
|
||||
@@ -49,6 +49,7 @@ namespace SDDM {
|
||||
private:
|
||||
QHash<QString, Seat *> m_seats; //these will exist only for graphical seats
|
||||
QHash<QString, LogindSeat*> m_systemSeats; //these will exist for all seats
|
||||
+ void checkSeat(void);
|
||||
};
|
||||
}
|
||||
|
||||
--
|
||||
2.39.2
|
||||
|
2
README.scripts
Normal file
2
README.scripts
Normal file
@ -0,0 +1,2 @@
|
||||
This scripts dir contains only samples, but are generally not used directly.
|
||||
In practice, sddm runtime uses items under /etc/sddm by default
|
44
sddm-0.20.0-fedora_config.patch
Normal file
44
sddm-0.20.0-fedora_config.patch
Normal file
@ -0,0 +1,44 @@
|
||||
diff --git a/src/common/Configuration.h b/src/common/Configuration.h
|
||||
index 54bcace..9b8fa22 100644
|
||||
--- a/src/common/Configuration.h
|
||||
+++ b/src/common/Configuration.h
|
||||
@@ -37,9 +37,8 @@ namespace SDDM {
|
||||
enum NumState { NUM_NONE, NUM_SET_ON, NUM_SET_OFF };
|
||||
|
||||
// Name Type Default value Description
|
||||
- // TODO: Change default to x11-user in a future release
|
||||
- Entry(DisplayServer, QString, _S("x11"), _S("Which display server should be used.\n"
|
||||
- "Valid values are: x11, x11-user, wayland. Wayland support is experimental"));
|
||||
+ Entry(DisplayServer, QString, _S("wayland"), _S("Which display server should be used.\n"
|
||||
+ "Valid values are: x11, x11-user, wayland."));
|
||||
Entry(HaltCommand, QString, _S(HALT_COMMAND), _S("Halt command"));
|
||||
Entry(RebootCommand, QString, _S(REBOOT_COMMAND), _S("Reboot command"));
|
||||
Entry(Numlock, NumState, NUM_NONE, _S("Initial NumLock state. Can be on, off or none.\n"
|
||||
@@ -71,9 +70,9 @@ namespace SDDM {
|
||||
Entry(SessionDir, QStringList, {_S("/usr/local/share/xsessions"),
|
||||
_S("/usr/share/xsessions")}, _S("Comma-separated list of directories 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(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(SessionLogFile, QString, _S(".cache/xsession-errors"), _S("Path to the user session log file"));
|
||||
+ Entry(DisplayCommand, QString, _S(SYS_CONFIG_DIR "/sddm/Xsetup"), _S("Path to a script to execute when starting the display server"));
|
||||
+ Entry(DisplayStopCommand, QString, _S(SYS_CONFIG_DIR "/sddm/Xstop"), _S("Path to a script to execute when stopping the display server"));
|
||||
Entry(EnableHiDPI, bool, true, _S("Enable Qt's automatic high-DPI scaling"));
|
||||
);
|
||||
|
||||
@@ -82,12 +81,12 @@ namespace SDDM {
|
||||
Entry(SessionDir, QStringList, {_S("/usr/local/share/wayland-sessions"),
|
||||
_S("/usr/share/wayland-sessions")}, _S("Comma-separated list of directories containing available Wayland sessions"));
|
||||
Entry(SessionCommand, QString, _S(WAYLAND_SESSION_COMMAND), _S("Path to a script to execute when starting the desktop session"));
|
||||
- Entry(SessionLogFile, QString, _S(".local/share/sddm/wayland-session.log"),_S("Path to the user session log file"));
|
||||
+ Entry(SessionLogFile, QString, _S(".cache/wayland-errors"), _S("Path to the user session log file"));
|
||||
Entry(EnableHiDPI, bool, true, _S("Enable Qt's automatic high-DPI scaling"));
|
||||
);
|
||||
|
||||
Section(Users,
|
||||
- Entry(DefaultPath, QString, _S("/usr/local/bin:/usr/bin:/bin"), _S("Default $PATH for logged in users"));
|
||||
+ Entry(DefaultPath, QString, _S("/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin"), _S("Default $PATH for logged in users"));
|
||||
Entry(MinimumUid, int, UID_MIN, _S("Minimum user id for displayed users"));
|
||||
Entry(MaximumUid, int, UID_MAX, _S("Maximum user id for displayed users"));
|
||||
Entry(HideUsers, QStringList, QStringList(), _S("Comma-separated list of users that should not be listed"));
|
67
sddm-0.21.0-qt6greeter.patch
Normal file
67
sddm-0.21.0-qt6greeter.patch
Normal file
@ -0,0 +1,67 @@
|
||||
From 52175648f4e1b415f93b24a3ef970983024659f2 Mon Sep 17 00:00:00 2001
|
||||
From: Neal Gompa <neal@gompa.dev>
|
||||
Date: Wed, 28 Feb 2024 16:47:16 -0500
|
||||
Subject: [PATCH] Default to Qt6 and always use versioned greeters
|
||||
|
||||
Distributors can handle creating an unversioned name if necessary.
|
||||
---
|
||||
src/common/ThemeMetadata.cpp | 4 ++--
|
||||
src/daemon/Greeter.cpp | 3 +--
|
||||
src/greeter/CMakeLists.txt | 9 +--------
|
||||
3 files changed, 4 insertions(+), 12 deletions(-)
|
||||
|
||||
diff --git a/src/common/ThemeMetadata.cpp b/src/common/ThemeMetadata.cpp
|
||||
index 2cb3762..003056a 100644
|
||||
--- a/src/common/ThemeMetadata.cpp
|
||||
+++ b/src/common/ThemeMetadata.cpp
|
||||
@@ -28,7 +28,7 @@ namespace SDDM {
|
||||
QString mainScript { QStringLiteral("Main.qml") };
|
||||
QString configFile;
|
||||
QString translationsDirectory { QStringLiteral(".") };
|
||||
- int qtVersion = 5;
|
||||
+ int qtVersion = 6;
|
||||
};
|
||||
|
||||
ThemeMetadata::ThemeMetadata(const QString &path, QObject *parent) : QObject(parent), d(new ThemeMetadataPrivate()) {
|
||||
@@ -61,6 +61,6 @@ namespace SDDM {
|
||||
d->mainScript = settings.value(QStringLiteral("SddmGreeterTheme/MainScript"), QStringLiteral("Main.qml")).toString();
|
||||
d->configFile = settings.value(QStringLiteral("SddmGreeterTheme/ConfigFile"), QStringLiteral("theme.conf")).toString();
|
||||
d->translationsDirectory = settings.value(QStringLiteral("SddmGreeterTheme/TranslationsDirectory"), QStringLiteral(".")).toString();
|
||||
- d->qtVersion = settings.value(QStringLiteral("SddmGreeterTheme/QtVersion"), 5).toInt();
|
||||
+ d->qtVersion = settings.value(QStringLiteral("SddmGreeterTheme/QtVersion"), 6).toInt();
|
||||
}
|
||||
}
|
||||
diff --git a/src/daemon/Greeter.cpp b/src/daemon/Greeter.cpp
|
||||
index 07fccde..5a956b6 100644
|
||||
--- a/src/daemon/Greeter.cpp
|
||||
+++ b/src/daemon/Greeter.cpp
|
||||
@@ -82,8 +82,7 @@ namespace SDDM {
|
||||
|
||||
QString Greeter::greeterPathForQt(int qtVersion)
|
||||
{
|
||||
- const QString suffix = qtVersion == 5 ? QString() : QStringLiteral("-qt%1").arg(qtVersion);
|
||||
- return QStringLiteral(BIN_INSTALL_DIR "/sddm-greeter%1").arg(suffix);
|
||||
+ return QStringLiteral(BIN_INSTALL_DIR "/sddm-greeter-qt%1").arg(qtVersion);
|
||||
}
|
||||
|
||||
bool Greeter::start() {
|
||||
diff --git a/src/greeter/CMakeLists.txt b/src/greeter/CMakeLists.txt
|
||||
index 72769e4..524368d 100644
|
||||
--- a/src/greeter/CMakeLists.txt
|
||||
+++ b/src/greeter/CMakeLists.txt
|
||||
@@ -1,11 +1,4 @@
|
||||
-if(QT_MAJOR_VERSION EQUAL "5")
|
||||
- # Keep the unversioned name for Qt5. When upgrading SDDM, the old daemon
|
||||
- # might still be running and only know about "sddm-greeter". Keeping the
|
||||
- # previous name around also helps users calling it directly.
|
||||
- set(GREETER_TARGET sddm-greeter)
|
||||
-else()
|
||||
- set(GREETER_TARGET sddm-greeter-qt${QT_MAJOR_VERSION})
|
||||
-endif()
|
||||
+set(GREETER_TARGET sddm-greeter-qt${QT_MAJOR_VERSION})
|
||||
|
||||
message(STATUS "Building greeter for Qt ${QT_MAJOR_VERSION} as ${GREETER_TARGET}")
|
||||
|
||||
--
|
||||
2.43.0
|
||||
|
3
sddm-0.21.0.tar.gz
Normal file
3
sddm-0.21.0.tar.gz
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:f895de2683627e969e4849dbfbbb2b500787481ca5ba0de6d6dfdae5f1549abf
|
||||
size 3557266
|
1018
sddm-PR1876.patch
Normal file
1018
sddm-PR1876.patch
Normal file
File diff suppressed because it is too large
Load Diff
12
sddm-autologin.pam
Normal file
12
sddm-autologin.pam
Normal file
@ -0,0 +1,12 @@
|
||||
#%PAM-1.0
|
||||
auth requisite pam_nologin.so
|
||||
auth required pam_permit.so
|
||||
account substack common-account
|
||||
account include postlogin-account
|
||||
password substack common-password
|
||||
password include postlogin-password
|
||||
session required pam_loginuid.so
|
||||
session optional pam_keyinit.so revoke force
|
||||
session substack common-session
|
||||
session include postlogin-session
|
||||
|
10
sddm-greeter.pam
Normal file
10
sddm-greeter.pam
Normal file
@ -0,0 +1,10 @@
|
||||
#%PAM-1.0
|
||||
# PAM configuration used only for the greeter session
|
||||
auth required pam_permit.so
|
||||
account required pam_permit.so
|
||||
password required pam_deny.so
|
||||
session required pam_loginuid.so
|
||||
session optional pam_keyinit.so revoke
|
||||
# We need pam_systemd, so can't use -nologin here.
|
||||
session substack common-session
|
||||
|
38
sddm-kalpa.changes
Normal file
38
sddm-kalpa.changes
Normal file
@ -0,0 +1,38 @@
|
||||
-------------------------------------------------------------------
|
||||
Thu Oct 31 01:37:21 UTC 2024 - Shawn Dunn <sfalken@opensuse.org>
|
||||
|
||||
- Intial commit as sddm-kalpa
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Mar 21 00:02:00 UTC 2024 - Shawn Dunn <sfalken@opensuse.org>
|
||||
|
||||
- Added Requires: group(sddm)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Mar 20 23:23:14 UTC 2024 - Shawn Dunn <sfalken@opensuse.org>
|
||||
|
||||
- Ported over pam configs from o:F/sddm
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Mar 8 12:45:26 UTC 2024 - Neal Gompa <ngompa@opensuse.org>
|
||||
|
||||
- Update to 0.21.0
|
||||
+ Sync changes from Fedora
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Feb 21 01:33:51 UTC 2024 - Shawn Dunn <sfalken@opensuse.org>
|
||||
|
||||
- Removed:
|
||||
* sddm.sysconfig
|
||||
* sddm-0.18.0-environment_file.patch
|
||||
- Neither are needed for openSUSE
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Feb 16 21:17:01 UTC 2024 - Shawn Dunn <sfalken@opensuse.org>
|
||||
|
||||
- Specfile cleanup for openSUSE
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Sat Jan 27 01:38:33 UTC 2024 - Neal Gompa <ngompa@opensuse.org>
|
||||
|
||||
- Initial package forked from Fedora
|
255
sddm-kalpa.spec
Normal file
255
sddm-kalpa.spec
Normal file
@ -0,0 +1,255 @@
|
||||
#
|
||||
# spec file for package sddm-kalpa
|
||||
#
|
||||
# Copyright (c) 2024 Neal Gompa
|
||||
# Copyright (c) 2024 Shawn W Dunn
|
||||
#
|
||||
# All modifications and additions to the file contributed by third parties
|
||||
# remain the property of their copyright owners, unless otherwise agreed
|
||||
# upon. The license for this file, and modifications and additions to the
|
||||
# file, is the same license as for the pristine package itself (unless the
|
||||
# license for the pristine package is not an Open Source License, in which
|
||||
# case the license is the MIT License). An "Open Source License" is a
|
||||
# license that conforms to the Open Source Definition (Version 1.9)
|
||||
# published by the Open Source Initiative.
|
||||
|
||||
# Please submit bugfixes or comments via https://bugs.opensuse.org/
|
||||
#
|
||||
|
||||
# Disable X11
|
||||
%bcond x11 0
|
||||
|
||||
%define _name sddm
|
||||
|
||||
Name: sddm-kalpa
|
||||
Version: 0.21.0
|
||||
Release: 0
|
||||
Summary: QML based desktop and login manager - Wayland Only
|
||||
License: GPL-2.0-or-later
|
||||
URL: https://github.com/sddm/sddm
|
||||
Source0: %{url}/archive/v%{version}/%{_name}-%{version}.tar.gz
|
||||
Source1: sddm.pam
|
||||
Source2: sddm-autologin.pam
|
||||
Source3: sddm.conf
|
||||
Source4: README.scripts
|
||||
Source5: sddm-x11.conf
|
||||
# sysusers config file. note these are shipped in the upstream tarball, but we
|
||||
# cannot use the fles from the tarball for %%pre scriptlet generation, so we
|
||||
# duplicate them as source files for that purpose; this is an ugly hack that
|
||||
# should be removed if it becomes possible.
|
||||
# see: https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/thread/TFDMAU7KLMSQTKPJELHSM6PFVXIZ56GK/
|
||||
Source6: sddm-systemd-sysusers.conf
|
||||
Source7: sddm-greeter.pam
|
||||
|
||||
Provides: sddm = %{version}
|
||||
Conflicts: sddm-qt6
|
||||
|
||||
# PATCH-FIX-UPSTREAM sddm-PR1876.patch https://github.com/sddm/sddm/pull/1876
|
||||
Patch1: sddm-PR1876.patch
|
||||
# PATCH-FIX-UPSTREAM 0001-Delay-for-logind-and-fallback-to-seat0.patch
|
||||
# https://github.com/sddm/sddm/pull/1494
|
||||
Patch2: 0001-Delay-for-logind-and-fallback-to-seat0.patch
|
||||
# PATCH-FIX-OPENSUSE sddm-0.20.0-fedora_config.patch Stolen from Fedora
|
||||
Patch3: sddm-0.20.0-fedora_config.patch
|
||||
# PATCH-FIX-OPENSUSE sddm-0.21.0-qt6greeter.patch
|
||||
Patch4: sddm-0.21.0-qt6greeter.patch
|
||||
|
||||
BuildRequires: cmake >= 3.5.0
|
||||
BuildRequires: docutils
|
||||
BuildRequires: shadow
|
||||
BuildRequires: systemd-rpm-macros
|
||||
BuildRequires: sysuser-tools
|
||||
BuildRequires: fdupes
|
||||
|
||||
BuildRequires: cmake(Qt6Core)
|
||||
BuildRequires: cmake(Qt6DBus)
|
||||
BuildRequires: cmake(Qt6Gui)
|
||||
BuildRequires: cmake(Qt6LinguistTools)
|
||||
BuildRequires: cmake(Qt6Qml)
|
||||
BuildRequires: cmake(Qt6Quick)
|
||||
BuildRequires: cmake(Qt6QuickTest)
|
||||
BuildRequires: cmake(Qt6Test)
|
||||
|
||||
BuildRequires: pkgconfig(libsystemd)
|
||||
BuildRequires: pkgconfig(pam)
|
||||
BuildRequires: pkgconfig(systemd)
|
||||
BuildRequires: pkgconfig(xcb)
|
||||
BuildRequires: pkgconfig(xcb-xkb)
|
||||
|
||||
Requires: systemd
|
||||
Requires: group(sddm)
|
||||
Requires: sddm-greeter-displayserver
|
||||
%if %{with x11}
|
||||
Requires: xinit
|
||||
%endif
|
||||
%{?systemd_requires}
|
||||
%{?sysusers_requires}
|
||||
|
||||
%description
|
||||
sddm-kalpa provides a stripped down wayland only version of sddm
|
||||
|
||||
SDDM is a modern graphical display manager aiming to be fast, simple and
|
||||
beautiful. It uses modern technologies like QtQuick, which in turn gives the
|
||||
designer the ability to create smooth, animated user interfaces.
|
||||
|
||||
%lang_package
|
||||
|
||||
%package wayland-generic
|
||||
Summary: Generic Wayland SDDM greeter configuration
|
||||
Provides: sddm-greeter-displayserver
|
||||
Conflicts: sddm-greeter-displayserver
|
||||
Requires: weston
|
||||
Requires: %{name} = %{version}
|
||||
BuildArch: noarch
|
||||
|
||||
%description wayland-generic
|
||||
This package contains configuration and dependencies for SDDM to use Weston
|
||||
for the greeter display server.
|
||||
|
||||
This is the generic default Wayland configuration provided by SDDM.
|
||||
|
||||
%if %{with x11}
|
||||
%package x11
|
||||
Summary: X11 SDDM greeter configuration
|
||||
Provides: sddm-greeter-displayserver
|
||||
Conflicts: sddm-greeter-displayserver
|
||||
Requires: xorg-x11-server
|
||||
Requires: %{name} = %{version}
|
||||
Recommends: libQt6VirtualKeyboard6
|
||||
BuildArch: noarch
|
||||
|
||||
%description x11
|
||||
This package contains configuration and dependencies for SDDM to use X11 for
|
||||
the greeter display server.
|
||||
%endif
|
||||
|
||||
%package themes
|
||||
Summary: SDDM Themes
|
||||
# for upgrade path
|
||||
Obsoletes: sddm < 0.2.0
|
||||
Requires: %{name} = %{version}
|
||||
BuildArch: noarch
|
||||
|
||||
%description themes
|
||||
A collection of sddm themes, including: elarun, maldives, maya
|
||||
|
||||
%prep
|
||||
%autosetup -p1 -n %{_name}-%{version}
|
||||
|
||||
%build
|
||||
LOGIN_DEFS_PATH="%{_sysconfdir}/login.defs"
|
||||
[ -e "$LOGIN_DEFS_PATH" ] || LOGIN_DEFS_PATH="%{_distconfdir}/login.defs"
|
||||
|
||||
%cmake -DBUILD_WITH_QT6:BOOL=ON \
|
||||
-DBUILD_MAN_PAGES:BOOL=ON \
|
||||
-DCMAKE_BUILD_TYPE:STRING="Release" \
|
||||
-DCMAKE_INSTALL_SYSCONFDIR=%{_distconfdir} \
|
||||
-DENABLE_JOURNALD:BOOL=ON \
|
||||
-DPID_FILE="/run/sddm.pid" \
|
||||
-DLOGIN_DEFS_PATH:PATH="${LOGIN_DEFS_PATH}" \
|
||||
-DSESSION_COMMAND:PATH=/etc/X11/xdm/Xsession \
|
||||
-DWAYLAND_SESSION_COMMAND:PATH=/etc/sddm/wayland-session
|
||||
|
||||
%cmake_build
|
||||
|
||||
%install
|
||||
%cmake_install
|
||||
|
||||
mkdir -p %{buildroot}%{_distconfdir}/sddm.conf.d
|
||||
mkdir -p %{buildroot}%{_prefix}/lib/sddm/sddm.conf.d
|
||||
mkdir -p %{buildroot}%{_distconfdir}/pam.d
|
||||
%dnl mv %{buildroot}%{_sysconfdir}/pam.d/* %{buildroot}%{_distconfdir}/pam.d
|
||||
install -Dpm 644 %{SOURCE1} %{buildroot}%{_distconfdir}/pam.d/sddm
|
||||
install -Dpm 644 %{SOURCE2} %{buildroot}%{_distconfdir}/pam.d/sddm-autologin
|
||||
install -Dpm 644 %{SOURCE7} %{buildroot}%{_distconfdir}/pam.d/sddm-greeter
|
||||
install -Dpm 644 %{SOURCE3} %{buildroot}%{_distconfdir}/sddm.conf
|
||||
install -Dpm 644 %{SOURCE4} %{buildroot}%{_datadir}/sddm/scripts/README.scripts
|
||||
%if %{with x11}
|
||||
install -Dpm 644 %{SOURCE5} %{buildroot}%{_prefix}/lib/sddm/sddm.conf.d/x11.conf
|
||||
%endif
|
||||
mkdir -p %{buildroot}/run/sddm
|
||||
mkdir -p %{buildroot}%{_localstatedir}/lib/sddm
|
||||
mkdir -p %{buildroot}%{_distconfdir}/sddm/
|
||||
cp -a %{buildroot}%{_datadir}/sddm/scripts/* %{buildroot}%{_distconfdir}/sddm/
|
||||
# We're using /etc/X11/xinit/Xsession (by default) instead
|
||||
rm -fv %{buildroot}%{_sysconfdir}/sddm/Xsession
|
||||
|
||||
# De-conflict the dbus file
|
||||
mv %{buildroot}%{_datadir}/dbus-1/system.d/org.freedesktop.DisplayManager.conf \
|
||||
%{buildroot}%{_datadir}/dbus-1/system.d/org.freedesktop.DisplayManager-sddm.conf
|
||||
|
||||
%if 0%{?suse_version}
|
||||
# Provide unversioned greeter
|
||||
ln -sr %{buildroot}%{_bindir}/sddm-greeter-qt6 %{buildroot}%{_bindir}/sddm-greeter
|
||||
%endif
|
||||
|
||||
%fdupes -s %{buildroot}%{_datadir}
|
||||
|
||||
%find_lang %{name} --with-qt --all-name
|
||||
|
||||
%pre
|
||||
%sysusers_create_package %{name} %{SOURCE6}
|
||||
%service_add_pre sddm.service
|
||||
|
||||
%post
|
||||
%service_add_post sddm.service
|
||||
|
||||
%preun
|
||||
%service_del_preun sddm.service
|
||||
|
||||
%postun
|
||||
%service_del_postun sddm.service
|
||||
|
||||
%check
|
||||
%ctest
|
||||
|
||||
%files
|
||||
%license LICENSE
|
||||
%doc README.md CONTRIBUTORS
|
||||
%dir %{_distconfdir}/pam.d
|
||||
%dir %{_distconfdir}/sddm/
|
||||
%dir %{_distconfdir}/sddm.conf.d
|
||||
%dir %{_prefix}/lib/sddm
|
||||
%dir %{_prefix}/lib/sddm/sddm.conf.d
|
||||
%dir %{_datadir}/sddm
|
||||
%dir %{_datadir}/sddm/themes
|
||||
%{_distconfdir}/sddm/*
|
||||
%{_distconfdir}/sddm.conf
|
||||
%{_distconfdir}/pam.d/sddm
|
||||
%{_distconfdir}/pam.d/sddm-autologin
|
||||
%{_distconfdir}/pam.d/sddm-greeter
|
||||
%{_datadir}/dbus-1/system.d/org.freedesktop.DisplayManager-sddm.conf
|
||||
%{_bindir}/sddm
|
||||
%{_bindir}/sddm-greeter*
|
||||
%{_libexecdir}/sddm-helper
|
||||
%{_libexecdir}/sddm-helper-start-wayland
|
||||
%{_libexecdir}/sddm-helper-start-x11user
|
||||
%{_tmpfilesdir}/sddm.conf
|
||||
%{_sysusersdir}/sddm.conf
|
||||
%ghost %attr(0711, root, sddm) %dir /run/sddm
|
||||
%attr(1770, sddm, sddm) %dir %{_localstatedir}/lib/sddm
|
||||
%{_unitdir}/sddm.service
|
||||
%{_qt6_archdatadir}/qml/SddmComponents/
|
||||
%{_datadir}/sddm/faces/
|
||||
%{_datadir}/sddm/flags/
|
||||
%{_datadir}/sddm/scripts/
|
||||
%{_mandir}/man?/sddm*
|
||||
|
||||
%files wayland-generic
|
||||
# No files since default configuration
|
||||
|
||||
%if %{with x11}
|
||||
%files x11
|
||||
%{_prefix}/lib/sddm/sddm.conf.d/x11.conf
|
||||
%endif
|
||||
|
||||
%files themes
|
||||
%{_datadir}/sddm/themes/elarun/
|
||||
%{_datadir}/sddm/themes/maldives/
|
||||
%{_datadir}/sddm/themes/maya/
|
||||
|
||||
%files lang -f %{name}.lang
|
||||
%dir %{_datadir}/sddm/translations-qt6
|
||||
|
||||
%changelog
|
||||
|
2
sddm-systemd-sysusers.conf
Normal file
2
sddm-systemd-sysusers.conf
Normal file
@ -0,0 +1,2 @@
|
||||
#Type Name ID GECOS Home directory Shell
|
||||
u sddm - "SDDM Greeter Account" /var/lib/sddm -
|
2
sddm-x11.conf
Normal file
2
sddm-x11.conf
Normal file
@ -0,0 +1,2 @@
|
||||
[General]
|
||||
DisplayServer=x11
|
122
sddm.conf
Normal file
122
sddm.conf
Normal file
@ -0,0 +1,122 @@
|
||||
[Autologin]
|
||||
# Whether sddm should automatically log back into sessions when they exit
|
||||
#Relogin=false
|
||||
|
||||
# Name of session file for autologin session
|
||||
#Session=
|
||||
|
||||
# Username for autologin session
|
||||
#User=
|
||||
|
||||
|
||||
[General]
|
||||
# Enable Qt's automatic high-DPI scaling
|
||||
#EnableHiDPI=false
|
||||
|
||||
# Halt command
|
||||
#HaltCommand=/usr/bin/systemctl poweroff
|
||||
|
||||
# Initial NumLock state. Can be on, off or none.
|
||||
# If property is set to none, numlock won't be changed
|
||||
# NOTE: Currently ignored if autologin is enabled.
|
||||
#Numlock=none
|
||||
|
||||
# Reboot command
|
||||
#RebootCommand=/usr/bin/systemctl reboot
|
||||
|
||||
# Control x11/wayland startup
|
||||
# DisplayServer=wayland
|
||||
|
||||
[Theme]
|
||||
# Current theme name
|
||||
#Current=
|
||||
|
||||
# Cursor theme used in the greeter
|
||||
#CursorTheme=
|
||||
|
||||
# Number of users to use as threshold
|
||||
# above which avatars are disabled
|
||||
# unless explicitly enabled with EnableAvatars
|
||||
#DisableAvatarsThreshold=7
|
||||
|
||||
# Enable display of custom user avatars
|
||||
#EnableAvatars=true
|
||||
|
||||
# Global directory for user avatars
|
||||
# The files should be named <username>.face.icon
|
||||
#FacesDir=/usr/share/sddm/faces
|
||||
|
||||
# Theme directory path
|
||||
#ThemeDir=/usr/share/sddm/themes
|
||||
|
||||
|
||||
[Users]
|
||||
# Default $PATH for logged in users
|
||||
#DefaultPath=/usr/local/bin:/usr/bin:/bin
|
||||
|
||||
# Comma-separated list of shells.
|
||||
# Users with these shells as their default won't be listed
|
||||
#HideShells=
|
||||
|
||||
# Comma-separated list of users that should not be listed
|
||||
#HideUsers=
|
||||
|
||||
# Maximum user id for displayed users
|
||||
#MaximumUid=60000
|
||||
|
||||
# Minimum user id for displayed users
|
||||
#MinimumUid=1000
|
||||
|
||||
# Remember the session of the last successfully logged in user
|
||||
#RememberLastSession=true
|
||||
|
||||
# Remember the last successfully logged in user
|
||||
#RememberLastUser=true
|
||||
|
||||
|
||||
[Wayland]
|
||||
# Path to a script to execute when starting the desktop session
|
||||
#SessionCommand=/etc/sddm/wayland-session
|
||||
|
||||
# Directory containing available Wayland sessions
|
||||
#SessionDir=/usr/share/wayland-sessions
|
||||
|
||||
# Path to the user session log file
|
||||
#SessionLogFile=.cache/wayland-errors
|
||||
|
||||
|
||||
[X11]
|
||||
# Path to a script to execute when starting the display server
|
||||
#DisplayCommand=/etc/sddm/Xsetup
|
||||
|
||||
# Path to a script to execute when stopping the display server
|
||||
#DisplayStopCommand=/etc/sddm/Xstop
|
||||
|
||||
# The lowest virtual terminal number that will be used.
|
||||
#MinimumVT=1
|
||||
|
||||
# Arguments passed to the X server invocation
|
||||
#ServerArguments=-nolisten tcp
|
||||
|
||||
# Path to X server binary
|
||||
#ServerPath=/usr/bin/X
|
||||
|
||||
# Path to a script to execute when starting the desktop session
|
||||
#SessionCommand=/etc/X11/xinit/Xsession
|
||||
|
||||
# Directory containing available X sessions
|
||||
#SessionDir=/usr/share/xsessions
|
||||
|
||||
# Path to the user session log file
|
||||
#SessionLogFile=.cache/xsession-errors
|
||||
|
||||
# Path to the Xauthority file
|
||||
#UserAuthFile=.Xauthority
|
||||
|
||||
# Path to xauth binary
|
||||
#XauthPath=/usr/bin/xauth
|
||||
|
||||
# Path to Xephyr binary
|
||||
#XephyrPath=/usr/bin/Xephyr
|
||||
|
||||
|
12
sddm.pam
Normal file
12
sddm.pam
Normal file
@ -0,0 +1,12 @@
|
||||
#%PAM-1.0
|
||||
auth requisite pam_nologin.so
|
||||
auth substack common-auth
|
||||
account substack common-account
|
||||
account include postlogin-account
|
||||
password substack common-password
|
||||
password include postlogin-password
|
||||
session required pam_loginuid.so
|
||||
session optional pam_keyinit.so revoke force
|
||||
session substack common-session
|
||||
session include postlogin-session
|
||||
|
Loading…
Reference in New Issue
Block a user