From ebccb33b4eb60a07e667332665181ba9ad352615 Mon Sep 17 00:00:00 2001 From: Gregor Kleen Date: Wed, 21 Oct 2026 15:05:50 +0200 Subject: ... --- overlays/etesync-dav.nix | 54 ++++------- overlays/etesync.nix | 14 +++ overlays/keepassxc/database-open-dialog.patch | 129 -------------------------- overlays/keepassxc/default.nix | 113 ---------------------- overlays/quickshell/default.nix | 2 +- overlays/quickshell/pipewire.patch | 127 ++++++++++++------------- 6 files changed, 96 insertions(+), 343 deletions(-) create mode 100644 overlays/etesync.nix delete mode 100644 overlays/keepassxc/database-open-dialog.patch delete mode 100644 overlays/keepassxc/default.nix (limited to 'overlays') diff --git a/overlays/etesync-dav.nix b/overlays/etesync-dav.nix index dbb7c7b6..64f30071 100644 --- a/overlays/etesync-dav.nix +++ b/overlays/etesync-dav.nix @@ -1,5 +1,5 @@ -{ final, prev, ... }: { - etesync-dav = final.python312Packages.buildPythonApplication rec { +{ flakeInputs, final, prev, ... }: { + etesync-dav = final.python312Packages.buildPythonApplication (finalAttrs: rec { pname = "etesync-dav"; version = "0.35.1"; pyproject = true; @@ -7,12 +7,23 @@ src = prev.fetchFromGitHub { owner = "etesync"; repo = "etesync-dav"; - tag = "v${version}"; + tag = "v${finalAttrs.version}"; hash = "sha256-y4BhU2kSn+RWqc5+pJQFhbwfat9cMWD0ED0EXJp25cY="; }; + patches = [ + (flakeInputs.nixpkgs + "/pkgs/by-name/et/etesync-dav/radicale-3-6-compat.patch") + (prev.fetchpatch { + url = "https://github.com/etesync/etesync-dav/pull/366.patch"; + hash = "sha256-WR+D6ZLMsvFzSFSGaensNxrs4VZAc9EoIwCfF6OPOSQ="; + }) + ]; + pythonRelaxDeps = [ "radicale" ]; + build-system = with final.python312Packages; [ setuptools ]; + PYTHONPATH = final.python312Packages.makePythonPath dependencies; + dependencies = with final.python312Packages; [ appdirs etebase @@ -21,40 +32,9 @@ flask-wtf msgpack requests - requests.optional-dependencies.socks - (buildPythonApplication rec { - pname = "radicale"; - version = "3.2.0"; - pyproject = true; - - src = prev.fetchFromGitHub { - owner = "Kozea"; - repo = "Radicale"; - rev = "refs/tags/v${version}"; - hash = "sha256-RxC8VOfdTXJZiAroDHTKjJqGWu65Z5uyb4WK1LOqubQ="; - }; - - postPatch = '' - sed -i '/addopts/d' setup.cfg - ''; - - build-system = [ - setuptools - ]; - - dependencies = [ - defusedxml - passlib - vobject - pika - python-dateutil - pytz # https://github.com/Kozea/Radicale/issues/816 - ] ++ passlib.optional-dependencies.bcrypt; - - doCheck = false; - }) - ]; + (toPythonModule (final.radicale.override { python3 = python; })) + ] ++ requests.optional-dependencies.socks; doCheck = false; - }; + }); } diff --git a/overlays/etesync.nix b/overlays/etesync.nix new file mode 100644 index 00000000..7311016e --- /dev/null +++ b/overlays/etesync.nix @@ -0,0 +1,14 @@ +{ final, prev, ... }: { + python312 = prev.python312.override { + packageOverrides = self: super: { + etesync = super.etesync.overridePythonAttrs (oldAttrs: { + patches = (oldAttrs.patches or []) ++ [ + (prev.fetchpatch { + url = "https://github.com/etesync/etebase-py/pull/59.patch"; + hash = "sha256-vCueuk4gYskBZkzwJB2B8d7N6XXNDgNBA7rsZ2gpZXs="; + }) + ]; + }); + }; + }; +} diff --git a/overlays/keepassxc/database-open-dialog.patch b/overlays/keepassxc/database-open-dialog.patch deleted file mode 100644 index dff84846..00000000 --- a/overlays/keepassxc/database-open-dialog.patch +++ /dev/null @@ -1,129 +0,0 @@ -diff --git a/src/browser/BrowserService.cpp b/src/browser/BrowserService.cpp -index 60412b5a..c0497d91 100644 ---- a/src/browser/BrowserService.cpp -+++ b/src/browser/BrowserService.cpp -@@ -249,7 +249,7 @@ QJsonObject BrowserService::createNewGroup(const QString& groupName) - return result; - } - -- auto dialogResult = MessageBox::warning(m_currentDatabaseWidget, -+ auto dialogResult = MessageBox::warning(nullptr, - tr("KeePassXC - Create a new group"), - tr("A request for creating a new group \"%1\" has been received.\n" - "Do you want to create this group?\n") -@@ -422,7 +422,7 @@ QList BrowserService::confirmEntries(QList& entriesToConfirm, - - m_dialogActive = true; - updateWindowState(); -- BrowserAccessControlDialog accessControlDialog(m_currentDatabaseWidget); -+ BrowserAccessControlDialog accessControlDialog{}; - - connect(m_currentDatabaseWidget, SIGNAL(databaseLockRequested()), &accessControlDialog, SLOT(reject())); - -@@ -512,7 +512,7 @@ QString BrowserService::storeKey(const QString& key) - QString id; - - do { -- QInputDialog keyDialog(m_currentDatabaseWidget); -+ QInputDialog keyDialog{}; - connect(m_currentDatabaseWidget, SIGNAL(databaseLockRequested()), &keyDialog, SLOT(reject())); - keyDialog.setWindowTitle(tr("KeePassXC - New key association request")); - keyDialog.setLabelText(tr("You have received an association request for the following database:\n%1\n\n" -@@ -535,7 +535,7 @@ QString BrowserService::storeKey(const QString& key) - - contains = db->metadata()->customData()->contains(CustomData::BrowserKeyPrefix + id); - if (contains) { -- dialogResult = MessageBox::warning(m_currentDatabaseWidget, -+ dialogResult = MessageBox::warning(nullptr, - tr("KeePassXC - Overwrite existing key?"), - tr("A shared encryption key with the name \"%1\" " - "already exists.\nDo you want to overwrite it?") -@@ -595,7 +595,7 @@ QJsonObject BrowserService::showPasskeysRegisterPrompt(const QJsonObject& public - const auto existingEntries = getPasskeyEntriesWithUserHandle(rpId, userId, keyList); - - raiseWindow(); -- BrowserPasskeysConfirmationDialog confirmDialog(m_currentDatabaseWidget); -+ BrowserPasskeysConfirmationDialog confirmDialog{}; - confirmDialog.registerCredential(username, rpId, existingEntries, timeout); - - auto dialogResult = confirmDialog.exec(); -@@ -612,7 +612,7 @@ QJsonObject BrowserService::showPasskeysRegisterPrompt(const QJsonObject& public - // If no entry is selected, show the import dialog for manual entry selection - auto selectedEntry = confirmDialog.getSelectedEntry(); - if (!selectedEntry) { -- PasskeyImporter passkeyImporter(m_currentDatabaseWidget); -+ PasskeyImporter passkeyImporter{}; - const auto result = passkeyImporter.showImportDialog(db, - nullptr, - origin, -@@ -683,7 +683,7 @@ QJsonObject BrowserService::showPasskeysAuthenticationPrompt(const QJsonObject& - const auto timeout = publicKeyOptions["timeout"].toInt(); - - raiseWindow(); -- BrowserPasskeysConfirmationDialog confirmDialog(m_currentDatabaseWidget); -+ BrowserPasskeysConfirmationDialog confirmDialog{}; - confirmDialog.authenticateCredential(entries, rpId, timeout); - auto dialogResult = confirmDialog.exec(); - if (dialogResult == QDialog::Accepted) { -@@ -760,7 +760,7 @@ void BrowserService::addPasskeyToEntry(Entry* entry, - - // Ask confirmation if entry already contains a Passkey - if (entry->hasPasskey()) { -- if (MessageBox::question(m_currentDatabaseWidget, -+ if (MessageBox::question(nullptr, - tr("KeePassXC - Update passkey"), - tr("Entry already has a passkey.\nDo you want to overwrite the passkey in %1 - %2?") - .arg(entry->title(), passkeyUtils()->getUsernameFromEntry(entry)), -@@ -873,7 +873,7 @@ bool BrowserService::updateEntry(const EntryParameters& entryParameters, const Q - MessageBox::Button dialogResult = MessageBox::No; - if (!browserSettings()->alwaysAllowUpdate()) { - raiseWindow(); -- dialogResult = MessageBox::question(m_currentDatabaseWidget, -+ dialogResult = MessageBox::question(nullptr, - tr("KeePassXC - Update Entry"), - tr("Do you want to update the information in %1 - %2?") - .arg(QUrl(entryParameters.siteUrl).host(), username), -@@ -909,7 +909,7 @@ bool BrowserService::deleteEntry(const QString& uuid) - return false; - } - -- auto dialogResult = MessageBox::warning(m_currentDatabaseWidget, -+ auto dialogResult = MessageBox::warning(nullptr, - tr("KeePassXC - Delete entry"), - tr("A request for deleting entry \"%1\" has been received.\n" - "Do you want to delete the entry?\n") -@@ -1536,7 +1536,7 @@ QSharedPointer BrowserService::selectedDatabase() - } - } - -- BrowserEntrySaveDialog browserEntrySaveDialog(m_currentDatabaseWidget); -+ BrowserEntrySaveDialog browserEntrySaveDialog{}; - int openDatabaseCount = browserEntrySaveDialog.setItems(databaseWidgets, m_currentDatabaseWidget); - if (openDatabaseCount > 1) { - int res = browserEntrySaveDialog.exec(); -diff --git a/src/fdosecrets/objects/Prompt.cpp b/src/fdosecrets/objects/Prompt.cpp -index e89cd499..347c98b8 100644 ---- a/src/fdosecrets/objects/Prompt.cpp -+++ b/src/fdosecrets/objects/Prompt.cpp -@@ -313,7 +313,7 @@ namespace FdoSecrets - if (!entries.isEmpty()) { - QString app = tr("%1 (PID: %2)").arg(client->name()).arg(client->pid()); - auto ac = new AccessControlDialog( -- findWindow(m_windowId), entries, app, client->processInfo(), AuthOption::Remember); -+ nullptr, entries, app, client->processInfo(), AuthOption::Remember); - connect(ac, &AccessControlDialog::finished, this, &UnlockPrompt::itemUnlockFinished); - connect(ac, &AccessControlDialog::finished, ac, &AccessControlDialog::deleteLater); - ac->open(); -diff --git a/src/gui/DatabaseTabWidget.cpp b/src/gui/DatabaseTabWidget.cpp -index 805d4eab..4836199e 100644 ---- a/src/gui/DatabaseTabWidget.cpp -+++ b/src/gui/DatabaseTabWidget.cpp -@@ -41,7 +41,7 @@ DatabaseTabWidget::DatabaseTabWidget(QWidget* parent) - : QTabWidget(parent) - , m_dbWidgetStateSync(new DatabaseWidgetStateSync(this)) - , m_dbWidgetPendingLock(nullptr) -- , m_databaseOpenDialog(new DatabaseOpenDialog(this)) -+ , m_databaseOpenDialog(new DatabaseOpenDialog()) - , m_databaseOpenInProgress(false) - { - auto* tabBar = new QTabBar(this); diff --git a/overlays/keepassxc/default.nix b/overlays/keepassxc/default.nix deleted file mode 100644 index 325f1aa4..00000000 --- a/overlays/keepassxc/default.nix +++ /dev/null @@ -1,113 +0,0 @@ -{ final, prev, flakeInputs, ... }: -{ - keepassxc = final.stdenv.mkDerivation (finalAttrs: { - pname = "keepassxc"; - version = "2.8.0-beta1"; - - src = final.fetchFromGitHub { - owner = "keepassxreboot"; - repo = "keepassxc"; - tag = finalAttrs.version; - hash = "sha256-fksThYmGZed66zxGDxlS2SHQzJYRf+T9AuZPbaNZV5Y="; - }; - - env = - final.lib.optionalAttrs final.stdenv.cc.isClang { - NIX_CFLAGS_COMPILE = toString [ - "-Wno-old-style-cast" - "-Wno-error" - "-D__BIG_ENDIAN__=${if final.stdenv.hostPlatform.isBigEndian then "1" else "0"}" - ]; - }; - - # Upstream develops against a build of PCSC from Xcode. - # The types are incompatible with nixpkgs pcsclite. - # https://github.com/NixOS/nixpkgs/issues/520227 - postPatch = '' - substituteInPlace src/keys/drivers/YubiKeyInterfacePCSC.cpp \ - --replace-fail "typedef uint32_t RETVAL;" "typedef int32_t RETVAL;" - ''; - - cmakeFlags = [ - (final.lib.cmakeFeature "KEEPASSXC_BUILD_TYPE" "Release") - (final.lib.cmakeBool "WITH_GUI_TESTS" true) - (final.lib.cmakeBool "WITH_XC_UPDATECHECK" false) - (final.lib.cmakeBool "WITH_XC_X11" false) - (final.lib.cmakeBool "WITH_XC_BROWSER" true) - (final.lib.cmakeBool "WITH_XC_BROWSER_PASSKEYS" true) - (final.lib.cmakeBool "WITH_XC_KEESHARE" true) - (final.lib.cmakeBool "WITH_XC_NETWORKING" true) - (final.lib.cmakeBool "WITH_XC_SSHAGENT" true) - (final.lib.cmakeBool "WITH_XC_FDOSECRETS" true) - (final.lib.cmakeBool "WITH_XC_YUBIKEY" true) - ]; - - doCheck = true; - checkPhase = - let - disabledTests = final.lib.concatStringsSep "|" ( - [ - # flaky - "testcli" - "testgui" - ] - ); - in - '' - runHook preCheck - - export LC_ALL="en_US.UTF-8" - export QT_QPA_PLATFORM=offscreen - export QT_PLUGIN_PATH="${final.qt6.qtbase}/${final.qt6.qtbase.qtPluginPrefix}" - - make test ARGS+="-E '${disabledTests}' --output-on-failure" - - runHook postCheck - ''; - - nativeBuildInputs = with final; [ - asciidoctor - cmake - qt6.wrapQtAppsHook - qt6.qttools - pkg-config - wrapGAppsHook3 - ]; - - dontWrapGApps = true; - preFixup = '' - qtWrapperArgs+=("''${gappsWrapperArgs[@]}") - ''; - - postInstall = final.lib.concatLines [ - # See https://github.com/keepassxreboot/keepassxc/blob/cd7a53abbbb81e468efb33eb56eefc12739969b8/src/browser/NativeMessageInstaller.cpp#L317 - # See https://github.com/keepassxreboot/keepassxc/blob/cd7a53abbbb81e468efb33eb56eefc12739969b8/utils/keepassxc-snap-helper.sh#L48-L58 - '' - mkdir -p "$out/lib/mozilla/native-messaging-hosts" - substituteAll "${toString (flakeInputs.nixpkgs) + "/pkgs/by-name/ke/keepassxc/firefox-native-messaging-host.json"}" "$out/lib/mozilla/native-messaging-hosts/org.keepassxc.keepassxc_browser.json" - - mkdir -p "$out/etc/chromium/native-messaging-hosts" - substituteAll "${toString (flakeInputs.nixpkgs) + "/pkgs/by-name/ke/keepassxc/chromium-native-messaging-host.json"}" "$out/etc/chromium/native-messaging-hosts/org.keepassxc.keepassxc_browser.json" - '' - ]; - - buildInputs = with final; [ - botan3 - curl - libxi - libxtst - libargon2 - qt6.qtbase - qt6.qtsvg - minizip - pcsclite - qrencode - readline - zlib - libusb1 - keyutils - ]; - - meta.mainProgram = "keepassxc"; - }); -} 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