Desktop/kde: add patches

This commit is contained in:
Toast 2025-09-19 18:00:15 +02:00
parent b6119bd2cc
commit 09d0847ea4
14 changed files with 2981 additions and 0 deletions

View file

@ -0,0 +1,133 @@
From 0168ee68b484995ed9398d31004dd80678ac7e37 Mon Sep 17 00:00:00 2001
From: Kai Uwe Broulik <kde@privat.broulik.de>
Date: Tue, 5 Aug 2025 12:57:00 +0200
Subject: [PATCH] Close USB device added notification when devicenotifier pops
up
The device notification is supposed to be super quick feedback that
"something" got detected. Once it has been identified as storage
device (disks spun up and what not), devicenotifier will show up
and then you have two popups.
---
applets/devicenotifier/CMakeLists.txt | 1 +
applets/devicenotifier/devicefiltercontrol.cpp | 14 ++++++++++++++
applets/devicenotifier/devicefiltercontrol.h | 1 +
applets/devicenotifier/qml/main.qml | 1 +
devicenotifications/devicenotifications.cpp | 8 ++++++++
devicenotifications/devicenotifications.h | 3 +++
6 files changed, 28 insertions(+)
diff --git a/applets/devicenotifier/CMakeLists.txt b/applets/devicenotifier/CMakeLists.txt
index d87964dc46d..fa415837e68 100644
--- a/applets/devicenotifier/CMakeLists.txt
+++ b/applets/devicenotifier/CMakeLists.txt
@@ -31,6 +31,7 @@ plasma_add_applet(org.kde.plasma.devicenotifier
target_link_libraries(org.kde.plasma.devicenotifier
PRIVATE
+ Qt::DBus
Qt::Qml
Plasma::Plasma
KF6::Solid
diff --git a/applets/devicenotifier/devicefiltercontrol.cpp b/applets/devicenotifier/devicefiltercontrol.cpp
index dfdb51a4304..f585eb2f063 100644
--- a/applets/devicenotifier/devicefiltercontrol.cpp
+++ b/applets/devicenotifier/devicefiltercontrol.cpp
@@ -11,9 +11,14 @@
#include "devicecontrol.h"
#include "devicestatemonitor_p.h"
+#include <QDBusConnection>
+#include <QDBusMessage>
+
#include <Solid/Device>
#include <Solid/OpticalDrive>
+using namespace Qt::Literals::StringLiterals;
+
DeviceFilterControl::DeviceFilterControl(QObject *parent)
: QSortFilterProxyModel(parent)
, m_filterType(Removable)
@@ -54,6 +59,15 @@ void DeviceFilterControl::unmountAllRemovables()
qCDebug(APPLETS::DEVICENOTIFIER) << "Device Filter Control: unmount all removables function finished";
}
+void DeviceFilterControl::dismissUsbDeviceAddedNotification()
+{
+ QDBusMessage msg = QDBusMessage::createMethodCall(u"org.kde.kded6"_s,
+ u"/modules/devicenotifications"_s,
+ u"org.kde.plasma.devicenotifications"_s,
+ u"dismissUsbDeviceAdded"_s);
+ QDBusConnection::sessionBus().call(msg, QDBus::NoBlock);
+}
+
QBindable<QString> DeviceFilterControl::bindableLastUdi()
{
return &m_lastUdi;
diff --git a/applets/devicenotifier/devicefiltercontrol.h b/applets/devicenotifier/devicefiltercontrol.h
index e4c0a321657..fa6266fb197 100644
--- a/applets/devicenotifier/devicefiltercontrol.h
+++ b/applets/devicenotifier/devicefiltercontrol.h
@@ -41,6 +41,7 @@ public:
Q_ENUM(DevicesType)
Q_INVOKABLE void unmountAllRemovables();
+ Q_INVOKABLE void dismissUsbDeviceAddedNotification();
explicit DeviceFilterControl(QObject *parent = nullptr);
~DeviceFilterControl() override;
diff --git a/applets/devicenotifier/qml/main.qml b/applets/devicenotifier/qml/main.qml
index 7fcd76a6d16..c7fe6e6197d 100644
--- a/applets/devicenotifier/qml/main.qml
+++ b/applets/devicenotifier/qml/main.qml
@@ -35,6 +35,7 @@ PlasmoidItem {
onLastUdiChanged: {
if (lastDeviceAdded) {
if (Plasmoid.configuration.popupOnNewDevice) {
+ filterModel.dismissUsbDeviceAddedNotification();
devicenotifier.expanded = true;
fullRepresentationItem.spontaneousOpen = true;
}
diff --git a/devicenotifications/devicenotifications.cpp b/devicenotifications/devicenotifications.cpp
index 71ae0ff340e..196e28ca948 100644
--- a/devicenotifications/devicenotifications.cpp
+++ b/devicenotifications/devicenotifications.cpp
@@ -323,6 +323,14 @@ void KdedDeviceNotifications::setupWaylandOutputListener()
wl_callback_add_listener(syncCallback, &syncCallbackListener, this);
}
+void KdedDeviceNotifications::dismissUsbDeviceAdded()
+{
+ if (m_usbDeviceAddedNotification) {
+ m_usbDeviceAddedNotification->close();
+ m_usbDeviceAddedNotification = nullptr;
+ }
+}
+
void KdedDeviceNotifications::notifyOutputAdded()
{
if (m_deviceAddedTimer.isActive()) {
diff --git a/devicenotifications/devicenotifications.h b/devicenotifications/devicenotifications.h
index ab7e6b3ff9b..75005193287 100644
--- a/devicenotifications/devicenotifications.h
+++ b/devicenotifications/devicenotifications.h
@@ -77,6 +77,7 @@ private:
class KdedDeviceNotifications : public KDEDModule
{
Q_OBJECT
+ Q_CLASSINFO("D-Bus Interface", "org.kde.plasma.devicenotifications")
public:
KdedDeviceNotifications(QObject *parent, const QVariantList &args);
@@ -84,6 +85,8 @@ public:
void setupWaylandOutputListener();
+ Q_SCRIPTABLE void dismissUsbDeviceAdded();
+
private:
void notifyOutputAdded();
void notifyOutputRemoved();
--
GitLab