mirror of
https://github.com/terrapkg/packages.git
synced 2026-05-31 17:11:56 +00:00
Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| b85494dcc0 |
@@ -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
|
||||
|
||||
@@ -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
|
||||
@@ -0,0 +1,5 @@
|
||||
project pkg {
|
||||
rpm {
|
||||
spec = "terra-sddm.spec"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
diff -up sddm-0.18.0/services/sddm.service.in.env sddm-0.18.0/services/sddm.service.in
|
||||
--- sddm-0.18.0/services/sddm.service.in.env 2018-07-18 05:31:40.000000000 -0500
|
||||
+++ sddm-0.18.0/services/sddm.service.in 2019-03-14 08:23:22.095498405 -0500
|
||||
@@ -7,6 +7,7 @@ After=systemd-user-sessions.service gett
|
||||
[Service]
|
||||
ExecStart=@CMAKE_INSTALL_FULL_BINDIR@/sddm
|
||||
Restart=always
|
||||
+EnvironmentFile=-/etc/sysconfig/sddm
|
||||
|
||||
[Install]
|
||||
Alias=display-manager.service
|
||||
@@ -0,0 +1,53 @@
|
||||
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"
|
||||
@@ -51,7 +50,7 @@ namespace SDDM {
|
||||
// Name Entries (but it's a regular class again)
|
||||
Section(Theme,
|
||||
Entry(ThemeDir, QString, _S(DATA_INSTALL_DIR "/themes"), _S("Theme directory path"));
|
||||
- Entry(Current, QString, _S(""), _S("Current theme name"));
|
||||
+ Entry(Current, QString, _S("01-breeze-fedora"), _S("Current theme name"));
|
||||
Entry(FacesDir, QString, _S(DATA_INSTALL_DIR "/faces"), _S("Global directory for user avatars\n"
|
||||
"The files should be named <username>.face.icon"));
|
||||
Entry(CursorTheme, QString, QString(), _S("Cursor theme used in the greeter"));
|
||||
@@ -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"));
|
||||
@@ -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
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,20 @@
|
||||
#%PAM-1.0
|
||||
auth required pam_env.so
|
||||
auth required pam_permit.so
|
||||
auth include postlogin
|
||||
|
||||
account required pam_nologin.so
|
||||
account include system-auth
|
||||
|
||||
password include system-auth
|
||||
|
||||
session required pam_selinux.so close
|
||||
session required pam_loginuid.so
|
||||
session required pam_selinux.so open
|
||||
session optional pam_keyinit.so force revoke
|
||||
session required pam_namespace.so
|
||||
session include system-auth
|
||||
-session optional pam_gnome_keyring.so auto_start
|
||||
-session optional pam_kwallet5.so auto_start
|
||||
-session optional pam_kwallet.so auto_start
|
||||
session include postlogin
|
||||
@@ -0,0 +1,17 @@
|
||||
#%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
|
||||
@@ -0,0 +1,12 @@
|
||||
diff --git a/services/sddm-tmpfiles.conf.in b/services/sddm-tmpfiles.conf.in
|
||||
index fb45553..6acfb6c 100644
|
||||
--- a/services/sddm-tmpfiles.conf.in
|
||||
+++ b/services/sddm-tmpfiles.conf.in
|
||||
@@ -1,5 +1,7 @@
|
||||
# Home dir of the sddm user, also contains state.conf
|
||||
d ${STATE_DIR} 0750 sddm sddm
|
||||
+# Workaround for https://pagure.io/fedora-kde/SIG/issue/87
|
||||
+Z ${STATE_DIR} - sddm sddm
|
||||
# This contains X11 auth files passed to Xorg and the greeter
|
||||
d ${RUNTIME_DIR} 0711 root root
|
||||
# Sockets for IPC
|
||||
@@ -0,0 +1,2 @@
|
||||
#Type Name ID GECOS Home directory Shell
|
||||
u sddm - "SDDM Greeter Account" /var/lib/sddm -
|
||||
@@ -0,0 +1,2 @@
|
||||
[General]
|
||||
DisplayServer=x11
|
||||
@@ -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=01-breeze-fedora
|
||||
|
||||
# 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
|
||||
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
auth [success=done ignore=ignore default=bad] pam_selinux_permit.so
|
||||
auth substack password-auth
|
||||
-auth optional pam_gnome_keyring.so
|
||||
-auth optional pam_kwallet5.so
|
||||
-auth optional pam_kwallet.so
|
||||
auth include postlogin
|
||||
|
||||
account required pam_nologin.so
|
||||
account include password-auth
|
||||
|
||||
password include password-auth
|
||||
|
||||
session required pam_selinux.so close
|
||||
session required pam_loginuid.so
|
||||
-session optional pam_ck_connector.so
|
||||
session required pam_selinux.so open
|
||||
session optional pam_keyinit.so force revoke
|
||||
session required pam_namespace.so
|
||||
session include password-auth
|
||||
-session optional pam_gnome_keyring.so auto_start
|
||||
-session optional pam_kwallet5.so auto_start
|
||||
-session optional pam_kwallet.so auto_start
|
||||
session include postlogin
|
||||
@@ -0,0 +1,5 @@
|
||||
# workaround https://bugzilla.redhat.com/1686675
|
||||
# see also https://bugreports.qt.io/browse/QTBUG-58508
|
||||
QML_DISABLE_DISK_CACHE=1
|
||||
# enable qDebug messages for debug build
|
||||
# QT_LOGGING_RULES="*.debug=true"
|
||||
@@ -0,0 +1,293 @@
|
||||
# Disable X11 for RHEL 10+
|
||||
%bcond x11 %[%{undefined rhel} || 0%{?rhel} < 10]
|
||||
|
||||
Name: terra-sddm
|
||||
Version: 0.21.0
|
||||
Release: 5%{?dist}
|
||||
License: GPL-2.0-or-later
|
||||
Summary: QML based desktop and login manager
|
||||
Provides: sddm = %version-%release
|
||||
|
||||
URL: https://github.com/sddm/sddm
|
||||
Source0: %{url}/archive/v%{version}/sddm-%{version}.tar.gz
|
||||
|
||||
## upstream patches
|
||||
# Port all themes to Qt 6
|
||||
# Submitted: https://github.com/sddm/sddm/pull/1876
|
||||
Patch1: sddm-PR1876.patch
|
||||
|
||||
## upstreamable patches
|
||||
# Fix race with logind restart, and start seat0 if !CanGraphical on timer
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=2011991
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=2016310
|
||||
# Submmited: https://github.com/sddm/sddm/pull/1494
|
||||
Patch11: 0001-Delay-for-logind-and-fallback-to-seat0.patch
|
||||
|
||||
## downstream patches
|
||||
Patch101: sddm-0.20.0-fedora_config.patch
|
||||
|
||||
# sddm.service: +EnvironmentFile=-/etc/sysconfig/sddm
|
||||
Patch103: sddm-0.18.0-environment_file.patch
|
||||
|
||||
# Workaround for https://pagure.io/fedora-kde/SIG/issue/87
|
||||
Patch104: sddm-rpmostree-tmpfiles-hack.patch
|
||||
|
||||
# Workaround lack of Qt 5 greeter build
|
||||
Patch105: sddm-0.21.0-qt6greeter.patch
|
||||
|
||||
# https://github.com/sddm/sddm/pull/1779
|
||||
Patch106: https://github.com/sddm/sddm/pull/1779.patch
|
||||
|
||||
# Shamelessly stolen from gdm
|
||||
Source10: sddm.pam
|
||||
# Shamelessly stolen from gdm
|
||||
Source11: sddm-autologin.pam
|
||||
# Previously included in sddm sources
|
||||
Source12: sddm-greeter.pam
|
||||
# sample sddm.conf generated with sddm --example-config, and entries commented-out
|
||||
Source13: sddm.conf
|
||||
# README.scripts
|
||||
Source14: README.scripts
|
||||
# sysconfig snippet
|
||||
Source15: sddm.sysconfig
|
||||
# sddm x11 override config
|
||||
Source16: sddm-x11.conf
|
||||
# sysusers config file. note these are shipped in the upstream tarball
|
||||
# but we cannot use the files 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/
|
||||
Source17: sddm-systemd-sysusers.conf
|
||||
|
||||
|
||||
Provides: service(graphical-login) = sddm
|
||||
|
||||
BuildRequires: cmake >= 2.8.8
|
||||
BuildRequires: extra-cmake-modules
|
||||
BuildRequires: pam-devel
|
||||
BuildRequires: pkgconfig(libsystemd)
|
||||
BuildRequires: pkgconfig(systemd)
|
||||
BuildRequires: pkgconfig(xcb)
|
||||
BuildRequires: pkgconfig(xcb-xkb)
|
||||
# sometimes python-docutils, sometimes python2-docutils, sometimes python3-docutils.
|
||||
# use path then for sanity
|
||||
BuildRequires: /usr/bin/rst2man
|
||||
BuildRequires: cmake(Qt6Core)
|
||||
BuildRequires: cmake(Qt6DBus)
|
||||
BuildRequires: cmake(Qt6Gui)
|
||||
BuildRequires: cmake(Qt6Qml)
|
||||
BuildRequires: cmake(Qt6Quick)
|
||||
BuildRequires: cmake(Qt6LinguistTools)
|
||||
BuildRequires: cmake(Qt6Test)
|
||||
BuildRequires: cmake(Qt6QuickTest)
|
||||
# verify presence to pull defaults from /etc/login.defs
|
||||
BuildRequires: shadow-utils
|
||||
BuildRequires: systemd
|
||||
BuildRequires: systemd-rpm-macros
|
||||
|
||||
Obsoletes: kde-settings-sddm < 20-5
|
||||
|
||||
%if 0%{?fedora}
|
||||
# for /usr/share/backgrounds/default.png
|
||||
BuildRequires: desktop-backgrounds-compat
|
||||
BuildRequires: GraphicsMagick
|
||||
Requires: desktop-backgrounds-compat
|
||||
# for /usr/share/pixmaps/system-logo-white.png
|
||||
Requires: system-logos
|
||||
%endif
|
||||
Requires: systemd
|
||||
%if %{with x11}
|
||||
Requires: xorg-x11-xinit
|
||||
%endif
|
||||
%{?systemd_requires}
|
||||
|
||||
Requires(pre): shadow-utils
|
||||
|
||||
# Virtual dependency for sddm greeter setup
|
||||
Requires: sddm-greeter-displayserver
|
||||
Suggests: sddm-wayland-generic
|
||||
|
||||
%description
|
||||
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.
|
||||
|
||||
%package wayland-generic
|
||||
Summary: Generic Wayland SDDM greeter configuration
|
||||
Provides: sddm-greeter-displayserver
|
||||
Conflicts: sddm-greeter-displayserver
|
||||
Requires: weston
|
||||
Requires: %{name} = %{version}-%{release}
|
||||
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
|
||||
# This will eventually go away...
|
||||
Provides: deprecated()
|
||||
Requires: xorg-x11-server-Xorg
|
||||
Requires: %{name} = %{version}-%{release}
|
||||
Recommends: qt6-qtvirtualkeyboard
|
||||
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-0.12
|
||||
Requires: %{name} = %{version}-%{release}
|
||||
BuildArch: noarch
|
||||
%description themes
|
||||
A collection of sddm themes, including: elarun, maldives, maya
|
||||
|
||||
|
||||
%prep
|
||||
%autosetup -p1 %{?commitdate:-n sddm-%{commit}} -n sddm-%version
|
||||
|
||||
%if 0%{?fedora}
|
||||
#FIXME/TODO: use version on filesystem instead of using a bundled copy
|
||||
cp -v /usr/share/backgrounds/default.png \
|
||||
src/greeter/theme/background.png
|
||||
ls -sh src/greeter/theme/background.png
|
||||
gm mogrify -resize 1920x1200 src/greeter/theme/background.png
|
||||
ls -sh src/greeter/theme/background.png
|
||||
%endif
|
||||
|
||||
|
||||
%build
|
||||
%cmake \
|
||||
-DBUILD_WITH_QT6:BOOL=ON \
|
||||
-DBUILD_MAN_PAGES:BOOL=ON \
|
||||
-DCMAKE_BUILD_TYPE:STRING="Release" \
|
||||
-DENABLE_JOURNALD:BOOL=ON \
|
||||
-DSESSION_COMMAND:PATH=/etc/X11/xinit/Xsession \
|
||||
-DWAYLAND_SESSION_COMMAND:PATH=/etc/sddm/wayland-session
|
||||
|
||||
%cmake_build
|
||||
|
||||
|
||||
%install
|
||||
%cmake_install
|
||||
|
||||
mkdir -p %{buildroot}%{_sysconfdir}/sddm.conf.d
|
||||
mkdir -p %{buildroot}%{_prefix}/lib/sddm/sddm.conf.d
|
||||
install -Dpm 644 %{SOURCE10} %{buildroot}%{_sysconfdir}/pam.d/sddm
|
||||
install -Dpm 644 %{SOURCE11} %{buildroot}%{_sysconfdir}/pam.d/sddm-autologin
|
||||
install -Dpm 644 %{SOURCE12} %{buildroot}%{_sysconfdir}/pam.d/sddm-greeter
|
||||
install -Dpm 644 %{SOURCE13} %{buildroot}%{_sysconfdir}/sddm.conf
|
||||
install -Dpm 644 %{SOURCE14} %{buildroot}%{_datadir}/sddm/scripts/README.scripts
|
||||
install -Dpm 644 %{SOURCE15} %{buildroot}%{_sysconfdir}/sysconfig/sddm
|
||||
%if %{with x11}
|
||||
install -Dpm 644 %{SOURCE16} %{buildroot}%{_prefix}/lib/sddm/sddm.conf.d/x11.conf
|
||||
%endif
|
||||
mkdir -p %{buildroot}/run/sddm
|
||||
mkdir -p %{buildroot}%{_localstatedir}/lib/sddm
|
||||
mkdir -p %{buildroot}%{_sysconfdir}/sddm/
|
||||
cp -a %{buildroot}%{_datadir}/sddm/scripts/* \
|
||||
%{buildroot}%{_sysconfdir}/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%{?fedora} && 0%{?fedora} < 43
|
||||
# Provide unversioned greeter until F40 is EOL
|
||||
ln -sr %{buildroot}%{_bindir}/sddm-greeter-qt6 %{buildroot}%{_bindir}/sddm-greeter
|
||||
%endif
|
||||
|
||||
|
||||
%pre
|
||||
%sysusers_create_compat %{SOURCE17}
|
||||
|
||||
%post
|
||||
%systemd_post sddm.service
|
||||
# handle incompatible configuration changes
|
||||
(grep \
|
||||
-e '^Current=fedora$' \
|
||||
-e '^\[XDisplay\]$' \
|
||||
-e '^\[WaylandDisplay\]$' \
|
||||
%{_sysconfdir}/sddm.conf > /dev/null && \
|
||||
sed -i.rpmsave \
|
||||
-e 's|^Current=fedora$|#Current=01-breeze-fedora|' \
|
||||
-e 's|^\[XDisplay\]$|\[X11\]|' \
|
||||
-e 's|^\[WaylandDisplay\]$|\[Wayland\]|' \
|
||||
%{_sysconfdir}/sddm.conf
|
||||
) ||:
|
||||
|
||||
|
||||
%preun
|
||||
%systemd_preun sddm.service
|
||||
|
||||
|
||||
%postun
|
||||
%systemd_postun sddm.service
|
||||
|
||||
|
||||
%files
|
||||
%license LICENSE
|
||||
%doc README.md CONTRIBUTORS
|
||||
%dir %{_sysconfdir}/sddm/
|
||||
%dir %{_sysconfdir}/sddm.conf.d
|
||||
%dir %{_prefix}/lib/sddm/sddm.conf.d
|
||||
%config(noreplace) %{_sysconfdir}/sddm/*
|
||||
%config(noreplace) %{_sysconfdir}/sddm.conf
|
||||
%config(noreplace) %{_sysconfdir}/sysconfig/sddm
|
||||
%config(noreplace) %{_sysconfdir}/pam.d/sddm*
|
||||
%{_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
|
||||
%attr(0711, root, sddm) %dir /run/sddm
|
||||
%attr(1770, sddm, sddm) %dir %{_localstatedir}/lib/sddm
|
||||
%{_unitdir}/sddm.service
|
||||
%{_qt6_archdatadir}/qml/SddmComponents/
|
||||
%dir %{_datadir}/sddm
|
||||
%{_datadir}/sddm/faces/
|
||||
%{_datadir}/sddm/flags/
|
||||
%{_datadir}/sddm/scripts/
|
||||
%dir %{_datadir}/sddm/themes/
|
||||
# %%lang'ify? they're small, probably not worth it -- rex
|
||||
%{_datadir}/sddm/translations*/
|
||||
%{_mandir}/man1/sddm.1*
|
||||
%{_mandir}/man1/sddm-greeter.1*
|
||||
%{_mandir}/man5/sddm.conf.5*
|
||||
%{_mandir}/man5/sddm-state.conf.5*
|
||||
|
||||
|
||||
%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/
|
||||
|
||||
|
||||
%changelog
|
||||
%autochangelog
|
||||
@@ -0,0 +1 @@
|
||||
rpm.version(gh("sddm/sddm"));
|
||||
Reference in New Issue
Block a user