parent
42d10ca8c8
commit
cca1916321
@ -1,3 +1,3 @@
|
|||||||
/v0.12.0.tar.gz
|
|
||||||
/v0.13.0.tar.gz
|
/v0.13.0.tar.gz
|
||||||
/angle-down.png
|
/angle-down.png
|
||||||
|
/v0.14.0.tar.gz
|
||||||
|
@ -1,297 +0,0 @@
|
|||||||
From 71a1925151e71d2ade4588f06a39402e87d10ee8 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Jerome Leclanche <jerome@leclan.ch>
|
|
||||||
Date: Thu, 5 Nov 2015 13:10:39 +0200
|
|
||||||
Subject: [PATCH 02/34] Use higher quality neutral images for default faces
|
|
||||||
|
|
||||||
Images in the public domain. Root recolored.
|
|
||||||
|
|
||||||
Touches #174
|
|
||||||
---
|
|
||||||
ChangeLog | 1 +
|
|
||||||
data/faces/default.face.icon | Bin 1830 -> 4920 bytes
|
|
||||||
data/faces/root.face.icon | Bin 2138 -> 5111 bytes
|
|
||||||
3 files changed, 1 insertion(+)
|
|
||||||
|
|
||||||
diff --git a/data/faces/default.face.icon b/data/faces/default.face.icon
|
|
||||||
index 3ec0da8ba441fc6bb8cffd44b1d9a4e760149eb9..cd7c4fdeecce8508d39ffd927de81cf89cb334cd 100644
|
|
||||||
GIT binary patch
|
|
||||||
literal 4920
|
|
||||||
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
|
|
||||||
|
|
||||||
literal 1830
|
|
||||||
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
|
|
||||||
UIPNoUo&W#<07*qoM6N<$f(uS#^Z)<=
|
|
||||||
|
|
||||||
diff --git a/data/faces/root.face.icon b/data/faces/root.face.icon
|
|
||||||
index f177d98e0702e4c190b3442e346b4ce6b9543c30..308496979d6665a8e87451d273ad14233f821a90 100644
|
|
||||||
GIT binary patch
|
|
||||||
literal 5111
|
|
||||||
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
|
|
||||||
XCj1SXu1eWOLk}=DvNEjK_k8$29Wh(^
|
|
||||||
|
|
||||||
literal 2138
|
|
||||||
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
|
|
||||||
Q<^TWy07*qoM6N<$f^)ze9{>OV
|
|
||||||
|
|
||||||
--
|
|
||||||
2.5.0
|
|
||||||
|
|
@ -1,31 +0,0 @@
|
|||||||
From 7efe53000c49fb6ce808286b15283d2da05b0c52 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Jerome Leclanche <jerome@leclan.ch>
|
|
||||||
Date: Thu, 5 Nov 2015 18:55:02 +0200
|
|
||||||
Subject: [PATCH 03/34] Generate and install the default sddm.conf after sddm
|
|
||||||
is built
|
|
||||||
|
|
||||||
Fixes #463
|
|
||||||
---
|
|
||||||
src/daemon/CMakeLists.txt | 9 +++++++++
|
|
||||||
1 file changed, 9 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/src/daemon/CMakeLists.txt b/src/daemon/CMakeLists.txt
|
|
||||||
index 07a0a3d..1ae70e1 100644
|
|
||||||
--- a/src/daemon/CMakeLists.txt
|
|
||||||
+++ b/src/daemon/CMakeLists.txt
|
|
||||||
@@ -45,3 +45,12 @@ if(JOURNALD_FOUND)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
install(TARGETS sddm DESTINATION "${CMAKE_INSTALL_BINDIR}")
|
|
||||||
+
|
|
||||||
+# Generate and install the default config file
|
|
||||||
+add_custom_command(COMMAND sddm --example-config > "${CMAKE_BINARY_DIR}/sddm.conf"
|
|
||||||
+ OUTPUT "${CMAKE_BINARY_DIR}/sddm.conf"
|
|
||||||
+ COMMENT "Generate default sddm.conf file"
|
|
||||||
+ DEPENDS sddm
|
|
||||||
+)
|
|
||||||
+add_custom_target(generate_config_file ALL DEPENDS "${CMAKE_BINARY_DIR}/sddm.conf")
|
|
||||||
+install(FILES "${CMAKE_BINARY_DIR}/sddm.conf" DESTINATION "${CMAKE_INSTALL_FULL_SYSCONFDIR}")
|
|
||||||
--
|
|
||||||
2.5.0
|
|
||||||
|
|
@ -1,82 +0,0 @@
|
|||||||
From 17b3db31d9c75a197b3509f786bc646ab6dce17d Mon Sep 17 00:00:00 2001
|
|
||||||
From: Jerome Leclanche <jerome@leclan.ch>
|
|
||||||
Date: Thu, 5 Nov 2015 17:18:46 +0200
|
|
||||||
Subject: [PATCH 04/34] Add a config option to enable avatars
|
|
||||||
|
|
||||||
Closes #281
|
|
||||||
---
|
|
||||||
ChangeLog | 1 +
|
|
||||||
data/man/sddm.conf.rst.in | 7 +++++++
|
|
||||||
src/common/Configuration.h | 1 +
|
|
||||||
src/greeter/UserModel.cpp | 25 +++++++++++++++++--------
|
|
||||||
4 files changed, 26 insertions(+), 8 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/data/man/sddm.conf.rst.in b/data/man/sddm.conf.rst.in
|
|
||||||
index a916e27..18aedf4 100644
|
|
||||||
--- a/data/man/sddm.conf.rst.in
|
|
||||||
+++ b/data/man/sddm.conf.rst.in
|
|
||||||
@@ -60,6 +60,13 @@ OPTIONS
|
|
||||||
Name of the cursor theme to be set before starting
|
|
||||||
the display server.
|
|
||||||
|
|
||||||
+`EnableAvatars=`
|
|
||||||
+ When enabled, home directories are searched for ".face.icon" images to
|
|
||||||
+ display as their avatars. This can be slow on some file systems.
|
|
||||||
+ When disabled, all avatars will be default. Themes may choose to hide
|
|
||||||
+ them altogether.
|
|
||||||
+ Default value is true.
|
|
||||||
+
|
|
||||||
[XDisplay] section:
|
|
||||||
|
|
||||||
`ServerPath=`
|
|
||||||
diff --git a/src/common/Configuration.h b/src/common/Configuration.h
|
|
||||||
index 069fc16..763b74f 100644
|
|
||||||
--- a/src/common/Configuration.h
|
|
||||||
+++ b/src/common/Configuration.h
|
|
||||||
@@ -49,6 +49,7 @@ namespace SDDM {
|
|
||||||
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"));
|
|
||||||
+ Entry(EnableAvatars, bool, true, _S("Enable display of custom user avatars"));
|
|
||||||
);
|
|
||||||
// TODO: Not absolutely sure if everything belongs here. Xsessions, VT and probably some more seem universal
|
|
||||||
Section(XDisplay,
|
|
||||||
diff --git a/src/greeter/UserModel.cpp b/src/greeter/UserModel.cpp
|
|
||||||
index 5041fab..5c807bc 100644
|
|
||||||
--- a/src/greeter/UserModel.cpp
|
|
||||||
+++ b/src/greeter/UserModel.cpp
|
|
||||||
@@ -81,14 +81,23 @@ namespace SDDM {
|
|
||||||
user->needsPassword = strcmp(current_pw->pw_passwd, "") != 0;
|
|
||||||
|
|
||||||
// search for face icon
|
|
||||||
- QString userFace = QStringLiteral("%1/.face.icon").arg(user->homeDir);
|
|
||||||
- QString systemFace = QStringLiteral("%1/%2.face.icon").arg(mainConfig.Theme.FacesDir.get()).arg(user->name);
|
|
||||||
- if (QFile::exists(userFace))
|
|
||||||
- user->icon = userFace;
|
|
||||||
- else if (QFile::exists(systemFace))
|
|
||||||
- user->icon = systemFace;
|
|
||||||
- else
|
|
||||||
- user->icon = QStringLiteral("%1/default.face.icon").arg(mainConfig.Theme.FacesDir.get());
|
|
||||||
+ QString facesDir = mainConfig.Theme.FacesDir.get();
|
|
||||||
+ QString defaultFace = QStringLiteral("%1/default.face.icon").arg(facesDir);
|
|
||||||
+ bool avatarsEnabled = mainConfig.Theme.EnableAvatars.get();
|
|
||||||
+
|
|
||||||
+ if (avatarsEnabled) {
|
|
||||||
+ QString userFace = QStringLiteral("%1/.face.icon").arg(user->homeDir);
|
|
||||||
+ QString systemFace = QStringLiteral("%1/%2.face.icon").arg(facesDir).arg(user->name);
|
|
||||||
+
|
|
||||||
+ if (QFile::exists(userFace))
|
|
||||||
+ user->icon = userFace;
|
|
||||||
+ else if (QFile::exists(systemFace))
|
|
||||||
+ user->icon = systemFace;
|
|
||||||
+ else
|
|
||||||
+ user->icon = defaultFace;
|
|
||||||
+ } else {
|
|
||||||
+ user->icon = defaultFace;
|
|
||||||
+ }
|
|
||||||
|
|
||||||
// add user
|
|
||||||
d->users << user;
|
|
||||||
--
|
|
||||||
2.5.0
|
|
||||||
|
|
@ -1,486 +0,0 @@
|
|||||||
From 58b794bb2a2fd407a08b6c4d9eb4f156823b34f1 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Jerome Leclanche <jerome@leclan.ch>
|
|
||||||
Date: Thu, 5 Nov 2015 17:37:35 +0200
|
|
||||||
Subject: [PATCH 05/34] Use .face.icon instead of default.face.icon, and rename
|
|
||||||
the sources to .png
|
|
||||||
|
|
||||||
Touches #174
|
|
||||||
---
|
|
||||||
data/CMakeLists.txt | 13 ++++++++++++-
|
|
||||||
data/faces/README | 3 ++-
|
|
||||||
data/faces/default.face.icon | Bin 4920 -> 0 bytes
|
|
||||||
data/faces/default.face.icon.png | Bin 0 -> 4920 bytes
|
|
||||||
data/faces/root.face.icon | Bin 5111 -> 0 bytes
|
|
||||||
data/faces/root.face.icon.png | Bin 0 -> 5111 bytes
|
|
||||||
src/greeter/UserModel.cpp | 2 +-
|
|
||||||
7 files changed, 15 insertions(+), 3 deletions(-)
|
|
||||||
delete mode 100644 data/faces/default.face.icon
|
|
||||||
create mode 100644 data/faces/default.face.icon.png
|
|
||||||
delete mode 100644 data/faces/root.face.icon
|
|
||||||
create mode 100644 data/faces/root.face.icon.png
|
|
||||||
|
|
||||||
diff --git a/data/CMakeLists.txt b/data/CMakeLists.txt
|
|
||||||
index 51f37ab..f3b5781 100644
|
|
||||||
--- a/data/CMakeLists.txt
|
|
||||||
+++ b/data/CMakeLists.txt
|
|
||||||
@@ -1,4 +1,3 @@
|
|
||||||
-install(DIRECTORY "faces" DESTINATION "${DATA_INSTALL_DIR}")
|
|
||||||
install(DIRECTORY "flags" DESTINATION "${DATA_INSTALL_DIR}")
|
|
||||||
|
|
||||||
install(FILES
|
|
||||||
@@ -8,6 +7,18 @@ install(FILES
|
|
||||||
)
|
|
||||||
|
|
||||||
install(FILES
|
|
||||||
+ "faces/root.face.icon.png"
|
|
||||||
+ DESTINATION "${DATA_INSTALL_DIR}/faces"
|
|
||||||
+ RENAME "root.face.icon"
|
|
||||||
+)
|
|
||||||
+
|
|
||||||
+install(FILES
|
|
||||||
+ "faces/default.face.icon.png"
|
|
||||||
+ DESTINATION "${DATA_INSTALL_DIR}/faces"
|
|
||||||
+ RENAME ".face.icon"
|
|
||||||
+)
|
|
||||||
+
|
|
||||||
+install(FILES
|
|
||||||
"scripts/Xsession"
|
|
||||||
"scripts/Xsetup"
|
|
||||||
"scripts/Xstop"
|
|
||||||
diff --git a/data/faces/README b/data/faces/README
|
|
||||||
index be871e1..85479ad 100644
|
|
||||||
--- a/data/faces/README
|
|
||||||
+++ b/data/faces/README
|
|
||||||
@@ -1 +1,2 @@
|
|
||||||
-This files are directly copied from a KDE installation.
|
|
||||||
\ No newline at end of file
|
|
||||||
+These are the default avatars.
|
|
||||||
+They are installed to `.face.icon` and `root.face.icon`. See ../CMakeLists.txt.
|
|
||||||
diff --git a/data/faces/default.face.icon b/data/faces/default.face.icon
|
|
||||||
deleted file mode 100644
|
|
||||||
index cd7c4fdeecce8508d39ffd927de81cf89cb334cd..0000000000000000000000000000000000000000
|
|
||||||
GIT binary patch
|
|
||||||
literal 0
|
|
||||||
HcmV?d00001
|
|
||||||
|
|
||||||
literal 4920
|
|
||||||
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
|
|
||||||
|
|
||||||
diff --git a/data/faces/default.face.icon.png b/data/faces/default.face.icon.png
|
|
||||||
new file mode 100644
|
|
||||||
index 0000000000000000000000000000000000000000..cd7c4fdeecce8508d39ffd927de81cf89cb334cd
|
|
||||||
GIT binary patch
|
|
||||||
literal 4920
|
|
||||||
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
|
|
||||||
|
|
||||||
literal 0
|
|
||||||
HcmV?d00001
|
|
||||||
|
|
||||||
diff --git a/data/faces/root.face.icon b/data/faces/root.face.icon
|
|
||||||
deleted file mode 100644
|
|
||||||
index 308496979d6665a8e87451d273ad14233f821a90..0000000000000000000000000000000000000000
|
|
||||||
GIT binary patch
|
|
||||||
literal 0
|
|
||||||
HcmV?d00001
|
|
||||||
|
|
||||||
literal 5111
|
|
||||||
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
|
|
||||||
XCj1SXu1eWOLk}=DvNEjK_k8$29Wh(^
|
|
||||||
|
|
||||||
diff --git a/data/faces/root.face.icon.png b/data/faces/root.face.icon.png
|
|
||||||
new file mode 100644
|
|
||||||
index 0000000000000000000000000000000000000000..308496979d6665a8e87451d273ad14233f821a90
|
|
||||||
GIT binary patch
|
|
||||||
literal 5111
|
|
||||||
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
|
|
||||||
XCj1SXu1eWOLk}=DvNEjK_k8$29Wh(^
|
|
||||||
|
|
||||||
literal 0
|
|
||||||
HcmV?d00001
|
|
||||||
|
|
||||||
diff --git a/src/greeter/UserModel.cpp b/src/greeter/UserModel.cpp
|
|
||||||
index 5c807bc..66ab6fb 100644
|
|
||||||
--- a/src/greeter/UserModel.cpp
|
|
||||||
+++ b/src/greeter/UserModel.cpp
|
|
||||||
@@ -82,7 +82,7 @@ namespace SDDM {
|
|
||||||
|
|
||||||
// search for face icon
|
|
||||||
QString facesDir = mainConfig.Theme.FacesDir.get();
|
|
||||||
- QString defaultFace = QStringLiteral("%1/default.face.icon").arg(facesDir);
|
|
||||||
+ QString defaultFace = QStringLiteral("%1/.face.icon").arg(facesDir);
|
|
||||||
bool avatarsEnabled = mainConfig.Theme.EnableAvatars.get();
|
|
||||||
|
|
||||||
if (avatarsEnabled) {
|
|
||||||
--
|
|
||||||
2.5.0
|
|
||||||
|
|
@ -1,46 +0,0 @@
|
|||||||
From e646bd39ba743e2540aaa7d22fd4633e5d9a6966 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Jerome Leclanche <jerome@leclan.ch>
|
|
||||||
Date: Thu, 5 Nov 2015 20:03:22 +0200
|
|
||||||
Subject: [PATCH 06/34] Fix mixed indents
|
|
||||||
|
|
||||||
---
|
|
||||||
data/man/sddm.conf.rst.in | 4 ++--
|
|
||||||
src/greeter/UserModel.cpp | 4 ++--
|
|
||||||
2 files changed, 4 insertions(+), 4 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/data/man/sddm.conf.rst.in b/data/man/sddm.conf.rst.in
|
|
||||||
index 18aedf4..d5263e0 100644
|
|
||||||
--- a/data/man/sddm.conf.rst.in
|
|
||||||
+++ b/data/man/sddm.conf.rst.in
|
|
||||||
@@ -74,8 +74,8 @@ OPTIONS
|
|
||||||
Default value is "/usr/bin/X".
|
|
||||||
|
|
||||||
`ServerArguments=`
|
|
||||||
- Arguments to the X server.
|
|
||||||
- Default value is "-nolisten tcp".
|
|
||||||
+ Arguments to the X server.
|
|
||||||
+ Default value is "-nolisten tcp".
|
|
||||||
|
|
||||||
`XephyrPath=`
|
|
||||||
Path of the Xephyr.
|
|
||||||
diff --git a/src/greeter/UserModel.cpp b/src/greeter/UserModel.cpp
|
|
||||||
index 66ab6fb..f56c67a 100644
|
|
||||||
--- a/src/greeter/UserModel.cpp
|
|
||||||
+++ b/src/greeter/UserModel.cpp
|
|
||||||
@@ -55,11 +55,11 @@ namespace SDDM {
|
|
||||||
while ((current_pw = getpwent()) != nullptr) {
|
|
||||||
|
|
||||||
// skip entries with uids smaller than minimum uid
|
|
||||||
- if ( int(current_pw->pw_uid) < mainConfig.Users.MinimumUid.get())
|
|
||||||
+ if (int(current_pw->pw_uid) < mainConfig.Users.MinimumUid.get())
|
|
||||||
continue;
|
|
||||||
|
|
||||||
// skip entries with uids greater than maximum uid
|
|
||||||
- if ( int(current_pw->pw_uid) > mainConfig.Users.MaximumUid.get())
|
|
||||||
+ if (int(current_pw->pw_uid) > mainConfig.Users.MaximumUid.get())
|
|
||||||
continue;
|
|
||||||
// skip entries with user names in the hide users list
|
|
||||||
if (mainConfig.Users.HideUsers.get().contains(QString::fromLocal8Bit(current_pw->pw_name)))
|
|
||||||
--
|
|
||||||
2.5.0
|
|
||||||
|
|
@ -1,88 +0,0 @@
|
|||||||
From cb768895c8e0d21c689d63f69d7ac668fe4e8fa6 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Jerome Leclanche <jerome@leclan.ch>
|
|
||||||
Date: Thu, 5 Nov 2015 21:28:22 +0200
|
|
||||||
Subject: [PATCH 07/34] Fall back to regular login when autologin fails
|
|
||||||
|
|
||||||
Fixes #316
|
|
||||||
---
|
|
||||||
src/daemon/Display.cpp | 42 +++++++++++++++++++++++++-----------------
|
|
||||||
src/daemon/Display.h | 1 +
|
|
||||||
2 files changed, 26 insertions(+), 17 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/daemon/Display.cpp b/src/daemon/Display.cpp
|
|
||||||
index 8de59e5..6bc9965 100644
|
|
||||||
--- a/src/daemon/Display.cpp
|
|
||||||
+++ b/src/daemon/Display.cpp
|
|
||||||
@@ -103,6 +103,29 @@ namespace SDDM {
|
|
||||||
m_displayServer->start();
|
|
||||||
}
|
|
||||||
|
|
||||||
+ bool Display::attemptAutologin() {
|
|
||||||
+ Session::Type sessionType = Session::X11Session;
|
|
||||||
+
|
|
||||||
+ // determine session type
|
|
||||||
+ const QString &autologinSession = mainConfig.Autologin.Session.get();
|
|
||||||
+ if (findSessionEntry(mainConfig.XDisplay.SessionDir.get(), autologinSession)) {
|
|
||||||
+ sessionType = Session::X11Session;
|
|
||||||
+ } else if (findSessionEntry(mainConfig.WaylandDisplay.SessionDir.get(), autologinSession)) {
|
|
||||||
+ sessionType = Session::WaylandSession;
|
|
||||||
+ } else {
|
|
||||||
+ qCritical() << "Unable to find autologin session entry" << autologinSession;
|
|
||||||
+ return false;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ Session session;
|
|
||||||
+ session.setTo(sessionType, autologinSession);
|
|
||||||
+
|
|
||||||
+ m_auth->setAutologin(true);
|
|
||||||
+ startAuth(mainConfig.Autologin.User.get(), QString(), session);
|
|
||||||
+
|
|
||||||
+ return true;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
void Display::displayServerStarted() {
|
|
||||||
// check flag
|
|
||||||
if (m_started)
|
|
||||||
@@ -122,25 +145,10 @@ namespace SDDM {
|
|
||||||
// set flags
|
|
||||||
m_started = true;
|
|
||||||
|
|
||||||
- // determine session type
|
|
||||||
- const QString &autologinSession = mainConfig.Autologin.Session.get();
|
|
||||||
- Session session;
|
|
||||||
- if (findSessionEntry(mainConfig.XDisplay.SessionDir.get(), autologinSession)) {
|
|
||||||
- session.setTo(Session::X11Session, autologinSession);
|
|
||||||
- } else if (findSessionEntry(mainConfig.WaylandDisplay.SessionDir.get(), autologinSession)) {
|
|
||||||
- session.setTo(Session::WaylandSession, autologinSession);
|
|
||||||
- } else {
|
|
||||||
- qCritical() << "Unable to find autologin session entry" << autologinSession;
|
|
||||||
- emit loginFailed(m_socket);
|
|
||||||
+ bool success = attemptAutologin();
|
|
||||||
+ if (success) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
-
|
|
||||||
- // start session
|
|
||||||
- m_auth->setAutologin(true);
|
|
||||||
- startAuth(mainConfig.Autologin.User.get(), QString(), session);
|
|
||||||
-
|
|
||||||
- // return
|
|
||||||
- return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// start socket server
|
|
||||||
diff --git a/src/daemon/Display.h b/src/daemon/Display.h
|
|
||||||
index dc46463..3d6d6a5 100644
|
|
||||||
--- a/src/daemon/Display.h
|
|
||||||
+++ b/src/daemon/Display.h
|
|
||||||
@@ -60,6 +60,7 @@ namespace SDDM {
|
|
||||||
void login(QLocalSocket *socket,
|
|
||||||
const QString &user, const QString &password,
|
|
||||||
const Session &session);
|
|
||||||
+ bool attemptAutologin();
|
|
||||||
void displayServerStarted();
|
|
||||||
|
|
||||||
signals:
|
|
||||||
--
|
|
||||||
2.5.0
|
|
||||||
|
|
@ -1,26 +0,0 @@
|
|||||||
From c7409687ad26b7f47a2cd73eddb8617ef7cd4701 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Pier Luigi Fiorini <pierluigi.fiorini@gmail.com>
|
|
||||||
Date: Thu, 5 Nov 2015 23:29:59 +0100
|
|
||||||
Subject: [PATCH 08/34] Enable PrivateTmp again
|
|
||||||
|
|
||||||
Let's see if #225 is still happening.
|
|
||||||
---
|
|
||||||
services/sddm.service.in | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/services/sddm.service.in b/services/sddm.service.in
|
|
||||||
index b0cea02..c476441 100644
|
|
||||||
--- a/services/sddm.service.in
|
|
||||||
+++ b/services/sddm.service.in
|
|
||||||
@@ -7,7 +7,7 @@ After=systemd-user-sessions.service getty@tty1.service plymouth-quit.service
|
|
||||||
[Service]
|
|
||||||
ExecStart=@CMAKE_INSTALL_FULL_BINDIR@/sddm
|
|
||||||
Restart=always
|
|
||||||
-#PrivateTmp=yes
|
|
||||||
+PrivateTmp=yes
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
Alias=display-manager.service
|
|
||||||
--
|
|
||||||
2.5.0
|
|
||||||
|
|
@ -1,115 +0,0 @@
|
|||||||
From f64bd7a92728158a78653dd6e8373703168b11c6 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Jerome Leclanche <jerome@leclan.ch>
|
|
||||||
Date: Thu, 5 Nov 2015 20:44:58 +0200
|
|
||||||
Subject: [PATCH 09/34] Improve config file comments
|
|
||||||
|
|
||||||
---
|
|
||||||
src/common/Configuration.h | 69 +++++++++++++++++++++++-----------------------
|
|
||||||
1 file changed, 35 insertions(+), 34 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/common/Configuration.h b/src/common/Configuration.h
|
|
||||||
index 763b74f..1997fe0 100644
|
|
||||||
--- a/src/common/Configuration.h
|
|
||||||
+++ b/src/common/Configuration.h
|
|
||||||
@@ -36,63 +36,64 @@ namespace SDDM {
|
|
||||||
Config(MainConfig, QStringLiteral(CONFIG_FILE),
|
|
||||||
enum NumState { NUM_NONE, NUM_SET_ON, NUM_SET_OFF };
|
|
||||||
|
|
||||||
- // Name Type Default value Description
|
|
||||||
- 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\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)
|
|
||||||
+ // Name Type Default value Description
|
|
||||||
+ 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"
|
|
||||||
+ "If property is set to none, numlock won't be changed\n"
|
|
||||||
+ "NOTE: Currently ignored if autologin is enabled."));
|
|
||||||
+ // 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("maui"), _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"));
|
|
||||||
+ 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"));
|
|
||||||
Entry(EnableAvatars, bool, true, _S("Enable display of custom user avatars"));
|
|
||||||
);
|
|
||||||
+
|
|
||||||
// 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(ServerArguments, QString, _S("-nolisten tcp"), _S("X server arguments"));
|
|
||||||
- Entry(XephyrPath, QString, _S("/usr/bin/Xephyr"), _S("Xephyr 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(SESSION_COMMAND), _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(DisplayStopCommand, QString, _S(DATA_INSTALL_DIR "/scripts/Xstop"), _S("Xstop script path\n"
|
|
||||||
- "A script to execute when stopping the display server"));
|
|
||||||
- Entry(MinimumVT, int, MINIMUM_VT, _S("Minimum VT\n"
|
|
||||||
- "The lowest virtual terminal number that will be used."));
|
|
||||||
+ Entry(ServerPath, QString, _S("/usr/bin/X"), _S("Path to X server binary"));
|
|
||||||
+ Entry(ServerArguments, QString, _S("-nolisten tcp"), _S("Arguments passed to the X server invocation"));
|
|
||||||
+ Entry(XephyrPath, QString, _S("/usr/bin/Xephyr"), _S("Path to Xephyr binary"));
|
|
||||||
+ Entry(XauthPath, QString, _S("/usr/bin/xauth"), _S("Path to xauth binary"));
|
|
||||||
+ 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(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."));
|
|
||||||
);
|
|
||||||
+
|
|
||||||
Section(WaylandDisplay,
|
|
||||||
- Entry(SessionDir, QString, _S("/usr/share/wayland-sessions"), _S("Session description directory"));
|
|
||||||
- Entry(SessionCommand, QString, _S(WAYLAND_SESSION_COMMAND), _S("Wayland session script path\n"
|
|
||||||
- "A script to execute when starting the desktop session"));
|
|
||||||
+ Entry(SessionDir, QString, _S("/usr/share/wayland-sessions"), _S("Directory containing available Wayland sessions"));
|
|
||||||
+ Entry(SessionCommand, QString, _S(WAYLAND_SESSION_COMMAND), _S("Path to a script to execute when starting the desktop session"));
|
|
||||||
);
|
|
||||||
+
|
|
||||||
Section(Users,
|
|
||||||
- Entry(DefaultPath, QString, _S("/bin:/usr/bin:/usr/local/bin"), _S("Default $PATH"));
|
|
||||||
+ Entry(DefaultPath, QString, _S("/bin:/usr/bin:/usr/local/bin"), _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("Hidden users"));
|
|
||||||
- Entry(HideShells, QStringList, QStringList(), _S("Hidden shells\n"
|
|
||||||
+ Entry(HideUsers, QStringList, QStringList(), _S("Comma-separated list of users that should not be listed"));
|
|
||||||
+ Entry(HideShells, QStringList, QStringList(), _S("Comma-separated list of 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"));
|
|
||||||
+ Entry(User, QString, QString(), _S("Username for autologin session"));
|
|
||||||
+ Entry(Session, QString, QString(), _S("Name of session file for autologin session"));
|
|
||||||
+ Entry(Relogin, bool, false, _S("Whether sddm should automatically log back into sessions when they exit"));
|
|
||||||
);
|
|
||||||
);
|
|
||||||
|
|
||||||
Config(StateConfig, []()->QString{auto tmp = getpwnam("sddm"); return tmp ? QString::fromLocal8Bit(tmp->pw_dir) : QStringLiteral(STATE_DIR);}().append(QStringLiteral("/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"));
|
|
||||||
+ Entry(Session, QString, QString(), _S("Name of the session for the last logged-in user.\n"
|
|
||||||
+ "This session will be preselected when the login screen appears."));
|
|
||||||
+ Entry(User, QString, QString(), _S("Name of the last logged-in user.\n"
|
|
||||||
+ "This user will be preselected when the login screen appears"));
|
|
||||||
);
|
|
||||||
);
|
|
||||||
|
|
||||||
--
|
|
||||||
2.5.0
|
|
||||||
|
|
@ -1,35 +0,0 @@
|
|||||||
From f19e0f3ce5ba9b31c9bc9aa08ec8805b933e5468 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Pier Luigi Fiorini <pierluigi.fiorini@gmail.com>
|
|
||||||
Date: Fri, 6 Nov 2015 08:16:28 +0100
|
|
||||||
Subject: [PATCH 10/34] elarun: Remove duplicate session selector
|
|
||||||
|
|
||||||
Closes #521
|
|
||||||
|
|
||||||
[ChangeLog][Themes] Remove duplicate session selector
|
|
||||||
from elarun.
|
|
||||||
---
|
|
||||||
data/themes/elarun/Main.qml | 8 --------
|
|
||||||
1 file changed, 8 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/data/themes/elarun/Main.qml b/data/themes/elarun/Main.qml
|
|
||||||
index 28c0168..a83f0e7 100644
|
|
||||||
--- a/data/themes/elarun/Main.qml
|
|
||||||
+++ b/data/themes/elarun/Main.qml
|
|
||||||
@@ -165,14 +165,6 @@ Rectangle {
|
|
||||||
spacing: 8
|
|
||||||
|
|
||||||
ImageButton {
|
|
||||||
- id: session_button
|
|
||||||
- source: "images/session_normal.png"
|
|
||||||
- onClicked: if (menu_session.state === "visible") menu_session.state = ""; else menu_session.state = "visible"
|
|
||||||
-
|
|
||||||
- KeyNavigation.backtab: login_button; KeyNavigation.tab: system_button
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
- ImageButton {
|
|
||||||
id: system_button
|
|
||||||
source: "images/system_shutdown.png"
|
|
||||||
onClicked: sddm.powerOff()
|
|
||||||
--
|
|
||||||
2.5.0
|
|
||||||
|
|
@ -1,98 +0,0 @@
|
|||||||
From a935425e5f4af229680f0e5bda0a7898020a06c4 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Pier Luigi Fiorini <pierluigi.fiorini@gmail.com>
|
|
||||||
Date: Sat, 17 Oct 2015 18:29:20 +0200
|
|
||||||
Subject: [PATCH 12/34] Configurable user session log
|
|
||||||
|
|
||||||
See issue #135.
|
|
||||||
|
|
||||||
[ChangeLog][Configuration] Add SessionLogFile to the XDisplay and
|
|
||||||
WaylandDisplay sections in order to make user session log location
|
|
||||||
configurable.
|
|
||||||
---
|
|
||||||
data/man/sddm.conf.rst.in | 8 ++++++++
|
|
||||||
src/common/Configuration.h | 2 ++
|
|
||||||
src/helper/UserSession.cpp | 15 +++++++++++----
|
|
||||||
3 files changed, 21 insertions(+), 4 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/data/man/sddm.conf.rst.in b/data/man/sddm.conf.rst.in
|
|
||||||
index d5263e0..edce9cf 100644
|
|
||||||
--- a/data/man/sddm.conf.rst.in
|
|
||||||
+++ b/data/man/sddm.conf.rst.in
|
|
||||||
@@ -93,6 +93,10 @@ OPTIONS
|
|
||||||
Path of script to execute when starting the desktop session.
|
|
||||||
Default value is "@SESSION_COMMAND@".
|
|
||||||
|
|
||||||
+`SessionLogFile=`
|
|
||||||
+ Path to the user session log file, relative to the home directory.
|
|
||||||
+ Default value is ".cache/xsession-errors".
|
|
||||||
+
|
|
||||||
`DisplayCommand=`
|
|
||||||
Path of script to execute when starting the display server.
|
|
||||||
Default value is "@DATA_INSTALL_DIR@/scripts/Xsetup".
|
|
||||||
@@ -117,6 +121,10 @@ OPTIONS
|
|
||||||
Path of script to execute when starting the desktop session.
|
|
||||||
Default value is "@WAYLAND_SESSION_COMMAND@".
|
|
||||||
|
|
||||||
+`SessionLogFile=`
|
|
||||||
+ Path to the user session log file, relative to the home directory.
|
|
||||||
+ Default value is ".cache/wayland-errors".
|
|
||||||
+
|
|
||||||
[Users] section:
|
|
||||||
|
|
||||||
`DefaultPath=`
|
|
||||||
diff --git a/src/common/Configuration.h b/src/common/Configuration.h
|
|
||||||
index 1997fe0..89a57db 100644
|
|
||||||
--- a/src/common/Configuration.h
|
|
||||||
+++ b/src/common/Configuration.h
|
|
||||||
@@ -60,6 +60,7 @@ namespace SDDM {
|
|
||||||
Entry(XauthPath, QString, _S("/usr/bin/xauth"), _S("Path to xauth binary"));
|
|
||||||
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(".cache/xsession-errors"), _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(MinimumVT, int, MINIMUM_VT, _S("The lowest virtual terminal number that will be used."));
|
|
||||||
@@ -68,6 +69,7 @@ namespace SDDM {
|
|
||||||
Section(WaylandDisplay,
|
|
||||||
Entry(SessionDir, QString, _S("/usr/share/wayland-sessions"), _S("Directory 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(".cache/wayland-errors"), _S("Path to the user session log file"));
|
|
||||||
);
|
|
||||||
|
|
||||||
Section(Users,
|
|
||||||
diff --git a/src/helper/UserSession.cpp b/src/helper/UserSession.cpp
|
|
||||||
index 0c0ab2b..bd6d1c5 100644
|
|
||||||
--- a/src/helper/UserSession.cpp
|
|
||||||
+++ b/src/helper/UserSession.cpp
|
|
||||||
@@ -134,17 +134,24 @@ namespace SDDM {
|
|
||||||
//we want to redirect after we setuid so that the log file is owned by the user
|
|
||||||
|
|
||||||
// determine stderr log file based on session type
|
|
||||||
- QString fileName = sessionType == QStringLiteral("x11")
|
|
||||||
- ? QStringLiteral(".xsession-errors") : QStringLiteral(".wayland-errors");
|
|
||||||
+ QString sessionLog = QStringLiteral("%1/%2")
|
|
||||||
+ .arg(QString::fromLocal8Bit(pw->pw_dir))
|
|
||||||
+ .arg(sessionType == QStringLiteral("x11")
|
|
||||||
+ ? mainConfig.XDisplay.SessionLogFile.get()
|
|
||||||
+ : mainConfig.WaylandDisplay.SessionLogFile.get());
|
|
||||||
+
|
|
||||||
+ // create the path
|
|
||||||
+ QFileInfo finfo(sessionLog);
|
|
||||||
+ QDir().mkpath(finfo.absolutePath());
|
|
||||||
|
|
||||||
//swap the stderr pipe of this subprcess into a file
|
|
||||||
- int fd = ::open(qPrintable(fileName), O_WRONLY | O_CREAT | O_TRUNC, 0600);
|
|
||||||
+ int fd = ::open(qPrintable(sessionLog), O_WRONLY | O_CREAT | O_TRUNC, 0600);
|
|
||||||
if (fd >= 0)
|
|
||||||
{
|
|
||||||
dup2 (fd, STDERR_FILENO);
|
|
||||||
::close(fd);
|
|
||||||
} else {
|
|
||||||
- qWarning() << "Could not open stderr to" << fileName;
|
|
||||||
+ qWarning() << "Could not open stderr to" << sessionLog;
|
|
||||||
}
|
|
||||||
|
|
||||||
//redirect any stdout to /dev/null
|
|
||||||
--
|
|
||||||
2.5.0
|
|
||||||
|
|
@ -1,89 +0,0 @@
|
|||||||
From 467027b0168accd55e15303e5ba7348a6bfe95f5 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Pier Luigi Fiorini <pierluigi.fiorini@gmail.com>
|
|
||||||
Date: Sat, 17 Oct 2015 18:49:09 +0200
|
|
||||||
Subject: [PATCH 13/34] Configurable Xauthority file
|
|
||||||
|
|
||||||
See issue #135.
|
|
||||||
|
|
||||||
[ChangeLog][Configuration] Add UserAuthFile to the XDisplay section.
|
|
||||||
---
|
|
||||||
data/man/sddm.conf.rst.in | 4 ++++
|
|
||||||
src/common/Configuration.h | 1 +
|
|
||||||
src/helper/Backend.cpp | 10 ++++++++--
|
|
||||||
src/helper/UserSession.cpp | 5 +++++
|
|
||||||
4 files changed, 18 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/data/man/sddm.conf.rst.in b/data/man/sddm.conf.rst.in
|
|
||||||
index edce9cf..8d8a7d4 100644
|
|
||||||
--- a/data/man/sddm.conf.rst.in
|
|
||||||
+++ b/data/man/sddm.conf.rst.in
|
|
||||||
@@ -97,6 +97,10 @@ OPTIONS
|
|
||||||
Path to the user session log file, relative to the home directory.
|
|
||||||
Default value is ".cache/xsession-errors".
|
|
||||||
|
|
||||||
+`UserAuthFile=`
|
|
||||||
+ Path to the Xauthority file, relative to the home directory.
|
|
||||||
+ Default value is ".Xauthority".
|
|
||||||
+
|
|
||||||
`DisplayCommand=`
|
|
||||||
Path of script to execute when starting the display server.
|
|
||||||
Default value is "@DATA_INSTALL_DIR@/scripts/Xsetup".
|
|
||||||
diff --git a/src/common/Configuration.h b/src/common/Configuration.h
|
|
||||||
index 89a57db..5bd5296 100644
|
|
||||||
--- a/src/common/Configuration.h
|
|
||||||
+++ b/src/common/Configuration.h
|
|
||||||
@@ -61,6 +61,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(".cache/xsession-errors"), _S("Path to the user session log file"));
|
|
||||||
+ Entry(UserAuthFile, QString, _S(".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."));
|
|
||||||
diff --git a/src/helper/Backend.cpp b/src/helper/Backend.cpp
|
|
||||||
index 12facb9..b19e6ed 100644
|
|
||||||
--- a/src/helper/Backend.cpp
|
|
||||||
+++ b/src/helper/Backend.cpp
|
|
||||||
@@ -23,6 +23,7 @@
|
|
||||||
|
|
||||||
#include "backend/PamBackend.h"
|
|
||||||
#include "backend/PasswdBackend.h"
|
|
||||||
+#include "Configuration.h"
|
|
||||||
#include "UserSession.h"
|
|
||||||
|
|
||||||
#include <QtCore/QProcessEnvironment>
|
|
||||||
@@ -62,8 +63,13 @@ namespace SDDM {
|
|
||||||
env.insert(QStringLiteral("SHELL"), QString::fromLocal8Bit(pw->pw_shell));
|
|
||||||
env.insert(QStringLiteral("USER"), QString::fromLocal8Bit(pw->pw_name));
|
|
||||||
env.insert(QStringLiteral("LOGNAME"), QString::fromLocal8Bit(pw->pw_name));
|
|
||||||
- if (env.contains(QStringLiteral("DISPLAY")) && !env.contains(QStringLiteral("XAUTHORITY")))
|
|
||||||
- env.insert(QStringLiteral("XAUTHORITY"), QStringLiteral("%1/.Xauthority").arg(QString::fromLocal8Bit(pw->pw_dir)));
|
|
||||||
+ if (env.contains(QStringLiteral("DISPLAY")) && !env.contains(QStringLiteral("XAUTHORITY"))) {
|
|
||||||
+ // determine Xauthority path
|
|
||||||
+ QString value = QStringLiteral("%1/%2")
|
|
||||||
+ .arg(QString::fromLocal8Bit(pw->pw_dir))
|
|
||||||
+ .arg(mainConfig.XDisplay.UserAuthFile.get());
|
|
||||||
+ env.insert(QStringLiteral("XAUTHORITY"), value);
|
|
||||||
+ }
|
|
||||||
// TODO: I'm fairly sure this shouldn't be done for PAM sessions, investigate!
|
|
||||||
m_app->session()->setProcessEnvironment(env);
|
|
||||||
}
|
|
||||||
diff --git a/src/helper/UserSession.cpp b/src/helper/UserSession.cpp
|
|
||||||
index bd6d1c5..0b16a9a 100644
|
|
||||||
--- a/src/helper/UserSession.cpp
|
|
||||||
+++ b/src/helper/UserSession.cpp
|
|
||||||
@@ -173,6 +173,11 @@ namespace SDDM {
|
|
||||||
QString display = processEnvironment().value(QStringLiteral("DISPLAY"));
|
|
||||||
qDebug() << "Adding cookie to" << file;
|
|
||||||
|
|
||||||
+
|
|
||||||
+ // create the path
|
|
||||||
+ QFileInfo finfo(file);
|
|
||||||
+ QDir().mkpath(finfo.absolutePath());
|
|
||||||
+
|
|
||||||
QFile file_handler(file);
|
|
||||||
file_handler.open(QIODevice::WriteOnly);
|
|
||||||
file_handler.close();
|
|
||||||
--
|
|
||||||
2.5.0
|
|
||||||
|
|
@ -1,29 +0,0 @@
|
|||||||
From 5447cc14400c913d385a4f3ed5a06ec3992023ad Mon Sep 17 00:00:00 2001
|
|
||||||
From: Pier Luigi Fiorini <pierluigi.fiorini@gmail.com>
|
|
||||||
Date: Mon, 9 Nov 2015 03:41:04 +0100
|
|
||||||
Subject: [PATCH 15/34] Expose arrow background color
|
|
||||||
|
|
||||||
Let themes change the arrow background color.
|
|
||||||
Closes #542.
|
|
||||||
|
|
||||||
[ChangeLog][Components] ComboBox now exposes the arrow background color
|
|
||||||
as "arrowColor" property.
|
|
||||||
---
|
|
||||||
components/2.0/ComboBox.qml | 1 +
|
|
||||||
1 file changed, 1 insertion(+)
|
|
||||||
|
|
||||||
diff --git a/components/2.0/ComboBox.qml b/components/2.0/ComboBox.qml
|
|
||||||
index d9989ac..01c1248 100644
|
|
||||||
--- a/components/2.0/ComboBox.qml
|
|
||||||
+++ b/components/2.0/ComboBox.qml
|
|
||||||
@@ -36,6 +36,7 @@ FocusScope {
|
|
||||||
property font font
|
|
||||||
property alias model: listView.model
|
|
||||||
property int index: 0
|
|
||||||
+ property alias arrowColor: arrow.color
|
|
||||||
property alias arrowIcon: arrowIcon.source
|
|
||||||
|
|
||||||
property Component rowDelegate: defaultRowDelegate
|
|
||||||
--
|
|
||||||
2.5.0
|
|
||||||
|
|
@ -1,26 +0,0 @@
|
|||||||
From 40c981a7b39611ffe6570e37e2e9419c95114cf0 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Antonio Larrosa <larrosa@kde.org>
|
|
||||||
Date: Wed, 11 Nov 2015 19:04:29 +0100
|
|
||||||
Subject: [PATCH 20/34] Adds a "count" property to UserModel
|
|
||||||
|
|
||||||
Adds a count property to UserModel so sddm themes can access the number of users in the system.
|
|
||||||
The name "count" is to mimic the "count" property in QML's standard ListModel.
|
|
||||||
---
|
|
||||||
src/greeter/UserModel.h | 1 +
|
|
||||||
1 file changed, 1 insertion(+)
|
|
||||||
|
|
||||||
diff --git a/src/greeter/UserModel.h b/src/greeter/UserModel.h
|
|
||||||
index 99d2770..e089b4d 100644
|
|
||||||
--- a/src/greeter/UserModel.h
|
|
||||||
+++ b/src/greeter/UserModel.h
|
|
||||||
@@ -32,6 +32,7 @@ namespace SDDM {
|
|
||||||
Q_DISABLE_COPY(UserModel)
|
|
||||||
Q_PROPERTY(int lastIndex READ lastIndex CONSTANT)
|
|
||||||
Q_PROPERTY(QString lastUser READ lastUser CONSTANT)
|
|
||||||
+ Q_PROPERTY(int count READ rowCount CONSTANT)
|
|
||||||
public:
|
|
||||||
enum UserRoles {
|
|
||||||
NameRole = Qt::UserRole + 1,
|
|
||||||
--
|
|
||||||
2.5.0
|
|
||||||
|
|
@ -1,104 +0,0 @@
|
|||||||
From 9d16882177a832fa855416c69bc817cee2903622 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Antonio Larrosa <larrosa@kde.org>
|
|
||||||
Date: Wed, 11 Nov 2015 19:05:08 +0100
|
|
||||||
Subject: [PATCH 21/34] Refactored ConfigReader::(is|matches)Default()
|
|
||||||
|
|
||||||
Previously, ConfigReader::isDefault didn't return if the value is
|
|
||||||
the default value but if it matches the default value. So I renamed the
|
|
||||||
method to matchesDefault() and created a new isDefault() method
|
|
||||||
that really returns if the value comes from the default value or
|
|
||||||
it was read from the config file or set.
|
|
||||||
|
|
||||||
So if the user sets a variable in the config file with the same value
|
|
||||||
as the default value, then matchesDefault() returns true, but
|
|
||||||
isDefault() returns false
|
|
||||||
---
|
|
||||||
src/common/ConfigReader.cpp | 6 +++---
|
|
||||||
src/common/ConfigReader.h | 12 +++++++++++-
|
|
||||||
2 files changed, 14 insertions(+), 4 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/common/ConfigReader.cpp b/src/common/ConfigReader.cpp
|
|
||||||
index bdfd22a..cfc9940 100644
|
|
||||||
--- a/src/common/ConfigReader.cpp
|
|
||||||
+++ b/src/common/ConfigReader.cpp
|
|
||||||
@@ -186,17 +186,17 @@ namespace SDDM {
|
|
||||||
* Initialization of the map of nondefault values to be saved
|
|
||||||
*/
|
|
||||||
if (section) {
|
|
||||||
- if (entry && !entry->isDefault())
|
|
||||||
+ if (entry && !entry->matchesDefault())
|
|
||||||
remainingEntries.insert(section, entry);
|
|
||||||
else
|
|
||||||
for (const ConfigEntryBase *b : section->entries().values())
|
|
||||||
- if (!b->isDefault())
|
|
||||||
+ if (!b->matchesDefault())
|
|
||||||
remainingEntries.insert(section, b);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
for (const ConfigSection *s : m_sections)
|
|
||||||
for (const ConfigEntryBase *b : s->entries().values())
|
|
||||||
- if (!b->isDefault())
|
|
||||||
+ if (!b->matchesDefault())
|
|
||||||
remainingEntries.insert(s, b);
|
|
||||||
}
|
|
||||||
|
|
||||||
diff --git a/src/common/ConfigReader.h b/src/common/ConfigReader.h
|
|
||||||
index 29782be..1fb7fd2 100644
|
|
||||||
--- a/src/common/ConfigReader.h
|
|
||||||
+++ b/src/common/ConfigReader.h
|
|
||||||
@@ -77,6 +77,7 @@ namespace SDDM {
|
|
||||||
virtual void setValue(const QString &str) = 0;
|
|
||||||
virtual QString toConfigShort() const = 0;
|
|
||||||
virtual QString toConfigFull() const = 0;
|
|
||||||
+ virtual bool matchesDefault() const = 0;
|
|
||||||
virtual bool isDefault() const = 0;
|
|
||||||
};
|
|
||||||
|
|
||||||
@@ -107,6 +108,7 @@ namespace SDDM {
|
|
||||||
m_description(description),
|
|
||||||
m_default(value),
|
|
||||||
m_value(value),
|
|
||||||
+ m_isDefault(true),
|
|
||||||
m_parent(parent) {
|
|
||||||
m_parent->m_entries[name] = this;
|
|
||||||
}
|
|
||||||
@@ -117,13 +119,19 @@ namespace SDDM {
|
|
||||||
|
|
||||||
void set(const T val) {
|
|
||||||
m_value = val;
|
|
||||||
+ m_isDefault = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
- bool isDefault() const {
|
|
||||||
+ bool matchesDefault() const {
|
|
||||||
return m_value == m_default;
|
|
||||||
}
|
|
||||||
|
|
||||||
+ bool isDefault() const {
|
|
||||||
+ return m_isDefault;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
bool setDefault() {
|
|
||||||
+ m_isDefault = true;
|
|
||||||
if (m_value == m_default)
|
|
||||||
return false;
|
|
||||||
m_value = m_default;
|
|
||||||
@@ -147,6 +155,7 @@ namespace SDDM {
|
|
||||||
|
|
||||||
// specialised for QString
|
|
||||||
void setValue(const QString &str) {
|
|
||||||
+ m_isDefault = false;
|
|
||||||
QTextStream in(qPrintable(str));
|
|
||||||
in >> m_value;
|
|
||||||
}
|
|
||||||
@@ -167,6 +176,7 @@ namespace SDDM {
|
|
||||||
const QString m_description;
|
|
||||||
T m_default;
|
|
||||||
T m_value;
|
|
||||||
+ bool m_isDefault;
|
|
||||||
ConfigSection *m_parent;
|
|
||||||
};
|
|
||||||
|
|
||||||
--
|
|
||||||
2.5.0
|
|
||||||
|
|
@ -1,132 +0,0 @@
|
|||||||
From 668f7c9c08ce4aeee7cc4d2d3386522bfae32cfb Mon Sep 17 00:00:00 2001
|
|
||||||
From: Antonio Larrosa <larrosa@kde.org>
|
|
||||||
Date: Wed, 11 Nov 2015 19:05:36 +0100
|
|
||||||
Subject: [PATCH 22/34] Defines a users threshold to disable avatars
|
|
||||||
|
|
||||||
Defines a new config setting DisableAvatarsThreshold.
|
|
||||||
If the number of users in the system is greater than
|
|
||||||
DisableAvatarsThreshold then avatars are disabled unless
|
|
||||||
explicitly enabled with EnableAvatars. Also, UserModel
|
|
||||||
adds a new disableAvatarsThreshold property so themes can
|
|
||||||
decide if using that config setting to do further optimizations
|
|
||||||
if there's a large number of users (like for example,
|
|
||||||
not show a user list, but username/password editlines).
|
|
||||||
---
|
|
||||||
src/common/Configuration.h | 3 +++
|
|
||||||
src/greeter/UserModel.cpp | 43 +++++++++++++++++++++++++------------------
|
|
||||||
src/greeter/UserModel.h | 2 ++
|
|
||||||
3 files changed, 30 insertions(+), 18 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/common/Configuration.h b/src/common/Configuration.h
|
|
||||||
index 5bd5296..10310c3 100644
|
|
||||||
--- a/src/common/Configuration.h
|
|
||||||
+++ b/src/common/Configuration.h
|
|
||||||
@@ -50,6 +50,9 @@ namespace SDDM {
|
|
||||||
"The files should be named <username>.face.icon"));
|
|
||||||
Entry(CursorTheme, QString, QString(), _S("Cursor theme used in the greeter"));
|
|
||||||
Entry(EnableAvatars, bool, true, _S("Enable display of custom user avatars"));
|
|
||||||
+ Entry(DisableAvatarsThreshold,int, 7, _S("Number of users to use as threshold\n"
|
|
||||||
+ "above which avatars are disabled\n"
|
|
||||||
+ "unless explicitly enabled with EnableAvatars"));
|
|
||||||
);
|
|
||||||
|
|
||||||
// TODO: Not absolutely sure if everything belongs here. Xsessions, VT and probably some more seem universal
|
|
||||||
diff --git a/src/greeter/UserModel.cpp b/src/greeter/UserModel.cpp
|
|
||||||
index f56c67a..ba2a9db 100644
|
|
||||||
--- a/src/greeter/UserModel.cpp
|
|
||||||
+++ b/src/greeter/UserModel.cpp
|
|
||||||
@@ -51,6 +51,9 @@ namespace SDDM {
|
|
||||||
};
|
|
||||||
|
|
||||||
UserModel::UserModel(QObject *parent) : QAbstractListModel(parent), d(new UserModelPrivate()) {
|
|
||||||
+ const QString facesDir = mainConfig.Theme.FacesDir.get();
|
|
||||||
+ const QString defaultFace = QStringLiteral("%1/.face.icon").arg(facesDir);
|
|
||||||
+
|
|
||||||
struct passwd *current_pw;
|
|
||||||
while ((current_pw = getpwent()) != nullptr) {
|
|
||||||
|
|
||||||
@@ -81,23 +84,7 @@ namespace SDDM {
|
|
||||||
user->needsPassword = strcmp(current_pw->pw_passwd, "") != 0;
|
|
||||||
|
|
||||||
// search for face icon
|
|
||||||
- QString facesDir = mainConfig.Theme.FacesDir.get();
|
|
||||||
- QString defaultFace = QStringLiteral("%1/.face.icon").arg(facesDir);
|
|
||||||
- bool avatarsEnabled = mainConfig.Theme.EnableAvatars.get();
|
|
||||||
-
|
|
||||||
- if (avatarsEnabled) {
|
|
||||||
- QString userFace = QStringLiteral("%1/.face.icon").arg(user->homeDir);
|
|
||||||
- QString systemFace = QStringLiteral("%1/%2.face.icon").arg(facesDir).arg(user->name);
|
|
||||||
-
|
|
||||||
- if (QFile::exists(userFace))
|
|
||||||
- user->icon = userFace;
|
|
||||||
- else if (QFile::exists(systemFace))
|
|
||||||
- user->icon = systemFace;
|
|
||||||
- else
|
|
||||||
- user->icon = defaultFace;
|
|
||||||
- } else {
|
|
||||||
- user->icon = defaultFace;
|
|
||||||
- }
|
|
||||||
+ user->icon = defaultFace;
|
|
||||||
|
|
||||||
// add user
|
|
||||||
d->users << user;
|
|
||||||
@@ -108,10 +95,26 @@ 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; });
|
|
||||||
|
|
||||||
+ bool avatarsEnabled = mainConfig.Theme.EnableAvatars.get();
|
|
||||||
+ if (avatarsEnabled && mainConfig.Theme.EnableAvatars.isDefault()) {
|
|
||||||
+ if (d->users.count() > mainConfig.Theme.DisableAvatarsThreshold.get()) avatarsEnabled=false;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
// find out index of the last user
|
|
||||||
for (int i = 0; i < d->users.size(); ++i) {
|
|
||||||
- if (d->users.at(i)->name == stateConfig.Last.User.get())
|
|
||||||
+ UserPtr user { d->users.at(i) };
|
|
||||||
+ if (user->name == stateConfig.Last.User.get())
|
|
||||||
d->lastIndex = i;
|
|
||||||
+
|
|
||||||
+ if (avatarsEnabled) {
|
|
||||||
+ const QString userFace = QStringLiteral("%1/.face.icon").arg(user->homeDir);
|
|
||||||
+ const QString systemFace = QStringLiteral("%1/%2.face.icon").arg(facesDir).arg(user->name);
|
|
||||||
+
|
|
||||||
+ if (QFile::exists(userFace))
|
|
||||||
+ user->icon = userFace;
|
|
||||||
+ else if (QFile::exists(systemFace))
|
|
||||||
+ user->icon = systemFace;
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -165,4 +168,8 @@ namespace SDDM {
|
|
||||||
// return empty value
|
|
||||||
return QVariant();
|
|
||||||
}
|
|
||||||
+
|
|
||||||
+ int UserModel::disableAvatarsThreshold() const {
|
|
||||||
+ return mainConfig.Theme.DisableAvatarsThreshold.get();
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
diff --git a/src/greeter/UserModel.h b/src/greeter/UserModel.h
|
|
||||||
index e089b4d..1bbf77e 100644
|
|
||||||
--- a/src/greeter/UserModel.h
|
|
||||||
+++ b/src/greeter/UserModel.h
|
|
||||||
@@ -33,6 +33,7 @@ namespace SDDM {
|
|
||||||
Q_PROPERTY(int lastIndex READ lastIndex CONSTANT)
|
|
||||||
Q_PROPERTY(QString lastUser READ lastUser CONSTANT)
|
|
||||||
Q_PROPERTY(int count READ rowCount CONSTANT)
|
|
||||||
+ Q_PROPERTY(int disableAvatarsThreshold READ disableAvatarsThreshold CONSTANT)
|
|
||||||
public:
|
|
||||||
enum UserRoles {
|
|
||||||
NameRole = Qt::UserRole + 1,
|
|
||||||
@@ -53,6 +54,7 @@ namespace SDDM {
|
|
||||||
int rowCount(const QModelIndex &parent = QModelIndex()) const override;
|
|
||||||
QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
|
|
||||||
|
|
||||||
+ int disableAvatarsThreshold() const;
|
|
||||||
private:
|
|
||||||
UserModelPrivate *d { nullptr };
|
|
||||||
};
|
|
||||||
--
|
|
||||||
2.5.0
|
|
||||||
|
|
@ -1,246 +0,0 @@
|
|||||||
From 98bcb147acb793bf642e8a7bc9f69facb80e469a Mon Sep 17 00:00:00 2001
|
|
||||||
From: Pier Luigi Fiorini <pierluigi.fiorini@gmail.com>
|
|
||||||
Date: Mon, 9 Nov 2015 20:22:07 +0100
|
|
||||||
Subject: [PATCH 24/34] Rename XDisplay and WaylandDisplay config sections
|
|
||||||
|
|
||||||
Closes #536
|
|
||||||
|
|
||||||
[ChangeLog][Configuration] Rename XDisplay section to X11 and
|
|
||||||
WaylandDisplay to Wayland because the "Display" part is unnecessary.
|
|
||||||
---
|
|
||||||
data/man/sddm.conf.rst.in | 4 ++--
|
|
||||||
src/common/Configuration.h | 4 ++--
|
|
||||||
src/common/Session.cpp | 4 ++--
|
|
||||||
src/daemon/Display.cpp | 4 ++--
|
|
||||||
src/daemon/Seat.cpp | 2 +-
|
|
||||||
src/daemon/XorgDisplayServer.cpp | 14 +++++++-------
|
|
||||||
src/greeter/SessionModel.cpp | 4 ++--
|
|
||||||
src/helper/Backend.cpp | 2 +-
|
|
||||||
src/helper/UserSession.cpp | 14 +++++++-------
|
|
||||||
9 files changed, 26 insertions(+), 26 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/data/man/sddm.conf.rst.in b/data/man/sddm.conf.rst.in
|
|
||||||
index 8d8a7d4..9263788 100644
|
|
||||||
--- a/data/man/sddm.conf.rst.in
|
|
||||||
+++ b/data/man/sddm.conf.rst.in
|
|
||||||
@@ -67,7 +67,7 @@ OPTIONS
|
|
||||||
them altogether.
|
|
||||||
Default value is true.
|
|
||||||
|
|
||||||
-[XDisplay] section:
|
|
||||||
+[X11] section:
|
|
||||||
|
|
||||||
`ServerPath=`
|
|
||||||
Path of the X server.
|
|
||||||
@@ -115,7 +115,7 @@ OPTIONS
|
|
||||||
increase as new displays added.
|
|
||||||
Default value is @MINIMUM_VT@.
|
|
||||||
|
|
||||||
-[WaylandDisplay] section:
|
|
||||||
+[Wayland] section:
|
|
||||||
|
|
||||||
`SessionDir=`
|
|
||||||
Path of the directory containing session files.
|
|
||||||
diff --git a/src/common/Configuration.h b/src/common/Configuration.h
|
|
||||||
index 10310c3..bc9ceb2 100644
|
|
||||||
--- a/src/common/Configuration.h
|
|
||||||
+++ b/src/common/Configuration.h
|
|
||||||
@@ -56,7 +56,7 @@ namespace SDDM {
|
|
||||||
);
|
|
||||||
|
|
||||||
// TODO: Not absolutely sure if everything belongs here. Xsessions, VT and probably some more seem universal
|
|
||||||
- Section(XDisplay,
|
|
||||||
+ Section(X11,
|
|
||||||
Entry(ServerPath, QString, _S("/usr/bin/X"), _S("Path to X server binary"));
|
|
||||||
Entry(ServerArguments, QString, _S("-nolisten tcp"), _S("Arguments passed to the X server invocation"));
|
|
||||||
Entry(XephyrPath, QString, _S("/usr/bin/Xephyr"), _S("Path to Xephyr binary"));
|
|
||||||
@@ -70,7 +70,7 @@ namespace SDDM {
|
|
||||||
Entry(MinimumVT, int, MINIMUM_VT, _S("The lowest virtual terminal number that will be used."));
|
|
||||||
);
|
|
||||||
|
|
||||||
- Section(WaylandDisplay,
|
|
||||||
+ Section(Wayland,
|
|
||||||
Entry(SessionDir, QString, _S("/usr/share/wayland-sessions"), _S("Directory 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(".cache/wayland-errors"), _S("Path to the user session log file"));
|
|
||||||
diff --git a/src/common/Session.cpp b/src/common/Session.cpp
|
|
||||||
index 66d73c9..017cff4 100644
|
|
||||||
--- a/src/common/Session.cpp
|
|
||||||
+++ b/src/common/Session.cpp
|
|
||||||
@@ -108,11 +108,11 @@ namespace SDDM {
|
|
||||||
|
|
||||||
switch (type) {
|
|
||||||
case X11Session:
|
|
||||||
- m_dir = QDir(mainConfig.XDisplay.SessionDir.get());
|
|
||||||
+ m_dir = QDir(mainConfig.X11.SessionDir.get());
|
|
||||||
m_xdgSessionType = QStringLiteral("x11");
|
|
||||||
break;
|
|
||||||
case WaylandSession:
|
|
||||||
- m_dir = QDir(mainConfig.WaylandDisplay.SessionDir.get());
|
|
||||||
+ m_dir = QDir(mainConfig.Wayland.SessionDir.get());
|
|
||||||
m_xdgSessionType = QStringLiteral("wayland");
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
diff --git a/src/daemon/Display.cpp b/src/daemon/Display.cpp
|
|
||||||
index 6bc9965..7e35f3f 100644
|
|
||||||
--- a/src/daemon/Display.cpp
|
|
||||||
+++ b/src/daemon/Display.cpp
|
|
||||||
@@ -108,9 +108,9 @@ namespace SDDM {
|
|
||||||
|
|
||||||
// determine session type
|
|
||||||
const QString &autologinSession = mainConfig.Autologin.Session.get();
|
|
||||||
- if (findSessionEntry(mainConfig.XDisplay.SessionDir.get(), autologinSession)) {
|
|
||||||
+ if (findSessionEntry(mainConfig.X11.SessionDir.get(), autologinSession)) {
|
|
||||||
sessionType = Session::X11Session;
|
|
||||||
- } else if (findSessionEntry(mainConfig.WaylandDisplay.SessionDir.get(), autologinSession)) {
|
|
||||||
+ } else if (findSessionEntry(mainConfig.Wayland.SessionDir.get(), autologinSession)) {
|
|
||||||
sessionType = Session::WaylandSession;
|
|
||||||
} else {
|
|
||||||
qCritical() << "Unable to find autologin session entry" << autologinSession;
|
|
||||||
diff --git a/src/daemon/Seat.cpp b/src/daemon/Seat.cpp
|
|
||||||
index 915d619..3ef1b2f 100644
|
|
||||||
--- a/src/daemon/Seat.cpp
|
|
||||||
+++ b/src/daemon/Seat.cpp
|
|
||||||
@@ -57,7 +57,7 @@ namespace SDDM {
|
|
||||||
|
|
||||||
if (terminalId == -1) {
|
|
||||||
// find unused terminal
|
|
||||||
- terminalId = findUnused(mainConfig.XDisplay.MinimumVT.get(), [&](const int number) {
|
|
||||||
+ terminalId = findUnused(mainConfig.X11.MinimumVT.get(), [&](const int number) {
|
|
||||||
return m_terminalIds.contains(number);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
diff --git a/src/daemon/XorgDisplayServer.cpp b/src/daemon/XorgDisplayServer.cpp
|
|
||||||
index a7e8436..d06d89a 100644
|
|
||||||
--- a/src/daemon/XorgDisplayServer.cpp
|
|
||||||
+++ b/src/daemon/XorgDisplayServer.cpp
|
|
||||||
@@ -95,7 +95,7 @@ namespace SDDM {
|
|
||||||
file_handler.open(QIODevice::WriteOnly);
|
|
||||||
file_handler.close();
|
|
||||||
|
|
||||||
- QString cmd = QStringLiteral("%1 -f %2 -q").arg(mainConfig.XDisplay.XauthPath.get()).arg(file);
|
|
||||||
+ QString cmd = QStringLiteral("%1 -f %2 -q").arg(mainConfig.X11.XauthPath.get()).arg(file);
|
|
||||||
|
|
||||||
// execute xauth
|
|
||||||
FILE *fp = popen(qPrintable(cmd), "w");
|
|
||||||
@@ -128,7 +128,7 @@ namespace SDDM {
|
|
||||||
if (daemonApp->testing()) {
|
|
||||||
QStringList args;
|
|
||||||
args << m_display << QStringLiteral("-ac") << QStringLiteral("-br") << QStringLiteral("-noreset") << QStringLiteral("-screen") << QStringLiteral("800x600");
|
|
||||||
- process->start(mainConfig.XDisplay.XephyrPath.get(), args);
|
|
||||||
+ process->start(mainConfig.X11.XephyrPath.get(), args);
|
|
||||||
|
|
||||||
|
|
||||||
// wait for display server to start
|
|
||||||
@@ -154,16 +154,16 @@ namespace SDDM {
|
|
||||||
}
|
|
||||||
|
|
||||||
// start display server
|
|
||||||
- QStringList args = mainConfig.XDisplay.ServerArguments.get().split(QLatin1Char(' '), QString::SkipEmptyParts);
|
|
||||||
+ QStringList args = mainConfig.X11.ServerArguments.get().split(QLatin1Char(' '), QString::SkipEmptyParts);
|
|
||||||
args << QStringLiteral("-auth") << m_authPath
|
|
||||||
<< QStringLiteral("-background") << QStringLiteral("none")
|
|
||||||
<< QStringLiteral("-noreset")
|
|
||||||
<< QStringLiteral("-displayfd") << QString::number(pipeFds[1])
|
|
||||||
<< QStringLiteral("vt%1").arg(displayPtr()->terminalId());
|
|
||||||
qDebug() << "Running:"
|
|
||||||
- << qPrintable(mainConfig.XDisplay.ServerPath.get())
|
|
||||||
+ << qPrintable(mainConfig.X11.ServerPath.get())
|
|
||||||
<< qPrintable(args.join(QLatin1Char(' ')));
|
|
||||||
- process->start(mainConfig.XDisplay.ServerPath.get(), args);
|
|
||||||
+ process->start(mainConfig.X11.ServerPath.get(), args);
|
|
||||||
|
|
||||||
// wait for display server to start
|
|
||||||
if (!process->waitForStarted()) {
|
|
||||||
@@ -236,7 +236,7 @@ namespace SDDM {
|
|
||||||
// log message
|
|
||||||
qDebug() << "Display server stopped.";
|
|
||||||
|
|
||||||
- QString displayStopCommand = mainConfig.XDisplay.DisplayStopCommand.get();
|
|
||||||
+ QString displayStopCommand = mainConfig.X11.DisplayStopCommand.get();
|
|
||||||
|
|
||||||
// create display setup script process
|
|
||||||
QProcess *displayStopScript = new QProcess();
|
|
||||||
@@ -273,7 +273,7 @@ namespace SDDM {
|
|
||||||
}
|
|
||||||
|
|
||||||
void XorgDisplayServer::setupDisplay() {
|
|
||||||
- QString displayCommand = mainConfig.XDisplay.DisplayCommand.get();
|
|
||||||
+ QString displayCommand = mainConfig.X11.DisplayCommand.get();
|
|
||||||
|
|
||||||
// create display setup script process
|
|
||||||
QProcess *displayScript = new QProcess();
|
|
||||||
diff --git a/src/greeter/SessionModel.cpp b/src/greeter/SessionModel.cpp
|
|
||||||
index e34e922..9b33311 100644
|
|
||||||
--- a/src/greeter/SessionModel.cpp
|
|
||||||
+++ b/src/greeter/SessionModel.cpp
|
|
||||||
@@ -38,8 +38,8 @@ namespace SDDM {
|
|
||||||
};
|
|
||||||
|
|
||||||
SessionModel::SessionModel(QObject *parent) : QAbstractListModel(parent), d(new SessionModelPrivate()) {
|
|
||||||
- populate(Session::X11Session, mainConfig.XDisplay.SessionDir.get());
|
|
||||||
- populate(Session::WaylandSession, mainConfig.WaylandDisplay.SessionDir.get());
|
|
||||||
+ populate(Session::X11Session, mainConfig.X11.SessionDir.get());
|
|
||||||
+ populate(Session::WaylandSession, mainConfig.Wayland.SessionDir.get());
|
|
||||||
}
|
|
||||||
|
|
||||||
SessionModel::~SessionModel() {
|
|
||||||
diff --git a/src/helper/Backend.cpp b/src/helper/Backend.cpp
|
|
||||||
index b19e6ed..b24b62f 100644
|
|
||||||
--- a/src/helper/Backend.cpp
|
|
||||||
+++ b/src/helper/Backend.cpp
|
|
||||||
@@ -67,7 +67,7 @@ namespace SDDM {
|
|
||||||
// determine Xauthority path
|
|
||||||
QString value = QStringLiteral("%1/%2")
|
|
||||||
.arg(QString::fromLocal8Bit(pw->pw_dir))
|
|
||||||
- .arg(mainConfig.XDisplay.UserAuthFile.get());
|
|
||||||
+ .arg(mainConfig.X11.UserAuthFile.get());
|
|
||||||
env.insert(QStringLiteral("XAUTHORITY"), value);
|
|
||||||
}
|
|
||||||
// TODO: I'm fairly sure this shouldn't be done for PAM sessions, investigate!
|
|
||||||
diff --git a/src/helper/UserSession.cpp b/src/helper/UserSession.cpp
|
|
||||||
index 0b16a9a..d541d19 100644
|
|
||||||
--- a/src/helper/UserSession.cpp
|
|
||||||
+++ b/src/helper/UserSession.cpp
|
|
||||||
@@ -46,14 +46,14 @@ namespace SDDM {
|
|
||||||
if (env.value(QStringLiteral("XDG_SESSION_CLASS")) == QStringLiteral("greeter")) {
|
|
||||||
QProcess::start(m_path);
|
|
||||||
} else if (env.value(QStringLiteral("XDG_SESSION_TYPE")) == QStringLiteral("x11")) {
|
|
||||||
- qDebug() << "Starting:" << mainConfig.XDisplay.SessionCommand.get()
|
|
||||||
+ qDebug() << "Starting:" << mainConfig.X11.SessionCommand.get()
|
|
||||||
<< m_path;
|
|
||||||
- QProcess::start(mainConfig.XDisplay.SessionCommand.get(),
|
|
||||||
+ QProcess::start(mainConfig.X11.SessionCommand.get(),
|
|
||||||
QStringList() << m_path);
|
|
||||||
} else if (env.value(QStringLiteral("XDG_SESSION_TYPE")) == QStringLiteral("wayland")) {
|
|
||||||
- qDebug() << "Starting:" << mainConfig.WaylandDisplay.SessionCommand.get()
|
|
||||||
+ qDebug() << "Starting:" << mainConfig.Wayland.SessionCommand.get()
|
|
||||||
<< m_path;
|
|
||||||
- QProcess::start(mainConfig.WaylandDisplay.SessionCommand.get(),
|
|
||||||
+ QProcess::start(mainConfig.Wayland.SessionCommand.get(),
|
|
||||||
QStringList() << m_path);
|
|
||||||
} else {
|
|
||||||
qCritical() << "Unable to run user session: unknown session type";
|
|
||||||
@@ -137,8 +137,8 @@ namespace SDDM {
|
|
||||||
QString sessionLog = QStringLiteral("%1/%2")
|
|
||||||
.arg(QString::fromLocal8Bit(pw->pw_dir))
|
|
||||||
.arg(sessionType == QStringLiteral("x11")
|
|
||||||
- ? mainConfig.XDisplay.SessionLogFile.get()
|
|
||||||
- : mainConfig.WaylandDisplay.SessionLogFile.get());
|
|
||||||
+ ? mainConfig.X11.SessionLogFile.get()
|
|
||||||
+ : mainConfig.Wayland.SessionLogFile.get());
|
|
||||||
|
|
||||||
// create the path
|
|
||||||
QFileInfo finfo(sessionLog);
|
|
||||||
@@ -182,7 +182,7 @@ namespace SDDM {
|
|
||||||
file_handler.open(QIODevice::WriteOnly);
|
|
||||||
file_handler.close();
|
|
||||||
|
|
||||||
- QString cmd = QStringLiteral("%1 -f %2 -q").arg(mainConfig.XDisplay.XauthPath.get()).arg(file);
|
|
||||||
+ QString cmd = QStringLiteral("%1 -f %2 -q").arg(mainConfig.X11.XauthPath.get()).arg(file);
|
|
||||||
|
|
||||||
// execute xauth
|
|
||||||
FILE *fp = popen(qPrintable(cmd), "w");
|
|
||||||
--
|
|
||||||
2.5.0
|
|
||||||
|
|
@ -1,38 +0,0 @@
|
|||||||
From 56f64173991204a1eea4bf6789d68555b94e3eae Mon Sep 17 00:00:00 2001
|
|
||||||
From: Pier Luigi Fiorini <pierluigi.fiorini@gmail.com>
|
|
||||||
Date: Wed, 9 Dec 2015 13:20:20 +0100
|
|
||||||
Subject: [PATCH 25/34] Fix crash reading lists from configuration
|
|
||||||
|
|
||||||
Check the end of line to avoid taking a string reference from a
|
|
||||||
null string resulting in a crash.
|
|
||||||
---
|
|
||||||
src/common/ConfigReader.cpp | 13 ++++++++-----
|
|
||||||
1 file changed, 8 insertions(+), 5 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/common/ConfigReader.cpp b/src/common/ConfigReader.cpp
|
|
||||||
index cfc9940..acf880f 100644
|
|
||||||
--- a/src/common/ConfigReader.cpp
|
|
||||||
+++ b/src/common/ConfigReader.cpp
|
|
||||||
@@ -30,11 +30,14 @@
|
|
||||||
|
|
||||||
QTextStream &operator>>(QTextStream &str, QStringList &list) {
|
|
||||||
list.clear();
|
|
||||||
- foreach(const QStringRef &s, str.readLine().splitRef(QLatin1Char(',')))
|
|
||||||
- {
|
|
||||||
- QStringRef trimmed = s.trimmed();
|
|
||||||
- if (!trimmed.isEmpty())
|
|
||||||
- list.append(trimmed.toString());
|
|
||||||
+ QString line = str.readLine();
|
|
||||||
+ while (!line.isNull()) {
|
|
||||||
+ Q_FOREACH (const QStringRef &s, line.splitRef(QLatin1Char(','))) {
|
|
||||||
+ QStringRef trimmed = s.trimmed();
|
|
||||||
+ if (!trimmed.isEmpty())
|
|
||||||
+ list.append(trimmed.toString());
|
|
||||||
+ }
|
|
||||||
+ line = str.readLine();
|
|
||||||
}
|
|
||||||
return str;
|
|
||||||
}
|
|
||||||
--
|
|
||||||
2.5.0
|
|
||||||
|
|
@ -1,41 +0,0 @@
|
|||||||
From cdd6552bd8a839f29ecb84abd7b98f1c0fcd2b99 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Pier Luigi Fiorini <pierluigi.fiorini@gmail.com>
|
|
||||||
Date: Sat, 16 Jan 2016 18:55:37 +0100
|
|
||||||
Subject: [PATCH 26/34] Do not read multiple lines
|
|
||||||
|
|
||||||
Reading multiple lines wouldn't help here as input comes from a previous
|
|
||||||
readLine().
|
|
||||||
---
|
|
||||||
src/common/ConfigReader.cpp | 14 +++++++-------
|
|
||||||
1 file changed, 7 insertions(+), 7 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/common/ConfigReader.cpp b/src/common/ConfigReader.cpp
|
|
||||||
index acf880f..07eb30c 100644
|
|
||||||
--- a/src/common/ConfigReader.cpp
|
|
||||||
+++ b/src/common/ConfigReader.cpp
|
|
||||||
@@ -30,15 +30,15 @@
|
|
||||||
|
|
||||||
QTextStream &operator>>(QTextStream &str, QStringList &list) {
|
|
||||||
list.clear();
|
|
||||||
+
|
|
||||||
QString line = str.readLine();
|
|
||||||
- while (!line.isNull()) {
|
|
||||||
- Q_FOREACH (const QStringRef &s, line.splitRef(QLatin1Char(','))) {
|
|
||||||
- QStringRef trimmed = s.trimmed();
|
|
||||||
- if (!trimmed.isEmpty())
|
|
||||||
- list.append(trimmed.toString());
|
|
||||||
- }
|
|
||||||
- line = str.readLine();
|
|
||||||
+
|
|
||||||
+ Q_FOREACH (const QStringRef &s, line.splitRef(QLatin1Char(','))) {
|
|
||||||
+ QStringRef trimmed = s.trimmed();
|
|
||||||
+ if (!trimmed.isEmpty())
|
|
||||||
+ list.append(trimmed.toString());
|
|
||||||
}
|
|
||||||
+
|
|
||||||
return str;
|
|
||||||
}
|
|
||||||
|
|
||||||
--
|
|
||||||
2.5.0
|
|
||||||
|
|
@ -1,34 +0,0 @@
|
|||||||
From 1231b5fce8b7f9d99b3a0b8fa17e10d797890c43 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Pier Luigi Fiorini <pierluigi.fiorini@gmail.com>
|
|
||||||
Date: Sat, 16 Jan 2016 18:59:46 +0100
|
|
||||||
Subject: [PATCH 27/34] Fix moc include name
|
|
||||||
|
|
||||||
---
|
|
||||||
src/greeter/KeyboardModel.cpp | 2 +-
|
|
||||||
test/ConfigurationTest.cpp | 3 +--
|
|
||||||
2 files changed, 2 insertions(+), 3 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/greeter/KeyboardModel.cpp b/src/greeter/KeyboardModel.cpp
|
|
||||||
index 3f87c9f..7d40441 100644
|
|
||||||
--- a/src/greeter/KeyboardModel.cpp
|
|
||||||
+++ b/src/greeter/KeyboardModel.cpp
|
|
||||||
@@ -113,4 +113,4 @@ namespace SDDM {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
-#include "KeyboardModel.moc"
|
|
||||||
+#include "moc_KeyboardModel.cpp"
|
|
||||||
diff --git a/test/ConfigurationTest.cpp b/test/ConfigurationTest.cpp
|
|
||||||
index bd07d9f..72bf8c9 100644
|
|
||||||
--- a/test/ConfigurationTest.cpp
|
|
||||||
+++ b/test/ConfigurationTest.cpp
|
|
||||||
@@ -177,5 +177,4 @@ void ConfigurationTest::FileChanged()
|
|
||||||
QVERIFY(config->String.get() == QStringLiteral("b"));
|
|
||||||
}
|
|
||||||
|
|
||||||
-
|
|
||||||
-#include "ConfigurationTest.moc"
|
|
||||||
+#include "moc_ConfigurationTest.cpp"
|
|
||||||
--
|
|
||||||
2.5.0
|
|
||||||
|
|
@ -1,26 +0,0 @@
|
|||||||
From 4e2ee766af16d13345cb4a39ff1859a436bfa0e7 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Steve Gerbino <steve@gerbino.co>
|
|
||||||
Date: Mon, 25 Jan 2016 01:55:33 -0500
|
|
||||||
Subject: [PATCH 28/34] Allow for overriding the text color of PasswordBox
|
|
||||||
|
|
||||||
Fixes #590
|
|
||||||
---
|
|
||||||
components/2.0/PasswordBox.qml | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/components/2.0/PasswordBox.qml b/components/2.0/PasswordBox.qml
|
|
||||||
index 249ed43..8973eb2 100644
|
|
||||||
--- a/components/2.0/PasswordBox.qml
|
|
||||||
+++ b/components/2.0/PasswordBox.qml
|
|
||||||
@@ -34,7 +34,7 @@ FocusScope {
|
|
||||||
property alias hoverColor: txtMain.hoverColor
|
|
||||||
property alias radius: txtMain.radius
|
|
||||||
property alias font: txtMain.font
|
|
||||||
- property alias textColor: txtMain.color
|
|
||||||
+ property alias textColor: txtMain.textColor
|
|
||||||
property alias echoMode: txtMain.echoMode
|
|
||||||
property alias text: txtMain.text
|
|
||||||
|
|
||||||
--
|
|
||||||
2.5.0
|
|
||||||
|
|
@ -1,37 +0,0 @@
|
|||||||
From 4c1212e0d3aa17cded4db2dd394285365d44e7bc Mon Sep 17 00:00:00 2001
|
|
||||||
From: Pier Luigi Fiorini <pierluigi.fiorini@gmail.com>
|
|
||||||
Date: Thu, 28 Jan 2016 08:04:19 +0100
|
|
||||||
Subject: [PATCH 31/34] Add instructions on how to change DPI
|
|
||||||
|
|
||||||
Closes #402
|
|
||||||
---
|
|
||||||
README.md | 16 ++++++++++++++++
|
|
||||||
1 file changed, 16 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/README.md b/README.md
|
|
||||||
index 3961e18..9c23bab 100644
|
|
||||||
--- a/README.md
|
|
||||||
+++ b/README.md
|
|
||||||
@@ -78,3 +78,19 @@ ACLs if your filesystem does support it.
|
|
||||||
setfacl -m u:sddm:x /home/username
|
|
||||||
setfacl -m u:sddm:r /home/username/.face.icon
|
|
||||||
```
|
|
||||||
+
|
|
||||||
+### Custom DPI
|
|
||||||
+
|
|
||||||
+In order to set custom DPI for high resolution screens you should configure
|
|
||||||
+Xorg yourself. An easy way is to pass an additional argument to Xorg.
|
|
||||||
+
|
|
||||||
+Edit ``/etc/sddm.conf``, go to the ``X11`` section and change ``ServerArguments`` like this:
|
|
||||||
+
|
|
||||||
+```
|
|
||||||
+ServerArguments="-nolisten tcp -dpi 192"
|
|
||||||
+```
|
|
||||||
+
|
|
||||||
+to set DPI to 192.
|
|
||||||
+
|
|
||||||
+As an alternative you can edit Xorg configuration ``xorg.conf``, please refer to the
|
|
||||||
+Xorg documentation.
|
|
||||||
--
|
|
||||||
2.5.0
|
|
||||||
|
|
@ -1,38 +0,0 @@
|
|||||||
From ef7b3177adb3673a482c68cb62281cd9a5ca8e8d Mon Sep 17 00:00:00 2001
|
|
||||||
From: =?UTF-8?q?P=C3=A9ter=20Radics?= <mitchnull@gmail.com>
|
|
||||||
Date: Wed, 30 Dec 2015 16:58:15 +0100
|
|
||||||
Subject: [PATCH 32/34] Honor RememberLastUser and RememberLastSession
|
|
||||||
settings.
|
|
||||||
|
|
||||||
Revert to default if RememberLastUser or RememberLastSession is
|
|
||||||
set to false.
|
|
||||||
|
|
||||||
Fix issue #527.
|
|
||||||
---
|
|
||||||
src/daemon/Display.cpp | 10 ++++++++--
|
|
||||||
1 file changed, 8 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/daemon/Display.cpp b/src/daemon/Display.cpp
|
|
||||||
index 7e35f3f..2e6e123 100644
|
|
||||||
--- a/src/daemon/Display.cpp
|
|
||||||
+++ b/src/daemon/Display.cpp
|
|
||||||
@@ -304,8 +304,14 @@ namespace SDDM {
|
|
||||||
m_auth->setCookie(qobject_cast<XorgDisplayServer *>(m_displayServer)->cookie());
|
|
||||||
|
|
||||||
// save last user and last session
|
|
||||||
- stateConfig.Last.User.set(m_auth->user());
|
|
||||||
- stateConfig.Last.Session.set(m_sessionName);
|
|
||||||
+ if (mainConfig.Users.RememberLastUser.get())
|
|
||||||
+ stateConfig.Last.User.set(m_auth->user());
|
|
||||||
+ else
|
|
||||||
+ stateConfig.Last.User.setDefault();
|
|
||||||
+ if (mainConfig.Users.RememberLastSession.get())
|
|
||||||
+ stateConfig.Last.Session.set(m_sessionName);
|
|
||||||
+ else
|
|
||||||
+ stateConfig.Last.Session.setDefault();
|
|
||||||
stateConfig.save();
|
|
||||||
|
|
||||||
if (m_socket)
|
|
||||||
--
|
|
||||||
2.5.0
|
|
||||||
|
|
@ -1,112 +0,0 @@
|
|||||||
From 6d5b36b28907b16280ff78995fef764bb0c573db Mon Sep 17 00:00:00 2001
|
|
||||||
From: Pier Luigi Fiorini <pierluigi.fiorini@gmail.com>
|
|
||||||
Date: Sat, 16 Jan 2016 19:52:09 +0100
|
|
||||||
Subject: [PATCH 33/34] Activate window for the primary screen
|
|
||||||
|
|
||||||
Request activation for the view on the primary screen
|
|
||||||
otherwise text fields won't get focus.
|
|
||||||
|
|
||||||
Closes #501
|
|
||||||
|
|
||||||
[ChangeLog][Greeter] Fix text field focus (issue #501)
|
|
||||||
---
|
|
||||||
src/greeter/GreeterApp.cpp | 31 ++++++++++++++++++++++++++++++-
|
|
||||||
src/greeter/GreeterApp.h | 4 +++-
|
|
||||||
2 files changed, 33 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/greeter/GreeterApp.cpp b/src/greeter/GreeterApp.cpp
|
|
||||||
index 06d13c5..8201a4e 100644
|
|
||||||
--- a/src/greeter/GreeterApp.cpp
|
|
||||||
+++ b/src/greeter/GreeterApp.cpp
|
|
||||||
@@ -1,5 +1,5 @@
|
|
||||||
/***************************************************************************
|
|
||||||
-* Copyright (c) 2015 Pier Luigi Fiorini <pierluigi.fiorini@gmail.com>
|
|
||||||
+* Copyright (c) 2015-2016 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
|
|
||||||
@@ -36,6 +36,7 @@
|
|
||||||
#include <QQmlContext>
|
|
||||||
#include <QQmlEngine>
|
|
||||||
#include <QDebug>
|
|
||||||
+#include <QTimer>
|
|
||||||
#include <QTranslator>
|
|
||||||
|
|
||||||
#include <iostream>
|
|
||||||
@@ -135,6 +136,11 @@ namespace SDDM {
|
|
||||||
|
|
||||||
// handle screens
|
|
||||||
connect(this, &GreeterApp::screenAdded, this, &GreeterApp::addViewForScreen);
|
|
||||||
+#if QT_VERSION >= QT_VERSION_CHECK(5, 6, 0)
|
|
||||||
+ connect(this, &GreeterApp::primaryScreenChanged, this, [this](QScreen *) {
|
|
||||||
+ activatePrimary();
|
|
||||||
+ });
|
|
||||||
+#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
void GreeterApp::addViewForScreen(QScreen *screen) {
|
|
||||||
@@ -144,6 +150,7 @@ namespace SDDM {
|
|
||||||
view->setResizeMode(QQuickView::SizeRootObjectToView);
|
|
||||||
//view->setGeometry(QRect(QPoint(0, 0), screen->geometry().size()));
|
|
||||||
view->setGeometry(screen->geometry());
|
|
||||||
+ m_views.append(view);
|
|
||||||
|
|
||||||
// remove the view when the screen is removed, but we
|
|
||||||
// need to be careful here since Qt will move the view to
|
|
||||||
@@ -201,11 +208,33 @@ namespace SDDM {
|
|
||||||
// show
|
|
||||||
qDebug() << "Adding view for" << screen->name() << screen->geometry();
|
|
||||||
view->show();
|
|
||||||
+
|
|
||||||
+ // activate windows for the primary screen to give focus to text fields
|
|
||||||
+ if (QGuiApplication::primaryScreen() == screen)
|
|
||||||
+ view->requestActivate();
|
|
||||||
}
|
|
||||||
|
|
||||||
void GreeterApp::removeViewForScreen(QQuickView *view) {
|
|
||||||
+ // screen is gone, remove the window
|
|
||||||
m_views.removeOne(view);
|
|
||||||
view->deleteLater();
|
|
||||||
+
|
|
||||||
+#if QT_VERSION < QT_VERSION_CHECK(5, 6, 0)
|
|
||||||
+ // starting from Qt 5.6 we are notified when the primary screen is changed
|
|
||||||
+ // and we request activation for the view when we get the signal, with
|
|
||||||
+ // older version we iterate the views and request activation
|
|
||||||
+ activatePrimary();
|
|
||||||
+#endif
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ void GreeterApp::activatePrimary() {
|
|
||||||
+ // activate and give focus to the window assigned to the primary screen
|
|
||||||
+ Q_FOREACH (QQuickView *view, m_views) {
|
|
||||||
+ if (view->screen() == QGuiApplication::primaryScreen()) {
|
|
||||||
+ view->requestActivate();
|
|
||||||
+ break;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
diff --git a/src/greeter/GreeterApp.h b/src/greeter/GreeterApp.h
|
|
||||||
index 91fc1a9..1ebd981 100644
|
|
||||||
--- a/src/greeter/GreeterApp.h
|
|
||||||
+++ b/src/greeter/GreeterApp.h
|
|
||||||
@@ -1,5 +1,5 @@
|
|
||||||
/***************************************************************************
|
|
||||||
-* Copyright (c) 2015 Pier Luigi Fiorini <pierluigi.fiorini@gmail.com>
|
|
||||||
+* Copyright (c) 2015-2016 Pier Luigi Fiorini <pierluigi.fiorini@gmail.com>
|
|
||||||
* Copyright (c) 2013 Nikita Mikhaylov <nslqqq@gmail.com>
|
|
||||||
*
|
|
||||||
* This program is free software; you can redistribute it and/or modify
|
|
||||||
@@ -65,6 +65,8 @@ namespace SDDM {
|
|
||||||
UserModel *m_userModel { nullptr };
|
|
||||||
GreeterProxy *m_proxy { nullptr };
|
|
||||||
KeyboardModel *m_keyboard { nullptr };
|
|
||||||
+
|
|
||||||
+ void activatePrimary();
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
--
|
|
||||||
2.5.0
|
|
||||||
|
|
@ -1,44 +0,0 @@
|
|||||||
From c3863ccb276469fd7da8b7397c65d96d57cf2759 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Benjamin Robin <dev@benjarobin.fr>
|
|
||||||
Date: Sun, 13 Dec 2015 16:29:45 +0100
|
|
||||||
Subject: [PATCH 34/34] Theme Maui: Prevent losing focus
|
|
||||||
|
|
||||||
And word wrap the user text message
|
|
||||||
---
|
|
||||||
data/themes/maui/Main.qml | 11 ++++++++++-
|
|
||||||
1 file changed, 10 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/data/themes/maui/Main.qml b/data/themes/maui/Main.qml
|
|
||||||
index 6d2092d..260ea9b 100644
|
|
||||||
--- a/data/themes/maui/Main.qml
|
|
||||||
+++ b/data/themes/maui/Main.qml
|
|
||||||
@@ -58,6 +58,13 @@ Rectangle {
|
|
||||||
source = config.defaultBackground
|
|
||||||
}
|
|
||||||
}
|
|
||||||
+
|
|
||||||
+ MouseArea {
|
|
||||||
+ anchors.fill: parent
|
|
||||||
+ onClicked: {
|
|
||||||
+ listView.focus = true;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
|
|
||||||
Rectangle {
|
|
||||||
@@ -164,9 +171,11 @@ Rectangle {
|
|
||||||
anchors.horizontalCenter: parent.horizontalCenter
|
|
||||||
color: "white"
|
|
||||||
text: textConstants.promptSelectUser
|
|
||||||
-
|
|
||||||
+ wrapMode: Text.WordWrap
|
|
||||||
+ width:parent.width - 60
|
|
||||||
font.pixelSize: 20
|
|
||||||
}
|
|
||||||
+
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
--
|
|
||||||
2.5.0
|
|
||||||
|
|
@ -1,27 +1,25 @@
|
|||||||
diff -up sddm-0.13.0/src/common/Configuration.h.fedora_config sddm-0.13.0/src/common/Configuration.h
|
diff -up sddm-0.14.0/src/common/Configuration.h.fedora_config sddm-0.14.0/src/common/Configuration.h
|
||||||
--- sddm-0.13.0/src/common/Configuration.h.fedora_config 2016-03-11 17:00:26.664289307 -0600
|
--- sddm-0.14.0/src/common/Configuration.h.fedora_config 2016-08-28 06:54:03.000000000 -0500
|
||||||
+++ sddm-0.13.0/src/common/Configuration.h 2016-03-11 17:01:03.501586928 -0600
|
+++ sddm-0.14.0/src/common/Configuration.h 2016-08-28 14:36:45.974795657 -0500
|
||||||
@@ -45,7 +45,7 @@ namespace SDDM {
|
@@ -64,21 +64,21 @@ namespace SDDM {
|
||||||
// Name Entries (but it's a regular class again)
|
Entry(XauthPath, QString, _S("/usr/bin/xauth"), _S("Path to xauth binary"));
|
||||||
Section(Theme,
|
Entry(SessionDir, QString, _S("/usr/share/xsessions"), _S("Directory containing available X sessions"));
|
||||||
Entry(ThemeDir, QString, _S(DATA_INSTALL_DIR "/themes"), _S("Theme directory path"));
|
|
||||||
- Entry(Current, QString, _S("maui"), _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"));
|
|
||||||
@@ -65,8 +65,8 @@ namespace SDDM {
|
|
||||||
Entry(SessionCommand, QString, _S(SESSION_COMMAND), _S("Path to a script to execute when starting the desktop session"));
|
Entry(SessionCommand, QString, _S(SESSION_COMMAND), _S("Path to a script to execute when starting the desktop session"));
|
||||||
Entry(SessionLogFile, QString, _S(".cache/xsession-errors"), _S("Path to the user session log file"));
|
- Entry(SessionLogFile, QString, _S(".local/share/sddm/xorg-session.log"), _S("Path to the user session log file"));
|
||||||
|
+ Entry(SessionLogFile, QString, _S(".cache/xsession-errors"), _S("Path to the user session log file"));
|
||||||
Entry(UserAuthFile, QString, _S(".Xauthority"), _S("Path to the Xauthority file"));
|
Entry(UserAuthFile, QString, _S(".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(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(DisplayStopCommand, QString, _S(DATA_INSTALL_DIR "/scripts/Xstop"), _S("Path to a script to execute when stopping the display server"));
|
||||||
+ Entry(DisplayCommand, QString, _S("/etc/sddm/Xsetup"), _S("Path to a script to execute when starting the display server"));
|
+ 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("/etc/sddm/Xstop"), _S("Path to a script to execute when stopping 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(MinimumVT, int, MINIMUM_VT, _S("The lowest virtual terminal number that will be used."));
|
Entry(MinimumVT, int, MINIMUM_VT, _S("The lowest virtual terminal number that will be used."));
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -77,7 +77,7 @@ namespace SDDM {
|
Section(Wayland,
|
||||||
|
Entry(SessionDir, QString, _S("/usr/share/wayland-sessions"), _S("Directory 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"));
|
||||||
);
|
);
|
||||||
|
|
||||||
Section(Users,
|
Section(Users,
|
Loading…
Reference in new issue