From a4c298f82900d0d0b2fea05c65e1264dab7c08dc Mon Sep 17 00:00:00 2001 From: Bart Ribbers Date: Fri, 24 May 2019 21:51:10 +0200 Subject: [PATCH] Plasma mobile, weston: use lightdm, elogind (!379) Move Wayland meta packages to LightDM and replace ConsoleKit2 for elogind for Plasma. Now we don't need the hacky scripts in /etc/profile.d anymore! This change requires elogind for both Weston and Plasma Mobile. Using elogind allows us to use one patch less in kwin. Weston has logind (which elogind provides) support disabled in Alpine Linux, so I put the package in temp/ with it enabled for now, but will upstream this change to Alpine. Remove consolekit2 dependency in postmarketos-ui-xfce4. [ci:skip-build]: already built successfully. --- kde/kscreenlocker/APKBUILD | 6 +- ...connection-Don-t-hardcode-seat0-anym.patch | 30 ---- kde/kwin/APKBUILD | 4 +- kde/plasma-phone-components/APKBUILD | 18 ++- .../plasma-mobile.desktop | 11 ++ kde/plasma-phone-components/startplasmamobile | 29 ++++ kde/plasma-workspace/APKBUILD | 4 +- kde/polkit-kde-agent/APKBUILD | 3 +- .../60-lightdm-autologin.conf | 5 + main/postmarketos-ui-plasma-mobile/APKBUILD | 26 ++-- ...postmarketos-ui-plasma-mobile.post-install | 11 +- .../start_plasma.sh | 37 ----- .../unlock-plasma | 5 +- .../60-lightdm-autologin.conf | 5 + main/postmarketos-ui-weston/APKBUILD | 17 +-- .../postmarketos-ui-weston.post-install | 14 +- main/postmarketos-ui-xfce4/APKBUILD | 6 +- temp/weston/APKBUILD | 128 ++++++++++++++++++ temp/weston/timespec.patch | 10 ++ .../weston-launch-custom-error-function.patch | 48 +++++++ temp/weston/weston.pre-install | 5 + 21 files changed, 292 insertions(+), 130 deletions(-) delete mode 100644 kde/kwin/0002-Revert-libinput-connection-Don-t-hardcode-seat0-anym.patch create mode 100644 kde/plasma-phone-components/plasma-mobile.desktop create mode 100755 kde/plasma-phone-components/startplasmamobile create mode 100644 main/postmarketos-ui-plasma-mobile/60-lightdm-autologin.conf delete mode 100644 main/postmarketos-ui-plasma-mobile/start_plasma.sh create mode 100644 main/postmarketos-ui-weston/60-lightdm-autologin.conf create mode 100644 temp/weston/APKBUILD create mode 100644 temp/weston/timespec.patch create mode 100644 temp/weston/weston-launch-custom-error-function.patch create mode 100644 temp/weston/weston.pre-install diff --git a/kde/kscreenlocker/APKBUILD b/kde/kscreenlocker/APKBUILD index 05a680dd5..bc4f42cf3 100644 --- a/kde/kscreenlocker/APKBUILD +++ b/kde/kscreenlocker/APKBUILD @@ -2,13 +2,13 @@ # Maintainer: Bart Ribbers pkgname=kscreenlocker pkgver=5.15.5 -pkgrel=1 +pkgrel=2 pkgdesc="Library and components for secure lock screen architecture" arch="all !armhf" url="https://www.kde.org/workspaces/plasmadesktop/" license="GPL-2.0" -depends="linux-pam" -depends_dev="kcmutils-dev consolekit2-dev linux-pam-dev kidletime-dev kwayland-dev kdeclarative-dev qt5-qtdeclarative-dev kcrash-dev kglobalaccel-dev ki18n-dev ktextwidgets-dev qt5-qtx11extras-dev kwindowsystem-dev kxmlgui-dev kconfig-dev sonnet-dev kconfigwidgets-dev kauth-dev kcoreaddons-dev kcodecs-dev kwidgetsaddons-dev kservice-dev kpackage-dev knotifications-dev solid-dev" +depends="linux-pam elogind" +depends_dev="kcmutils-dev linux-pam-dev kidletime-dev kwayland-dev kdeclarative-dev qt5-qtdeclarative-dev kcrash-dev kglobalaccel-dev ki18n-dev ktextwidgets-dev qt5-qtx11extras-dev kwindowsystem-dev kxmlgui-dev kconfig-dev sonnet-dev kconfigwidgets-dev kauth-dev kcoreaddons-dev kcodecs-dev kwidgetsaddons-dev kservice-dev kpackage-dev knotifications-dev solid-dev" makedepends="$depends_dev extra-cmake-modules kdoctools-dev libxcursor xcb-util-keysyms-dev" source="https://download.kde.org/stable/plasma/$pkgver/$pkgname-$pkgver.tar.xz kde.pam diff --git a/kde/kwin/0002-Revert-libinput-connection-Don-t-hardcode-seat0-anym.patch b/kde/kwin/0002-Revert-libinput-connection-Don-t-hardcode-seat0-anym.patch deleted file mode 100644 index 297a3975e..000000000 --- a/kde/kwin/0002-Revert-libinput-connection-Don-t-hardcode-seat0-anym.patch +++ /dev/null @@ -1,30 +0,0 @@ -From dd721ba4d51d0c090f765fb6acd8fa86ede6b806 Mon Sep 17 00:00:00 2001 -From: Bhushan Shah -Date: Mon, 2 Jul 2018 11:50:37 +0530 -Subject: [PATCH 2/2] Revert "libinput/connection: Don't hardcode seat0 - anymore" - -This reverts commit ddda524974d99249570e72d17f34215a735b2acc. ---- - libinput/connection.cpp | 5 +++-- - 1 file changed, 3 insertions(+), 2 deletions(-) - -diff --git a/libinput/connection.cpp b/libinput/connection.cpp -index 7664659d6..82c374d71 100644 ---- a/libinput/connection.cpp -+++ b/libinput/connection.cpp -@@ -135,8 +135,9 @@ Connection *Connection::create(QObject *parent) - s_context = nullptr; - return nullptr; - } -- if (!s_context->assignSeat(LogindIntegration::self()->seat().toUtf8().constData())) { -- qCWarning(KWIN_LIBINPUT) << "Failed to assign seat" << LogindIntegration::self()->seat(); -+ // TODO: don't hardcode seat name -+ if (!s_context->assignSeat("seat0")) { -+ qCWarning(KWIN_LIBINPUT) << "Failed to assign seat seat0"; - delete s_context; - s_context = nullptr; - return nullptr; --- -2.17.1 - diff --git a/kde/kwin/APKBUILD b/kde/kwin/APKBUILD index 9b2d97fad..3daed0ec2 100644 --- a/kde/kwin/APKBUILD +++ b/kde/kwin/APKBUILD @@ -3,7 +3,7 @@ pkgname=kwin pkgver=5.15.5 _pkgver="$pkgver" -pkgrel=1 +pkgrel=2 pkgdesc="An easy to use, but flexible, composited Window Manager" arch="all !armhf" url="https://www.kde.org/workspaces/plasmadesktop/" @@ -13,7 +13,6 @@ depends_dev="qt5-qtdeclarative-dev qt5-qtscript-dev qt5-qtsensors-dev qt5-qtx11e makedepends="$depends_dev extra-cmake-modules qt5-qttools-dev kdoctools-dev libxkbcommon-dev libepoxy-dev libinput-dev xcb-util-cursor-dev libdrm-dev eudev-dev xcb-util-wm-dev" source="https://download.kde.org/stable/plasma/$pkgver/$pkgname-$_pkgver.tar.xz 0001-Revert-udev-Only-handle-devices-from-the-current-sea.patch - 0002-Revert-libinput-connection-Don-t-hardcode-seat0-anym.patch 0001-Disable-finding-of-qml-modules.patch" subpackages="$pkgname-dev $pkgname-doc $pkgname-lang" options="!check" # Fails due to requiring running X11 @@ -39,5 +38,4 @@ package() { } sha512sums="2ea3af33cf79e7acde996c87507d277f114f2491ff3090cb0335ce6d026ae06c6ad83aa3fd5b86bbb01791cca747291ce801fc2d93d20e6d7b88f709893a3f53 kwin-5.15.5.tar.xz a34ff6926f020117fafd8a31c18a183eecb3e0a5fe6c3f2784f531171552350615fb06cbac2f3a1248011eb83ec32fc9df4b64f82443dee1d8e90c1be49e2690 0001-Revert-udev-Only-handle-devices-from-the-current-sea.patch -a534a3d388f066f84813148743eda1da1be000907ddf2c762c098a7ce38fcc1992eaa74763c47d98e82b83e38a03a828f4f3368e7e7ab733714f993646af7c8b 0002-Revert-libinput-connection-Don-t-hardcode-seat0-anym.patch d9e5900b4349d2869be51e89ebcf8e9ea73a830196f40f682ea9d6f56719ae9f54025d7f33c68e71c56e128aa7c6014388d18a6572c1a8c33341c405285156b2 0001-Disable-finding-of-qml-modules.patch" diff --git a/kde/plasma-phone-components/APKBUILD b/kde/plasma-phone-components/APKBUILD index d08b55b2d..125f439b5 100644 --- a/kde/plasma-phone-components/APKBUILD +++ b/kde/plasma-phone-components/APKBUILD @@ -2,7 +2,7 @@ # Maintainer: Bart Ribbers pkgname=plasma-phone-components pkgver=0_git20190505 -pkgrel=2 +pkgrel=3 _commit="cec97e231b6106eb5c69fd9b774769cd3c8e72b1" pkgdesc="Modules providing phone functionality for Plasma" arch="all" @@ -13,7 +13,9 @@ makedepends="extra-cmake-modules kpeople-dev qt5-qtdeclarative-dev kactivities-d install="$pkgname.post-install $pkgname.post-upgrade $pkgname.post-deinstall" -source="$pkgname-$_commit.tar.gz::https://invent.kde.org/kde/$pkgname/-/archive/$_commit/$pkgname-$_commit.tar.gz" +source="$pkgname-$_commit.tar.gz::https://invent.kde.org/kde/$pkgname/-/archive/$_commit/$pkgname-$_commit.tar.gz + startplasmamobile + plasma-mobile.desktop" builddir="$srcdir/$pkgname-$_commit" build() { @@ -33,6 +35,14 @@ check() { package() { cd "$builddir" - make DESTDIR="$pkgdir" install + DESTDIR="$pkgdir" make install + + install -D -m755 "$srcdir"/startplasmamobile \ + "$pkgdir"/usr/bin/startplasmamobile + + install -Dm644 "$srcdir"/plasma-mobile.desktop \ + "$pkgdir"/usr/share/wayland-sessions/plasma-mobile-2.desktop } -sha512sums="2c941ecc1b4c054c09753c19db1cf00157d5d51b3f2f0067125e67a6311eb26419a295df6fec52467e1019a833ee054e62db2ca58ad0219061bbcb7ca961393a plasma-phone-components-cec97e231b6106eb5c69fd9b774769cd3c8e72b1.tar.gz" +sha512sums="2c941ecc1b4c054c09753c19db1cf00157d5d51b3f2f0067125e67a6311eb26419a295df6fec52467e1019a833ee054e62db2ca58ad0219061bbcb7ca961393a plasma-phone-components-cec97e231b6106eb5c69fd9b774769cd3c8e72b1.tar.gz +bfa5df2bb635899b6b88816dd02073d6949303f1282c3acd91fd8bc1e92b10db2fbfa167d2df6c6e11ecb763b6b94ed0451b5b1ddc504543402e6a9ce6bb985c startplasmamobile +7f4bdbd30cda4c9e23293b7bb1eb6e8536ada056cb3bcc9a6cc3db7bbc2277eac67b519992b7e46afdf5c720df9c696b43a6a9e9f82ed7ebe3937d8c0bf4d55d plasma-mobile.desktop" diff --git a/kde/plasma-phone-components/plasma-mobile.desktop b/kde/plasma-phone-components/plasma-mobile.desktop new file mode 100644 index 000000000..7c12889b5 --- /dev/null +++ b/kde/plasma-phone-components/plasma-mobile.desktop @@ -0,0 +1,11 @@ +[Desktop Entry] +Name=Plasma Mobile +Name[en]=Plasma Mobile +Comment=This session logs you into Plasma Mobile +Comment[en]=This session logs you into Plasma Mobile +Exec=dbus-run-session /usr/bin/startplasmamobile +TryExec=/usr/bin/startplasmamobile +Icon= +Type=Application +X-DesktopNames=Plasma Mobile +Keywords=launch;Plasma;mobile;desktop;session; diff --git a/kde/plasma-phone-components/startplasmamobile b/kde/plasma-phone-components/startplasmamobile new file mode 100755 index 000000000..c0d51541f --- /dev/null +++ b/kde/plasma-phone-components/startplasmamobile @@ -0,0 +1,29 @@ +#!/bin/sh + +udevadm trigger +udevadm settle + +export QML2_IMPORT_PATH=/usr/lib/qt/qml:/usr/lib/qt5/qml +export QT_QPA_PLATFORMTHEME=KDE +export QT_QUICK_CONTROLS_STYLE=Plasma +export QT_WAYLAND_DISABLE_WINDOWDECORATION=1 +export XDG_CURRENT_DESKTOP=KDE +export KDE_SESSION_VERSION=5 +export PLASMA_PLATFORM=phone +export QT_VIRTUALKEYBOARD_STYLE=Plasma +export QT_QUICK_CONTROLS_MOBILE=true + +sleep 2 + +if [ -d "/dev/dri" ]; then + kwin_wayland --drm --xwayland plasma-phone 2>&1 | logger -t "$(whoami):plasma-mobile" +else + # NOTE: using GALLIUM_DRIVER=llvmpipe might give you better performance (or not work at all.) + # If it does give you a performance gain, please open an issue to discuss how to implement this properly. + export GALLIUM_DRIVER=softpipe + export KWIN_COMPOSE=Q + export LIBGL_ALWAYS_SOFTWARE=1 + + echo "startplasmamobile: using software rendering with: ${GALLIUM_DRIVER}" | logger -t "$(whoami):plasma-mobile" + kwin_wayland --framebuffer --xwayland plasma-phone 2>&1 | logger -t "$(whoami):plasma-mobile" +fi diff --git a/kde/plasma-workspace/APKBUILD b/kde/plasma-workspace/APKBUILD index 16b41b008..effbb022c 100644 --- a/kde/plasma-workspace/APKBUILD +++ b/kde/plasma-workspace/APKBUILD @@ -2,12 +2,12 @@ # Maintainer: Bart Ribbers pkgname=plasma-workspace pkgver=5.15.5 -pkgrel=2 +pkgrel=3 pkgdesc="KDE Plasma Workspace" arch="all !armhf" url="https://www.kde.org/workspaces/plasmadesktop/" license="GPL-2.0" -depends="kwin iso-codes qt5-qtwayland kactivitymanagerd kinit milou consolekit2 plasma-integration frameworkintegration" +depends="kwin iso-codes qt5-qtwayland kactivitymanagerd kinit milou plasma-integration frameworkintegration" depends_dev="krunner-dev kdesignerplugin-dev kdesignerplugin qt5-qtwayland-dev qt5-qtdeclarative-dev kxmlrpcclient-dev kdelibs4support-dev plasma-framework-dev knotifyconfig-dev kcmutils-dev kdesu-dev kwallet-dev ksysguard kwin-dev kguiaddons-dev kjsembed-dev knewstuff-dev qt5-qtx11extras-dev ktexteditor-dev libksysguard-dev kwallet-dev attica-qt-dev kitemmodels-dev kscreenlocker-dev qt5-qtscript-dev karchive-dev kcrash-dev kpackage-dev kactivities-dev kdeclarative-dev kpty-dev kjs-dev ktextwidgets-dev sonnet-dev kauth-dev kconfigwidgets-dev ki18n-dev kcodecs-dev kwidgetsaddons-dev kservice-dev kxmlgui-dev kwindowsystem-dev kcoreaddons-dev kconfig-dev kemoticons-dev kiconthemes-dev kinit-dev knotifications-dev kio-dev kbookmarks-dev kparts-dev kcompletion-dev kitemviews-dev kjobwidgets-dev solid-dev kunitconversion-dev kdbusaddons-dev kidletime-dev kglobalaccel-dev phonon-qt5-dev kwayland-dev baloo-dev prison-dev kholidays-dev networkmanager-qt-dev" makedepends="$depends_dev extra-cmake-modules kdoctools-dev gpsd iso-codes-dev libxtst-dev xcb-util-image-dev libxrender-dev" source="https://download.kde.org/stable/plasma/$pkgver/$pkgname-$pkgver.tar.xz" diff --git a/kde/polkit-kde-agent/APKBUILD b/kde/polkit-kde-agent/APKBUILD index 38d6b4b18..9fcf9f903 100644 --- a/kde/polkit-kde-agent/APKBUILD +++ b/kde/polkit-kde-agent/APKBUILD @@ -17,8 +17,7 @@ build() { cmake \ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \ -DCMAKE_INSTALL_PREFIX=/usr \ - -DCMAKE_INSTALL_LIBDIR=lib \ - -DCMAKE_INSTALL_LIBEXECDIR=lib + -DCMAKE_INSTALL_LIBDIR=lib make } diff --git a/main/postmarketos-ui-plasma-mobile/60-lightdm-autologin.conf b/main/postmarketos-ui-plasma-mobile/60-lightdm-autologin.conf new file mode 100644 index 000000000..5d60ea6e8 --- /dev/null +++ b/main/postmarketos-ui-plasma-mobile/60-lightdm-autologin.conf @@ -0,0 +1,5 @@ +# This file gets removed with postmarketos-ui-plasma-mobile, even if modified! +[Seat:*] +autologin-user=username +autologin-user-timeout=0 +autologin-session=plasma-mobile-2 diff --git a/main/postmarketos-ui-plasma-mobile/APKBUILD b/main/postmarketos-ui-plasma-mobile/APKBUILD index c08b86eea..947df2fd1 100644 --- a/main/postmarketos-ui-plasma-mobile/APKBUILD +++ b/main/postmarketos-ui-plasma-mobile/APKBUILD @@ -2,39 +2,39 @@ # Maintainer: Bart Ribbers pkgname=postmarketos-ui-plasma-mobile pkgver=1 -pkgrel=29 +pkgrel=30 pkgdesc="(Wayland) Mobile variant of KDE Plasma, optimized for touchscreen (slow without hardware acceleration!)" url="https://wiki.postmarketos.org/wiki/Plasma_Mobile" arch="noarch !armhf" license="GPL-3.0-or-later" # dbus-x11 provides dbus-launch -depends="plasma-phone-components dbus dbus-x11 plasma-settings breeze-icons kscreen qt5-qtvirtualkeyboard pulseaudio pulseaudio-utils consolekit2 powerdevil polkit-kde-agent kwayland-integration postmarketos-artwork-wallpapers qmlkonsole plasma-angelfish pix index plasma-camera postmarketos-demos" +depends="plasma-phone-components dbus dbus-x11 plasma-settings breeze-icons kscreen qt5-qtvirtualkeyboard pulseaudio pulseaudio-utils elogind powerdevil polkit-kde-agent kwayland-integration postmarketos-artwork-wallpapers qmlkonsole plasma-angelfish pix index plasma-camera postmarketos-demos lightdm xorg-server" install="$pkgname.post-install" -source="start_plasma.sh kwinrc kdeglobals qtlogging.ini org.kde.phone.homescreen.js unlock-plasma" +source="kwinrc kdeglobals qtlogging.ini org.kde.phone.homescreen.js unlock-plasma 60-lightdm-autologin.conf" options="!check" package() { - install -D -m644 "$srcdir"/start_plasma.sh \ - "$pkgdir"/etc/profile.d/start_plasma.sh + install -Dm644 "$srcdir"/60-lightdm-autologin.conf \ + "$pkgdir"/usr/share/lightdm/lightdm.conf.d/60-autologin.conf - install -D -m644 "$srcdir"/kwinrc \ + install -Dm644 "$srcdir"/kwinrc \ "$pkgdir"/etc/xdg/kwinrc - install -D -m644 "$srcdir"/kdeglobals \ + install -Dm644 "$srcdir"/kdeglobals \ "$pkgdir"/etc/xdg/kdeglobals - install -D -m644 "$srcdir"/qtlogging.ini \ + install -Dm644 "$srcdir"/qtlogging.ini \ "$pkgdir"/etc/skel/.config/QtProject/qtlogging.ini - install -D -m644 "$srcdir"/org.kde.phone.homescreen.js \ + install -Dm644 "$srcdir"/org.kde.phone.homescreen.js \ "$pkgdir"/usr/share/plasma/look-and-feel/org.kde.plasma.phone/contents/plasmoidsetupscripts/org.kde.phone.homescreen.js - install -D -m755 "$srcdir"/unlock-plasma \ + install -Dm755 "$srcdir"/unlock-plasma \ "$pkgdir"/usr/bin/unlock-plasma } -sha512sums="dcd92bb600895533858a55df705c832a3bd369d1e536f61d4a52b7eacd9cc4c9071b4bab38261226780b158949516fc4a209b022ff70660f2c01116ae5f06539 start_plasma.sh -a95d3bbd1e8051c9b394ad7a26e4beb2d1be8d3c38189819da61fd42b1c7fd3948c4737bc9246eee23eaf5fd9451cd6362fb06442f3d8f967f930d3bcc5cfbe9 kwinrc +sha512sums="a95d3bbd1e8051c9b394ad7a26e4beb2d1be8d3c38189819da61fd42b1c7fd3948c4737bc9246eee23eaf5fd9451cd6362fb06442f3d8f967f930d3bcc5cfbe9 kwinrc 93d6c3e76b6e8d3c8c5424fcb921595ad3569e1aba1b03255b977230b33146dc73a97327e455e8a539018cb02c3bf1a700dd951622f798b50f36c5d381a1b342 kdeglobals 341f0b866c315f37868ef3e7137cce8b53a0e8e6164e5af71b3e8e2fa68321afbf0652d76124ef84bade1393f701748852ac939aef9daff7e272a0df827780eb qtlogging.ini 50dbb5e0b1550776ca6fc5b91468412b23d49aa502af77cf7d5d15af11eaf61b1632b205f42eac3274bf28a0b7b278a4d6bfc98c6c12ea29830fd258bad5107d org.kde.phone.homescreen.js -41d6774c09a7f14b95ddae6df85d22c6f78960574e70e1ae653616b04f18182750aecdb66ca5c8c4b86d36845b8ab3d0d7820d86459f7967d389178108fc947f unlock-plasma" +e5dcc82c0e58288fd7a8f805e60fa777fab71c68355f085a0e4f25b05526491476fdb6decbc7c0495626d6736a53bfc8e8f34a3231210858998e19cd6fbc89a0 unlock-plasma +4845e9090668baf164c587ad1ee669116955911608e9f6751d480c7eae93ac19d662a78be07721475651c37c580278519c085ad6fed692ce9d7f2778982d0c99 60-lightdm-autologin.conf" diff --git a/main/postmarketos-ui-plasma-mobile/postmarketos-ui-plasma-mobile.post-install b/main/postmarketos-ui-plasma-mobile/postmarketos-ui-plasma-mobile.post-install index 8e9803edf..a7791b1e4 100644 --- a/main/postmarketos-ui-plasma-mobile/postmarketos-ui-plasma-mobile.post-install +++ b/main/postmarketos-ui-plasma-mobile/postmarketos-ui-plasma-mobile.post-install @@ -1,10 +1,5 @@ #!/bin/sh -# Autologin on tty1, let busybox autoconfigure 2-6 -autologin="$(getent passwd 10000 | cut -d ":" -f 1)" -for i in 1 2 3 4 5 6; do - old="^tty$i::respawn:/sbin/getty 38400 tty$i" - new="# tty$i::respawn:/sbin/getty 38400 tty$i" - [ "$i" == "1" ] && new="tty1::respawn:/bin/login -f $autologin" - sed -i -e "s.$old.$new.g" /etc/inittab -done +sed -i "s/username/$(getent passwd 10000 | cut -d: -f1)/g" /usr/share/lightdm/lightdm.conf.d/60-autologin.conf + +rc-update add lightdm default diff --git a/main/postmarketos-ui-plasma-mobile/start_plasma.sh b/main/postmarketos-ui-plasma-mobile/start_plasma.sh deleted file mode 100644 index 2687b170b..000000000 --- a/main/postmarketos-ui-plasma-mobile/start_plasma.sh +++ /dev/null @@ -1,37 +0,0 @@ -if test -z "${XDG_RUNTIME_DIR}"; then - export XDG_RUNTIME_DIR=/tmp/$(id -u)-runtime-dir - if ! test -d "${XDG_RUNTIME_DIR}"; then - mkdir "${XDG_RUNTIME_DIR}" - chmod 0700 "${XDG_RUNTIME_DIR}" - fi - - if [ $(tty) = "/dev/tty1" ]; then - udevadm trigger - udevadm settle - - export QML2_IMPORT_PATH=/usr/lib/qt/qml:/usr/lib/qt5/qml - export QT_QPA_PLATFORMTHEME=KDE - export QT_QUICK_CONTROLS_STYLE=Plasma - export QT_WAYLAND_DISABLE_WINDOWDECORATION=1 - export XDG_CURRENT_DESKTOP=KDE - export KDE_SESSION_VERSION=5 - export PLASMA_PLATFORM=phone - export QT_VIRTUALKEYBOARD_STYLE=Plasma - export QT_QUICK_CONTROLS_MOBILE=true - - sleep 2 - - if [ -d "/dev/dri" ]; then - dbus-run-session ck-launch-session kwin_wayland --drm --xwayland plasma-phone 2>&1 | logger -t "$(whoami):plasma-mobile" - else - # NOTE: using GALLIUM_DRIVER=llvmpipe might give you better performance (or not work at all.) - # If it does give you a performance gain, please open an issue to discuss how to implement this properly. - export GALLIUM_DRIVER=softpipe - export KWIN_COMPOSE=Q - export LIBGL_ALWAYS_SOFTWARE=1 - - echo "start_plasma.sh: using software rendering with: ${GALLIUM_DRIVER}" | logger -t "$(whoami):plasma-mobile" - dbus-run-session ck-launch-session kwin_wayland --framebuffer --xwayland plasma-phone 2>&1 | logger -t "$(whoami):plasma-mobile" - fi - fi -fi diff --git a/main/postmarketos-ui-plasma-mobile/unlock-plasma b/main/postmarketos-ui-plasma-mobile/unlock-plasma index c38191d6c..f14b0d805 100755 --- a/main/postmarketos-ui-plasma-mobile/unlock-plasma +++ b/main/postmarketos-ui-plasma-mobile/unlock-plasma @@ -1,5 +1,2 @@ #!/bin/sh -sudo qdbus-qt5 --system \ - org.freedesktop.ConsoleKit \ - /org/freedesktop/ConsoleKit/Session1 \ - org.freedesktop.ConsoleKit.Session.Unlock +sudo loginctl unlock-sessions diff --git a/main/postmarketos-ui-weston/60-lightdm-autologin.conf b/main/postmarketos-ui-weston/60-lightdm-autologin.conf new file mode 100644 index 000000000..b59c9e811 --- /dev/null +++ b/main/postmarketos-ui-weston/60-lightdm-autologin.conf @@ -0,0 +1,5 @@ +# This file gets removed with postmarketos-ui-weston, even if modified! +[Seat:*] +autologin-user=username +autologin-user-timeout=0 +autologin-session=weston diff --git a/main/postmarketos-ui-weston/APKBUILD b/main/postmarketos-ui-weston/APKBUILD index b7cdcf0e6..ed5602dbc 100644 --- a/main/postmarketos-ui-weston/APKBUILD +++ b/main/postmarketos-ui-weston/APKBUILD @@ -1,25 +1,26 @@ pkgname=postmarketos-ui-weston pkgver=4 -pkgrel=7 +pkgrel=8 pkgdesc="(Wayland) Reference compositor (demo, not a phone interface)" url="https://postmarketos.org" arch="noarch" -license="GPL3+" -depends="weston-clients weston weston-shell-desktop weston-backend-fbdev - weston-backend-drm weston-backend-x11 weston-terminal - weston-xwayland xorg-server-xwayland postmarketos-demos - postmarketos-artwork-wallpapers" +license="GPL-3.0-or-later" +depends="weston-clients weston weston-shell-desktop weston-backend-fbdev weston-backend-drm weston-backend-x11 weston-terminal weston-xwayland xorg-server-xwayland postmarketos-demos postmarketos-artwork-wallpapers elogind lightdm xorg-server" makedepends="" install="$pkgname.post-install" subpackages="" -source="start_weston.sh weston.ini.default" +source="start_weston.sh weston.ini.default 60-lightdm-autologin.conf" options="!check" package() { + install -Dm644 "$srcdir"/60-lightdm-autologin.conf \ + "$pkgdir"/usr/share/lightdm/lightdm.conf.d/60-autologin.conf + install -Dm644 "$srcdir"/start_weston.sh \ "$pkgdir"/etc/profile.d/start_weston.sh install -Dm644 "$srcdir"/weston.ini.default \ "$pkgdir"/etc/xdg/weston/weston.ini.default } sha512sums="4b758b67b3bbc8415c4845c7c7f0bb49e17b2ced75f61c64239752476711c04e1f8a5ebba93ad8ab25937c46f943468247e1f1edf8ef749f36d8d57200feb72b start_weston.sh -b712c9d4c846437656781656ec15e9b7e238a9244e0b77bf84b67f6661d44f68718330706f69ccb8b4d7f6182b8f17f273018ca461c0c40e49b9185f6eec168d weston.ini.default" +b712c9d4c846437656781656ec15e9b7e238a9244e0b77bf84b67f6661d44f68718330706f69ccb8b4d7f6182b8f17f273018ca461c0c40e49b9185f6eec168d weston.ini.default +6800b81055c854ef69c0084341e31841d4b06d1d894542f1e125d0d70b6606f11218bda0d29dab9a48594b4c2f815a540f91bfba6c2c22c3378040c41fe4bbb1 60-lightdm-autologin.conf" diff --git a/main/postmarketos-ui-weston/postmarketos-ui-weston.post-install b/main/postmarketos-ui-weston/postmarketos-ui-weston.post-install index 9c17e2a8e..a7791b1e4 100644 --- a/main/postmarketos-ui-weston/postmarketos-ui-weston.post-install +++ b/main/postmarketos-ui-weston/postmarketos-ui-weston.post-install @@ -1,15 +1,5 @@ #!/bin/sh -# Autologin on tty1, let busybox autoconfigure 2-6 -autologin="$(getent passwd 10000 | cut -d ":" -f 1)" -for i in 1 2 3 4 5 6; do - old="^tty$i::respawn:/sbin/getty 38400 tty$i" - new="# tty$i::respawn:/sbin/getty 38400 tty$i" - [ "$i" == "1" ] && new="tty1::respawn:/bin/login -f $autologin" - sed -i -e "s.$old.$new.g" /etc/inittab -done +sed -i "s/username/$(getent passwd 10000 | cut -d: -f1)/g" /usr/share/lightdm/lightdm.conf.d/60-autologin.conf -# Create weston-launch group and add user to it -[ $(getent group weston-launch) ] || groupadd weston-launch -username="$(getent passwd 10000 | cut -d ":" -f 1)" -usermod -a -G weston-launch "$username" +rc-update add lightdm default diff --git a/main/postmarketos-ui-xfce4/APKBUILD b/main/postmarketos-ui-xfce4/APKBUILD index 9217b0724..4c7ac9330 100644 --- a/main/postmarketos-ui-xfce4/APKBUILD +++ b/main/postmarketos-ui-xfce4/APKBUILD @@ -5,11 +5,9 @@ pkgdesc="(X11) Lightweight GTK+2 desktop (stylus recommended)" url="https://gitlab.com/postmarketOS/xfce4-phone" arch="noarch" license="GPL-3.0+" -depends="xfce4 xorg-server mesa-egl postmarketos-artwork-wallpapers - faenza-icon-theme xfce4-battery-plugin network-manager-applet - xfce4-mixer gnome-keyring consolekit2 lxpolkit gtk+2.0 lightdm" +depends="xfce4 xorg-server mesa-egl postmarketos-artwork-wallpapers faenza-icon-theme xfce4-battery-plugin network-manager-applet xfce4-mixer gnome-keyring lxpolkit gtk+2.0 lightdm" install="$pkgname.post-install $pkgname.pre-deinstall $pkgname.post-deinstall" -source="$pkgname-$pkgver.tar.gz::https://gitlab.com/postmarketOS/xfce4-phone/-/archive/${pkgver}/xfce4-phone-${pkgver}.tar.gz +source="$pkgname-$pkgver.tar.gz::https://gitlab.com/postmarketOS/xfce4-phone/-/archive/$pkgver/xfce4-phone-$pkgver.tar.gz 60-lightdm-autologin.conf" options="!check" builddir="$srcdir/xfce4-phone-$pkgver" diff --git a/temp/weston/APKBUILD b/temp/weston/APKBUILD new file mode 100644 index 000000000..c449124e2 --- /dev/null +++ b/temp/weston/APKBUILD @@ -0,0 +1,128 @@ +# Forked from Alpine to enable logind support +# https://github.com/alpinelinux/aports/pull/8035 +pkgname=weston +pkgver=6.0.0 +pkgrel=1 +_libname=lib$pkgname +_libdir=$_libname-${pkgver%%.*} +pkgdesc="The reference Wayland server" +url="https://wayland.freedesktop.org/" +arch="all !s390x !ppc64le" +license="MIT" +depends="" +makedepends="wayland-protocols libxkbcommon-dev xkeyboard-config + libinput-dev libunwind-dev mtdev-dev libxcursor-dev glu-dev + pango-dev colord-dev libwebp-dev libva-dev dbus-dev + linux-pam-dev wayland-dev libevdev-dev libjpeg-turbo-dev + freerdp-dev lcms2-dev gstreamer-dev gst-plugins-base-dev meson + elogind-dev" +_cms="cms-colord cms-static" +_shell="shell-desktop shell-fullscreen shell-ivi" +_client="info terminal wcap-decode" +_backend="backend-drm backend-fbdev backend-headless + backend-x11 backend-wayland + " +for _sub in $_cms $_shell $_client $_backend; do + subpackages="$subpackages $pkgname-$_sub:_sub" +done +subpackages="$pkgname-dev $pkgname-doc $subpackages + $pkgname-clients $_libname-desktop:_libd $_libname:libs + $pkgname-xwayland $pkgname-desktop-x11:_x11:noarch + " +source="https://wayland.freedesktop.org/releases/$pkgname-$pkgver.tar.xz + timespec.patch + weston-launch-custom-error-function.patch + " +builddir="$srcdir/$pkgname-$pkgver" +# weston-launch requires suid +options="!check suid" +install="$pkgname.pre-install" + +build() { + cd "$builddir" + meson \ + -Dprefix=/usr \ + -Dlauncher-logind=true \ + -Dsystemd=false \ + -Dsimple-dmabuf-drm=auto \ + build + ninja -C build +} + +# Does not run through, see also: +# https://github.com/alpinelinux/aports/pull/1689 +check() { + ninja -C "$builddir"/build test +} + +package() { + DESTDIR="$pkgdir" ninja -C "$builddir"/build install +} + +libs() { + depends="xkeyboard-config" + default_libs +} + +_libd() { + pkgdesc="Desktop shells abstraction library for libweston compositors" + mkdir -p "$subpkgdir"/usr/lib + mv "$pkgdir"/usr/lib/*desktop* "$subpkgdir"/usr/lib +} + +clients() { + pkgdesc="Weston example clients" + mkdir -p "$subpkgdir"/usr/bin + mv "$pkgdir"/usr/bin/$pkgname-* "$subpkgdir"/usr/bin +} + +xwayland() { + pkgdesc="Wayland module to run X Clients" + mkdir -p "$subpkgdir"/usr/lib/$_libdir + mv "$pkgdir"/usr/lib/$_libdir/xwayland.so \ + "$subpkgdir"/usr/lib/$_libdir +} + +_x11() { + pkgdesc="Weston desktop helper pack (x11 backend)" + depends="$pkgname $pkgname-shell-desktop $pkgname-xwayland + $pkgname-backend-x11 $pkgname-terminal" + mkdir -p "$subpkgdir" +} + +_sub() { + local name path + case $subpkgname in + *-cms-*) + name=${subpkgname#$pkgname-cms-} + path=/usr/lib/$pkgname + pkgdesc="Weston CMS module: $name" + name=cms-$name.so + ;; + *-shell-*) + name=${subpkgname#$pkgname-shell-} + path=/usr/lib/$pkgname + pkgdesc="Weston shell: $name" + name=*$name-shell* + ;; + *-backend-*) + name=${subpkgname#$pkgname-backend-} + path=/usr/lib/$_libdir + pkgdesc="Weston backend: $name" + name=$name-backend.so + grep -q cairo "$pkgdir"/$path/$name && depends="mesa-dri-swrast" + ;; + *) + name=$subpkgname + path=/usr/bin + [ -x "$pkgdir"/$path/$name ] || name=${subpkgname#$pkgname-} + pkgdesc="Weston client: $name" + ;; + esac + mkdir -p "$subpkgdir"/$path || return 1 + mv "$pkgdir"/$path/$name "$subpkgdir"/$path +} + +sha512sums="127ab64b689f202acca4d9461e4decfd42357e4bbb63493af257b3b20b693a8ab4207b3c6b97663cefeed200505aad5f32b6a064db2e53fa1e201877613b394f weston-6.0.0.tar.xz +3e596af4bf0a6b06a5d28376043db111fe1c161ead04501fa6d2c667b5a21889cca3354d1bdc4ac794841bef68ed5e1a7a84e44e7d510e947e3673195706caed timespec.patch +3f742a29075fd447995cdda283d12655910925811b22a28fc279bcc7cf5c7c1a888cd391bec42d934b3bad24578504c642882100f15647178f6f6f89a8405916 weston-launch-custom-error-function.patch" diff --git a/temp/weston/timespec.patch b/temp/weston/timespec.patch new file mode 100644 index 000000000..7c2c8f62e --- /dev/null +++ b/temp/weston/timespec.patch @@ -0,0 +1,10 @@ +--- a/tests/timespec-test.c ++++ b/tests/timespec-test.c +@@ -25,6 +25,7 @@ + + #include "config.h" + ++#include + #include + #include + #include diff --git a/temp/weston/weston-launch-custom-error-function.patch b/temp/weston/weston-launch-custom-error-function.patch new file mode 100644 index 000000000..cd42950e7 --- /dev/null +++ b/temp/weston/weston-launch-custom-error-function.patch @@ -0,0 +1,48 @@ +https://patchwork.freedesktop.org/patch/112884/ + +error.h is a gnu extension and not available in other +popular libcs like musl. This patch provides a replacement. + +Signed-off-by: Murray Calavera +--- + libweston/weston-launch.c | 20 +++++++++++++++++++- + 1 file changed, 19 insertions(+), 1 deletion(-) + +diff --git a/libweston/weston-launch.c b/libweston/weston-launch.c +index 140fde1..84f7d60 100644 +--- a/libweston/weston-launch.c ++++ b/libweston/weston-launch.c +@@ -33,7 +33,6 @@ + #include + #include + +-#include + #include + + #include +@@ -112,6 +111,25 @@ struct weston_launch { + + union cmsg_data { unsigned char b[4]; int fd; }; + ++static void ++error(int status, int errnum, const char *msg, ...) ++{ ++ va_list args; ++ ++ fputs("weston-launch: ", stderr); ++ va_start(args, msg); ++ vfprintf(stderr, msg, args); ++ va_end(args); ++ ++ if (errnum) ++ fprintf(stderr, ": %s\n", strerror(errnum)); ++ else ++ fputc('\n', stderr); ++ ++ if (status) ++ exit(status); ++} ++ + static gid_t * + read_groups(void) + { diff --git a/temp/weston/weston.pre-install b/temp/weston/weston.pre-install new file mode 100644 index 000000000..0db3c455b --- /dev/null +++ b/temp/weston/weston.pre-install @@ -0,0 +1,5 @@ +#!/bin/sh + +addgroup -S weston-launch 2>/dev/null + +exit 0