From 1914e9be447ec63be886fb7863d6f51da586bfd0 Mon Sep 17 00:00:00 2001 From: Devin Lin Date: Fri, 6 Feb 2026 19:16:39 -0500 Subject: [PATCH] statusbar: Remove system tray The system tray has not been useful on mobile and isn't particularly interactable due to its small size. Remove the system tray from the status bar, if we need its functionality it would be more appropriate to create a larger "tray UI" in the quicksettings area --- components/mobileshell/CMakeLists.txt | 1 - .../actiondrawer/private/ContentContainer.qml | 3 -- .../mobileshell/qml/statusbar/StatusBar.qml | 23 --------- .../mobileshell/qml/statusbar/TaskWidget.qml | 49 ------------------- tests/ActionDrawerTest.qml | 1 - tests/LockScreenTest.qml | 1 - 6 files changed, 78 deletions(-) delete mode 100644 components/mobileshell/qml/statusbar/TaskWidget.qml diff --git a/components/mobileshell/CMakeLists.txt b/components/mobileshell/CMakeLists.txt index f3466673..e60c45c8 100644 --- a/components/mobileshell/CMakeLists.txt +++ b/components/mobileshell/CMakeLists.txt @@ -102,7 +102,6 @@ ecm_target_qml_sources(mobileshellplugin SOURCES qml/statusbar/indicators/VolumeIndicator.qml qml/statusbar/ClockText.qml qml/statusbar/StatusBar.qml - qml/statusbar/TaskWidget.qml qml/widgets/krunner/KRunnerScreen.qml qml/widgets/mediacontrols/BlurredBackground.qml diff --git a/components/mobileshell/qml/actiondrawer/private/ContentContainer.qml b/components/mobileshell/qml/actiondrawer/private/ContentContainer.qml index 7398193e..aef9d156 100644 --- a/components/mobileshell/qml/actiondrawer/private/ContentContainer.qml +++ b/components/mobileshell/qml/actiondrawer/private/ContentContainer.qml @@ -269,9 +269,6 @@ Item { showDropShadow: false showTime: root.actionDrawer.mode == MobileShell.ActionDrawer.Portrait - // security reasons, system tray also doesn't work on lockscreen - disableSystemTray: root.actionDrawer.restrictedPermissions - opacity: brightnessPressedValue } diff --git a/components/mobileshell/qml/statusbar/StatusBar.qml b/components/mobileshell/qml/statusbar/StatusBar.qml index cd2913cc..d07d890d 100644 --- a/components/mobileshell/qml/statusbar/StatusBar.qml +++ b/components/mobileshell/qml/statusbar/StatusBar.qml @@ -46,11 +46,6 @@ Item { */ property bool showTime: true - /** - * Disables showing system tray indicators, preventing SIGABRT when used on the lockscreen. - */ - property bool disableSystemTray: false - readonly property real textPixelSize: Math.round(11 * ShellSettings.Settings.statusBarScaleFactor) readonly property real smallerTextPixelSize: Math.round(9 * ShellSettings.Settings.statusBarScaleFactor) readonly property real elementSpacing: Math.round(Kirigami.Units.smallSpacing * 1.5) @@ -59,14 +54,6 @@ Item { id: clockSource } - property alias statusNotifierSource: statusNotifierSourceLoader.item - - Loader { - id: statusNotifierSourceLoader - active: !disableSystemTray - sourceComponent: SystemTray.StatusNotifierModel { } - } - MobileShellState.PanelSettingsDBusClient { id: panelSettings screenName: Screen.name @@ -131,16 +118,6 @@ Item { Layout.fillWidth: true } - // system tray - Repeater { - id: statusNotifierRepeater - model: root.statusNotifierSource - - delegate: TaskWidget { - Layout.leftMargin: root.elementSpacing - } - } - // system indicators // using Layout.fillHeight here seems to cause polish loops, instead just define the height of the row RowLayout { diff --git a/components/mobileshell/qml/statusbar/TaskWidget.qml b/components/mobileshell/qml/statusbar/TaskWidget.qml deleted file mode 100644 index d96dbee0..00000000 --- a/components/mobileshell/qml/statusbar/TaskWidget.qml +++ /dev/null @@ -1,49 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2011 Marco Martin - * - * SPDX-License-Identifier: LGPL-2.0-or-later - */ - -import QtQuick -import org.kde.kirigami as Kirigami - -Item { - id: taskIcon - width: parent.height - height: width - //hide application status icons - opacity: (Category != "ApplicationStatus" && Status != "Passive") ? 1 : 0 - onOpacityChanged: visible = opacity - - Behavior on opacity { - NumberAnimation { - duration: Kirigami.Units.longDuration - easing.type: Easing.InOutQuad - } - } - - Kirigami.Icon { - id: icon - source: IconName ? IconName : Icon - width: Math.min(parent.width, parent.height) - height: width - anchors.centerIn: parent - } - - MouseArea { - anchors.fill: taskIcon - onClicked: { - //print(iconSvg.hasElement(IconName)) - var service = statusNotifierSource.serviceForSource(DataEngineSource) - var operation = service.operationDescription("Activate") - operation.x = parent.x - - // kmix shows main window instead of volume popup if (parent.x, parent.y) == (0, 0), which is the case here. - // I am passing a position right below the panel (assuming panel is at screen's top). - // Plasmoids' popups are already shown below the panel, so this make kmix's popup more consistent - // to them. - operation.y = parent.y + parent.height + 6 - service.startOperationCall(operation) - } - } -} diff --git a/tests/ActionDrawerTest.qml b/tests/ActionDrawerTest.qml index 434f2982..e90d7a01 100644 --- a/tests/ActionDrawerTest.qml +++ b/tests/ActionDrawerTest.qml @@ -50,7 +50,6 @@ ApplicationWindow { showSecondRow: false showDropShadow: true showTime: true - disableSystemTray: true // prevent SIGABRT, since loading the system tray leads to bad... things } MobileShell.ActionDrawerOpenSurface { diff --git a/tests/LockScreenTest.qml b/tests/LockScreenTest.qml index 831c2213..8ce179a8 100644 --- a/tests/LockScreenTest.qml +++ b/tests/LockScreenTest.qml @@ -87,7 +87,6 @@ ApplicationWindow { showSecondRow: false showDropShadow: true showTime: true - disableSystemTray: true // prevent SIGABRT, since loading the system tray leads to bad... things } MobileShell.ActionDrawerOpenSurface {