diff options
Diffstat (limited to 'gui-apps/xwaylandvideobridge')
3 files changed, 127 insertions, 0 deletions
diff --git a/gui-apps/xwaylandvideobridge/files/xwaylandvideobridge-0.3.0-no-session-mgmt.patch b/gui-apps/xwaylandvideobridge/files/xwaylandvideobridge-0.3.0-no-session-mgmt.patch new file mode 100644 index 000000000000..af7e52b98f68 --- /dev/null +++ b/gui-apps/xwaylandvideobridge/files/xwaylandvideobridge-0.3.0-no-session-mgmt.patch @@ -0,0 +1,54 @@ +From 0ca63bfbd8b30dfdb5807f6e4e35ca272d7cdc01 Mon Sep 17 00:00:00 2001 +From: David Redondo <kde@david-redondo.de> +Date: Fri, 10 Nov 2023 09:52:33 +0100 +Subject: [PATCH] Do not start in an X11 session and opt out of session + managment + +xwaylandvideobridge runs with the Qt xcb backend, this means it +is also session managed by default. Since it is also autostarted +on every log a new instance is auotstarted and in addition the +session manager will start an instance for every one that was +running. So on second log in you will have 2 running instances, +on the third three, ... +Also exit on X11 where it is not needed. +--- + src/main.cpp | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +diff --git a/src/main.cpp b/src/main.cpp +index 8dda8a5..84e3677 100644 +--- a/src/main.cpp ++++ b/src/main.cpp +@@ -11,12 +11,16 @@ + + #include <QApplication> + #include <QCommandLineParser> ++#include <QSessionManager> + #include <QIcon> + #include <KLocalizedString> + #include <KAboutData> + + int main(int argc, char **argv) + { ++ if (qgetenv("XDG_SESSION_TYPE") == "x11") { ++ return 0; ++ } + qputenv("QT_QPA_PLATFORM", "xcb"); + qputenv("QT_XCB_GL_INTEGRATION", "xcb_egl"); + +@@ -25,6 +29,12 @@ int main(int argc, char **argv) + QApplication app(argc, argv); // widgets are needed just for the SNI. + app.setAttribute(Qt::AA_UseHighDpiPixmaps); + ++ auto disableSessionManagement = [](QSessionManager &sm) { ++ sm.setRestartHint(QSessionManager::RestartNever); ++ }; ++ QObject::connect(&app, &QGuiApplication::commitDataRequest, disableSessionManagement); ++ QObject::connect(&app, &QGuiApplication::saveStateRequest, disableSessionManagement); ++ + KLocalizedString::setApplicationDomain("xwaylandvideobridge"); + { + KAboutData about("xwaylandvideobridge", i18n("Xwayland Video Bridge"), version, i18n("Offer XDG Desktop Portals screencast streams to X11 apps"), +-- +GitLab + diff --git a/gui-apps/xwaylandvideobridge/files/xwaylandvideobridge-0.3.0-skip-switcher.patch b/gui-apps/xwaylandvideobridge/files/xwaylandvideobridge-0.3.0-skip-switcher.patch new file mode 100644 index 000000000000..6c71d238757d --- /dev/null +++ b/gui-apps/xwaylandvideobridge/files/xwaylandvideobridge-0.3.0-skip-switcher.patch @@ -0,0 +1,29 @@ +From 9ee3d7a21ee3069e37a205318914f48b2b597eaa Mon Sep 17 00:00:00 2001 +From: David Redondo <kde@david-redondo.de> +Date: Wed, 15 Nov 2023 11:24:10 +0100 +Subject: [PATCH] Also skip the switcher + +BUG:477025 +--- + src/contentswindow.cpp | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/contentswindow.cpp b/src/contentswindow.cpp +index addae88..b6d4846 100644 +--- a/src/contentswindow.cpp ++++ b/src/contentswindow.cpp +@@ -54,9 +54,9 @@ ContentsWindow::ContentsWindow() + setFlag(Qt::WindowDoesNotAcceptFocus); + setFlag(Qt::WindowTransparentForInput); + #if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) +- KX11Extras::setState(winId(), NET::SkipTaskbar | NET::SkipPager); ++ KX11Extras::setState(winId(), NET::SkipTaskbar | NET::SkipPager | NET::SkipSwitcher); + #else +- KWindowSystem::setState(winId(), NET::SkipTaskbar | NET::SkipPager); ++ KWindowSystem::setState(winId(), NET::SkipTaskbar | NET::SkipPager | NET::SkipSwitcher); + #endif + + // remove decoration. We can't use the Qt helper as we need our window type to remain something +-- +GitLab + diff --git a/gui-apps/xwaylandvideobridge/xwaylandvideobridge-0.3.0-r2.ebuild b/gui-apps/xwaylandvideobridge/xwaylandvideobridge-0.3.0-r2.ebuild new file mode 100644 index 000000000000..2abee612761c --- /dev/null +++ b/gui-apps/xwaylandvideobridge/xwaylandvideobridge-0.3.0-r2.ebuild @@ -0,0 +1,44 @@ +# Copyright 1999-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +KFMIN=5.106.0 +QTMIN=5.15.9 +KDE_ORG_CATEGORY="system" +inherit ecm kde.org + +DESCRIPTION="Screenshare Wayland windows to XWayland apps" +HOMEPAGE="https://planet.kde.org/david-edmundson-2023-03-22-fixing-wayland-xwayland-screen-casting/ +https://invent.kde.org/system/xwaylandvideobridge" + +if [[ ${KDE_BUILD_TYPE} == release ]]; then + SRC_URI="mirror://kde/stable/${PN}/${P}.tar.xz" + KEYWORDS="~amd64" +fi + +LICENSE="GPL-2+" +SLOT="0" + +DEPEND=" + >=dev-qt/qtdbus-${QTMIN}:5 + >=dev-qt/qtdeclarative-${QTMIN}:5 + >=dev-qt/qtgui-${QTMIN}:5 + >=dev-qt/qtwidgets-${QTMIN}:5 + >=dev-qt/qtx11extras-${QTMIN}:5 + >=kde-frameworks/kcoreaddons-${KFMIN}:5 + >=kde-frameworks/ki18n-${KFMIN}:5 + >=kde-frameworks/knotifications-${KFMIN}:5 + >=kde-frameworks/kwindowsystem-${KFMIN}:5[X] + >=kde-plasma/kpipewire-5.27.4:5 + media-libs/freetype + x11-libs/libxcb:= + x11-libs/xcb-util +" +RDEPEND="${DEPEND}" +BDEPEND="virtual/pkgconfig" + +PATCHES=( + "${FILESDIR}/${P}-no-session-mgmt.patch" + "${FILESDIR}/${P}-skip-switcher.patch" # KDE-bug 477025 +) |