From 9190321e418ecf997bd8d763db7c9d9e9c1a0372 Mon Sep 17 00:00:00 2001 From: Kyle Gospodnetich Date: Thu, 27 Jul 2023 14:32:24 -0700 Subject: [PATCH 1/2] chore: Re-engineer power button inhibitor for gamescope-session --- .../jupiter-hw-support-btrfs.spec | 5 +- .../jupiter-hw-support.spec | 5 +- .../power-button-handler.py | 63 ------------------- .../power-button-inhibitor.sh | 2 + ...te.dmidecode.policy => org.bazzite.policy} | 11 ++++ 5 files changed, 19 insertions(+), 67 deletions(-) delete mode 100755 spec_files/jupiter-hw-support/power-button-handler.py create mode 100755 spec_files/jupiter-hw-support/power-button-inhibitor.sh rename system_files/deck/usr/share/polkit-1/actions/{org.bazzite.dmidecode.policy => org.bazzite.policy} (63%) diff --git a/spec_files/jupiter-hw-support/jupiter-hw-support-btrfs.spec b/spec_files/jupiter-hw-support/jupiter-hw-support-btrfs.spec index 3fae27c8..63a5c63c 100644 --- a/spec_files/jupiter-hw-support/jupiter-hw-support-btrfs.spec +++ b/spec_files/jupiter-hw-support/jupiter-hw-support-btrfs.spec @@ -7,7 +7,7 @@ License: GPLv3 URL: https://github.com/ublue-os/bazzite Source: https://gitlab.com/evlaV/jupiter-hw-support/-/archive/5cb8f34ea8047bc208ffc4f93c673e31e3811f4d/jupiter-hw-support-5cb8f34ea8047bc208ffc4f93c673e31e3811f4d.tar.gz -Source1: power-button-handler.py +Source1: power-button-inhibitor.sh Patch0: fedora.patch Patch1: selinux.patch Patch2: https://gitlab.com/popsulfr/steamos-btrfs/-/raw/main/files/usr/lib/hwsupport/steamos-automount.sh.patch @@ -58,6 +58,7 @@ cp -rv usr/share/* %{buildroot}%{_datadir} cp -rv usr/lib/systemd/system/* %{buildroot}%{_unitdir}/ cp usr/lib/hwsupport/cs35l41-dsp1-spk-prot.bin.mod %{buildroot}%{_prefix}/lib/hwsupport/cs35l41-dsp1-spk-prot.bin.mod cp usr/lib/hwsupport/cs35l41-dsp1-spk-prot.bin.orig %{buildroot}%{_prefix}/lib/hwsupport/cs35l41-dsp1-spk-prot.bin.orig +cp usr/lib/hwsupport/power-button-handler.py %{buildroot}%{_prefix}/lib/hwsupport/power-button-handler.py cp usr/lib/hwsupport/cirrus-fixup.sh %{buildroot}%{_sbindir}/cirrus-fixup cp usr/lib/hwsupport/ev2_cirrus_alsa_fixups.sh %{buildroot}%{_sbindir}/ev2_cirrus_alsa_fixups cp usr/lib/hwsupport/format-device.sh %{buildroot}%{_sbindir}/format-device @@ -67,7 +68,7 @@ cp usr/lib/hwsupport/steamos-automount.sh %{buildroot}%{_sbindir}/steamos-automo cp usr/lib/hwsupport/trim-devices.sh %{buildroot}%{_sbindir}/trim-devices cp -rv usr/lib/udev %{buildroot}%{_prefix}/lib/udev cp -rv usr/bin/* %{buildroot}%{_bindir} -cp %{SOURCE1} %{buildroot}%{_bindir}/power-button-handler +cp %{SOURCE1} %{buildroot}%{_bindir}/power-button-inhibitor cp -rv usr/lib/systemd/system/* %{buildroot}%{_unitdir} cp -rv etc/* %{buildroot}%{_sysconfdir} # Remove unneeded files diff --git a/spec_files/jupiter-hw-support/jupiter-hw-support.spec b/spec_files/jupiter-hw-support/jupiter-hw-support.spec index abbe55ac..ddeaab7e 100644 --- a/spec_files/jupiter-hw-support/jupiter-hw-support.spec +++ b/spec_files/jupiter-hw-support/jupiter-hw-support.spec @@ -6,7 +6,7 @@ License: MIT URL: https://github.com/ublue-os/bazzite Source: https://gitlab.com/evlaV/%{name}/-/archive/master/%{name}-master.tar.gz -Source1: power-button-handler.py +Source1: power-button-inhibitor.sh Patch0: fedora.patch Patch1: selinux.patch @@ -51,6 +51,7 @@ cp -rv usr/share/* %{buildroot}%{_datadir} cp -rv usr/lib/systemd/system/* %{buildroot}%{_unitdir}/ cp usr/lib/hwsupport/cs35l41-dsp1-spk-prot.bin.mod %{buildroot}%{_prefix}/lib/hwsupport/cs35l41-dsp1-spk-prot.bin.mod cp usr/lib/hwsupport/cs35l41-dsp1-spk-prot.bin.orig %{buildroot}%{_prefix}/lib/hwsupport/cs35l41-dsp1-spk-prot.bin.orig +cp usr/lib/hwsupport/power-button-handler.py %{buildroot}%{_prefix}/lib/hwsupport/power-button-handler.py cp usr/lib/hwsupport/cirrus-fixup.sh %{buildroot}%{_sbindir}/cirrus-fixup cp usr/lib/hwsupport/ev2_cirrus_alsa_fixups.sh %{buildroot}%{_sbindir}/ev2_cirrus_alsa_fixups cp usr/lib/hwsupport/format-device.sh %{buildroot}%{_sbindir}/format-device @@ -60,7 +61,7 @@ cp usr/lib/hwsupport/steamos-automount.sh %{buildroot}%{_sbindir}/steamos-automo cp usr/lib/hwsupport/trim-devices.sh %{buildroot}%{_sbindir}/trim-devices cp -rv usr/lib/udev %{buildroot}%{_prefix}/lib/udev cp -rv usr/bin/* %{buildroot}%{_bindir} -cp %{SOURCE1} %{buildroot}%{_bindir}/power-button-handler +cp %{SOURCE1} %{buildroot}%{_bindir}/power-button-inhibitor cp -rv usr/lib/systemd/system/* %{buildroot}%{_unitdir} cp -rv etc/* %{buildroot}%{_sysconfdir} # Remove unneeded files diff --git a/spec_files/jupiter-hw-support/power-button-handler.py b/spec_files/jupiter-hw-support/power-button-handler.py deleted file mode 100755 index a5b0a3a1..00000000 --- a/spec_files/jupiter-hw-support/power-button-handler.py +++ /dev/null @@ -1,63 +0,0 @@ -#!/bin/env python3 -u - -import evdev -import threading -import os -import sys -import subprocess -import daemon -import psutil - -powerbuttondev = None - -devices = [evdev.InputDevice(path) for path in evdev.list_devices()] -for device in devices: - if device.phys == "isa0060/serio0/input0": - powerbuttondev = device; - else: - device.close() - -longpresstimer = None - -systemd_inhibit = ['systemd-inhibit', - '--what=handle-power-key:handle-suspend-key:handle-hibernate-key', - 'sleep', - 'infinity'] - -def inhibit(): - for proc in psutil.process_iter(): - if systemd_inhibit == proc.cmdline(): - return - - print ( "Starting inhibitor" ) - with daemon.DaemonContext(): - subprocess.call(systemd_inhibit) - -def uninhibit(): - print ( "Stopping inhibitor" ) - subprocess.call(['pkill', '-f', ' '.join(systemd_inhibit)]) - -def longpress(): - os.system( "~/.steam/root/ubuntu12_32/steam -ifrunning steam://longpowerpress" ) - global longpresstimer - longpresstimer = None - -if powerbuttondev != None: - inhibit() - - for event in powerbuttondev.read_loop(): - if event.type == evdev.ecodes.EV_KEY and event.code == 116: # KEY_POWER - if event.value == 1: - longpresstimer = threading.Timer( 1.0, longpress ) - longpresstimer.start() - elif event.value == 0: - if longpresstimer != None: - os.system( "~/.steam/root/ubuntu12_32/steam -ifrunning steam://shortpowerpress" ) - longpresstimer.cancel() - longpresstimer = None - - powerbuttondev.close() - uninhibit() - exit() - -print ( "power-button-handler.py: Can't find device for power button!" ) diff --git a/spec_files/jupiter-hw-support/power-button-inhibitor.sh b/spec_files/jupiter-hw-support/power-button-inhibitor.sh new file mode 100755 index 00000000..b2c66c7a --- /dev/null +++ b/spec_files/jupiter-hw-support/power-button-inhibitor.sh @@ -0,0 +1,2 @@ +#!/usr/bin/sh +systemd-inhibit --what=handle-suspend-key:handle-power-key:handle-hibernate-key --who=gamescope-session --why="gamescope-session handles power button events" sleep infinity \ No newline at end of file diff --git a/system_files/deck/usr/share/polkit-1/actions/org.bazzite.dmidecode.policy b/system_files/deck/usr/share/polkit-1/actions/org.bazzite.policy similarity index 63% rename from system_files/deck/usr/share/polkit-1/actions/org.bazzite.dmidecode.policy rename to system_files/deck/usr/share/polkit-1/actions/org.bazzite.policy index a405c328..bf3ff713 100644 --- a/system_files/deck/usr/share/polkit-1/actions/org.bazzite.dmidecode.policy +++ b/system_files/deck/usr/share/polkit-1/actions/org.bazzite.policy @@ -7,6 +7,17 @@ Bazzite https://github.com/ublue-os/bazzite/ + + Allow inhibition of power button + package-x-generic + + yes + yes + yes + + /usr/bin/power-button-inhibitor + + Dump SMBIOS table contents package-x-generic From 166dd142f94b9010bab1c3f376bd3d34e1e3fdfa Mon Sep 17 00:00:00 2001 From: Kyle Gospodnetich Date: Thu, 27 Jul 2023 14:44:59 -0700 Subject: [PATCH 2/2] chore: Remove now unneeded python dependencies --- spec_files/jupiter-hw-support/jupiter-hw-support-btrfs.spec | 2 -- spec_files/jupiter-hw-support/jupiter-hw-support.spec | 2 -- 2 files changed, 4 deletions(-) diff --git a/spec_files/jupiter-hw-support/jupiter-hw-support-btrfs.spec b/spec_files/jupiter-hw-support/jupiter-hw-support-btrfs.spec index 63a5c63c..d4c01e43 100644 --- a/spec_files/jupiter-hw-support/jupiter-hw-support-btrfs.spec +++ b/spec_files/jupiter-hw-support/jupiter-hw-support-btrfs.spec @@ -23,8 +23,6 @@ Requires: python3-crcmod Requires: python3-click Requires: python3-progressbar2 Requires: python3-hid -Requires: python3-daemon -Requires: python3-psutil Requires: hidapi Requires: dmidecode Requires: jq diff --git a/spec_files/jupiter-hw-support/jupiter-hw-support.spec b/spec_files/jupiter-hw-support/jupiter-hw-support.spec index ddeaab7e..7ed776f1 100644 --- a/spec_files/jupiter-hw-support/jupiter-hw-support.spec +++ b/spec_files/jupiter-hw-support/jupiter-hw-support.spec @@ -16,8 +16,6 @@ Requires: python3-crcmod Requires: python3-click Requires: python3-progressbar2 Requires: python3-hid -Requires: python3-daemon -Requires: python3-psutil Requires: hidapi Requires: dmidecode Requires: jq