plasma5-workspace/0003-No-longer-export-QT_QPA_PLATFORM-env-variable-to-the.patch
Luca Beltrame fb44578e9c Accepting request 590845 from home:Vogtinator:qxcbonwayland
- Add patches to not set QT_QPA_PLATFORM in a wayland session:
  * 0001-Call-KLocalizedString-setApplicationDomain-after-Q-A.patch
  * 0002-Add-platform-detection-to-KWorkspace-library-to-adju.patch
  * 0003-No-longer-export-QT_QPA_PLATFORM-env-variable-to-the.patch
  * 0001-Set-XDG_SESSION_TYPE-wayland-in-startplasmacomposito.patch
- Set GDK_BACKEND=x11 to work around GTK3 bugs:
  * 0001-Set-GTK_BACKEND-x11-in-a-wayland-session.patch
- Add a suffix to the wayland session's name:
  * 0001-Add-suffix-to-the-wayland-session-s-name.patch
- Apply upstream patches before downstream patches

OBS-URL: https://build.opensuse.org/request/show/590845
OBS-URL: https://build.opensuse.org/package/show/KDE:Frameworks5/plasma5-workspace?expand=0&rev=388
2018-03-24 21:06:03 +00:00

90 lines
3.1 KiB
Diff

From 9dd3d4711ac74fd9d93344db7e6c2691026f21c5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Martin=20Fl=C3=B6ser?= <mgraesslin@kde.org>
Date: Sun, 18 Mar 2018 11:08:02 +0100
Subject: [PATCH 3/3] No longer export QT_QPA_PLATFORM env variable to the
session
Summary:
As discussed the env variables are no longer exported. Thus Qt
applications follow the default qpa platform they are compiled with and
thus still function if they are packaged with a Qt without QtWayland.
Plasma's internal processes pick the qpa platform depending on the
session type as well as our flatpak apps.
KRunner and Plasmashell are adjusted to not leak the env variable they
set for themselves.
Test Plan:
Started a wayland session, verified with KWin's debug console
that plasmashell and krunner are wayland. Launched kwrite from both plasma
and krunner and verified that it's xcb
Reviewers: #plasma
Subscribers: plasma-devel
Tags: #plasma
Differential Revision: https://phabricator.kde.org/D11447
---
krunner/main.cpp | 5 +++++
shell/main.cpp | 5 +++++
startkde/startplasmacompositor.cmake | 4 ----
3 files changed, 10 insertions(+), 4 deletions(-)
diff --git a/krunner/main.cpp b/krunner/main.cpp
index 06bf47c0..329eca7e 100644
--- a/krunner/main.cpp
+++ b/krunner/main.cpp
@@ -44,9 +44,14 @@ int main(int argc, char **argv)
qunsetenv("QT_DEVICE_PIXEL_RATIO");
QCoreApplication::setAttribute(Qt::AA_DisableHighDpiScaling);
+ const bool qpaVariable = qEnvironmentVariableIsSet("QT_QPA_PLATFORM");
KWorkSpace::detectPlatform(argc, argv);
QQuickWindow::setDefaultAlphaBuffer(true);
QApplication app(argc, argv);
+ if (!qpaVariable) {
+ // don't leak the env variable to processes we start
+ qunsetenv("QT_QPA_PLATFORM");
+ }
KLocalizedString::setApplicationDomain("krunner");
KQuickAddons::QtQuickSettings::init();
diff --git a/shell/main.cpp b/shell/main.cpp
index 09cca77a..037eb8f3 100644
--- a/shell/main.cpp
+++ b/shell/main.cpp
@@ -57,8 +57,13 @@ int main(int argc, char *argv[])
QQuickWindow::setDefaultAlphaBuffer(true);
+ const bool qpaVariable = qEnvironmentVariableIsSet("QT_QPA_PLATFORM");
KWorkSpace::detectPlatform(argc, argv);
QApplication app(argc, argv);
+ if (!qpaVariable) {
+ // don't leak the env variable to processes we start
+ qunsetenv("QT_QPA_PLATFORM");
+ }
KLocalizedString::setApplicationDomain("plasmashell");
// The executable's path is added to the library/plugin paths.
diff --git a/startkde/startplasmacompositor.cmake b/startkde/startplasmacompositor.cmake
index 8ac47aa7..dd9e304d 100644
--- a/startkde/startplasmacompositor.cmake
+++ b/startkde/startplasmacompositor.cmake
@@ -218,10 +218,6 @@ export KDE_SESSION_UID
XDG_CURRENT_DESKTOP=KDE
export XDG_CURRENT_DESKTOP
-#enforce wayland QPA
-QT_QPA_PLATFORM=wayland
-export QT_QPA_PLATFORM
-
# kwin_wayland can possibly also start dbus-activated services which need env variables.
# In that case, the update in startplasma might be too late.
if which dbus-update-activation-environment >/dev/null 2>/dev/null ; then
--
2.16.2