diff --git a/.gitignore b/.gitignore index 1e3e34e..b522409 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ /7a008602f5f0a4ed8586ce24012983458a687d4e.tar.gz /db1d7381754a01a69b0f4c579c0267d80183c066.tar.gz /f49c2c79b76078169f22cb0f85973cebc70333de.tar.gz +/6a28c29b2914a24f56fe9a7cff82550738672dfb.tar.gz diff --git a/0001-Initialize-sigactions-in-signal-handlers.patch b/0001-Initialize-sigactions-in-signal-handlers.patch deleted file mode 100644 index 19ac6e1..0000000 --- a/0001-Initialize-sigactions-in-signal-handlers.patch +++ /dev/null @@ -1,80 +0,0 @@ -From 235a2d11dc6982b3a94c45dd57ebafb86ca76734 Mon Sep 17 00:00:00 2001 -From: Martin Briza -Date: Fri, 27 Jun 2014 14:11:26 +0200 -Subject: [PATCH] Initialize sigactions in signal handlers - ---- - src/daemon/SignalHandler.cpp | 21 ++++++++++----------- - 1 file changed, 10 insertions(+), 11 deletions(-) - -diff --git a/src/daemon/SignalHandler.cpp b/src/daemon/SignalHandler.cpp -index 3cc47c7..5c53660 100644 ---- a/src/daemon/SignalHandler.cpp -+++ b/src/daemon/SignalHandler.cpp -@@ -60,31 +60,30 @@ namespace SDDM { - } - - void SignalHandler::initialize() { -- struct sigaction sighup; -+ struct sigaction sighup = { }; - sighup.sa_handler = SignalHandler::hupSignalHandler; - sigemptyset(&sighup.sa_mask); -- sighup.sa_flags = 0; -- sighup.sa_flags |= SA_RESTART; -+ sighup.sa_flags = SA_RESTART; - - if (sigaction(SIGHUP, &sighup, 0) > 0) { - qCritical() << "Failed to setup SIGHUP handler."; - return; - } - -- struct sigaction sigint; -+ struct sigaction sigint = { }; - sigint.sa_handler = SignalHandler::intSignalHandler; - sigemptyset(&sigint.sa_mask); -- sigint.sa_flags |= SA_RESTART; -+ sigint.sa_flags = SA_RESTART; - - if (sigaction(SIGINT, &sigint, 0) > 0) { - qCritical() << "Failed to set up SIGINT handler."; - return; - } - -- struct sigaction sigterm; -+ struct sigaction sigterm = { }; - sigterm.sa_handler = SignalHandler::termSignalHandler; - sigemptyset(&sigterm.sa_mask); -- sigterm.sa_flags |= SA_RESTART; -+ sigterm.sa_flags = SA_RESTART; - - if (sigaction(SIGTERM, &sigterm, 0) > 0) { - qCritical() << "Failed to set up SIGTERM handler."; -@@ -93,10 +92,10 @@ namespace SDDM { - } - - void SignalHandler::initializeSigusr1() { -- struct sigaction sigusr1; -+ struct sigaction sigusr1 = { }; - sigusr1.sa_handler = SignalHandler::usr1SignalHandler; - sigemptyset(&sigusr1.sa_mask); -- sigusr1.sa_flags |= SA_RESTART; -+ sigusr1.sa_flags = SA_RESTART; - - if (sigaction(SIGUSR1, &sigusr1, 0) > 0) { - qCritical() << "Failed to set up SIGUSR1 handler."; -@@ -105,10 +104,10 @@ namespace SDDM { - } - - void SignalHandler::ignoreSigusr1() { -- struct sigaction sigusr1; -+ struct sigaction sigusr1 = { }; - sigusr1.sa_handler = SIG_IGN; - sigemptyset(&sigusr1.sa_mask); -- sigusr1.sa_flags |= SA_RESTART; -+ sigusr1.sa_flags = SA_RESTART; - - if (sigaction(SIGUSR1, &sigusr1, 0) > 0) { - qCritical() << "Failed to set up SIGUSR1 handler."; --- -1.9.3 - diff --git a/Configuration.h b/Configuration.h new file mode 100644 index 0000000..ff87df6 --- /dev/null +++ b/Configuration.h @@ -0,0 +1,99 @@ +/* + * SDDM Fedora configuration + */ + +#ifndef SDDM_CONFIGURATION_H +#define SDDM_CONFIGURATION_H + +#include +#include +#include +#include +#include +#include + +#include "Constants.h" + +#include "ConfigReader.h" + +namespace SDDM { + // Name File Sections and/or Entries (but anything else too, it's a class) - Entries in a Config are assumed to be in the General section + Config(MainConfig, CONFIG_FILE, + enum NumState { NUM_NONE, NUM_SET_ON, NUM_SET_OFF }; + + // Name Type Default value Description + Entry(HaltCommand, QString, _S("/usr/bin/systemctl poweroff"), _S("Halt command")); + Entry(RebootCommand, QString, _S("/usr/bin/systemctl reboot"), _S("Reboot command")); + Entry(Numlock, NumState, NUM_NONE, _S("Initial NumLock state\n" + "Valid values: on|off|none\n" + "If property is set to none, numlock won't be changed")); + // 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("fedora"), _S("Current theme name")); + Entry(FacesDir, QString, _S(DATA_INSTALL_DIR "/faces"), _S("Face icon directory\n" + "The files should be in username.face.icon format")); + Entry(CursorTheme, QString, QString(), _S("Cursor theme")); + ); + // TODO: Not absolutely sure if everything belongs here. Xsessions, VT and probably some more seem universal + Section(XDisplay, + Entry(ServerPath, QString, _S("/usr/bin/X"), _S("X server path")); + Entry(XauthPath, QString, _S("/usr/bin/xauth"), _S("Xauth path")); + Entry(SessionDir, QString, _S("/usr/share/xsessions"), _S("Session description directory")); + Entry(SessionCommand, QString, _S("/etc/X11/xinit/Xsession"), _S("Xsession script path\n" + "A script to execute when starting the desktop session")); + Entry(DisplayCommand, QString, _S(DATA_INSTALL_DIR "/scripts/Xsetup"), _S("Xsetup script path\n" + "A script to execute when starting the display server")); + Entry(MinimumVT, int, 1, _S("Minimum VT\n" + "The lowest virtual terminal number that will be used.")); + ); + Section(Users, + Entry(DefaultPath, QString, _S("/bin:/usr/bin:/usr/local/bin"), _S("Default $PATH")); + Entry(MinimumUid, int, 1000, _S("Minimum user id for displayed users")); + Entry(MaximumUid, int, 65000, _S("Maximum user id for displayed users")); + Entry(HideUsers, QStringList, QStringList(), _S("Hidden users")); + Entry(HideShells, QStringList, QStringList(), _S("Hidden shells\n" + "Users with these shells as their default won't be listed")); + Entry(RememberLastUser, bool, true, _S("Remember the last successfully logged in user")); + Entry(RememberLastSession, bool, true, _S("Remember the session of the last successfully logged in user")); + ); + Section(Autologin, + Entry(User, QString, QString(), _S("Autologin user")); + Entry(Session, QString, QString(), _S("Autologin session")); + Entry(Relogin, bool, false, _S("Autologin again on session exit")); + ); + ); + + Config(StateConfig, []()->QString{auto tmp = getpwnam("sddm"); return tmp ? tmp->pw_dir : STATE_DIR;}().append("/state.conf"), + Section(Last, + Entry(Session, QString, QString(), _S("Name of the session file of the last session selected. This session will be preselected when the login screen shows up.")); + Entry(User, QString, QString(), _S("Name of the last logged-in user. This username will be preselected/shown when the login screen shows up")); + ); + ); + + extern MainConfig mainConfig; + extern StateConfig stateConfig; + + inline QTextStream& operator>>(QTextStream &str, MainConfig::NumState &state) { + QString text = str.readLine().trimmed(); + if (text.compare("on", Qt::CaseInsensitive) == 0) + state = MainConfig::NUM_SET_ON; + else if (text.compare("off", Qt::CaseInsensitive) == 0) + state = MainConfig::NUM_SET_OFF; + else + state = MainConfig::NUM_NONE; + return str; + } + + inline QTextStream& operator<<(QTextStream &str, const MainConfig::NumState &state) { + if (state == MainConfig::NUM_SET_ON) + str << "on"; + else if (state == MainConfig::NUM_SET_OFF) + str << "off"; + else + str << "none"; + return str; + } +} + +#endif // SDDM_CONFIGURATION_H diff --git a/fedora-Main.qml b/fedora-Main.qml index 574ad79..ff1cf4f 100644 --- a/fedora-Main.qml +++ b/fedora-Main.qml @@ -23,8 +23,8 @@ ***************************************************************************/ -import QtQuick 1.1 -import SddmComponents 1.1 +import QtQuick 2.0 +import SddmComponents 2.0 Rectangle { @@ -226,10 +226,25 @@ Rectangle { } } + // doesn't do anything :/ Component.onCompleted: { if (name.text === "") - name.focus = true + name.forceActiveFocus() else - password.focus = true + password.forceActiveFocus() + hackTimer.start() + } + + // can't tell why it doesn't set the focus when component is completed, this hacks around it + Timer { + id: hackTimer + interval: 100 + repeat: false + onTriggered: { + if (name.text === "") + name.forceActiveFocus() + else + password.forceActiveFocus() + } } } diff --git a/sddm.conf b/sddm.conf deleted file mode 100644 index 956af91..0000000 --- a/sddm.conf +++ /dev/null @@ -1,26 +0,0 @@ -[General] -DefaultPath=/bin:/usr/bin:/usr/local/bin -CursorTheme= -ServerPath=/usr/bin/X -XauthPath=/usr/bin/xauth -AuthDir=/var/run/sddm -HaltCommand=/usr/bin/systemctl poweroff -RebootCommand=/usr/bin/systemctl reboot -SessionsDir=/usr/share/xsessions/ -LastSession=kde-plasma.desktop -RememberLastSession=true -SessionCommand=/etc/X11/xinit/Xsession -FacesDir=/usr/share/sddm/faces/ -ThemesDir=/usr/share/sddm/themes/ -CurrentTheme=fedora -MinimumUid=1000 -MaximumUid=65000 -LastUser= -RememberLastUser=false -AutoUser= -HideUsers= -HideShells= -AutoRelogin=false -MinimumVT=1 -Numlock=none -XDMCPServer=false diff --git a/sddm.spec b/sddm.spec index 90eaf1e..614564d 100644 --- a/sddm.spec +++ b/sddm.spec @@ -1,9 +1,9 @@ %global _hardened_build 1 -%global sddm_commit f49c2c79b76078169f22cb0f85973cebc70333de +%global sddm_commit 6a28c29b2914a24f56fe9a7cff82550738672dfb Name: sddm -Version: 0.2.0 -Release: 0.32.20140627git%(echo %{sddm_commit} | cut -c-8)%{?dist} +Version: 0.9.0 +Release: 1.20141007git%(echo %{sddm_commit} | cut -c-8)%{?dist} # code GPLv2+, fedora theme CC-BY-SA License: GPLv2+ and CC-BY-SA Summary: QML based X11 desktop manager @@ -11,29 +11,29 @@ Summary: QML based X11 desktop manager Url: https://github.com/sddm/sddm Source0: https://github.com/sddm/sddm/archive/%{sddm_commit}.tar.gz -# fedora standard sddm.conf -Source10: sddm.conf +# Default configuration is handled by the binary itself +Source10: Configuration.h # Shamelessly stolen from gdm Source11: sddm.pam # Shamelessly stolen from gdm Source12: sddm-autologin.pam -# systesmd tmpfiles support for /var/run/sddm -Source14: tmpfiles-sddm.conf +# systemd tmpfiles support for /var/run/sddm +Source13: tmpfiles-sddm.conf # fedora theme files Source21: fedora-Main.qml Source22: fedora-metadata.desktop Source23: fedora-theme.conf -Patch1: 0001-Initialize-sigactions-in-signal-handlers.patch - Provides: service(graphical-login) = sddm BuildRequires: cmake BuildRequires: systemd BuildRequires: pam-devel BuildRequires: libxcb-devel -BuildRequires: qt4-devel +BuildRequires: qt5-qtbase-devel +BuildRequires: qt5-qtdeclarative-devel +BuildRequires: qt5-qttools-devel BuildRequires: pkgconfig BuildRequires: python-docutils @@ -43,6 +43,8 @@ Obsoletes: kde-settings-sddm < 20-5 Requires: desktop-backgrounds-compat # for /usr/share/pixmaps/system-logo-white.png Requires: system-logos +Requires: qt5-qtbase-gui +Requires: qt5-qtdeclarative Requires: systemd Requires: xorg-x11-xinit Requires: xorg-x11-server-Xorg @@ -67,12 +69,13 @@ A collection of sddm themes, including: circles, elarun, maldives, maui. %prep %setup -q -n %{name}-%{sddm_commit} -%patch1 -p1 -b .signals +cp %{SOURCE10} src/common/ + %build mkdir -p %{_target_platform} pushd %{_target_platform} -%{cmake} -DBUILD_MAN_PAGES=true -DENABLE_JOURNALD=true .. +%{cmake} -DUSE_QT5=true -DBUILD_MAN_PAGES=true -DENABLE_JOURNALD=true .. popd make %{?_smp_mflags} -C %{_target_platform} @@ -81,10 +84,9 @@ make %{?_smp_mflags} -C %{_target_platform} %install make install/fast DESTDIR=%{buildroot} -C %{_target_platform} -install -Dpm 644 %{SOURCE10} %{buildroot}%{_sysconfdir}/sddm.conf install -Dpm 644 %{SOURCE11} %{buildroot}%{_sysconfdir}/pam.d/sddm install -Dpm 644 %{SOURCE12} %{buildroot}%{_sysconfdir}/pam.d/sddm-autologin -install -Dpm 644 %{SOURCE14} %{buildroot}%{_tmpfilesdir}/sddm.conf +install -Dpm 644 %{SOURCE13} %{buildroot}%{_tmpfilesdir}/sddm.conf mkdir -p %{buildroot}%{_localstatedir}/run/sddm # install fedora theme @@ -111,7 +113,6 @@ exit 0 %files %doc COPYING README.md CONTRIBUTORS -%config %{_sysconfdir}/sddm.conf %config(noreplace) %{_sysconfdir}/pam.d/sddm %config(noreplace) %{_sysconfdir}/pam.d/sddm-autologin %config(noreplace) %{_sysconfdir}/pam.d/sddm-greeter @@ -122,12 +123,11 @@ exit 0 %{_tmpfilesdir}/sddm.conf %attr(0711,root,root) %dir %{_localstatedir}/run/sddm %{_unitdir}/sddm.service -%{_qt4_importdir}/SddmComponents/ +%{_qt5_archdatadir}/qml/SddmComponents/ %dir %{_datadir}/sddm %{_datadir}/sddm/faces/ %{_datadir}/sddm/flags/ %{_datadir}/sddm/scripts/ -%{_datadir}/sddm/sddm.conf.sample %dir %{_datadir}/sddm/themes/ # default fedora theme %{_datadir}/sddm/themes/fedora/ @@ -142,6 +142,13 @@ exit 0 %{_datadir}/sddm/themes/maui/ %changelog +* Tue Oct 07 2014 Martin Briza - 0.9.0-1.20141007git6a28c29b +- Bump to latest upstream git (and a new release) +- Hack around focus problem in the Fedora theme +- Compile against Qt5 +- Removed upstreamed patch and files +- Resolves: #1114192 #1119777 #1123506 #1125129 #1140386 #1112841 #1128463 #1128465 #1149608 #1149628 #1148659 #1148660 #1149610 #1149629 + * Mon Aug 18 2014 Fedora Release Engineering - 0.2.0-0.32.20140627gitf49c2c79 - Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild diff --git a/sources b/sources index e067746..758493c 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -84a42e1093591fd45c2f6ed6f4f8dfcf f49c2c79b76078169f22cb0f85973cebc70333de.tar.gz +69d70516b37ca577f4df1ae95920f46f 6a28c29b2914a24f56fe9a7cff82550738672dfb.tar.gz