Compare commits

..

1 commit

Author SHA1 Message Date
4e91804f0a Use with file context rules labeling plasmalogin binaries as xdm_exec_t instead
Some checks failed
Build RPMs / build (sonic-interface-libraries.spec) (push) Failing after 9s
Build RPMs / build (sonic-win.spec) (push) Failing after 9s
Build RPMs / build (sonic-workspace.spec) (push) Failing after 6s
2026-06-30 17:16:16 -03:00
8 changed files with 33 additions and 118 deletions

View file

@ -1,39 +0,0 @@
From: Anders da Silva Rytter Hansen <andersrh@users.noreply.github.com>
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

View file

@ -11,7 +11,7 @@
Name: sonic-desktop-interface
Summary: Plasma Desktop shell
Version: 6.6.4
Release: 12%{?dist}
Release: 11%{?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,11 +35,6 @@ 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)
@ -398,10 +393,6 @@ desktop-file-validate %{buildroot}/%{_datadir}/applications/kaccess.desktop
%changelog
* Thu Jul 02 2026 Anders da Silva Rytter Hansen <andersrh@users.noreply.github.com> - 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 <farchord@gmail.com> - 6.6.4-1
- 6.6.4

View file

@ -0,0 +1,7 @@
# Label the plasmalogin daemon and helper binaries as X display manager
# executables so they run in the xdm_t domain on SELinux enforcing systems.
/usr/bin/plasmalogin -- system_u:object_r:xdm_exec_t:s0
/usr/libexec/plasmalogin-helper -- system_u:object_r:xdm_exec_t:s0
/usr/libexec/plasmalogin-helper-start-x11user -- system_u:object_r:xdm_exec_t:s0
/usr/libexec/plasma-login-greeter -- system_u:object_r:xdm_exec_t:s0

View file

@ -1,12 +1,10 @@
module plasmalogin-selinux 1.0;
require {
type unconfined_t;
type xdm_exec_t;
class file { entrypoint execute };
}
# Allow the plasmalogin process to execute the X11 user helper binary
# which is labeled as xdm_exec_t. This is needed when the plasmalogin
# daemon is not running in the xdm_t domain on SELinux enforcing systems.
allow unconfined_t xdm_exec_t:file { entrypoint execute };
# File context rules for plasmalogin binaries are defined in the
# accompanying .fc file. Labeling the daemon and helper binaries as
# xdm_exec_t lets systemd transition plasmalogin into the xdm_t domain,
# which already has the required permissions to run X11 user sessions.

View file

@ -1,10 +1,11 @@
Name: sonic-login-manager-selinux
Version: 1.0
Version: 1.0.1
Release: 1%{?dist}
Summary: SELinux policy module for Sonic Login Manager
License: MIT
URL: https://github.com/Sonic-DE/sonic-login-manager
Source0: plasmalogin-selinux.te
Source1: plasmalogin-selinux.fc
BuildArch: noarch
@ -15,34 +16,42 @@ Requires(post): policycoreutils
Requires(postun): policycoreutils
%description
SELinux policy module that allows Sonic Login Manager to launch
X11 user sessions when running under SELinux enforcing mode.
SELinux policy module that labels the Sonic Login Manager binaries as
xdm_exec_t so systemd runs the daemon in the xdm_t domain. This lets
Sonic Login Manager launch X11 user sessions under SELinux enforcing
mode without granting broad unconfined_t permissions.
%prep
%setup -c -T
cp %{SOURCE0} .
cp %{SOURCE1} .
%build
# Compile the SELinux type enforcement file into a loadable module package
# Compile the SELinux type enforcement file and file context rules into a loadable module package
checkmodule -M -m -o plasmalogin-selinux.mod plasmalogin-selinux.te
semodule_package -o plasmalogin-selinux.pp -m plasmalogin-selinux.mod
semodule_package -o plasmalogin-selinux.pp -m plasmalogin-selinux.mod -f plasmalogin-selinux.fc
%install
install -D -m 644 plasmalogin-selinux.pp %{buildroot}%{_datadir}/selinux/packages/targeted/plasmalogin-selinux.pp
%post
# Load the SELinux policy module
# Load the SELinux policy module and apply file contexts to the plasmalogin binaries
semodule -i %{_datadir}/selinux/packages/targeted/plasmalogin-selinux.pp || :
restorecon -Rv /usr/bin/plasmalogin /usr/libexec/plasmalogin-helper /usr/libexec/plasmalogin-helper-start-x11user /usr/libexec/plasma-login-greeter || :
%postun
if [ $1 -eq 0 ]; then
# Remove the SELinux policy module on package uninstall
# Remove the SELinux policy module and restore default file contexts on uninstall
semodule -r plasmalogin-selinux || :
restorecon -Rv /usr/bin/plasmalogin /usr/libexec/plasmalogin-helper /usr/libexec/plasmalogin-helper-start-x11user /usr/libexec/plasma-login-greeter || :
fi
%files
%{_datadir}/selinux/packages/targeted/plasmalogin-selinux.pp
%changelog
* Tue Jun 30 2026 Anders da Silva Rytter Hansen <andersrh@users.noreply.github.com> - 1.0.1-1
- Use with file context rules labeling plasmalogin binaries as xdm_exec_t instead
* Tue Jun 30 2026 Anders da Silva Rytter Hansen <andersrh@users.noreply.github.com> - 1.0-1
- Initial package with SELinux allow rule for plasmalogin-helper-start-x11user

View file

@ -2,7 +2,7 @@
Name: sonic-login-manager
Version: 6.6.4
Release: 12%{?dist}
Release: 13%{?dist}
License: BSD-3-Clause and CC0-1.0 and (GPL-2.0-only or GPL-3.0-only) and GPL-2.0-or-later and LGPL-2.0-or-later and LGPL-2.1-or-later
Summary: QML based login manager for SonicDE
@ -211,9 +211,8 @@ desktop-file-validate %{buildroot}/%{_datadir}/applications/kcm_plasmalogin.desk
%changelog
* Tue Jun 30 2026 Anders da Silva Rytter Hansen <andersrh@users.noreply.github.com> - 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
* Tue Jun 30 2026 Anders da Silva Rytter Hansen <andersrh@users.noreply.github.com> - 6.6.4-13
- Add SELinux policy dependency to label plasmalogin binaries as xdm_exec_t
* Fri Apr 10 2026 Steve Cossette <farchord@gmail.com> - 6.6.4-1
- 6.6.4

View file

@ -1,42 +0,0 @@
From: Anders da Silva Rytter Hansen <andersrh@users.noreply.github.com>
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();
}
}

View file

@ -7,7 +7,7 @@
Name: sonic-workspace
Summary: Plasma workspace, applications and applets
Version: 6.6.4
Release: 14%{?dist}
Release: 13%{?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,10 +46,6 @@ 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
@ -694,10 +690,6 @@ fi
%changelog
* Thu Jul 02 2026 Anders da Silva Rytter Hansen <andersrh@users.noreply.github.com> - 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 <farchord@gmail.com> - 6.6.4-1
- 6.6.4