From fea2666ed4fbdb8bd4150ee67f263b382bca99b6 Mon Sep 17 00:00:00 2001 From: Felix Gerking <felix.gerking@garz-fricke.com> Date: Wed, 18 May 2022 16:24:15 +0200 Subject: [PATCH] Add qt-multi-screen-compositor recipe as alternative to weston The qt-multi-screen-compositor is based on examples from QT to implement a compositor based on QtWaylandCOmpositor. The implementation is done mostly in qml. (cherry picked from commit 98725129ad3f0600b910a938ca9d80544ac1eae8) --- .../files/qt-multi-screen-compositor@.service | 24 +++++++++ .../qt-multi-screen-compositor.bb | 50 +++++++++++++++++++ 2 files changed, 74 insertions(+) create mode 100644 recipes-qt/qt-multi-screen-compositor/files/qt-multi-screen-compositor@.service create mode 100644 recipes-qt/qt-multi-screen-compositor/qt-multi-screen-compositor.bb diff --git a/recipes-qt/qt-multi-screen-compositor/files/qt-multi-screen-compositor@.service b/recipes-qt/qt-multi-screen-compositor/files/qt-multi-screen-compositor@.service new file mode 100644 index 00000000..2650598c --- /dev/null +++ b/recipes-qt/qt-multi-screen-compositor/files/qt-multi-screen-compositor@.service @@ -0,0 +1,24 @@ +[Unit] +Description=Qt multi-screen Compositor +RequiresMountsFor=/run +Conflicts=plymouth-quit.service +After=systemd-user-sessions.service plymouth-quit-wait.service systemd-logind.service + +[Service] +User=%i +PAMName=login +Environment=XDG_RUNTIME_DIR=/var/run/user/0 +Environment=QT_QPA_FONTDIR=/usr/share/fonts/truetype +Environment=QT_QPA_PLATFORM=wayland +Environment=QT_QPA_EGLFS_KMS_CONFIG=/etc/kms.conf +Environment=QT_QPA_EGLFS_INTEGRATION=eglfs_kms +Environment=QT_QPA_EGLFS_KMS_ATOMIC=1 +Environment=QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS=rotate=180 +StandardError=journal +PermissionsStartOnly=true +IgnoreSIGPIPE=no + +#Type=notify +#NotifyAccess=all +Type=simple +ExecStart=/usr/bin/multi-screen -platform eglfs diff --git a/recipes-qt/qt-multi-screen-compositor/qt-multi-screen-compositor.bb b/recipes-qt/qt-multi-screen-compositor/qt-multi-screen-compositor.bb new file mode 100644 index 00000000..cac6e3ee --- /dev/null +++ b/recipes-qt/qt-multi-screen-compositor/qt-multi-screen-compositor.bb @@ -0,0 +1,50 @@ +SUMMARY = "Modified Qt multi-screen compositor example" +HOMEPAGE = "https://git.seco.com/seco-ne/tools/qt-multi-screen-compositor" + +LICENSE = "BSD-3-Clause" +LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/BSD-3-Clause;md5=550794465ba0ec5312d6919e203a55f9" + +DEPENDS = "qtbase qtquickcontrols" +RDEPENDS_${PN} += "qtwayland" + +SRCREV = "${AUTOREV}" +SRC_URI = "git://git@git.seco.com:4444/seco-ne/tools/qt-multi-screen-compositor.git;protocol=ssh;branch=master;nobranch=1 \ + file://qt-multi-screen-compositor@.service \ + " + +# Create a <tag>-<number of commits since tag>-<hash> Version string +inherit gitpkgv +PKGV = "${GITPKGVTAG}" + +S = "${WORKDIR}/git" + +inherit autotools +inherit systemd + +require recipes-qt/qt5/qt5.inc + +FILESEXTRAPATHS_prepend := "${THISDIR}:" + +# ${PN}-tools added by qt5.inc, but we do not need it +PACKAGES_remove = "${PN}-tools" + +QMAKE_PROFILES = "${S}/multi-screen.pro" + +do_install () { + #Application + install -d ${D}${bindir} + install -m 0755 multi-screen ${D}${bindir} + + if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then + #Systemd unit + install -d ${D}${systemd_system_unitdir}/ + install -D -p -m 0644 ${WORKDIR}/qt-multi-screen-compositor@.service ${D}${systemd_system_unitdir}/qt-multi-screen-compositor@.service + fi +} + +FILES_${PN} += " \ + ${systemd_system_unitdir}/qt-multi-screen-compositor@.service \ + " + +SYSTEMD_SERVICE_${PN} = "qt-multi-screen-compositor@%i.service" + -- GitLab