Compare commits

...

4 commits

Author SHA1 Message Date
8b9eae079e Desktop/firefox: add control panel for twitter 2025-11-05 10:28:33 +00:00
c00ef6ab7c Kde/patches: get patches with lib.toast.patches.patchesInPath 2025-11-02 13:44:37 +01:00
16f79d8a7d Kde/patches: remove plasma-workspace patch
Lots of packages depend on plasma workspace, so it's not worth building
all of them just for a small patch
2025-11-02 13:43:34 +01:00
c914256c97 Kde/patches: add plasma-desktop patches 2025-11-02 13:43:13 +01:00
8 changed files with 259 additions and 88 deletions

View file

@ -80,6 +80,10 @@
installation_mode = "normal_installed";
install_url = "https://addons.mozilla.org/firefox/downloads/latest/multi-account-containers/latest.xpi";
};
"{5cce4ab5-3d47-41b9-af5e-8203eea05245}" = {
installation_mode = "normal_installed";
install_url = "https://addons.mozilla.org/firefox/downloads/latest/control-panel-for-twitter/latest.xpi";
};
};
Preferences = {
"general.smoothScroll.msdPhysics.enabled" = {
@ -126,6 +130,16 @@
identityMacAddonUUID = "b50e5b1e-6f3b-4245-8eac-5654d889156e";
};
};
# Control panel for twitter
"{5cce4ab5-3d47-41b9-af5e-8203eea05245}".settings = {
hideForYouTimeline = false;
alwaysUseLatestTweets = false;
retweets = "ignore";
restoreOtherInteractionLinks = true;
navBaseFontSize = false;
followButtonStyle = "themed";
hideSidebarContent = true;
};
};
};
};

View file

