From ebccb33b4eb60a07e667332665181ba9ad352615 Mon Sep 17 00:00:00 2001 From: Gregor Kleen Date: Wed, 21 Oct 2026 15:05:50 +0200 Subject: ... --- overlays/quickshell/default.nix | 2 +- overlays/quickshell/pipewire.patch | 127 +++++++++++++++++++------------------ 2 files changed, 65 insertions(+), 64 deletions(-) (limited to 'overlays/quickshell') diff --git a/overlays/quickshell/default.nix b/overlays/quickshell/default.nix index 47aee5ac..38c78883 100644 --- a/overlays/quickshell/default.nix +++ b/overlays/quickshell/default.nix @@ -17,7 +17,7 @@ patches = (oldAttrs.patches or []) ++ [ # ./lock-state-changed.patch - ./notify-session-unlock.patch + # ./notify-session-unlock.patch ./pipewire.patch ./io.patch ./close-stdin.patch diff --git a/overlays/quickshell/pipewire.patch b/overlays/quickshell/pipewire.patch index b94a2691..8c5a4c1e 100644 --- a/overlays/quickshell/pipewire.patch +++ b/overlays/quickshell/pipewire.patch @@ -1,7 +1,7 @@ -diff --git i/src/services/pipewire/device.cpp w/src/services/pipewire/device.cpp -index 616e7d0..0c55008 100644 ---- i/src/services/pipewire/device.cpp -+++ w/src/services/pipewire/device.cpp +diff --git c/src/services/pipewire/device.cpp i/src/services/pipewire/device.cpp +index 61079a1..7246a67 100644 +--- c/src/services/pipewire/device.cpp ++++ i/src/services/pipewire/device.cpp @@ -3,6 +3,7 @@ #include #include @@ -21,7 +21,7 @@ index 616e7d0..0c55008 100644 #include "../../core/logcat.hpp" #include "core.hpp" -@@ -46,6 +49,25 @@ void PwDevice::unbindHooks() { +@@ -46,6 +51,25 @@ void PwDevice::unbindHooks() { this->mWaitingForDevice = false; } @@ -47,7 +47,7 @@ index 616e7d0..0c55008 100644 const pw_device_events PwDevice::EVENTS = { .version = PW_VERSION_DEVICE_EVENTS, .info = &PwDevice::onInfo, -@@ -71,6 +93,11 @@ void PwDevice::onInfo(void* data, const pw_device_info* info) { +@@ -71,6 +95,11 @@ void PwDevice::onInfo(void* data, const pw_device_info* info) { } break; @@ -59,7 +59,7 @@ index 616e7d0..0c55008 100644 } } } -@@ -97,6 +124,15 @@ void PwDevice::onParam( +@@ -97,6 +126,15 @@ void PwDevice::onParam( } self->addDeviceIndexPairs(param); @@ -75,7 +75,7 @@ index 616e7d0..0c55008 100644 } } -@@ -145,6 +181,21 @@ void PwDevice::polled() { +@@ -159,6 +197,21 @@ void PwDevice::polled() { return false; }); } @@ -97,7 +97,7 @@ index 616e7d0..0c55008 100644 } bool PwDevice::setVolumes(qint32 routeDevice, const QVector& volumes) { -@@ -182,6 +233,15 @@ bool PwDevice::setMuted(qint32 routeDevice, bool muted) { +@@ -196,6 +249,15 @@ bool PwDevice::setMuted(qint32 routeDevice, bool muted) { }); } @@ -113,7 +113,7 @@ index 616e7d0..0c55008 100644 void PwDevice::waitForDevice() { this->mWaitingForDevice = true; } bool PwDevice::waitingForDevice() const { return this->mWaitingForDevice; } -@@ -222,4 +282,24 @@ bool PwDevice::setRouteProps( +@@ -236,4 +298,24 @@ bool PwDevice::setRouteProps( return true; } @@ -138,10 +138,10 @@ index 616e7d0..0c55008 100644 +} + } // namespace qs::service::pipewire -diff --git i/src/services/pipewire/device.hpp w/src/services/pipewire/device.hpp -index 1a1f705..ee64858 100644 ---- i/src/services/pipewire/device.hpp -+++ w/src/services/pipewire/device.hpp +diff --git c/src/services/pipewire/device.hpp i/src/services/pipewire/device.hpp +index f973b18..7cff16f 100644 +--- c/src/services/pipewire/device.hpp ++++ i/src/services/pipewire/device.hpp @@ -1,6 +1,7 @@ #pragma once @@ -150,7 +150,7 @@ index 1a1f705..ee64858 100644 #include #include -@@ -17,6 +18,20 @@ +@@ -16,6 +17,20 @@ namespace qs::service::pipewire { @@ -170,8 +170,8 @@ index 1a1f705..ee64858 100644 + class PwDevice; - class PwDevice: public PwBindable { -@@ -25,6 +40,12 @@ class PwDevice: public PwBindable& volumes); bool setMuted(qint32 routeDevice, bool muted); -@@ -32,9 +53,16 @@ public: - void waitForDevice(); - [[nodiscard]] bool waitingForDevice() const; +@@ -37,10 +58,17 @@ public: + [[nodiscard]] bool tryLoadVolumeProps(qint32 routeDevice, PwVolumeProps& volumeProps); + [[nodiscard]] bool hasRouteDevice(qint32 routeDevice) const; + void setProfile(qint32 profileIndex); + @@ -195,13 +195,14 @@ index 1a1f705..ee64858 100644 + signals: void deviceReady(); - void routeVolumesChanged(qint32 routeDevice, const PwVolumeProps& volumeProps); + void + routeVolumesChanged(qint32 routeDevice, const qs::service::pipewire::PwVolumeProps& volumeProps); + void profilesChanged(QList profiles); + void currentProfileChanged(PwProfile profile); private slots: void polled(); -@@ -49,6 +77,11 @@ private: +@@ -56,6 +84,11 @@ private: QList stagingIndexes; void addDeviceIndexPairs(const spa_pod* param); @@ -213,11 +214,11 @@ index 1a1f705..ee64858 100644 bool setRouteProps(qint32 routeDevice, const std::function& propsCallback); -diff --git i/src/services/pipewire/node.cpp w/src/services/pipewire/node.cpp -index 3e68149..4721a58 100644 ---- i/src/services/pipewire/node.cpp -+++ w/src/services/pipewire/node.cpp -@@ -145,6 +145,10 @@ void PwNode::initProps(const spa_dict* props) { +diff --git c/src/services/pipewire/node.cpp i/src/services/pipewire/node.cpp +index 2811833..25e1f8d 100644 +--- c/src/services/pipewire/node.cpp ++++ i/src/services/pipewire/node.cpp +@@ -146,6 +146,10 @@ void PwNode::initProps(const spa_dict* props) { this->type = PwNodeType::VideoSink; } else if (strcmp(mediaClass, "Video/Source") == 0) { this->type = PwNodeType::VideoSource; @@ -228,11 +229,11 @@ index 3e68149..4721a58 100644 } } -diff --git i/src/services/pipewire/node.hpp w/src/services/pipewire/node.hpp -index 0d4c92e..ee6f223 100644 ---- i/src/services/pipewire/node.hpp -+++ w/src/services/pipewire/node.hpp -@@ -144,6 +144,8 @@ public: +diff --git c/src/services/pipewire/node.hpp i/src/services/pipewire/node.hpp +index d96525a..4f44c8d 100644 +--- c/src/services/pipewire/node.hpp ++++ i/src/services/pipewire/node.hpp +@@ -145,6 +145,8 @@ public: // This is equivalent to the media class `Video/Sink` and is composed of the // @@PwNodeType.Video and @@PwNodeType.Sink flags. VideoSink = Video | Sink, @@ -241,11 +242,11 @@ index 0d4c92e..ee6f223 100644 }; Q_ENUM(Flag); Q_DECLARE_FLAGS(Flags, Flag); -diff --git i/src/services/pipewire/qml.cpp w/src/services/pipewire/qml.cpp -index 9efb17e..921d12a 100644 ---- i/src/services/pipewire/qml.cpp -+++ w/src/services/pipewire/qml.cpp -@@ -9,6 +9,9 @@ +diff --git c/src/services/pipewire/qml.cpp i/src/services/pipewire/qml.cpp +index e4424c1..407096b 100644 +--- c/src/services/pipewire/qml.cpp ++++ i/src/services/pipewire/qml.cpp +@@ -8,6 +8,9 @@ #include #include @@ -255,7 +256,7 @@ index 9efb17e..921d12a 100644 #include "../../core/model.hpp" #include "connection.hpp" #include "defaults.hpp" -@@ -54,6 +57,12 @@ Pipewire::Pipewire(QObject* parent): QObject(parent) { +@@ -53,6 +56,12 @@ Pipewire::Pipewire(QObject* parent): QObject(parent) { QObject::connect(&connection->registry, &PwRegistry::nodeAdded, this, &Pipewire::onNodeAdded); @@ -268,7 +269,7 @@ index 9efb17e..921d12a 100644 for (auto* link: connection->registry.links.values()) { this->onLinkAdded(link); } -@@ -123,6 +132,19 @@ void Pipewire::onNodeRemoved(QObject* object) { +@@ -115,6 +124,19 @@ void Pipewire::onNodeRemoved(QObject* object) { this->mNodes.removeObject(iface); } @@ -288,7 +289,7 @@ index 9efb17e..921d12a 100644 ObjectModel* Pipewire::links() { return &this->mLinks; } void Pipewire::onLinkAdded(PwLink* link) { -@@ -357,6 +379,8 @@ QVariantMap PwNodeIface::properties() const { +@@ -352,6 +374,8 @@ QVariantMap PwNodeIface::properties() const { PwNodeAudioIface* PwNodeIface::audio() const { return this->audioIface; } @@ -297,7 +298,7 @@ index 9efb17e..921d12a 100644 PwNodeIface* PwNodeIface::instance(PwNode* node) { if (node == nullptr) return nullptr; -@@ -481,4 +505,42 @@ void PwObjectTracker::objectDestroyed(QObject* object) { +@@ -476,4 +500,42 @@ void PwObjectTracker::objectDestroyed(QObject* object) { emit this->objectsChanged(); } @@ -340,10 +341,10 @@ index 9efb17e..921d12a 100644 +} + } // namespace qs::service::pipewire -diff --git i/src/services/pipewire/qml.hpp w/src/services/pipewire/qml.hpp -index e3489a1..e5e1891 100644 ---- i/src/services/pipewire/qml.hpp -+++ w/src/services/pipewire/qml.hpp +diff --git c/src/services/pipewire/qml.hpp i/src/services/pipewire/qml.hpp +index 93c4844..87cbcb3 100644 +--- c/src/services/pipewire/qml.hpp ++++ i/src/services/pipewire/qml.hpp @@ -12,11 +12,13 @@ #include "../../core/model.hpp" #include "link.hpp" @@ -378,13 +379,13 @@ index e3489a1..e5e1891 100644 @@ -159,7 +164,9 @@ signals: private slots: - void onNodeAdded(PwNode* node); + void onNodeAdded(qs::service::pipewire::PwNode* node); + void onDeviceAdded(PwDevice* node); void onNodeRemoved(QObject* object); + void onDeviceRemoved(QObject* object); - void onLinkAdded(PwLink* link); + void onLinkAdded(qs::service::pipewire::PwLink* link); void onLinkRemoved(QObject* object); - void onLinkGroupAdded(PwLinkGroup* group); + void onLinkGroupAdded(qs::service::pipewire::PwLinkGroup* group); @@ -167,6 +174,7 @@ private slots: private: @@ -454,11 +455,11 @@ index e3489a1..e5e1891 100644 ///! A connection between pipewire nodes. /// Note that there is one link per *channel* of a connection between nodes. /// You usually want @@PwLinkGroup. -diff --git i/src/services/pipewire/registry.cpp w/src/services/pipewire/registry.cpp -index c08fc1d..50c6d7a 100644 ---- i/src/services/pipewire/registry.cpp -+++ w/src/services/pipewire/registry.cpp -@@ -196,6 +196,7 @@ void PwRegistry::onGlobal( +diff --git c/src/services/pipewire/registry.cpp i/src/services/pipewire/registry.cpp +index 4b670b1..4295874 100644 +--- c/src/services/pipewire/registry.cpp ++++ i/src/services/pipewire/registry.cpp +@@ -236,6 +236,7 @@ void PwRegistry::onGlobal( device->initProps(props); self->devices.emplace(id, device); @@ -466,7 +467,7 @@ index c08fc1d..50c6d7a 100644 } } -@@ -211,6 +212,9 @@ void PwRegistry::onGlobalRemoved(void* data, quint32 id) { +@@ -251,6 +252,9 @@ void PwRegistry::onGlobalRemoved(void* data, quint32 id) { } else if (auto* node = self->nodes.value(id)) { self->nodes.remove(id); node->safeDestroy(); @@ -476,15 +477,15 @@ index c08fc1d..50c6d7a 100644 } } -diff --git i/src/services/pipewire/registry.hpp w/src/services/pipewire/registry.hpp -index 8473f04..87e0766 100644 ---- i/src/services/pipewire/registry.hpp -+++ w/src/services/pipewire/registry.hpp -@@ -132,6 +132,7 @@ public: +diff --git c/src/services/pipewire/registry.hpp i/src/services/pipewire/registry.hpp +index ec0a9ea..c9be65a 100644 +--- c/src/services/pipewire/registry.hpp ++++ i/src/services/pipewire/registry.hpp +@@ -133,6 +133,7 @@ public: signals: - void nodeAdded(PwNode* node); + void nodeAdded(qs::service::pipewire::PwNode* node); + void deviceAdded(PwDevice* node); - void linkAdded(PwLink* link); - void linkGroupAdded(PwLinkGroup* group); - void metadataAdded(PwMetadata* metadata); + void linkAdded(qs::service::pipewire::PwLink* link); + void linkGroupAdded(qs::service::pipewire::PwLinkGroup* group); + void metadataAdded(qs::service::pipewire::PwMetadata* metadata); -- cgit v1.2.3