From edc5a24fea8d678e454bcf131693f5f9fc84c8f5 Mon Sep 17 00:00:00 2001 From: MSVSphere Packaging Team Date: Tue, 16 Jan 2024 01:40:16 +0300 Subject: [PATCH] update --- ...-toplevel-fixed-positions-on-wayland.patch | 69 +++++++++++ ...e-to-remove-manually-added-wallpaper.patch | 38 ++++++ SOURCES/startkde.patch | 114 ++++++++++++++++++ SPECS/plasma-workspace.spec | 2 +- 4 files changed, 222 insertions(+), 1 deletion(-) create mode 100644 SOURCES/disable-toplevel-fixed-positions-on-wayland.patch create mode 100644 SOURCES/plasma-workspace-5.25.3.1-fix-unable-to-remove-manually-added-wallpaper.patch create mode 100644 SOURCES/startkde.patch diff --git a/SOURCES/disable-toplevel-fixed-positions-on-wayland.patch b/SOURCES/disable-toplevel-fixed-positions-on-wayland.patch new file mode 100644 index 0000000..9de628e --- /dev/null +++ b/SOURCES/disable-toplevel-fixed-positions-on-wayland.patch @@ -0,0 +1,69 @@ +From 1be046edd455969b74417ded6871d25eba8a1112 Mon Sep 17 00:00:00 2001 +From: David Edmundson +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 diff --git a/SOURCES/plasma-workspace-5.25.3.1-fix-unable-to-remove-manually-added-wallpaper.patch b/SOURCES/plasma-workspace-5.25.3.1-fix-unable-to-remove-manually-added-wallpaper.patch new file mode 100644 index 0000000..7b92eda --- /dev/null +++ b/SOURCES/plasma-workspace-5.25.3.1-fix-unable-to-remove-manually-added-wallpaper.patch @@ -0,0 +1,38 @@ +From d6d47393bab32dc60b43e0eeac16c035000a0358 Mon Sep 17 00:00:00 2001 +From: Eugene Popov +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(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(selected.constBegin(), selected.constEnd()); + }); + m_findToken = token; + finder->start(); +-- +GitLab + diff --git a/SOURCES/startkde.patch b/SOURCES/startkde.patch new file mode 100644 index 0000000..e702c44 --- /dev/null +++ b/SOURCES/startkde.patch @@ -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 diff --git a/SPECS/plasma-workspace.spec b/SPECS/plasma-workspace.spec index 6a7f8b5..8896f50 100644 --- a/SPECS/plasma-workspace.spec +++ b/SPECS/plasma-workspace.spec @@ -804,7 +804,7 @@ fi %changelog -* Mon Jan 15 2024 Arkady L. Shane - 5.27.6-1R.1 +* Mon Jan 15 2024 Arkady L. Shane - 5.27.6-1.1 - Rebuilt for MSVSphere 9.3 * Wed Nov 29 2023 Troy Dawson - 5.27.6-1.1