Package: release.debian.org Severity: normal X-Debbugs-Cc: powerde...@packages.debian.org, Debian Qt/KDE Maintainers <debian-qt-kde@lists.debian.org> Control: affects -1 + src:powerdevil User: release.debian....@packages.debian.org Usertags: unblock
Dear Release Team, please unblock package powerdevil. [ Reason ] * New upstream release (6.3.6). - Applets/batterymonitor: don't ask to install PPD when already installed. (kde#504889) - Daemon: Fix triggering an assert in KConfigGroup. * Drop backported patches now part of the upstream release. * Refresh patches. * Backport upstream commits: - Add missing screen locking link from screen power saving section. [09ce19dc] (kde#447366) - applets/brightness: downgrade severity of KeyboardBrightnessControl action unavailable warning since this is expected on most systems. [2039c96d] (kde#501461) - applets/batterymonitor: only show one battery icon in desktop tray. [4d29cd00] (kde#504697) - kcm: correct buddyFor relationship for script items fixing recurring spurious warnings. [dc057e44] (kde#504668) - PowerDevilAction: refresh action timers on inhibition changes to fix cases like immediate suspend happening at the end of a video playback. [31fcf4c0] (kde#504553) [ Tests ] Running Plasma with these changes for more than a week I didn’t notice any regression. [ Risks ] The changes only contain the latest upstream point release for the 6.3 Plasma branch and backported commits. Further fixes can easily be backported or the changes reverted. [ Checklist ] [x] all changes are documented in the d/changelog [x] I reviewed all changes and I approve them [x] attach debdiff against the package in testing Thanks ! unblock powerdevil/4:6.3.6-1
diff -Nru powerdevil-6.3.5/applets/batterymonitor/package/contents/ui/PowerProfileItem.qml powerdevil-6.3.6/applets/batterymonitor/package/contents/ui/PowerProfileItem.qml --- powerdevil-6.3.5/applets/batterymonitor/package/contents/ui/PowerProfileItem.qml 2025-05-06 20:01:15.000000000 +0200 +++ powerdevil-6.3.6/applets/batterymonitor/package/contents/ui/PowerProfileItem.qml 2025-07-08 13:50:08.000000000 +0200 @@ -300,7 +300,7 @@ visible: !root.profilesAvailable text: root.isTlpInstalled ? i18n("The TLP service automatically controls power profiles") - : !root.profilesInstalled + : root.profilesInstalled ? i18n("Power profiles are not supported on your device.") : xi18n("Power profiles may be supported on your device.<nl/>Try installing the <command>power-profiles-daemon</command> package using your distribution's package manager and restarting the system.") textFormat: Text.PlainText diff -Nru powerdevil-6.3.5/CMakeLists.txt powerdevil-6.3.6/CMakeLists.txt --- powerdevil-6.3.5/CMakeLists.txt 2025-05-06 20:01:15.000000000 +0200 +++ powerdevil-6.3.6/CMakeLists.txt 2025-07-08 13:50:08.000000000 +0200 @@ -1,10 +1,10 @@ cmake_minimum_required(VERSION 3.16) project(PowerDevil) -set(PROJECT_VERSION "6.3.5") +set(PROJECT_VERSION "6.3.6") set(PROJECT_VERSION_MAJOR 6) -set(PROJECT_DEP_VERSION "6.3.5") +set(PROJECT_DEP_VERSION "6.3.6") set(QT_MIN_VERSION "6.7.0") set(KF6_MIN_VERSION "6.10.0") diff -Nru powerdevil-6.3.5/daemon/powerdevilcore.cpp powerdevil-6.3.6/daemon/powerdevilcore.cpp --- powerdevil-6.3.5/daemon/powerdevilcore.cpp 2025-05-06 20:01:15.000000000 +0200 +++ powerdevil-6.3.6/daemon/powerdevilcore.cpp 2025-07-08 13:50:08.000000000 +0200 @@ -300,17 +300,6 @@ { QString profileId; - // Check the activity in which we are in - QString activity = m_activityConsumer->currentActivity(); - qCDebug(POWERDEVIL) << "Currently using activity " << activity; - - PowerDevil::ActivitySettings activitySettings(activity); - - qCDebug(POWERDEVIL) << "Settings for loaded activity:"; - for (KConfigSkeletonItem *item : activitySettings.items()) { - qCDebug(POWERDEVIL) << item->key() << "=" << item->property(); - } - // let's load the current state's profile if (m_batteriesPercent.isEmpty()) { qCDebug(POWERDEVIL) << "No batteries found, loading AC"; @@ -376,27 +365,40 @@ Q_EMIT profileChanged(m_currentProfile); } - // Now... any special behaviors we'd like to consider? - if (activitySettings.inhibitSuspend()) { - qCDebug(POWERDEVIL) << "Activity triggers a suspend inhibition"; // debug hence not sleep - // Trigger a special inhibition - if we don't have one yet - if (!m_sessionActivityInhibit.contains(activity)) { - int cookie = PolicyAgent::instance()->AddInhibition(PolicyAgent::InterruptSession, - i18n("Activity Manager"), - i18n("This activity's policies prevent the system from going to sleep")); + // Check the activity in which we are in + const QString activity = m_activityConsumer->currentActivity(); + qCDebug(POWERDEVIL) << "Currently using activity" << activity; - m_sessionActivityInhibit.insert(activity, cookie); - } - } - if (activitySettings.inhibitScreenManagement()) { - qCDebug(POWERDEVIL) << "Activity triggers a screen management inhibition"; - // Trigger a special inhibition - if we don't have one yet - if (!m_screenActivityInhibit.contains(activity)) { - int cookie = PolicyAgent::instance()->AddInhibition(PolicyAgent::ChangeScreenSettings, - i18n("Activity Manager"), - i18n("This activity's policies prevent screen power management")); + if (!activity.isEmpty()) { + PowerDevil::ActivitySettings activitySettings(activity); + + qCDebug(POWERDEVIL) << "Settings for loaded activity:"; + for (KConfigSkeletonItem *item : activitySettings.items()) { + qCDebug(POWERDEVIL) << item->key() << "=" << item->property(); + } + + // Now... any special behaviors we'd like to consider? + if (activitySettings.inhibitSuspend()) { + qCDebug(POWERDEVIL) << "Activity triggers a suspend inhibition"; // debug hence not sleep + // Trigger a special inhibition - if we don't have one yet + if (!m_sessionActivityInhibit.contains(activity)) { + int cookie = PolicyAgent::instance()->AddInhibition(PolicyAgent::InterruptSession, + i18n("Activity Manager"), + i18n("This activity's policies prevent the system from going to sleep")); + + m_sessionActivityInhibit.insert(activity, cookie); + } + } + if (activitySettings.inhibitScreenManagement()) { + qCDebug(POWERDEVIL) << "Activity triggers a screen management inhibition"; + // Trigger a special inhibition - if we don't have one yet + if (!m_screenActivityInhibit.contains(activity)) { + int cookie = PolicyAgent::instance()->AddInhibition(PolicyAgent::ChangeScreenSettings, + i18n("Activity Manager"), + i18n("This activity's policies prevent screen power management")); - m_screenActivityInhibit.insert(activity, cookie); + m_screenActivityInhibit.insert(activity, cookie); + } } } diff -Nru powerdevil-6.3.5/debian/changelog powerdevil-6.3.6/debian/changelog --- powerdevil-6.3.5/debian/changelog 2025-05-19 00:58:43.000000000 +0200 +++ powerdevil-6.3.6/debian/changelog 2025-07-19 14:52:32.000000000 +0200 @@ -1,3 +1,28 @@ +powerdevil (4:6.3.6-1) unstable; urgency=medium + + [ Aurélien COUDERC ] + * New upstream release (6.3.6). + - Applets/batterymonitor: don't ask to install PPD when already installed. + (kde#504889) + - Daemon: Fix triggering an assert in KConfigGroup. + * Drop backported patches now part of the upstream release. + * Refresh patches. + * Backport upstream commits: + - Add missing screen locking link from screen power saving section. + [09ce19dc] (kde#447366) + - applets/brightness: downgrade severity of KeyboardBrightnessControl + action unavailable warning since this is expected on most systems. + [2039c96d] (kde#501461) + - applets/batterymonitor: only show one battery icon in desktop tray. + [4d29cd00] (kde#504697) + - kcm: correct buddyFor relationship for script items fixing recurring + spurious warnings. [dc057e44] (kde#504668) + - PowerDevilAction: refresh action timers on inhibition changes to fix + cases like immediate suspend happening at the end of a video playback. + [31fcf4c0] (kde#504553) + + -- Aurélien COUDERC <couc...@debian.org> Sat, 19 Jul 2025 14:52:32 +0200 + powerdevil (4:6.3.5-1) unstable; urgency=medium [ Aurélien COUDERC ] @@ -6,6 +31,11 @@ - Daemon: Don't crash if using powerdevil 6.3 with kwin 6.2. (kde#501446) * Relax inter-plasma versioned dependency constraint so we can upload only 6.3.5 packages that have actual code changes. + * Backport upstream commits scheduled for 6.3.6: + - daemon: Fix triggering an assert in KConfigGroup when loading profile + without an activity. + - Fix Power Profile incorrectly shown when hardware does not support it. + (kde#504889) -- Aurélien COUDERC <couc...@debian.org> Mon, 19 May 2025 00:58:43 +0200 diff -Nru powerdevil-6.3.5/debian/patches/relax-interplasma-versioned-deps.patch powerdevil-6.3.6/debian/patches/relax-interplasma-versioned-deps.patch --- powerdevil-6.3.5/debian/patches/relax-interplasma-versioned-deps.patch 2025-05-16 18:56:09.000000000 +0200 +++ powerdevil-6.3.6/debian/patches/relax-interplasma-versioned-deps.patch 2025-07-19 14:16:08.000000000 +0200 @@ -1,10 +1,10 @@ --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,7 +4,7 @@ - set(PROJECT_VERSION "6.3.5") + set(PROJECT_VERSION "6.3.6") set(PROJECT_VERSION_MAJOR 6) --set(PROJECT_DEP_VERSION "6.3.5") +-set(PROJECT_DEP_VERSION "6.3.6") +set(PROJECT_DEP_VERSION "6.3.4") set(QT_MIN_VERSION "6.7.0") set(KF6_MIN_VERSION "6.10.0") diff -Nru powerdevil-6.3.5/debian/patches/series powerdevil-6.3.6/debian/patches/series --- powerdevil-6.3.5/debian/patches/series 2025-05-16 18:56:09.000000000 +0200 +++ powerdevil-6.3.6/debian/patches/series 2025-07-19 14:47:29.000000000 +0200 @@ -1 +1,6 @@ relax-interplasma-versioned-deps.patch +upstream_09ce19dc_KCM-add-Screen-Locking-to-related-pages-list.patch +upstream_2039c96d_applets-brightness-downgrade-severity-of-action-unavailable-message.patch +upstream_4d29cd00_applets-batterymonitor-only-show-one-battery-icon-in-desktop-tray.patch +upstream_dc057e44_kcm-correct-buddyFor-relationship-for-script-items.patch +upstream_31fcf4c0_PowerDevilAction-refresh-action-timers-on-inhibition-changes.patch diff -Nru powerdevil-6.3.5/debian/patches/upstream_09ce19dc_KCM-add-Screen-Locking-to-related-pages-list.patch powerdevil-6.3.6/debian/patches/upstream_09ce19dc_KCM-add-Screen-Locking-to-related-pages-list.patch --- powerdevil-6.3.5/debian/patches/upstream_09ce19dc_KCM-add-Screen-Locking-to-related-pages-list.patch 1970-01-01 01:00:00.000000000 +0100 +++ powerdevil-6.3.6/debian/patches/upstream_09ce19dc_KCM-add-Screen-Locking-to-related-pages-list.patch 2025-07-19 14:30:47.000000000 +0200 @@ -0,0 +1,46 @@ +From 09ce19dc3eab6bd38fae61447bffcf479c681785 Mon Sep 17 00:00:00 2001 +From: Nate Graham <n...@kde.org> +Date: Sun, 2 Mar 2025 10:04:48 -0700 +Subject: [PATCH] KCM: add "Screen Locking" to related pages list + +People seem to want to find it there. + +FEATURE: 447366 +FIXED-IN: 6.4.0 +--- +From: Aurélien COUDERC <couc...@debian.org> +Adapted to apply against Plasma 6.3 +--- + kcm/ui/GlobalConfig.qml | 9 +++++++++ + 1 file changed, 9 insertions(+) + +diff --git a/kcm/ui/GlobalConfig.qml b/kcm/ui/GlobalConfig.qml +index 4452ee7d0..c95eb3d12 100644 +--- a/kcm/ui/GlobalConfig.qml ++++ b/kcm/ui/GlobalConfig.qml +@@ -369,6 +369,7 @@ Kirigami.ScrollablePage { + + readonly property real maxPageButtonImplicitWidth: Math.max( + firstRelatedPage.implicitWidth, ++ screenLockingPage.implicitWidth, + desktopSessionsPage.implicitWidth, + activitiesPage.implicitWidth, + ) +@@ -396,6 +397,14 @@ Kirigami.ScrollablePage { + Layout.preferredWidth: relatedPagesLayout.maxPageButtonImplicitWidth + onClicked: KCM.KCMLauncher.openSystemSettings("kcm_notifications", "--notifyrc=powerdevil") + } ++ MostUsedItem { ++ id: screenLockingPage ++ kcmIcon: "preferences-desktop-user-password" ++ kcmName: i18nc("@text:button Name of KCM", "Screen Locking") ++ Accessible.name: i18n("Open \"Screen Locking\" settings page") ++ Layout.preferredWidth: relatedPagesLayout.maxPageButtonImplicitWidth ++ onClicked: KCM.KCMLauncher.openSystemSettings("kcm_screenlocker") ++ } + MostUsedItem { + id: desktopSessionsPage + kcmIcon: "system-log-out" +-- +GitLab + diff -Nru powerdevil-6.3.5/debian/patches/upstream_2039c96d_applets-brightness-downgrade-severity-of-action-unavailable-message.patch powerdevil-6.3.6/debian/patches/upstream_2039c96d_applets-brightness-downgrade-severity-of-action-unavailable-message.patch --- powerdevil-6.3.5/debian/patches/upstream_2039c96d_applets-brightness-downgrade-severity-of-action-unavailable-message.patch 1970-01-01 01:00:00.000000000 +0100 +++ powerdevil-6.3.6/debian/patches/upstream_2039c96d_applets-brightness-downgrade-severity-of-action-unavailable-message.patch 2025-07-19 14:35:22.000000000 +0200 @@ -0,0 +1,36 @@ +From 2039c96da97c550f76b782fed2f03a14705a6ca9 Mon Sep 17 00:00:00 2001 +From: Christoph Wolk <cwo....@posteo.net> +Date: Fri, 4 Apr 2025 17:07:42 +0200 +Subject: [PATCH] applets/brightness: downgrade severity of action unavailable + message + +If the KeyboardBrightnessControl action is not available, a warning is +logged. This seems a bit high, as this is the expected case for many +systems. + +Instead, use Info severity - this still allows users to see the message +without also seeing all the debug messages, but removes it in the +default case (as the default minimum severity is already set to +Warning). + +BUG: 501461 +--- + applets/brightness/plugin/keyboardbrightnesscontrol.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/applets/brightness/plugin/keyboardbrightnesscontrol.cpp b/applets/brightness/plugin/keyboardbrightnesscontrol.cpp +index e2aba9029..92d46a784 100644 +--- a/applets/brightness/plugin/keyboardbrightnesscontrol.cpp ++++ b/applets/brightness/plugin/keyboardbrightnesscontrol.cpp +@@ -143,7 +143,7 @@ QCoro::Task<void> KeyboardBrightnessControl::onSupportedActionsChanged() + if (actionSupported) { + onActionSupported(); + } else { +- qCWarning(APPLETS::BRIGHTNESS) << "D-Bus action" << KEYBOARD_BRIGHTNESS_ACTION << "is not available at service" << SOLID_POWERMANAGEMENT_SERVICE; ++ qCInfo(APPLETS::BRIGHTNESS) << "D-Bus action" << KEYBOARD_BRIGHTNESS_ACTION << "is not available at service" << SOLID_POWERMANAGEMENT_SERVICE; + onActionUnsupported(); + } + } +-- +GitLab + diff -Nru powerdevil-6.3.5/debian/patches/upstream_31fcf4c0_PowerDevilAction-refresh-action-timers-on-inhibition-changes.patch powerdevil-6.3.6/debian/patches/upstream_31fcf4c0_PowerDevilAction-refresh-action-timers-on-inhibition-changes.patch --- powerdevil-6.3.5/debian/patches/upstream_31fcf4c0_PowerDevilAction-refresh-action-timers-on-inhibition-changes.patch 1970-01-01 01:00:00.000000000 +0100 +++ powerdevil-6.3.6/debian/patches/upstream_31fcf4c0_PowerDevilAction-refresh-action-timers-on-inhibition-changes.patch 2025-07-19 14:47:29.000000000 +0200 @@ -0,0 +1,44 @@ +From 31fcf4c07346bc1fcd7b6df07b62330fd0b7db7f Mon Sep 17 00:00:00 2001 +From: Nate Graham <n...@kde.org> +Date: Tue, 17 Jun 2025 15:38:49 -0600 +Subject: [PATCH] PowerDevilAction: refresh action timers on inhibition changes + +When inhibitions change, action timers should be restarted. +If they're not restarted, action timer may run to 0 right after +a video playback ends for example, running the action abruptly. + +BUG: 504553 + + +(cherry picked from commit 3feaad466c5e6195ed8541c3c58d899a612511d0) + +Co-authored-by: Akseli Lahtinen <akse...@akselmo.dev> +--- + daemon/powerdevilcore.cpp | 11 +++++++++++ + 1 file changed, 11 insertions(+) + +diff --git a/daemon/powerdevilcore.cpp b/daemon/powerdevilcore.cpp +index fc154cab4..bd97fb7ec 100644 +--- a/daemon/powerdevilcore.cpp ++++ b/daemon/powerdevilcore.cpp +@@ -141,6 +141,17 @@ void Core::onControllersReady() + Q_UNUSED(newPolicies); + KIdleTime::instance()->simulateUserActivity(); + }); ++ // Refresh action timers during inhibition change, to avoid timers reaching zero right after inhibitions end. ++ connect(PowerDevil::PolicyAgent::instance(), &PowerDevil::PolicyAgent::InhibitionsChanged, this, [this]() { ++ qCDebug(POWERDEVIL) << "Refreshing timers for actions on inhibitionsChanged"; ++ for (const QString &action : std::as_const(m_activeActions)) { ++ const auto timeouts = m_actionPool[action]->m_registeredIdleTimeouts; ++ m_actionPool[action]->unregisterIdleTimeouts(); ++ for (const auto &timeout : timeouts) { ++ m_actionPool[action]->registerIdleTimeout(timeout); ++ } ++ } ++ }); + + // Bug 354250: Simulate user activity when session becomes inactive, + // this keeps us from sending the computer to sleep when switching to an idle session. +-- +GitLab + diff -Nru powerdevil-6.3.5/debian/patches/upstream_4d29cd00_applets-batterymonitor-only-show-one-battery-icon-in-desktop-tray.patch powerdevil-6.3.6/debian/patches/upstream_4d29cd00_applets-batterymonitor-only-show-one-battery-icon-in-desktop-tray.patch --- powerdevil-6.3.5/debian/patches/upstream_4d29cd00_applets-batterymonitor-only-show-one-battery-icon-in-desktop-tray.patch 1970-01-01 01:00:00.000000000 +0100 +++ powerdevil-6.3.6/debian/patches/upstream_4d29cd00_applets-batterymonitor-only-show-one-battery-icon-in-desktop-tray.patch 2025-07-19 14:43:31.000000000 +0200 @@ -0,0 +1,46 @@ +From 4d29cd00de35dce18c43f78eefb02f78f2059f41 Mon Sep 17 00:00:00 2001 +From: Christoph Wolk <cwo....@posteo.net> +Date: Mon, 26 May 2025 20:29:29 +0000 +Subject: [PATCH] applets/batterymonitor: only show one battery icon in desktop + tray + +The compact representation only shows one icon in most cases, but on +the desktop users can resize it to be long in only one direction and +short in the other to get a row or column with one icon for each +connected battery. This breaks in the case of a system tray on the +desktop, where applets inherit the desktop form factor, and the battery +applet appears to have a variably-sized partial icon below it depending +on the tray widget dimensions. (I suspect the change toward nested +plasma containments in 46ada24f is involved). + +Instead, we also test for the ContainmentForcesSquarePlasmoids +containment hint (which the tray sets), and consider the widget +constrained in that case - with a forced square plasmoid, showing +multiple icons doesn't make much sense anyway. + +BUG: 504697 +FIXED-IN: 6.4.0 + + +(cherry picked from commit 58f2c466e48562f5c78cd19990148af473bbde24) + +Co-authored-by: Christoph Wolk <cwo....@posteo.net> +--- + .../batterymonitor/package/contents/ui/CompactRepresentation.qml | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/applets/batterymonitor/package/contents/ui/CompactRepresentation.qml b/applets/batterymonitor/package/contents/ui/CompactRepresentation.qml +index 3cbfba60a..23e6272ed 100644 +--- a/applets/batterymonitor/package/contents/ui/CompactRepresentation.qml ++++ b/applets/batterymonitor/package/contents/ui/CompactRepresentation.qml +@@ -21,6 +21,7 @@ MouseArea { + id: root + + readonly property bool isConstrained: [PlasmaCore.Types.Vertical, PlasmaCore.Types.Horizontal].includes(Plasmoid.formFactor) ++ || Plasmoid.containmentDisplayHints & PlasmaCore.Types.ContainmentForcesSquarePlasmoids + property int batteryPercent: 0 + property bool batteryPluggedIn: false + property bool hasBatteries: false +-- +GitLab + diff -Nru powerdevil-6.3.5/debian/patches/upstream_dc057e44_kcm-correct-buddyFor-relationship-for-script-items.patch powerdevil-6.3.6/debian/patches/upstream_dc057e44_kcm-correct-buddyFor-relationship-for-script-items.patch --- powerdevil-6.3.5/debian/patches/upstream_dc057e44_kcm-correct-buddyFor-relationship-for-script-items.patch 1970-01-01 01:00:00.000000000 +0100 +++ powerdevil-6.3.6/debian/patches/upstream_dc057e44_kcm-correct-buddyFor-relationship-for-script-items.patch 2025-07-19 14:45:56.000000000 +0200 @@ -0,0 +1,34 @@ +From dc057e44368e5c2166b2214bbd13a7a754e80061 Mon Sep 17 00:00:00 2001 +From: Nate Graham <n...@kde.org> +Date: Tue, 10 Jun 2025 13:51:40 -0600 +Subject: [PATCH] kcm: correct buddyFor relationship for script items + +The buddy needs to be a direct child. + +BUG: 504668 +FIXED-IN: 6.4.0 + + +(cherry picked from commit 412e9f4b445062c508baf0992655f73dd9a1df11) + +Co-authored-by: Nate Graham <n...@kde.org> +--- + kcm/ui/RunScriptEdit.qml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/kcm/ui/RunScriptEdit.qml b/kcm/ui/RunScriptEdit.qml +index 48050825d..b22359d82 100644 +--- a/kcm/ui/RunScriptEdit.qml ++++ b/kcm/ui/RunScriptEdit.qml +@@ -15,7 +15,7 @@ import org.kde.kirigami as Kirigami + FocusScope { + id: root + required property string command +- Kirigami.FormData.buddyFor: commandText ++ Kirigami.FormData.buddyFor: row + + implicitHeight: row.implicitHeight + implicitWidth: row.implicitWidth +-- +GitLab +