parent
ec79d06fb4
commit
edc5a24fea
@ -0,0 +1,69 @@
|
||||
From 1be046edd455969b74417ded6871d25eba8a1112 Mon Sep 17 00:00:00 2001
|
||||
From: David Edmundson <kde@davidedmundson.co.uk>
|
||||
Date: Mon, 27 Jun 2022 17:12:09 +0200
|
||||
Subject: [PATCH] Disable toplevel fixed positions on Wayland
|
||||
|
||||
Given that the wayland protocol does not have window positions a recent
|
||||
change to Qt development branch avoids having a mismatch of positions
|
||||
and tells client code the window is at the topleft of the screen. This
|
||||
fixes multiple bugs.
|
||||
|
||||
Unfortuantely this breaks a few usages within plasma where a
|
||||
side-channel sends that absolute positional information over a bespoke
|
||||
protocol. Currently we proxy this all through QWindow geometry where the
|
||||
new Qt behaviour will throw is askew.
|
||||
|
||||
Whilst our longterm plans are to find future options away from the
|
||||
plasmashell protocol we may as well have our Qt6
|
||||
build work given the patch is trivial and harmless.
|
||||
|
||||
It also allows for potential backporting if our software is
|
||||
already secured against issues.
|
||||
---
|
||||
krunner/main.cpp | 2 ++
|
||||
shell/main.cpp | 3 +++
|
||||
2 files changed, 5 insertions(+)
|
||||
|
||||
diff --git a/krunner/main.cpp b/krunner/main.cpp
|
||||
index a05402a01..f19382cad 100644
|
||||
--- a/krunner/main.cpp
|
||||
+++ b/krunner/main.cpp
|
||||
@@ -34,6 +34,7 @@ int main(int argc, char **argv)
|
||||
QCoreApplication::setAttribute(Qt::AA_DisableHighDpiScaling);
|
||||
}
|
||||
|
||||
+ qputenv("QT_WAYLAND_DISABLE_FIXED_POSITIONS", {});
|
||||
const bool qpaVariable = qEnvironmentVariableIsSet("QT_QPA_PLATFORM");
|
||||
KWorkSpace::detectPlatform(argc, argv);
|
||||
QQuickWindow::setDefaultAlphaBuffer(true);
|
||||
@@ -42,6 +43,7 @@ int main(int argc, char **argv)
|
||||
// don't leak the env variable to processes we start
|
||||
qunsetenv("QT_QPA_PLATFORM");
|
||||
}
|
||||
+ qunsetenv("QT_WAYLAND_DISABLE_FIXED_POSITIONS");
|
||||
KLocalizedString::setApplicationDomain("krunner");
|
||||
|
||||
// TODO: Make it a QGuiApplication once we don't depend on KDELibs4Support
|
||||
diff --git a/shell/main.cpp b/shell/main.cpp
|
||||
index 26e4ecede..147483df4 100644
|
||||
--- a/shell/main.cpp
|
||||
+++ b/shell/main.cpp
|
||||
@@ -79,6 +79,7 @@ int main(int argc, char *argv[])
|
||||
|
||||
oldCategoryFilter = QLoggingCategory::installFilter(filterConnectionSyntaxWarning);
|
||||
|
||||
+ qputenv("QT_WAYLAND_DISABLE_FIXED_POSITIONS", {});
|
||||
const bool qpaVariable = qEnvironmentVariableIsSet("QT_QPA_PLATFORM");
|
||||
KWorkSpace::detectPlatform(argc, argv);
|
||||
QApplication app(argc, argv);
|
||||
@@ -86,6 +87,8 @@ int main(int argc, char *argv[])
|
||||
// don't leak the env variable to processes we start
|
||||
qunsetenv("QT_QPA_PLATFORM");
|
||||
}
|
||||
+ qunsetenv("QT_WAYLAND_DISABLE_FIXED_POSITIONS");
|
||||
+
|
||||
KLocalizedString::setApplicationDomain("plasmashell");
|
||||
|
||||
// The executable's path is added to the library/plugin paths.
|
||||
--
|
||||
GitLab
|
@ -0,0 +1,38 @@
|
||||
From d6d47393bab32dc60b43e0eeac16c035000a0358 Mon Sep 17 00:00:00 2001
|
||||
From: Eugene Popov <popov895@ukr.net>
|
||||
Date: Sun, 24 Jul 2022 00:18:44 +0000
|
||||
Subject: [PATCH] [FIX] Unable to remove manually added wallpaper
|
||||
|
||||
It's not necessary to assign m_removableWallpapers asynchronously, because the value assigned to it doesn't depend on the result of that asynch function.
|
||||
|
||||
!!! This MR is for the Plasma/5.25 branch only and it SHOULD NOT be cherry-picket into the master branch.
|
||||
|
||||
BUG: 457019
|
||||
---
|
||||
wallpapers/image/plugin/backgroundlistmodel.cpp | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/wallpapers/image/plugin/backgroundlistmodel.cpp b/wallpapers/image/plugin/backgroundlistmodel.cpp
|
||||
index 8c5630712..0b12470a5 100644
|
||||
--- a/wallpapers/image/plugin/backgroundlistmodel.cpp
|
||||
+++ b/wallpapers/image/plugin/backgroundlistmodel.cpp
|
||||
@@ -107,6 +107,8 @@ void BackgroundListModel::reload(const QStringList &selected)
|
||||
return;
|
||||
}
|
||||
|
||||
+ m_removableWallpapers = QSet<QString>(selected.constBegin(), selected.constEnd());
|
||||
+
|
||||
const QStringList dirs = QStandardPaths::locateAll(QStandardPaths::GenericDataLocation, QStringLiteral("wallpapers/"), QStandardPaths::LocateDirectory);
|
||||
|
||||
BackgroundFinder *finder = new BackgroundFinder(m_wallpaper.data(), dirs);
|
||||
@@ -117,7 +119,6 @@ void BackgroundListModel::reload(const QStringList &selected)
|
||||
}
|
||||
|
||||
processPaths(selected + wallpapersFound);
|
||||
- m_removableWallpapers = QSet<QString>(selected.constBegin(), selected.constEnd());
|
||||
});
|
||||
m_findToken = token;
|
||||
finder->start();
|
||||
--
|
||||
GitLab
|
||||
|
@ -0,0 +1,114 @@
|
||||
diff -up plasma-workspace-5.12.5/startkde/startkde.cmake.startkde plasma-workspace-5.12.5/startkde/startkde.cmake
|
||||
--- plasma-workspace-5.12.5/startkde/startkde.cmake.startkde 2018-05-01 08:03:40.000000000 -0500
|
||||
+++ plasma-workspace-5.12.5/startkde/startkde.cmake 2018-05-06 21:12:49.592504191 -0500
|
||||
@@ -279,22 +237,21 @@ if test $? -ne 0; then
|
||||
# Startup error
|
||||
echo 'startkde: Could not sync environment to dbus.' 1>&2
|
||||
test -n "$ksplash_pid" && kill "$ksplash_pid" 2>/dev/null
|
||||
- xmessage -geometry 500x100 "Could not sync environment to dbus."
|
||||
+ xmessage "Could not sync environment to dbus."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
-# We set LD_BIND_NOW to increase the efficiency of kdeinit.
|
||||
-# kdeinit unsets this variable before loading applications.
|
||||
-LD_BIND_NOW=true @CMAKE_INSTALL_FULL_LIBEXECDIR_KF5@/start_kdeinit_wrapper --kded +kcminit_startup
|
||||
+@CMAKE_INSTALL_FULL_LIBEXECDIR_KF5@/start_kdeinit_wrapper --kded +kcminit_startup
|
||||
if test $? -ne 0; then
|
||||
# Startup error
|
||||
echo 'startkde: Could not start kdeinit5. Check your installation.' 1>&2
|
||||
test -n "$ksplash_pid" && kill "$ksplash_pid" 2>/dev/null
|
||||
- xmessage -geometry 500x100 "Could not start kdeinit5. Check your installation."
|
||||
+ xmessage "Could not start kdeinit5. Check your installation."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
-qdbus org.kde.KSplash /KSplash org.kde.KSplash.setStage kinit &
|
||||
+qdbus=qdbus-qt5
|
||||
+$qdbus org.kde.KSplash /KSplash org.kde.KSplash.setStage kinit &
|
||||
|
||||
# finally, give the session control to the session manager
|
||||
# see kdebase/ksmserver for the description of the rest of the startup sequence
|
||||
@@ -327,13 +284,13 @@ if test x"$wait_drkonqi"x = x"true"x ; t
|
||||
# wait for remaining drkonqi instances with timeout (in seconds)
|
||||
wait_drkonqi_timeout=`kreadconfig5 --file startkderc --group WaitForDrKonqi --key Timeout --default 900`
|
||||
wait_drkonqi_counter=0
|
||||
- while qdbus | grep "^[^w]*org.kde.drkonqi" > /dev/null ; do
|
||||
+ while $qdbus | grep "^[^w]*org.kde.drkonqi" > /dev/null ; do
|
||||
sleep 5
|
||||
wait_drkonqi_counter=$((wait_drkonqi_counter+5))
|
||||
if test "$wait_drkonqi_counter" -ge "$wait_drkonqi_timeout" ; then
|
||||
# ask remaining drkonqis to die in a graceful way
|
||||
- qdbus | grep 'org.kde.drkonqi-' | while read address ; do
|
||||
- qdbus "$address" "/MainApplication" "quit"
|
||||
+ $qdbus | grep 'org.kde.drkonqi-' | while read address ; do
|
||||
+ $qdbus "$address" "/MainApplication" "quit"
|
||||
done
|
||||
break
|
||||
fi
|
||||
diff -up plasma-workspace-5.12.5/startkde/startplasma.cmake.startkde plasma-workspace-5.12.5/startkde/startplasma.cmake
|
||||
--- plasma-workspace-5.12.5/startkde/startplasma.cmake.startkde 2018-05-01 08:03:40.000000000 -0500
|
||||
+++ plasma-workspace-5.12.5/startkde/startplasma.cmake 2018-05-06 21:11:54.749023404 -0500
|
||||
@@ -140,7 +140,8 @@ if test $? -ne 0; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
-qdbus org.kde.KSplash /KSplash org.kde.KSplash.setStage kinit &
|
||||
+qdbus=qdbus-qt5
|
||||
+$qdbus org.kde.KSplash /KSplash org.kde.KSplash.setStage kinit &
|
||||
|
||||
# finally, give the session control to the session manager
|
||||
# see kdebase/ksmserver for the description of the rest of the startup sequence
|
||||
@@ -169,13 +170,13 @@ if test x"$wait_drkonqi"x = x"true"x ; t
|
||||
# wait for remaining drkonqi instances with timeout (in seconds)
|
||||
wait_drkonqi_timeout=`kreadconfig5 --file startkderc --group WaitForDrKonqi --key Timeout --default 900`
|
||||
wait_drkonqi_counter=0
|
||||
- while qdbus | grep "^[^w]*org.kde.drkonqi" > /dev/null ; do
|
||||
+ while $qdbus | grep "^[^w]*org.kde.drkonqi" > /dev/null ; do
|
||||
sleep 5
|
||||
wait_drkonqi_counter=$((wait_drkonqi_counter+5))
|
||||
if test "$wait_drkonqi_counter" -ge "$wait_drkonqi_timeout" ; then
|
||||
# ask remaining drkonqis to die in a graceful way
|
||||
- qdbus | grep 'org.kde.drkonqi-' | while read address ; do
|
||||
- qdbus "$address" "/MainApplication" "quit"
|
||||
+ $qdbus | grep 'org.kde.drkonqi-' | while read address ; do
|
||||
+ $qdbus "$address" "/MainApplication" "quit"
|
||||
done
|
||||
break
|
||||
fi
|
||||
diff -up plasma-workspace-5.12.5/startkde/startplasmacompositor.cmake.startkde plasma-workspace-5.12.5/startkde/startplasmacompositor.cmake
|
||||
--- plasma-workspace-5.12.5/startkde/startplasmacompositor.cmake.startkde 2018-05-01 08:03:40.000000000 -0500
|
||||
+++ plasma-workspace-5.12.5/startkde/startplasmacompositor.cmake 2018-05-06 21:11:54.749023404 -0500
|
||||
@@ -3,6 +3,8 @@
|
||||
# DEFAULT Plasma STARTUP SCRIPT ( @PROJECT_VERSION@ )
|
||||
#
|
||||
|
||||
+qdbus=qdbus-qt5
|
||||
+
|
||||
# We need to create config folder so we can write startupconfigkeys
|
||||
if [ ${XDG_CONFIG_HOME} ]; then
|
||||
configDir=$XDG_CONFIG_HOME;
|
||||
@@ -120,12 +122,12 @@ fi
|
||||
|
||||
# Get a property value from org.freedesktop.locale1
|
||||
queryLocale1() {
|
||||
- qdbus --system org.freedesktop.locale1 /org/freedesktop/locale1 "$1"
|
||||
+ $qdbus --system org.freedesktop.locale1 /org/freedesktop/locale1 "$1"
|
||||
}
|
||||
|
||||
# Query whether org.freedesktop.locale1 is available. If it is, try to
|
||||
# set XKB_DEFAULT_{MODEL,LAYOUT,VARIANT,OPTIONS} accordingly.
|
||||
-if qdbus --system org.freedesktop.locale1 >/dev/null 2>/dev/null; then
|
||||
+if $qdbus --system org.freedesktop.locale1 >/dev/null 2>/dev/null; then
|
||||
# Do not overwrite existing values. There is no point in setting only some
|
||||
# of them as then they would not match anymore.
|
||||
if [ -z "${XKB_DEFAULT_MODEL}" -a -z "${XKB_DEFAULT_LAYOUT}" -a \
|
||||
@@ -175,7 +177,7 @@ fi
|
||||
export XDG_DATA_DIRS
|
||||
|
||||
# Make sure that D-Bus is running
|
||||
-if qdbus >/dev/null 2>/dev/null; then
|
||||
+if $qdbus >/dev/null 2>/dev/null; then
|
||||
: # ok
|
||||
else
|
||||
echo 'startplasmacompositor: Could not start D-Bus. Can you call qdbus?' 1>&2
|
Loading…
Reference in new issue