update patch "Qt applications lose system theme if launched via dbus activation" (#1754395)
parent
f5f45c432e
commit
245480a5a8
@ -0,0 +1,41 @@
|
||||
diff -r -U3 plasma-workspace-5.18.4.1.orig/startkde/startplasma.cpp plasma-workspace-5.18.4.1/startkde/startplasma.cpp
|
||||
--- plasma-workspace-5.18.4.1.orig/startkde/startplasma.cpp 2020-03-31 17:33:37.000000000 +0300
|
||||
+++ plasma-workspace-5.18.4.1/startkde/startplasma.cpp 2020-04-03 20:43:32.178541309 +0300
|
||||
@@ -22,6 +22,8 @@
|
||||
#include <QStandardPaths>
|
||||
#include <QTextStream>
|
||||
#include <QDBusConnectionInterface>
|
||||
+#include <QRegularExpression>
|
||||
+#include <QProcessEnvironment>
|
||||
#include <KConfig>
|
||||
#include <KConfigGroup>
|
||||
|
||||
@@ -64,8 +66,26 @@
|
||||
int runSync(const QString& program, const QStringList &args, const QStringList &env)
|
||||
{
|
||||
QProcess p;
|
||||
- if (!env.isEmpty())
|
||||
- p.setEnvironment(QProcess::systemEnvironment() << env);
|
||||
+ auto pEnv = QProcessEnvironment::systemEnvironment();
|
||||
+ if (!env.isEmpty()) {
|
||||
+ for (const auto &value : env) {
|
||||
+ int pos = value.indexOf(QStringLiteral("="));
|
||||
+ if (pos != -1) {
|
||||
+ pEnv.insert(value.left(pos), value.mid(pos+1));
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+ if (program.endsWith(QStringLiteral("dbus-update-activation-environment"))) {
|
||||
+ const QRegularExpression re(QStringLiteral("[^A-Z0-9_]"));
|
||||
+ for (const auto &key : pEnv.keys()) {
|
||||
+ const auto match = re.match(key);
|
||||
+ if (match.hasMatch()) {
|
||||
+ pEnv.remove(key);
|
||||
+ qInfo() << "program:" << program << "environment variable removed:" << key;
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+ p.setProcessEnvironment(pEnv);
|
||||
p.setProcessChannelMode(QProcess::ForwardedChannels);
|
||||
p.start(program, args);
|
||||
// qDebug() << "started..." << program << args;
|
@ -1,29 +0,0 @@
|
||||
diff -r -U3 plasma-workspace-5.18.4.1.orig/startkde/startplasma.cpp plasma-workspace-5.18.4.1/startkde/startplasma.cpp
|
||||
--- plasma-workspace-5.18.4.1.orig/startkde/startplasma.cpp 2020-03-31 17:33:37.000000000 +0300
|
||||
+++ plasma-workspace-5.18.4.1/startkde/startplasma.cpp 2020-04-03 12:47:34.812587755 +0300
|
||||
@@ -22,6 +22,8 @@
|
||||
#include <QStandardPaths>
|
||||
#include <QTextStream>
|
||||
#include <QDBusConnectionInterface>
|
||||
+#include <QRegularExpression>
|
||||
+#include <QProcessEnvironment>
|
||||
#include <KConfig>
|
||||
#include <KConfigGroup>
|
||||
|
||||
@@ -265,6 +267,16 @@
|
||||
// In that case, the update in startplasma might be too late.
|
||||
bool syncDBusEnvironment()
|
||||
{
|
||||
+ const QRegularExpression re(QString::fromUtf8("[^A-Z0-9_]"));
|
||||
+ const auto env = QProcessEnvironment::systemEnvironment();
|
||||
+ for (const auto &key : env.keys()) {
|
||||
+ const auto match = re.match(key);
|
||||
+ if (match.hasMatch()) {
|
||||
+// qDebug() << "environment variable filtered:" << key;
|
||||
+ qunsetenv(key.toUtf8().constData());
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
int exitCode;
|
||||
// At this point all environment variables are set, let's send it to the DBus session server to update the activation environment
|
||||
if (!QStandardPaths::findExecutable(QStringLiteral("dbus-update-activation-environment")).isEmpty()) {
|
Loading…
Reference in new issue