Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package plasma6-browser-integration for openSUSE:Factory checked in at 2025-06-18 15:54:24 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/plasma6-browser-integration (Old) and /work/SRC/openSUSE:Factory/.plasma6-browser-integration.new.19631 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "plasma6-browser-integration" Wed Jun 18 15:54:24 2025 rev:24 rq:1285736 version:6.4.0 Changes: -------- --- /work/SRC/openSUSE:Factory/plasma6-browser-integration/plasma6-browser-integration.changes 2025-05-08 18:21:44.700465684 +0200 +++ /work/SRC/openSUSE:Factory/.plasma6-browser-integration.new.19631/plasma6-browser-integration.changes 2025-06-18 15:55:08.001697607 +0200 @@ -1,0 +2,38 @@ +Thu Jun 12 10:37:44 UTC 2025 - Fabian Vogt <fab...@ritter-vogt.de> + +- Update to 6.4.0: + * New bugfix release + * For more details see https://kde.org/announcements/plasma/6/6.4.0 +- Changes since 6.3.91: + * Update version for new release 6.4.0 + +------------------------------------------------------------------- +Thu May 29 21:20:57 UTC 2025 - Fabian Vogt <fab...@ritter-vogt.de> + +- Update to 6.3.91: + * New bugfix release + * For more details see https://kde.org/announcements/plasma/6/6.3.91 +- Changes since 6.3.90: + * Update version for new release 6.3.91 + +------------------------------------------------------------------- +Mon May 19 19:35:53 UTC 2025 - Fabian Vogt <fab...@ritter-vogt.de> + +- Update to 6.3.90: + * New feature release + * For more details see https://kde.org/announcements/plasma/6/6.3.90 +- Changes since 6.3.5: + * update version for new release + * feat: add librewolf support (kde#476967) + * Purpose plugin: Reject share if model has no items + * feat[flatpak-integrator]: add support for flatpak chromium variants + * feat[flatpak-integrator]: add support for variants + * Remove unused PROJECT_VERSION_MAJOR cmake variable + * flatpak-integrator: use more sophisticated code to pass around fds (kde#500000) + * CI: Add linux-qt6-next build + * Add missing include for flatpak-integrator plugin + * Use the XSI version of strerror_r when the GNU version isn't available + * Add xml/yaml linting + * update version for new release + +------------------------------------------------------------------- Old: ---- plasma-browser-integration-6.3.5.tar.xz plasma-browser-integration-6.3.5.tar.xz.sig New: ---- plasma-browser-integration-6.4.0.tar.xz plasma-browser-integration-6.4.0.tar.xz.sig ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ plasma6-browser-integration.spec ++++++ --- /var/tmp/diff_new_pack.wzfwHU/_old 2025-06-18 15:55:08.917735604 +0200 +++ /var/tmp/diff_new_pack.wzfwHU/_new 2025-06-18 15:55:08.917735604 +0200 @@ -16,8 +16,8 @@ # -%define kf6_version 6.10.0 -%define qt6_version 6.7.0 +%define kf6_version 6.14.0 +%define qt6_version 6.8.0 %define rname plasma-browser-integration @@ -29,14 +29,14 @@ # Latest ABI-stable Plasma (e.g. 6.0 in KF6, but 6.0.80 in KUF) %{!?_plasma6_version: %define _plasma6_version %(echo %{_plasma6_bugfix} | awk -F. '{print $1"."$2}')} Name: plasma6-browser-integration -Version: 6.3.5 +Version: 6.4.0 Release: 0 Summary: Helper for the KDE Plasma Browser Integration License: GPL-3.0-or-later URL: https://www.kde.org -Source: https://download.kde.org/stable/plasma/%{version}/%{rname}-%{version}.tar.xz +Source: %{rname}-%{version}.tar.xz %if %{with released} -Source1: https://download.kde.org/stable/plasma/%{version}/%{rname}-%{version}.tar.xz.sig +Source1: %{rname}-%{version}.tar.xz.sig Source2: plasma.keyring %endif BuildRequires: kf6-extra-cmake-modules >= %{kf6_version} @@ -103,6 +103,9 @@ mv %{buildroot}%{_prefix}/lib/mozilla %{buildroot}%{_libdir} fi +# Doesn't exist in openSUSE +rm -r %{buildroot}%{_prefix}/lib/librewolf + %find_lang %{name} --all-name %files ++++++ plasma-browser-integration-6.3.5.tar.xz -> plasma-browser-integration-6.4.0.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/plasma-browser-integration-6.3.5/.gitlab-ci.yml new/plasma-browser-integration-6.4.0/.gitlab-ci.yml --- old/plasma-browser-integration-6.3.5/.gitlab-ci.yml 2025-05-06 19:58:27.000000000 +0200 +++ new/plasma-browser-integration-6.4.0/.gitlab-ci.yml 2025-06-12 11:01:44.000000000 +0200 @@ -5,3 +5,6 @@ - project: sysadmin/ci-utilities file: - /gitlab-templates/linux-qt6.yml + - /gitlab-templates/xml-lint.yml + - /gitlab-templates/yaml-lint.yml + - /gitlab-templates/linux-qt6-next.yml diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/plasma-browser-integration-6.3.5/.kde-ci.yml new/plasma-browser-integration-6.4.0/.kde-ci.yml --- old/plasma-browser-integration-6.3.5/.kde-ci.yml 2025-05-06 19:58:27.000000000 +0200 +++ new/plasma-browser-integration-6.4.0/.kde-ci.yml 2025-06-12 11:01:44.000000000 +0200 @@ -2,8 +2,8 @@ # SPDX-License-Identifier: CC0-1.0 Dependencies: -- 'on': ['@all'] - 'require': + - 'on': ['@all'] + 'require': 'frameworks/extra-cmake-modules': '@latest-kf6' 'frameworks/kio': '@latest-kf6' 'frameworks/ki18n': '@latest-kf6' @@ -22,4 +22,4 @@ 'plasma/plasma-activities': '@latest-kf6' # Different branch scheme due to being a former Framework Options: - require-passing-tests-on: [ 'Linux', 'FreeBSD'] + require-passing-tests-on: ['Linux', 'FreeBSD'] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/plasma-browser-integration-6.3.5/CMakeLists.txt new/plasma-browser-integration-6.4.0/CMakeLists.txt --- old/plasma-browser-integration-6.3.5/CMakeLists.txt 2025-05-06 19:58:27.000000000 +0200 +++ new/plasma-browser-integration-6.4.0/CMakeLists.txt 2025-06-12 11:01:44.000000000 +0200 @@ -1,11 +1,10 @@ cmake_minimum_required(VERSION 3.16) -set(PROJECT_VERSION "6.3.5") -set(PROJECT_VERSION_MAJOR 6) +set(PROJECT_VERSION "6.4.0") project(plasma-browser-integration VERSION ${PROJECT_VERSION}) -set(PROJECT_DEP_VERSION "6.3.5") +set(PROJECT_DEP_VERSION "6.4.0") set(QT_MIN_VERSION "6.6.0") set(KF6_MIN_VERSION "6.8.0") @@ -75,6 +74,9 @@ set(MOZILLA_DIR "${CMAKE_INSTALL_PREFIX}/lib/mozilla" CACHE STRING "Mozilla directory") add_feature_info(MOZILLA_DIR On "Mozilla directory is '${MOZILLA_DIR}'") +set(LIBREWOLF_DIR "${CMAKE_INSTALL_PREFIX}/lib/librewolf" CACHE STRING "LibreWolf directory") +add_feature_info(LIBREWOLF_DIR On "LibreWolf directory is '${LIBREWOLF_DIR}'") + add_subdirectory(host) add_subdirectory(reminder) add_subdirectory(flatpak-integrator) @@ -102,9 +104,12 @@ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/org.kde.plasma.chrome_integration.json DESTINATION ${KDE_INSTALL_FULL_SYSCONFDIR}/opt/edge/native-messaging-hosts/ RENAME org.kde.plasma.browser_integration.json) # firefox install(FILES ${CMAKE_CURRENT_BINARY_DIR}/org.kde.plasma.firefox_integration.json DESTINATION ${MOZILLA_DIR}/native-messaging-hosts/ RENAME org.kde.plasma.browser_integration.json) +# LibreWolf +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/org.kde.plasma.firefox_integration.json DESTINATION ${LIBREWOLF_DIR}/native-messaging-hosts/ RENAME org.kde.plasma.browser_integration.json) if (COPY_MESSAGING_HOST_FILE_HOME) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/org.kde.plasma.firefox_integration.json DESTINATION $ENV{HOME}/.mozilla/native-messaging-hosts/ RENAME org.kde.plasma.browser_integration.json) + install(FILES ${CMAKE_CURRENT_BINARY_DIR}/org.kde.plasma.firefox_integration.json DESTINATION $ENV{HOME}/.librewolf/native-messaging-hosts/ RENAME org.kde.plasma.browser_integration.json) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/org.kde.plasma.chrome_integration.json DESTINATION $ENV{HOME}/.config/chromium/NativeMessagingHosts/ RENAME org.kde.plasma.browser_integration.json) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/org.kde.plasma.chrome_integration.json DESTINATION $ENV{HOME}/.config/google-chrome/NativeMessagingHosts/ RENAME org.kde.plasma.browser_integration.json) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/org.kde.plasma.chrome_integration.json DESTINATION $ENV{HOME}/.config/microsoft-edge/NativeMessagingHosts/ RENAME org.kde.plasma.browser_integration.json) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/plasma-browser-integration-6.3.5/extension/_locales/ar/messages.json new/plasma-browser-integration-6.4.0/extension/_locales/ar/messages.json --- old/plasma-browser-integration-6.3.5/extension/_locales/ar/messages.json 2025-05-06 19:58:27.000000000 +0200 +++ new/plasma-browser-integration-6.4.0/extension/_locales/ar/messages.json 2025-06-12 11:01:44.000000000 +0200 @@ -36,7 +36,7 @@ "message": "افتح في ”$1“" }, "kdeconnect_open_via": { - "message": "افتح في «كِيدِي المتّصل»" + "message": "افتح في «جسر كِيدِي»" }, "options_about_bugs": { "message": "إن وجدت مشكلة من فضلك راجِع <a href=\"$1\">قائمة العلل المفتوحة</a> ثمّ <a href=\"$2\">افتح بلاغًا عن علة</a>." @@ -102,10 +102,10 @@ "message": "ابحث عبر تأريخ المتصفّح" }, "options_plugin_kdeconnect_description": { - "message": "تُضيف هذه الملحقة مُدخلًا في قائمة السياق للروابط، فتتيح لك إرسالها إلى هاتفك وغيرها من أجهزة مقترنة عبر <a href=\"$1\">«كِيدِي المتّصل»</a>." + "message": "تُضيف هذه الملحقة مُدخلًا في قائمة السياق للروابط، فتتيح لك إرسالها إلى هاتفك وغيرها من أجهزة مقترنة عبر <a href=\"$1\">«جسر كِيدِي»</a>." }, "options_plugin_kdeconnect_title": { - "message": "أرسِل عبر «كِيدِي المتّصل»" + "message": "أرسِل عبر «جسر كِيدِي»" }, "options_plugin_mpris_description": { "message": "تُتيح لك التحكّم بمشّغلات الصوت والفديو في المواقع باستعمال بلازمويد ”متحكّم الوسائط“." diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/plasma-browser-integration-6.3.5/extension/_locales/de/messages.json new/plasma-browser-integration-6.4.0/extension/_locales/de/messages.json --- old/plasma-browser-integration-6.3.5/extension/_locales/de/messages.json 2025-05-06 19:58:27.000000000 +0200 +++ new/plasma-browser-integration-6.4.0/extension/_locales/de/messages.json 2025-06-12 11:01:44.000000000 +0200 @@ -69,7 +69,7 @@ "message": "Übersetzt von: $1" }, "options_about_translators": { - "message": "Deutsches KDE-Übersetzerteam" + "message": "Deutsches KDE-Übersetzungsteam" }, "options_heading_krunner": { "message": "Plasma-Suche" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/plasma-browser-integration-6.3.5/extension/_locales/es/messages.json new/plasma-browser-integration-6.4.0/extension/_locales/es/messages.json --- old/plasma-browser-integration-6.3.5/extension/_locales/es/messages.json 2025-05-06 19:58:27.000000000 +0200 +++ new/plasma-browser-integration-6.4.0/extension/_locales/es/messages.json 2025-06-12 11:01:44.000000000 +0200 @@ -120,7 +120,7 @@ "message": "Controles multimedia" }, "options_plugin_purpose_description": { - "message": "Añade una entrada de menú de contexto «Compartir...» y permite que los sitios web abran un diálogo para compartir contenido usando la API de Web Share." + "message": "Añade una entrada de menú de contexto «Compartir…» y permite que los sitios web abran un diálogo para compartir contenido usando la API de Web Share." }, "options_plugin_purpose_title": { "message": "Compartir contenido" @@ -165,7 +165,7 @@ "message": "Se necesitan permisos adicionales" }, "purpose_share": { - "message": "Compartir..." + "message": "Compartir…" }, "purpose_share_failed_text": { "message": "No se puede compartir esta contenido: $1" @@ -180,6 +180,6 @@ "message": "Contenido compartido" }, "store_description": { - "message": "Multitarea eficiente mediante el control de las funciones del navegador desde el escritorio, incluso cuando Chrome está en segundo plano. Gestión de la reproducción de sonido y de vídeo, comprobación de descargas en el área de notificaciones, envío de archivos al teléfono móvil mediante KDE Connect y mucho más desde el escritorio Plasma de KDE.\\n\\nEl paquete «plasma-browser-integration» debe estar instalado para que esta extensión funcione. Debería estar disponible en el gestor de paquetes de su distribución al ejecutar Plasma 5.13 o posterior.\\n\\nNOTA: Esta extensión no está disponible en Debian." + "message": "Multitask efficiently by controlling browser functions from the desktop, even while Chrome is in the background. Manage audio and video playback, check downloads in the notification area, send files to your phone using KDE Connect and more inside the KDE Plasma Desktop!\\n\\nThe plasma-browser-integration package must be installed for this extension to work. It should be available from your distribution's package manager when running Plasma 5.13 or later.\\n\\nNOTE: This extension is not supported on Debian." } } \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/plasma-browser-integration-6.3.5/extension/_locales/it/messages.json new/plasma-browser-integration-6.4.0/extension/_locales/it/messages.json --- old/plasma-browser-integration-6.3.5/extension/_locales/it/messages.json 2025-05-06 19:58:27.000000000 +0200 +++ new/plasma-browser-integration-6.4.0/extension/_locales/it/messages.json 2025-06-12 11:01:44.000000000 +0200 @@ -81,7 +81,7 @@ "message": "Questo può interferire con l'aspetto di siti web che applicano già uno stile personalizzato alla proprie barre di scorrimento." }, "options_plugin_breezeScrollBars_title": { - "message": "Usa barre di scorrimento in stile Breeze" + "message": "Usa barre di scorrimento in stile Brezza" }, "options_plugin_downloads_addToRecentDocuments": { "message": "Aggiungi i file scaricati ai documenti recenti" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/plasma-browser-integration-6.3.5/flatpak-integrator/browserintegrationflatpakintegrator.json new/plasma-browser-integration-6.4.0/flatpak-integrator/browserintegrationflatpakintegrator.json --- old/plasma-browser-integration-6.3.5/flatpak-integrator/browserintegrationflatpakintegrator.json 2025-05-06 19:58:27.000000000 +0200 +++ new/plasma-browser-integration-6.4.0/flatpak-integrator/browserintegrationflatpakintegrator.json 2025-06-12 11:01:44.000000000 +0200 @@ -2,6 +2,7 @@ "KPlugin": { "Description": "Automatically enables support for Firefox Flatpak", "Description[ar]": "تمكين الدعم لفيرفوكس إصدارة فلاتباك تلقائيًا", + "Description[az]": "Firefox Flatpak ilə inteqrasiyanı avtomatik aktiv edir", "Description[bg]": "Автоматично активира поддръжката на Firefox Flatpak", "Description[ca@valencia]": "Activa automàticament el suport per a Flatpak de Firefox", "Description[ca]": "Activa automàticament el suport per al Flatpak del Firefox", @@ -14,16 +15,18 @@ "Description[he]": "הפעלת תמיכה אוטומטית ב־Flatpak של Firefox", "Description[hu]": "Támogatás automatikus bekapcsolása Firefox Flatpak verziójához", "Description[ia]": "Habilita automaticamente le supporto perFirefox Flatpack", + "Description[is]": "Virkjar sjálfkrafa stuðning við Firefox Flatpak", "Description[it]": "Abilita automaticamente il supporto per Firefox Flatpak", "Description[ka]": "ავტომატურად ჩართავს Firefox Flatpak-ის მხარდაჭერას", "Description[ko]": "자동으로 Firefox Flatpak 지원 활성화", "Description[lt]": "Automatiškai įjungia Firefox Flatpak palaikymą", + "Description[lv]": "Automātiski ieslēdz „Firefox“ „Flatpak“ versijas atbalstu", "Description[nl]": "Schakelt automatisch ondersteuning voor Firefox Flatpak in", + "Description[nn]": "Slå automatisk på støtte for Firefox Flatpak", "Description[pl]": "Włącza obsługę Flatpaka z Firefoksem", "Description[pt_BR]": "Habilita automaticamente o suporte para Firefox flatpak", "Description[ru]": "Автоматическая активация поддержки браузера Firefox в формате самодостаточного пакета Flatpak", "Description[sa]": "स्वयमेव Firefox Flatpak इत्यस्य समर्थनं सक्षमं करोति", - "Description[sk]": "Automaticky povolí podporu pre Firefox Flatpak", "Description[sl]": "Samodejno omogoči podporo za Firefox Flatpak", "Description[sv]": "Aktiverar automatiskt stöd för Firefox Flatpak", "Description[tr]": "Firefox Flatpak için kendiliğinden desteği etkinleştirir", @@ -33,6 +36,7 @@ "Description[zh_TW]": "自動啟用對 Flatpak 版 Firefox 的支援", "Name": "Plasma Browser Integration Flatpak Integration", "Name[ar]": "تكامل متصفح البلازما مع فلاتباك", + "Name[az]": "Flatpak paketində quraşdırılmış Firefox ilə inteqrasiya", "Name[bg]": "Интеграция на Flatpak за браузър интеграция в Plasma", "Name[ca@valencia]": "Integració de Flatpak de la integració del navegador amb Plasma", "Name[ca]": "Integració del Flatpak de la integració del navegador amb el Plasma", @@ -45,11 +49,14 @@ "Name[he]": "שילוב פלזמה ודפדפן ב־Flatpak", "Name[hu]": "Plasma böngészőintegráció Flatpak integráció", "Name[ia]": "Plasma Browser Integration Flatpack Integration (Integration de Flatpak de integration de navigator de Plasma)", + "Name[is]": "Flatpak-samþætting fyrir vafrasamþættingu Plasma", "Name[it]": "Integrazione Plasma del browser per integrazione Flatpak", "Name[ka]": "Plasma-ის ბრაუზერის ინტეგრაცია Flatpak-ის ინტეგრაცია", "Name[ko]": "Plasma 브라우저 통합의 Flatpak 통합", "Name[lt]": "Plasma naršyklės integracijos Flatpak integracija", + "Name[lv]": "„Plasma“ pārlūka integrācijas „Flatpak“ integrācija", "Name[nl]": "Plasma-browserintegratie Flatpak-integratie", + "Name[nn]": "Flatpak-integrering for nettlesarintegrering for Plasma", "Name[pl]": "Dodanie Flatpaka z obsługą przeglądarki w Plazmie", "Name[pt_BR]": "Integração de navegadores no Plasma, integração com flatpak", "Name[ru]": "Интеграция с браузером Firefox, установленного в пакете Flatpak", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/plasma-browser-integration-6.3.5/flatpak-integrator/flatpak-host-wrapper new/plasma-browser-integration-6.4.0/flatpak-integrator/flatpak-host-wrapper --- old/plasma-browser-integration-6.3.5/flatpak-integrator/flatpak-host-wrapper 2025-05-06 19:58:27.000000000 +0200 +++ new/plasma-browser-integration-6.4.0/flatpak-integrator/flatpak-host-wrapper 2025-06-12 11:01:44.000000000 +0200 @@ -7,8 +7,18 @@ set -eu -# This packs $1 and $2 into a single string for gdbus of the form "'$1', '$2'\n" -args=$(printf "'%s', '%s'\n" "$1" "$2") +# Format arguments for gdbus based on whether it's Firefox (2 args) or Chrome (1 arg) +# See: https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Native_messaging#exchanging_messages +if [ $# -eq 2 ]; then + # Firefox case - pack $1 and $2 into a single string + args=$(printf "'%s', '%s'\n" "$1" "$2") +elif [ $# -eq 1 ]; then + # Chrome case - format single argument + args=$(printf "'%s'\n" "$1") +else + echo "Error: Expected 1 (Chrome) or 2 (Firefox) arguments but got $#" >&2 + exit 1 +fi # The descriptor madness needs some explaining: # We expect the forked gdbus to pick up three descriptors from us: 3, 4, and 5, respectively presenting our diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/plasma-browser-integration-6.3.5/flatpak-integrator/plugin.cpp new/plasma-browser-integration-6.4.0/flatpak-integrator/plugin.cpp --- old/plasma-browser-integration-6.3.5/flatpak-integrator/plugin.cpp 2025-05-06 19:58:27.000000000 +0200 +++ new/plasma-browser-integration-6.4.0/flatpak-integrator/plugin.cpp 2025-06-12 11:01:44.000000000 +0200 @@ -115,21 +115,56 @@ Q_CLASSINFO("D-Bus Interface", "org.kde.plasma.browser.integration.FlatpakIntegrator") public: + /** Enum for different browser types, i.e. which browser they are based on. */ + enum BrowserBase { + Firefox, + Chrome, + Chromium, + }; + Q_ENUM(BrowserBase) + + /** Browser information structure to hold browser-specific configuration. */ + struct BrowserInfo { + BrowserBase base; + + /** The browser's Flatpak id, e.g. "org.mozilla.firefox". */ + QString id; + + /** The directory the browser expects its native messaging hosts to be in. */ + QString nativeMessagingHostsDir; + }; + BrowserIntegrationFlatpakIntegrator(QObject *parent, const QList<QVariant> &) : KDEDModule(parent) { - auto flatpak = new QProcess(this); - connect(flatpak, qOverload<int, QProcess::ExitStatus>(&QProcess::finished), this, [flatpak](int, QProcess::ExitStatus) { - flatpak->deleteLater(); - }); - flatpak->start(u"flatpak"_s, {u"override"_s, u"--user"_s, u"--talk-name=org.kde.plasma.browser.integration"_s, u"org.mozilla.firefox"_s}); + // List of Flatpak browsers we support. + const QList<BrowserInfo> supportedBrowsers = { + {BrowserBase::Firefox, u"org.mozilla.firefox"_s, u"/.mozilla/native-messaging-hosts"_s}, + {BrowserBase::Firefox, u"io.gitlab.librewolf-community"_s, u"/.librewolf/native-messaging-hosts"_s}, + {BrowserBase::Chrome, u"com.google.Chrome"_s, u"/config/google-chrome/NativeMessagingHosts"_s}, + {BrowserBase::Chrome, u"com.google.ChromeDev"_s, u"/config/google-chrome-unstable/NativeMessagingHosts"_s}, + {BrowserBase::Chromium, u"org.chromium.Chromium"_s, u"/config/chromium/NativeMessagingHosts"_s}, + {BrowserBase::Chromium, u"io.github.ungoogled_software.ungoogled_chromium"_s, u"/config/chromium/NativeMessagingHosts"_s}, + }; + + // Set up Flatpak permissions for each browser + for (const auto &browser : supportedBrowsers) { + auto flatpak = new QProcess(this); + connect(flatpak, qOverload<int, QProcess::ExitStatus>(&QProcess::finished), this, [flatpak](int, QProcess::ExitStatus) { + flatpak->deleteLater(); + }); + flatpak->start(u"flatpak"_s, {u"override"_s, u"--user"_s, u"--talk-name=org.kde.plasma.browser.integration"_s, browser.id}); + } // Register on separate bus connection to avoid exposing other services to the sandbox auto connection = QDBusConnection::connectToBus(QDBusConnection::SessionBus, "org.kde.plasma.browser.integration"_L1); connection.registerService("org.kde.plasma.browser.integration"_L1); connection.registerObject("/org/kde/plasma/browser/integration"_L1, this, QDBusConnection::ExportAllSlots); - createMessagingHost(); // always create integration regardless of firefox being installed so we can be ready for the browser + // Create messaging hosts for each supported browser + for (const auto &browser : supportedBrowsers) { + createMessagingHost(browser); // always create integration regardless of the browser being installed so we can be ready for if it is installed + } } public Q_SLOTS: @@ -144,7 +179,14 @@ { constexpr auto maxBufferSize = 1024; thread_local std::array<char, maxBufferSize> buffer; +#ifdef STRERROR_R_CHAR_P return strerror_r(error, buffer.data(), buffer.size()); +#else + // Won't be changed by strerror_r but not const so compiler doesn't throw an error + static char unknown[] = "unknown error"; + + return strerror_r(error, buffer.data(), buffer.size()) ? unknown : buffer.data(); +#endif } int openNoSymlinks(const std::filesystem::path &path, int flags, mode_t mode = 0) @@ -166,28 +208,32 @@ return openat(dirfd, ".", flags | O_NOFOLLOW | O_CLOEXEC, mode); } - void createMessagingHost() + void createMessagingHost(const BrowserInfo &browser) { - QDir().mkpath(m_hostWrapperDir); + const QString hostWrapperDir = QDir::homePath() + QStringLiteral("/.var/app/") + browser.id; + const QString hostWrapperName = "plasma-browser-integration-host"_L1; + const QString hostWrapperPath = hostWrapperDir + "/"_L1 + hostWrapperName; - auto hostWrapperDirFd = openNoSymlinks(qUtf8Printable(m_hostWrapperDir), O_PATH); + QDir().mkpath(hostWrapperDir); + + auto hostWrapperDirFd = openNoSymlinks(qUtf8Printable(hostWrapperDir), O_PATH); const auto closeHostWrapperDirFd = qScopeGuard([hostWrapperDirFd]() { close(hostWrapperDirFd); }); if (hostWrapperDirFd == -1) { auto err = errno; - qCWarning(INTEGRATOR) << "Failed to open hostWrapper directory." << m_hostWrapperDir << ":" << safe_strerror(err); + qCWarning(INTEGRATOR) << "Failed to open hostWrapper directory." << hostWrapperDir << ":" << safe_strerror(err); return; } { // host wrapper - auto hostWrapperFd = openat(hostWrapperDirFd, qUtf8Printable(m_hostWrapperName), O_WRONLY | O_CLOEXEC | O_CREAT | O_TRUNC | O_NOFOLLOW, S_IRWXU); + auto hostWrapperFd = openat(hostWrapperDirFd, qUtf8Printable(hostWrapperName), O_WRONLY | O_CLOEXEC | O_CREAT | O_TRUNC | O_NOFOLLOW, S_IRWXU); auto closeHostWrapperFd = qScopeGuard([hostWrapperFd]() { close(hostWrapperFd); }); if (hostWrapperFd == -1) { auto err = errno; - qCWarning(INTEGRATOR) << "Failed to open host wrapper file" << m_hostWrapperName << ":" << safe_strerror(err); + qCWarning(INTEGRATOR) << "Failed to open host wrapper file" << hostWrapperName << ":" << safe_strerror(err); return; } @@ -215,7 +261,7 @@ } { // hosts definition - const QString extensionDefinitionDir = m_hostWrapperDir + "/.mozilla/native-messaging-hosts"_L1; + const QString extensionDefinitionDir = hostWrapperDir + browser.nativeMessagingHostsDir; QDir().mkpath(extensionDefinitionDir); auto defintionsDirFd = openNoSymlinks(qUtf8Printable(extensionDefinitionDir), O_PATH); @@ -244,20 +290,28 @@ qCWarning(INTEGRATOR) << "Failed to open extension definition file"; return; } + QJsonObject extensionDefinitionObject({ {u"name"_s, u"org.kde.plasma.browser_integration"_s}, {u"description"_s, u"Native connector for KDE Plasma"_s}, - {u"path"_s, m_hostWrapperPath}, + {u"path"_s, hostWrapperPath}, {u"type"_s, u"stdio"_s}, - {u"allowed_extensions"_s, QJsonArray({u"plasma-browser-integrat...@kde.org"_s})}, }); + + // Add browser-specific fields + if (browser.base == BrowserBase::Firefox) { + extensionDefinitionObject.insert(u"allowed_extensions"_s, QJsonArray({u"plasma-browser-integrat...@kde.org"_s})); + } else if (browser.base == BrowserBase::Chrome || browser.base == BrowserBase::Chromium) { + extensionDefinitionObject.insert(u"allowed_origins"_s, + QJsonArray({ + u"chrome-extension://cimiefiiaegbelhefglklhhakcgmhkai/"_s, + u"chrome-extension://dnnckbejblnejeabhcmhklcaljjpdjeh/"_s, + })); + } + extensionDefinition.write(QJsonDocument(extensionDefinitionObject).toJson()); } } - - const QString m_hostWrapperDir = QDir::homePath() + "/.var/app/org.mozilla.firefox"_L1; - const QString m_hostWrapperName = "plasma-browser-integration-host"_L1; - const QString m_hostWrapperPath = m_hostWrapperDir + "/"_L1 + m_hostWrapperName; }; K_PLUGIN_FACTORY_WITH_JSON(BrowserIntegrationFlatpakIntegratorFactory, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/plasma-browser-integration-6.3.5/host/purposeplugin.cpp new/plasma-browser-integration-6.4.0/host/purposeplugin.cpp --- old/plasma-browser-integration-6.3.5/host/purposeplugin.cpp 2025-05-06 19:58:27.000000000 +0200 +++ new/plasma-browser-integration-6.4.0/host/purposeplugin.cpp 2025-06-12 11:01:44.000000000 +0200 @@ -177,8 +177,20 @@ debug() << "Share mime type" << mimeType << "with data" << data; - m_menu->model()->setInputData(shareData); - m_menu->reload(); + auto *alternativesModel = m_menu->model(); + alternativesModel->setInputData(shareData); + + // Purpose does not tell us when it does not accept the given input data (e.g. missing field). + if (alternativesModel->rowCount() == 0) { + qWarning() << "Failed to find any share providers for the given data"; + // NOTE WebShare API asks not to disclose the failure to find a provider + // to the caller but we can't just leave the menu dangling. + sendPendingReply(false, + { + {QStringLiteral("errorCode"), QStringLiteral("INVALID_ARGUMENT")}, + }); + return; + } m_menu->popup(QCursor::pos()); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/plasma-browser-integration-6.3.5/po/az/plasma-browser-integration-host.po new/plasma-browser-integration-6.4.0/po/az/plasma-browser-integration-host.po --- old/plasma-browser-integration-6.3.5/po/az/plasma-browser-integration-host.po 2025-05-06 19:58:27.000000000 +0200 +++ new/plasma-browser-integration-6.4.0/po/az/plasma-browser-integration-host.po 2025-06-12 11:01:44.000000000 +0200 @@ -1,31 +1,32 @@ -# Copyright (C) YEAR This file is copyright: +# Copyright (C) 2025 This file is copyright: # This file is distributed under the same license as the plasma-browser-integration package. # -# Xəyyam Qocayev <xxm...@gmail.com>, 2020, 2021, 2022. +# SPDX-FileCopyrightText: 2025 X əyyam +# SPDX-FileCopyrightText: 2025 linux <xxm...@gmail.com> msgid "" msgstr "" "Project-Id-Version: plasma-browser-integration\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2024-10-28 00:41+0000\n" -"PO-Revision-Date: 2022-07-06 09:33+0400\n" -"Last-Translator: Kheyyam <xxm...@gmail.com>\n" +"PO-Revision-Date: 2025-05-06 11:29+0400\n" +"Last-Translator: linux <xxm...@gmail.com>\n" "Language-Team: Azerbaijani <kde-i18n-...@kde.org>\n" "Language: az\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Lokalize 22.04.2\n" +"X-Generator: Lokalize 25.04.0\n" #, kde-format msgctxt "NAME OF TRANSLATORS" msgid "Your names" -msgstr "" +msgstr "Xəyyam Qocayev" #, kde-format msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" -msgstr "" +msgstr "xxm...@gmail.com" #: downloadjob.cpp:138 #, kde-format diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/plasma-browser-integration-6.3.5/po/es/plasma-browser-integration-host.po new/plasma-browser-integration-6.4.0/po/es/plasma-browser-integration-host.po --- old/plasma-browser-integration-6.3.5/po/es/plasma-browser-integration-host.po 2025-05-06 19:58:27.000000000 +0200 +++ new/plasma-browser-integration-6.4.0/po/es/plasma-browser-integration-host.po 2025-06-12 11:01:44.000000000 +0200 @@ -1,15 +1,15 @@ # Spanish translations for plasma-browser-integration-host.po package. -# Copyright (C) 2019 This file is copyright: +# Copyright (C) 2019-2025 This file is copyright: # This file is distributed under the same license as the plasma-browser-integration package. -# # Automatically generated, 2019. -# SPDX-FileCopyrightText: 2019, 2021, 2024 Eloy Cuadra <ecua...@eloihr.net> +# +# SPDX-FileCopyrightText: 2019, 2021, 2024, 2025 Eloy Cuadra <ecua...@eloihr.net> msgid "" msgstr "" "Project-Id-Version: plasma-browser-integration-host\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2024-10-28 00:41+0000\n" -"PO-Revision-Date: 2024-08-07 01:10+0200\n" +"PO-Revision-Date: 2025-05-21 01:26+0100\n" "Last-Translator: Eloy Cuadra <ecua...@eloihr.net>\n" "Language-Team: Spanish <kde-l10n...@kde.org>\n" "Language: es\n" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/plasma-browser-integration-6.3.5/po/es/plasma-browser-integration-reminder.po new/plasma-browser-integration-6.4.0/po/es/plasma-browser-integration-reminder.po --- old/plasma-browser-integration-6.3.5/po/es/plasma-browser-integration-reminder.po 2025-05-06 19:58:27.000000000 +0200 +++ new/plasma-browser-integration-6.4.0/po/es/plasma-browser-integration-reminder.po 2025-06-12 11:01:44.000000000 +0200 @@ -1,15 +1,15 @@ # Spanish translations for plasma-browser-integration-reminder.po package. -# Copyright (C) 2018 This file is copyright: +# Copyright (C) 2018-2025 This file is copyright: # This file is distributed under the same license as the plasma-browser-integration package. -# # Automatically generated, 2018. -# Eloy Cuadra <ecua...@eloihr.net>, 2018. +# +# SPDX-FileCopyrightText: 2018, 2025 Eloy Cuadra <ecua...@eloihr.net> msgid "" msgstr "" "Project-Id-Version: plasma-browser-integration-reminder\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2023-06-08 02:13+0000\n" -"PO-Revision-Date: 2018-09-16 19:55+0100\n" +"PO-Revision-Date: 2025-05-21 01:27+0100\n" "Last-Translator: Eloy Cuadra <ecua...@eloihr.net>\n" "Language-Team: Spanish <kde-l10n...@kde.org>\n" "Language: es\n" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/plasma-browser-integration-6.3.5/po/pl/plasma-browser-integration-host.po new/plasma-browser-integration-6.4.0/po/pl/plasma-browser-integration-host.po --- old/plasma-browser-integration-6.3.5/po/pl/plasma-browser-integration-host.po 2025-05-06 19:58:27.000000000 +0200 +++ new/plasma-browser-integration-6.4.0/po/pl/plasma-browser-integration-host.po 2025-06-12 11:01:44.000000000 +0200 @@ -16,7 +16,6 @@ "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " "|| n%100>=20) ? 1 : 2);\n" -"X-Generator: Lokalize 23.08.5\n" #, kde-format msgctxt "NAME OF TRANSLATORS" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/plasma-browser-integration-6.3.5/reminder/browserintegrationreminder.json new/plasma-browser-integration-6.4.0/reminder/browserintegrationreminder.json --- old/plasma-browser-integration-6.3.5/reminder/browserintegrationreminder.json 2025-05-06 19:58:27.000000000 +0200 +++ new/plasma-browser-integration-6.4.0/reminder/browserintegrationreminder.json 2025-06-12 11:01:44.000000000 +0200 @@ -26,7 +26,7 @@ "Description[ka]": "გაწვდით ბმულს ბრაუზერის გაფართოებაზე, თუ Plasma-ის ბრაუზერის ინტეგრაციის ჰოსტი დაყენებულია", "Description[ko]": "Plasma 브라우저 통합 호스트가 설치되어 있을 때 브라우저 확장 기능 설치 링크 제공", "Description[lt]": "Pateikia nuorodą į naršyklės priedą tuo atveju, jei yra įdiegtas Plasma naršyklės integracijos mazgas", - "Description[lv]": "Sniedz saiti uz pārlūkprogrammas paplašinājumu, ja ir instalēta „Plasma“ pārlūka integrācijas saimnieksistēma", + "Description[lv]": "Nodrošina saiti uz pārlūkprogrammas paplašinājumu, ja ir instalēta „Plasma“ pārlūka integrācijas saimnieksistēma", "Description[nl]": "Biedt een koppeling naar de browser-extensie als de host voor Plasma-browserintegratie is geïnstalleerd", "Description[nn]": "Gjev ei lenkje til nettlesarutvidinga viss vert for integrering av Plasma-nettlesar er installert", "Description[pl]": "Dostarcza łącze do rozszerzeń przeglądarki, jeśli gospodarz integracji przeglądarki Plazmy został wgrany",