From e41c0c99c8d498cc2f3761eb35d4f5389a6d1798 Mon Sep 17 00:00:00 2001 From: Eric Hameleers Date: Mon, 8 Jun 2020 21:30:18 +0200 Subject: Proposed changes for a migration from ConsoleKit2 to elogind Using elogind will enable a fully working Wayland session for KDE Plasma5. --- kde/post-install/plasma-workspace/pam.d/kde | 3 +- .../plasma-workspace/scripts/startkwayland | 7 +--- kde/post-install/powerdevil.post-install | 37 +++++++++++++--------- .../powerdevil/10-enable-ck2-poweroff.rules | 12 +++++++ .../powerdevil/10-enable-elogind-poweroff.rules | 12 +++++++ .../10-enable-powerdevil-discrete-gpu.rules | 9 ++++++ .../powerdevil/10-enable-suspend.rules | 10 ------ .../powerdevil/10-enable-upower-suspend.rules | 9 ++++++ .../powerdevil/30-org.freedesktop.upower.pkla | 9 ------ ...ktop.consolekit.system.stop-multiple-users.pkla | 8 ----- ...p.consolekit.system.restart-multiple-users.pkla | 7 ---- kde/post-install/sddm-qt5.post-install | 13 ++++++++ kde/post-install/sddm-qt5/pam.d/sddm | 3 +- kde/post-install/sddm-qt5/pam.d/sddm-autologin | 3 +- kde/post-install/sddm-qt5/pam.d/sddm-greeter | 1 + 15 files changed, 85 insertions(+), 58 deletions(-) create mode 100644 kde/post-install/powerdevil/10-enable-ck2-poweroff.rules create mode 100644 kde/post-install/powerdevil/10-enable-elogind-poweroff.rules create mode 100644 kde/post-install/powerdevil/10-enable-powerdevil-discrete-gpu.rules delete mode 100644 kde/post-install/powerdevil/10-enable-suspend.rules create mode 100644 kde/post-install/powerdevil/10-enable-upower-suspend.rules delete mode 100644 kde/post-install/powerdevil/30-org.freedesktop.upower.pkla delete mode 100644 kde/post-install/powerdevil/40-org.freedesktop.consolekit.system.stop-multiple-users.pkla delete mode 100644 kde/post-install/powerdevil/41-org.freedesktop.consolekit.system.restart-multiple-users.pkla (limited to 'kde/post-install') diff --git a/kde/post-install/plasma-workspace/pam.d/kde b/kde/post-install/plasma-workspace/pam.d/kde index 7acfd90..50e0f53 100644 --- a/kde/post-install/plasma-workspace/pam.d/kde +++ b/kde/post-install/plasma-workspace/pam.d/kde @@ -5,5 +5,6 @@ account include system-auth password include system-auth session include system-auth session required pam_loginuid.so -session optional pam_ck_connector.so nox11 +-session optional pam_ck_connector.so nox11 +-session optional pam_elogind.so session include postlogin diff --git a/kde/post-install/plasma-workspace/scripts/startkwayland b/kde/post-install/plasma-workspace/scripts/startkwayland index 7ca8a0a..2d8cf55 100644 --- a/kde/post-install/plasma-workspace/scripts/startkwayland +++ b/kde/post-install/plasma-workspace/scripts/startkwayland @@ -1,9 +1,4 @@ #!/bin/sh # Start KWin as a Plasma 5 Wayland session -# Choose correct options depending on whether PAM is installed: -if [ -L /lib${LIBDIRSUFFIX}/libpam.so.? ]; then - dbus-launch --sh-syntax --exit-with-session /usr/bin/startplasma-wayland -else - ck-launch-session dbus-launch --sh-syntax --exit-with-session /usr/bin/startplasma-wayland -fi +dbus-launch --sh-syntax --exit-with-session /usr/bin/startplasma-wayland diff --git a/kde/post-install/powerdevil.post-install b/kde/post-install/powerdevil.post-install index 9eb14f2..24a9bc1 100644 --- a/kde/post-install/powerdevil.post-install +++ b/kde/post-install/powerdevil.post-install @@ -3,21 +3,28 @@ mkdir -p $PKG/etc mv $PKG/etc/kde/dbus-1 $PKG/etc/ mkdir -p $PKG/etc/polkit-1/rules.d -mkdir -p $PKG/etc/polkit-1/localauthority/50-local.d -chmod 700 $PKG/etc/polkit-1/localauthority -# Add polkit policy file that brings back suspend/hibernate options: +# Add upower policy allowing users in the 'power' group +# to suspend/hibernate the computer: install -m 0644 -o root \ - $CWD/post-install/powerdevil/10-enable-suspend.rules \ - $PKG/etc/polkit-1/rules.d/10-enable-suspend.rules.new -install -m 0660 -o root \ - $CWD/post-install/powerdevil/30-org.freedesktop.upower.pkla \ - $PKG/etc/polkit-1/localauthority/50-local.d/30-org.freedesktop.upower.pkla.new -# Add polkit policy files that bring back shutdown/reboot: -install -m 0660 -o root \ - $CWD/post-install/powerdevil/40-org.freedesktop.consolekit.system.stop-multiple-users.pkla \ - $PKG/etc/polkit-1/localauthority/50-local.d/40-org.freedesktop.consolekit.system.stop-multiple-users.pkla.new -install -m 0660 -o root \ - $CWD/post-install/powerdevil/41-org.freedesktop.consolekit.system.restart-multiple-users.pkla \ - $PKG/etc/polkit-1/localauthority/50-local.d/41-org.freedesktop.consolekit.system.restart-multiple-users.pkla.new + $CWD/post-install/powerdevil/10-enable-upower-suspend.rules \ + $PKG/etc/polkit-1/rules.d/10-enable-upower-suspend.rules.new +if [ "SLKELOGIND" = YES ]; then + # Add login1 policy file that allows users in the 'power' group + # to shutdown/reboot the computer: + install -m 0644 -o root \ + $CWD/post-install/powerdevil/10-enable-elogind-power.rules \ + $PKG/etc/polkit-1/rules.d/10-enable-session-poweroff.rules.new + # Add powerdevil policy file that allows users in the 'power' group + # to check for existence of a discrete gpu: + install -m 0644 -o root \ + $CWD/post-install/powerdevil/10-enable-powerdevil-discrete-gpu.rules \ + $PKG/etc/polkit-1/rules.d/10-enable-powerdevil-discrete-gpu.rules.new +else + # Add ConsoleKit2 policy file that allows users in the 'power' group + # to shutdown/reboot the computer: + install -m 0644 -o root \ + $CWD/post-install/powerdevil/10-enable-ck2-power.rules \ + $PKG/etc/polkit-1/rules.d/10-enable-session-poweroff.rules.new +fi diff --git a/kde/post-install/powerdevil/10-enable-ck2-poweroff.rules b/kde/post-install/powerdevil/10-enable-ck2-poweroff.rules new file mode 100644 index 0000000..2c68027 --- /dev/null +++ b/kde/post-install/powerdevil/10-enable-ck2-poweroff.rules @@ -0,0 +1,12 @@ +polkit.addRule( + function(action, subject) { + if ( (action.id == "org.freedesktop.consolekit.reboot" || + action.id == "org.freedesktop.consolekit.reboot-multiple-sessions" || + action.id == "org.freedesktop.consolekit.power-off" || + action.id == "org.freedesktop.consolekit.power-off-multiple-sessions") + && subject.isInGroup("power") ) { + return polkit.Result.YES; + } + } +); + diff --git a/kde/post-install/powerdevil/10-enable-elogind-poweroff.rules b/kde/post-install/powerdevil/10-enable-elogind-poweroff.rules new file mode 100644 index 0000000..db49920 --- /dev/null +++ b/kde/post-install/powerdevil/10-enable-elogind-poweroff.rules @@ -0,0 +1,12 @@ +polkit.addRule( + function(action, subject) { + if ( (action.id == "org.freedesktop.login1.reboot" || + action.id == "org.freedesktop.login1.reboot-multiple-sessions" || + action.id == "org.freedesktop.login1.power-off" || + action.id == "org.freedesktop.login1.power-off-multiple-sessions") + && subject.isInGroup("power") ) { + return polkit.Result.YES; + } + } +); + diff --git a/kde/post-install/powerdevil/10-enable-powerdevil-discrete-gpu.rules b/kde/post-install/powerdevil/10-enable-powerdevil-discrete-gpu.rules new file mode 100644 index 0000000..f001848 --- /dev/null +++ b/kde/post-install/powerdevil/10-enable-powerdevil-discrete-gpu.rules @@ -0,0 +1,9 @@ +polkit.addRule( + function(action, subject) { + if ( action.id == "org.kde.powerdevil.discretegpuhelper.hasdualgpu" && + subject.isInGroup("power") ) { + return polkit.Result.YES; + } + } +); + diff --git a/kde/post-install/powerdevil/10-enable-suspend.rules b/kde/post-install/powerdevil/10-enable-suspend.rules deleted file mode 100644 index 5ef58ac..0000000 --- a/kde/post-install/powerdevil/10-enable-suspend.rules +++ /dev/null @@ -1,10 +0,0 @@ -polkit.addRule( - function(action, subject) { - if ((action.id == "org.freedesktop.upower.suspend" || - action.id == "org.freedesktop.upower.hibernate") && - subject.isInGroup("power")) - { - return polkit.Result.YES; - } - } -); diff --git a/kde/post-install/powerdevil/10-enable-upower-suspend.rules b/kde/post-install/powerdevil/10-enable-upower-suspend.rules new file mode 100644 index 0000000..4bccfb0 --- /dev/null +++ b/kde/post-install/powerdevil/10-enable-upower-suspend.rules @@ -0,0 +1,9 @@ +polkit.addRule( + function(action, subject) { + if ( (action.id == "org.freedesktop.upower.suspend" || + action.id == "org.freedesktop.upower.hibernate") + && subject.isInGroup("power") ) { + return polkit.Result.YES; + } + } +); diff --git a/kde/post-install/powerdevil/30-org.freedesktop.upower.pkla b/kde/post-install/powerdevil/30-org.freedesktop.upower.pkla deleted file mode 100644 index b3b5dd2..0000000 --- a/kde/post-install/powerdevil/30-org.freedesktop.upower.pkla +++ /dev/null @@ -1,9 +0,0 @@ -# /etc/polkit-1/localauthority/50-local.d/30-org.freedesktop.upower.pkla -# Allow all power users to suspend/hibernate the computer: -[Power Users] -Identity=unix-group:power -Action=org.freedesktop.upower.suspend;org.freedesktop.upower.hibernate -ResultAny=yes -ResultInactive=no -ResultActive=yes - diff --git a/kde/post-install/powerdevil/40-org.freedesktop.consolekit.system.stop-multiple-users.pkla b/kde/post-install/powerdevil/40-org.freedesktop.consolekit.system.stop-multiple-users.pkla deleted file mode 100644 index 1fae73a..0000000 --- a/kde/post-install/powerdevil/40-org.freedesktop.consolekit.system.stop-multiple-users.pkla +++ /dev/null @@ -1,8 +0,0 @@ -# /etc/polkit-1/localauthority/50-local.d/40-org.freedesktop.consolekit.system.stop-multiple-users.pkla -[Allow power users to shutdown] -Identity=unix-group:power -Action=org.freedesktop.consolekit.system.stop-multiple-users;org.freedesktop.consolekit.system.stop -ResultAny=yes -ResultInactive=no -ResultActive=yes - diff --git a/kde/post-install/powerdevil/41-org.freedesktop.consolekit.system.restart-multiple-users.pkla b/kde/post-install/powerdevil/41-org.freedesktop.consolekit.system.restart-multiple-users.pkla deleted file mode 100644 index db17c63..0000000 --- a/kde/post-install/powerdevil/41-org.freedesktop.consolekit.system.restart-multiple-users.pkla +++ /dev/null @@ -1,7 +0,0 @@ -# /etc/polkit-1/localauthority/50-local.d/41-org.freedesktop.consolekit.system.restart-multiple-users.pkla -[Allow power users to restart] -Identity=unix-group:power -Action=org.freedesktop.consolekit.system.restart-multiple-users;org.freedesktop.consolekit.system.restart -ResultAny=yes -ResultInactive=no -ResultActive=yes diff --git a/kde/post-install/sddm-qt5.post-install b/kde/post-install/sddm-qt5.post-install index 006e234..3d168b1 100644 --- a/kde/post-install/sddm-qt5.post-install +++ b/kde/post-install/sddm-qt5.post-install @@ -12,6 +12,19 @@ fi # Remove the sddm.conf file because we will generate our own in doinst.sh: rm -f $PKG/etc/sddm.conf +# Make sure that Plasma and SDDM work on older GPUs, +# by forcing Qt5 to use software GL rendering: +cat <<"EOGL" >> $PKG/usr/share/sddm/scripts/Xsetup + +# Make sure that Plasma and SDDM work on older GPUs, +# by forcing Qt5 to use software GL rendering: +OPENGL_VERSION=$(LANG=C glxinfo |grep '^OpenGL version string: ' |head -n 1 |sed -e 's/^OpenGL version string: \([0-9]\).*$/\1/g') +if [ "$OPENGL_VERSION" -lt 2 ]; then + QT_XCB_FORCE_SOFTWARE_OPENGL=1 + export QT_XCB_FORCE_SOFTWARE_OPENGL +fi +EOGL + # Ensure that user customizations to the session files are not lost: mv $PKG/usr/share/sddm/scripts/Xsession{,.new} mv $PKG/usr/share/sddm/scripts/Xsetup{,.new} diff --git a/kde/post-install/sddm-qt5/pam.d/sddm b/kde/post-install/sddm-qt5/pam.d/sddm index f0b2345..df016a7 100644 --- a/kde/post-install/sddm-qt5/pam.d/sddm +++ b/kde/post-install/sddm-qt5/pam.d/sddm @@ -19,7 +19,8 @@ password substack system-auth session optional pam_keyinit.so force revoke session substack system-auth session required pam_loginuid.so -session optional pam_ck_connector.so nox11 +-session optional pam_ck_connector.so nox11 +-session optional pam_elogind.so -session optional pam_gnome_keyring.so auto_start -session optional pam_kwallet5.so auto_start session include postlogin diff --git a/kde/post-install/sddm-qt5/pam.d/sddm-autologin b/kde/post-install/sddm-qt5/pam.d/sddm-autologin index fd926ef..3602395 100644 --- a/kde/post-install/sddm-qt5/pam.d/sddm-autologin +++ b/kde/post-install/sddm-qt5/pam.d/sddm-autologin @@ -17,7 +17,8 @@ password include system-auth session substack system-auth session required pam_loginuid.so -session optional pam_ck_connector.so nox11 +-session optional pam_ck_connector.so nox11 +-session optional pam_elogind.so -session optional pam_gnome_keyring.so auto_start -session optional pam_kwallet5.so auto_start session include postlogin diff --git a/kde/post-install/sddm-qt5/pam.d/sddm-greeter b/kde/post-install/sddm-qt5/pam.d/sddm-greeter index c7bd8a3..fe30e60 100644 --- a/kde/post-install/sddm-qt5/pam.d/sddm-greeter +++ b/kde/post-install/sddm-qt5/pam.d/sddm-greeter @@ -15,4 +15,5 @@ password required pam_deny.so # Setup session session required pam_unix.so -session optional pam_systemd.so +-session optional pam_ck_connector.so nox11 -session optional pam_elogind.so -- cgit v1.2.3