@ -3,24 +3,17 @@
removeFiles = lib.attrsets.filterAttrs (n: v: v == "directory") rootDirs;
programsToPatch = builtins.attrNames removeFiles;
getPatches = name:
builtins.map (value: ./${name}/${value}) (builtins.attrNames (
lib.attrsets.filterAttrs (
n: v:
v == "regular" && lib.strings.hasSuffix ".patch" n
) (builtins.readDir ./${name})
));
bigOverlay = final: prev:
lib.attrsets.mergeAttrsList (
lib.lists.forEach programsToPatch (
program: let
unpatchedProgram = prev."${program}";
newPatches = lib.toast.patches.patchesInPath (lib.path.append ./. program);
in {
"${program}" = unpatchedProgram.overrideAttrs {
version = "${unpatchedProgram.version}-patched";
__intentionallyOverridingVersion = true;
patches = unpatchedProgram.patches ++ getPatches program;
patches = unpatchedProgram.patches ++ newPatches;
};
}
)

View file

@ -0,0 +1,5 @@
Plasma 6.6.0:
Pr 3256 https://invent.kde.org/plasma/plasma-desktop/-/merge_requests/3256
Pr 3259 https://invent.kde.org/plasma/plasma-desktop/-/merge_requests/3259
Pr 3269 https://invent.kde.org/plasma/plasma-desktop/-/merge_requests/3269

View file

@ -0,0 +1,94 @@
From 79d010f4bcdb19d5a19d222dd3c3cb581fde891d Mon Sep 17 00:00:00 2001
From: David Redondo <kde@david-redondo.de>
Date: Fri, 17 Oct 2025 15:15:51 +0200
Subject: [PATCH] applets/taskmanager: Allow changing a tasks volume by
scrolling
FEATURE:510668
FIXED-IN:6.6
---
.../package/contents/config/main.xml | 1 +
.../package/contents/ui/ConfigBehavior.qml | 3 ++-
.../package/contents/ui/MouseHandler.qml | 20 +++++++++++++++++++
3 files changed, 23 insertions(+), 1 deletion(-)
diff --git a/applets/taskmanager/package/contents/config/main.xml b/applets/taskmanager/package/contents/config/main.xml
index f71a7a8457..8c3b68785b 100644
--- a/applets/taskmanager/package/contents/config/main.xml
+++ b/applets/taskmanager/package/contents/config/main.xml
@@ -90,6 +90,7 @@
<choice name="None"/>
<choice name="AllTask"/>
<choice name="TaskOnly"/>
+ <choice name="AdjustVolume"/>
</choices>
<default>0</default>
</entry>
diff --git a/applets/taskmanager/package/contents/ui/ConfigBehavior.qml b/applets/taskmanager/package/contents/ui/ConfigBehavior.qml
index 2c0dc19154..73357e9dcd 100644
--- a/applets/taskmanager/package/contents/ui/ConfigBehavior.qml
+++ b/applets/taskmanager/package/contents/ui/ConfigBehavior.qml
@@ -202,13 +202,14 @@ KCMUtils.SimpleKCM {
QQC2.ComboBox {
id: wheelEnabled
- Kirigami.FormData.label: i18nc("@label:listbox Part of a sentence: 'Scrolling behavior does nothing/cycles through tasks/cycles through the selected task's windows'", "Scrolling behavior:")
+ Kirigami.FormData.label: i18nc("@label:listbox Part of a sentence: 'Scrolling behavior does nothing/cycles through tasks/cycles through the selected task's windows/adjusts the hovered tasks volume''", "Scrolling behavior:")
Layout.fillWidth: true
Layout.minimumWidth: Kirigami.Units.gridUnit * 14
model: [
i18nc("@item:inlistbox Part of a sentence: 'Scrolling behavior does nothing'", "Does nothing"),
i18nc("@item:inlistbox Part of a sentence: 'Scrolling behavior cycles through all tasks'", "Cycles through all tasks"),
i18nc("@item:inlistbox Part of a sentence: 'Scrolling behavior cycles through the hovered task's windows'", "Cycles through the hovered tasks windows"),
+ i18nc("@item:inlistbox Part of a sentence: 'Scrolling behavior adjusts the hovered tasks volume'", "Adjusts the hovered tasks volume"),
]
}
diff --git a/applets/taskmanager/package/contents/ui/MouseHandler.qml b/applets/taskmanager/package/contents/ui/MouseHandler.qml
index cf2362835a..3f8d703d73 100644
--- a/applets/taskmanager/package/contents/ui/MouseHandler.qml
+++ b/applets/taskmanager/package/contents/ui/MouseHandler.qml
@@ -8,6 +8,7 @@ import QtQuick
import org.kde.taskmanager as TaskManager
import org.kde.plasma.plasmoid
+import org.kde.plasma.private.volume as PlasmaPa
import "code/tools.js" as TaskTools
@@ -157,6 +158,10 @@ DropArea {
}
}
+ PlasmaPa.GlobalConfig {
+ id: plasmaPaConfig
+ }
+
WheelHandler {
id: wheelHandler
@@ -179,6 +184,21 @@ DropArea {
increment--;
}
const anchor = dropArea.target.childAt(event.x, event.y);
+ if (Plasmoid.configuration.wheelEnabled === 3) {
+ const loudest = anchor?.audioStreams?.reduce((loudest, stream) => Math.max(loudest, stream.volume), 0)
+ const step = (pulseAudio.item.normalVolume - pulseAudio.item.minimalVolume) * plasmaPaConfig.volumeStep / 100;
+ anchor?.audioStreams?.forEach((stream) => {
+ let delta = step * increment;
+ if (loudest > 0) {
+ delta *= stream.volume / loudest;
+ }
+ const volume = stream.volume + delta;
+ console.log(volume, Math.max(pulseAudio.item.minimalVolume, Math.min(volume, pulseAudio.item.normalVolume)));
+ stream.model.Volume = Math.max(pulseAudio.item.minimalVolume, Math.min(volume, pulseAudio.item.normalVolume));
+ stream.model.Muted = volume === 0
+ })
+ return;
+ }
while (increment !== 0) {
TaskTools.activateNextPrevTask(anchor, increment < 0, Plasmoid.configuration.wheelSkipMinimized, Plasmoid.configuration.wheelEnabled, tasks);
increment += (increment < 0) ? 1 : -1;
--
GitLab

View file

@ -0,0 +1,78 @@
From 57885ba4ec524bdc1c1326228f27c1c3a3561bba Mon Sep 17 00:00:00 2001
From: Nate Graham <nate@kde.org>
Date: Tue, 21 Oct 2025 13:39:40 -0600
Subject: [PATCH] applets/kickoff: add spacing between non-switch-on-hover
category items
Otherwise, their highlight effects touch, and it looks bad.
To avoid blowing up the layout as a result of this change, slightly
decrease the height of these category list items too, which also reduces
some code complexity.
BUG: 508985
FIXED-IN: 6.6.0
---
applets/kickoff/ApplicationsPage.qml | 1 +
applets/kickoff/KickoffListDelegate.qml | 9 ---------
applets/kickoff/KickoffListView.qml | 5 +++++
3 files changed, 6 insertions(+), 9 deletions(-)
diff --git a/applets/kickoff/ApplicationsPage.qml b/applets/kickoff/ApplicationsPage.qml
index c2baa75b52..fe8d6eaafb 100644
--- a/applets/kickoff/ApplicationsPage.qml
+++ b/applets/kickoff/ApplicationsPage.qml
@@ -20,6 +20,7 @@ BasePage {
id: sideBar
focus: true // needed for Loaders
model: kickoff.rootModel
+ showingCategories: true
// needed otherwise app displayed at top-level will show a first character as group.
section.property: ""
delegate: KickoffListDelegate {
diff --git a/applets/kickoff/KickoffListDelegate.qml b/applets/kickoff/KickoffListDelegate.qml
index b1f8afb3ce..02bfcfcacd 100644
--- a/applets/kickoff/KickoffListDelegate.qml
+++ b/applets/kickoff/KickoffListDelegate.qml
@@ -72,15 +72,6 @@ AbstractKickoffItemDelegate {
id: label
Layout.fillWidth: !descriptionLabel.visible
Layout.maximumWidth: root.width - root.leftPadding - root.rightPadding - icon.width - row.spacing
- Layout.preferredHeight: {
- if (root.isCategoryListItem) {
- return root.compact ? implicitHeight : Math.round(implicitHeight * 1.5);
- }
- if (!root.compact && !descriptionLabel.visible) {
- return implicitHeight + descriptionLabel.implicitHeight
- }
- return implicitHeight;
- }
text: root.text
textFormat: root.isMultilineText ? Text.StyledText : Text.PlainText
elide: Text.ElideRight
diff --git a/applets/kickoff/KickoffListView.qml b/applets/kickoff/KickoffListView.qml
index c7787493e0..382d146428 100644
--- a/applets/kickoff/KickoffListView.qml
+++ b/applets/kickoff/KickoffListView.qml
@@ -33,6 +33,7 @@ EmptyPage {
property alias section: view.section
property alias highlight: view.highlight
property alias view: view
+ property bool showingCategories: false
property bool mainContentView: false
property bool hasSectionView: false
@@ -144,6 +145,10 @@ EmptyPage {
width: view.availableWidth
}
+ // Without switch-on-hover, it's possible for the selected category and the hovered category to be adjacent.
+ // When this happens, their highlights tuoch and look ungly without some artificial spacing added.
+ spacing: root.showingCategories && !Plasmoid.configuration.switchCategoryOnHover ? Kirigami.Units.smallSpacing : 0
+
section {
property: "group"
criteria: ViewSection.FullString
--
GitLab

View file

@ -0,0 +1,66 @@
From a63fce38f285b59407c24f44639023d41b5d3ca9 Mon Sep 17 00:00:00 2001
From: Nate Graham <nate@kde.org>
Date: Thu, 30 Oct 2025 20:01:32 -0600
Subject: [PATCH] applets/kickoff: add separation between Places page list
items too
Missed in 57885ba4ec524bdc1c1326228f27c1c3a3561bba
BUG: 508985
FIXED-IN: 6.6.0
---
applets/kickoff/ApplicationsPage.qml | 2 +-
applets/kickoff/KickoffListView.qml | 4 ++--
applets/kickoff/PlacesPage.qml | 1 +
3 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/applets/kickoff/ApplicationsPage.qml b/applets/kickoff/ApplicationsPage.qml
index fe8d6eaafb..206ddd958d 100644
--- a/applets/kickoff/ApplicationsPage.qml
+++ b/applets/kickoff/ApplicationsPage.qml
@@ -20,7 +20,7 @@ BasePage {
id: sideBar
focus: true // needed for Loaders
model: kickoff.rootModel
- showingCategories: true
+ isSidebar: true
// needed otherwise app displayed at top-level will show a first character as group.
section.property: ""
delegate: KickoffListDelegate {
diff --git a/applets/kickoff/KickoffListView.qml b/applets/kickoff/KickoffListView.qml
index 382d146428..2d67bd59b7 100644
--- a/applets/kickoff/KickoffListView.qml
+++ b/applets/kickoff/KickoffListView.qml
@@ -33,7 +33,7 @@ EmptyPage {
property alias section: view.section
property alias highlight: view.highlight
property alias view: view
- property bool showingCategories: false
+ property bool isSidebar: false
property bool mainContentView: false
property bool hasSectionView: false
@@ -147,7 +147,7 @@ EmptyPage {
// Without switch-on-hover, it's possible for the selected category and the hovered category to be adjacent.
// When this happens, their highlights tuoch and look ungly without some artificial spacing added.
- spacing: root.showingCategories && !Plasmoid.configuration.switchCategoryOnHover ? Kirigami.Units.smallSpacing : 0
+ spacing: root.isSidebar && !Plasmoid.configuration.switchCategoryOnHover ? Kirigami.Units.smallSpacing : 0
section {
property: "group"
diff --git a/applets/kickoff/PlacesPage.qml b/applets/kickoff/PlacesPage.qml
index ff92f535e4..7f81096834 100644
--- a/applets/kickoff/PlacesPage.qml
+++ b/applets/kickoff/PlacesPage.qml
@@ -19,6 +19,7 @@ BasePage {
id: sideBar
focus: true // needed for Loaders
model: placesCategoryModel
+ isSidebar: true
delegate: KickoffListDelegate {
url: ""
description: ""
--
GitLab

View file

@ -1,3 +0,0 @@
Plasma 6.6.0:
Pr 5816 https://invent.kde.org/plasma/plasma-workspace/-/merge_requests/5816

View file

@ -1,76 +0,0 @@
From b29509a32a0aa93555f47bc3d3f04c665c511f30 Mon Sep 17 00:00:00 2001
From: Vlad Zahorodnii <vlad.zahorodnii@kde.org>
Date: Wed, 17 Sep 2025 10:27:07 +0300
Subject: [PATCH] shell: Port to KWaylandExtras::xdgActivationToken()
---
shell/desktopview.cpp | 41 +----------------------------------------
1 file changed, 1 insertion(+), 40 deletions(-)
diff --git a/shell/desktopview.cpp b/shell/desktopview.cpp
index 9c3baa84b91..ca48e44e887 100644
--- a/shell/desktopview.cpp
+++ b/shell/desktopview.cpp
@@ -395,44 +395,6 @@ bool DesktopView::event(QEvent *e)
return PlasmaQuick::ContainmentView::event(e);
}
-class ActivationTokenRequest : public QObject
-{
- Q_OBJECT
-
-public:
- explicit ActivationTokenRequest(QWindow *window)
- : m_serial(KWaylandExtras::lastInputSerial(window))
- {
- m_promise.start();
-
- connect(KWaylandExtras::self(), &KWaylandExtras::xdgActivationTokenArrived, this, [this](int serial, const QString &token) {
- if (m_serial == serial) {
- if (!m_promise.isCanceled()) {
- m_promise.addResult(token);
- }
- m_promise.finish();
- delete this;
- }
- });
- KWaylandExtras::requestXdgActivationToken(window, m_serial, QString());
- }
-
- QFuture<QString> future() const
- {
- return m_promise.future();
- }
-
-private:
- QPromise<QString> m_promise;
- int m_serial;
-};
-
-static QFuture<QString> fetchActivationToken(QWindow *window)
-{
- auto request = new ActivationTokenRequest(window);
- return request->future();
-}
-
bool DesktopView::handleKRunnerTextInput(QKeyEvent *e)
{
// allow only Shift and GroupSwitch modifiers
@@ -459,7 +421,7 @@ bool DesktopView::handleKRunnerTextInput(QKeyEvent *e)
if (!m_krunnerFuture.isCanceled()) {
m_krunnerFuture.cancel();
}
- m_krunnerFuture = fetchActivationToken(this);
+ m_krunnerFuture = KWaylandExtras::xdgActivationToken(this, QString());
m_krunnerFuture.then(this, [this](const QString &token) {
auto message = QDBusMessage::createMethodCall(QStringLiteral("org.kde.krunner"),
QStringLiteral("/org/kde/krunner"),
@@ -672,5 +634,4 @@ void DesktopView::setAccentColorFromWallpaper(const QColor &accentColor)
QDBusConnection::sessionBus().send(applyAccentColor);
}
-#include "desktopview.moc"
#include "moc_desktopview.cpp"
--
GitLab