summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Sturmlechner <asturm@gentoo.org>2023-11-23 13:16:50 +0100
committerAndreas Sturmlechner <asturm@gentoo.org>2023-11-23 13:32:36 +0100
commit1dc5b30ab72baabe2d3320b9e617eab25710b489 (patch)
treeb24ef325989c6d294b02281c21bdae7521eb8ee8 /gui-apps/xwaylandvideobridge
parentdev-libs/libgpiod: add 2.1 (diff)
downloadgentoo-1dc5b30ab72baabe2d3320b9e617eab25710b489.tar.gz
gentoo-1dc5b30ab72baabe2d3320b9e617eab25710b489.tar.bz2
gentoo-1dc5b30ab72baabe2d3320b9e617eab25710b489.zip
gui-apps/xwaylandvideobridge: Opt out of session mgmt., skip switcher
KDE-bug: https://bugs.kde.org/show_bug.cgi?id=477025 Signed-off-by: Andreas Sturmlechner <asturm@gentoo.org>
Diffstat (limited to 'gui-apps/xwaylandvideobridge')
-rw-r--r--gui-apps/xwaylandvideobridge/files/xwaylandvideobridge-0.3.0-no-session-mgmt.patch54
-rw-r--r--gui-apps/xwaylandvideobridge/files/xwaylandvideobridge-0.3.0-skip-switcher.patch29
-rw-r--r--gui-apps/xwaylandvideobridge/xwaylandvideobridge-0.3.0-r2.ebuild44
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
+)