diff --git a/sonic-desktop-interface/sonic-desktop-interface-6.6.4-x11-panel-lag.patch b/sonic-desktop-interface/sonic-desktop-interface-6.6.4-x11-panel-lag.patch new file mode 100644 index 0000000..9f5dc0b --- /dev/null +++ b/sonic-desktop-interface/sonic-desktop-interface-6.6.4-x11-panel-lag.patch @@ -0,0 +1,39 @@ +From: Anders da Silva Rytter Hansen +Date: Thu, 2 Jul 2026 10:47:00 -0300 +Subject: [PATCH] desktoppackage: disable panel floating/opacity animations + +Disable the floating and opacity transitions so the panel changes state instantly and stays fluid. +This fixes the UI lag, when switching virtual desktops. + +References: https://bugs.kde.org/show_bug.cgi?id=484501 and https://github.com/orgs/Sonic-DE/discussions/20 +--- + desktoppackage/contents/views/Panel.qml | 8 +++----- + 1 file changed, 3 insertions(+), 5 deletions(-) + +diff --git a/desktoppackage/contents/views/Panel.qml b/desktoppackage/contents/views/Panel.qml +--- a/desktoppackage/contents/views/Panel.qml ++++ b/desktoppackage/contents/views/Panel.qml +@@ -133,19 +133,15 @@ + } + + // Floatingness is a value in [0, 1] that's multiplied to the floating margin; 0: not floating, 1: floating, between 0 and 1: animation between the two states +- readonly property int floatingnessAnimationDuration: Kirigami.Units.longDuration ++ // Disable the panel geometry animation: animated resizes of the panel ++ // window cause synchronous compositor work that stalls the desktop during ++ // virtual-desktop switches. ++ readonly property int floatingnessAnimationDuration: 0 + property double floatingnessTarget: 0.0 // The animation is handled in panelview.cpp for efficiency + property double floatingness: 0.0 + + // PanelOpacity is a value in [0, 1] that's used as the opacity of the opaque elements over the transparent ones; values between 0 and 1 are used for animations + property double panelOpacity +- Behavior on panelOpacity { +- NumberAnimation { +- duration: Kirigami.Units.longDuration +- easing.type: Easing.OutCubic +- } +- } +- + KSvg.FrameSvgItem { + id: translucentItem + visible: root.floatingness === 0 && root.panelOpacity !== 1 diff --git a/sonic-desktop-interface/sonic-desktop-interface.spec b/sonic-desktop-interface/sonic-desktop-interface.spec index 90bf202..34a5dcb 100644 --- a/sonic-desktop-interface/sonic-desktop-interface.spec +++ b/sonic-desktop-interface/sonic-desktop-interface.spec @@ -11,7 +11,7 @@ Name: sonic-desktop-interface Summary: Plasma Desktop shell Version: 6.6.4 -Release: 11%{?dist} +Release: 12%{?dist} License: BSD-2-Clause AND BSD-3-Clause AND CC0-1.0 AND GPL-2.0-only AND GPL-2.0-or-later AND GPL-3.0-only AND LGPL-2.0-only AND LGPL-2.0-or-later AND LGPL-2.1-only AND LGPL-2.1-or-later AND LGPL-3.0-only AND (GPL-2.0-only OR GPL-3.0-only) AND (LGPL-2.1-only OR LGPL-3.0-only) #URL: https://invent.kde.org/plasma/%{name} @@ -35,6 +35,11 @@ Source20: breeze-fedora-0.3.tar.gz # Do not remove this as it breaks Fedora's QA policy Patch101: hide-virtual-keyboard-indicator-on-sddm.patch +# Disable panel floating/opacity animations. Animated panel resizes cause +# synchronous compositor work that stalls the desktop when switching virtual +# desktops, so make the panel state changes instant instead. +Patch102: sonic-desktop-interface-6.6.4-x11-panel-lag.patch + ## upstreamable patches BuildRequires: pkgconfig(libusb) @@ -393,6 +398,10 @@ desktop-file-validate %{buildroot}/%{_datadir}/applications/kaccess.desktop %changelog +* Thu Jul 02 2026 Anders da Silva Rytter Hansen - 6.6.4-12 +- Disable panel floating/opacity animations to avoid stutter when the panel + changes state (e.g. switching virtual desktops). + * Fri Apr 10 2026 Steve Cossette - 6.6.4-1 - 6.6.4 diff --git a/sonic-login-manager/sonic-login-manager.spec b/sonic-login-manager/sonic-login-manager.spec index d336acc..e0c9750 100644 --- a/sonic-login-manager/sonic-login-manager.spec +++ b/sonic-login-manager/sonic-login-manager.spec @@ -211,6 +211,10 @@ desktop-file-validate %{buildroot}/%{_datadir}/applications/kcm_plasmalogin.desk %changelog +* Tue Jun 30 2026 Anders da Silva Rytter Hansen - 6.6.4-12 +- Add SELinux policy module to allow plasmalogin to launch X11 user sessions +- Remove with_X11 condition since we will always be using X11 + * Fri Apr 10 2026 Steve Cossette - 6.6.4-1 - 6.6.4 diff --git a/sonic-workspace/sonic-workspace-6.6.4-x11-panel-lag.patch b/sonic-workspace/sonic-workspace-6.6.4-x11-panel-lag.patch new file mode 100644 index 0000000..57b16bf --- /dev/null +++ b/sonic-workspace/sonic-workspace-6.6.4-x11-panel-lag.patch @@ -0,0 +1,42 @@ +From: Anders da Silva Rytter Hansen +Date: Thu, 2 Jul 2026 09:40:00 -0300 +Subject: [PATCH] shell: handle zero-duration floating panel animation + +The QML side now disables the floating panel animation by setting +floatingnessAnimationDuration to 0. With a zero-duration +QPropertyAnimation the valueChanged signal may not be emitted, so update +m_floatingness and the QML property synchronously before doing the +geometry/mask/strut updates. + +References: https://bugs.kde.org/show_bug.cgi?id=484501 and https://github.com/orgs/Sonic-DE/discussions/20 +--- + shell/panelview.cpp | 11 +++++++++++ + 1 file changed, 11 insertions(+) + +diff --git a/shell/panelview.cpp b/shell/panelview.cpp +--- a/shell/panelview.cpp ++++ b/shell/panelview.cpp +@@ -1782,6 +1782,13 @@ void PanelView::updateFloating() + m_topFloatingPadding = rootObject()->property("fixedTopFloatingPadding").toInt(); + m_bottomFloatingPadding = rootObject()->property("fixedBottomFloatingPadding").toInt(); + ++ const bool instantAnimation = m_floatingnessAnimation.duration() == 0; ++ if (instantAnimation) { ++ // Skip the animation; jump straight to the target value. ++ m_floatingness = m_floatingnessAnimation.endValue().toDouble(); ++ rootObject()->setProperty("floatingness", m_floatingness); ++ } ++ + positionAndResizePanel(); + updateExclusiveZone(); + updateShadows(); +@@ -1789,6 +1796,10 @@ void PanelView::updateFloating() + // positionPanel and updateMask are called by m_floatingnessAnimation + if (m_floatingnessAnimation.targetObject()) { ++ if (instantAnimation) { ++ updateMask(); ++ return; ++ } + m_floatingnessAnimation.start(); + } + } diff --git a/sonic-workspace/sonic-workspace.spec b/sonic-workspace/sonic-workspace.spec index 935c9d6..96620ef 100644 --- a/sonic-workspace/sonic-workspace.spec +++ b/sonic-workspace/sonic-workspace.spec @@ -7,7 +7,7 @@ Name: sonic-workspace Summary: Plasma workspace, applications and applets Version: 6.6.4 -Release: 13%{?dist} +Release: 14%{?dist} # Automatically converted from old format: BSD-2-Clause AND BSD-3-Clause AND CC0-1.0 AND GPL-2.0-only AND GPL-2.0-or-later AND GPL-3.0-only AND LGPL-2.0-only AND LGPL-2.0-or-later AND LGPL-2.1-only AND LGPL-2.1-or-later AND LGPL-3.0-only AND LGPL-3.0-or-later AND (GPL-2.0-only OR GPL-3.0-only) AND (LGPL-2.1-only OR LGPL-3.0-only) AND MIT - review is highly recommended. License: BSD-2-Clause AND BSD-3-Clause AND CC0-1.0 AND GPL-2.0-only AND GPL-2.0-or-later AND GPL-3.0-only AND LGPL-2.0-only AND LGPL-2.0-or-later AND LGPL-2.1-only AND LGPL-2.1-or-later AND LGPL-3.0-only AND LGPL-3.0-or-later AND (GPL-2.0-only OR GPL-3.0-only) AND (LGPL-2.1-only OR LGPL-3.0-only) AND MIT @@ -46,6 +46,10 @@ Patch106: plasma-workspace-5.27.80-enable-open-terminal-action.patch # default to enable the lock/logout actions Patch107: plasma-workspace-5.27.80-enable-lock-logout-action.patch +# Handle zero-duration floating panel animation now that the QML side disables +# the animation entirely. +Patch108: sonic-workspace-6.6.4-x11-panel-lag.patch + # udev BuildRequires: zlib-devel BuildRequires: libGL-devel @@ -690,6 +694,10 @@ fi %changelog +* Thu Jul 02 2026 Anders da Silva Rytter Hansen - 6.6.4-14 +- Handle zero-duration floating panel animation so the panel can switch states + instantly without stutter. + * Fri Apr 10 2026 Steve Cossette - 6.6.4-1 - 6.6.4