You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
99 lines
4.7 KiB
99 lines
4.7 KiB
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
|
|
|