commit:     1dc5b30ab72baabe2d3320b9e617eab25710b489
Author:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
AuthorDate: Thu Nov 23 12:16:50 2023 +0000
Commit:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
CommitDate: Thu Nov 23 12:32:36 2023 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=1dc5b30a

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 <AT> gentoo.org>

 ...xwaylandvideobridge-0.3.0-no-session-mgmt.patch | 54 ++++++++++++++++++++++
 .../xwaylandvideobridge-0.3.0-skip-switcher.patch  | 29 ++++++++++++
 .../xwaylandvideobridge-0.3.0-r2.ebuild            | 44 ++++++++++++++++++
 3 files changed, 127 insertions(+)

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 <[email protected]>
+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 <[email protected]>
+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
+)

Reply via email to