From 9c4aaa4207de214c4f428915c317a92bb99a01ef Mon Sep 17 00:00:00 2001 From: Alexander Oakman Date: Sat, 20 Jul 2024 22:50:52 +0300 Subject: [PATCH] Add screensaver inhibition control service The service enables or disables swayidle inhibition depending on whether any audio plays or not. It replaces the activation of inhibition for fullscreen browser windows. --- etc/sway/config.d/30-applications-defaults.conf | 15 --------------- usr/lib/systemd/user/swayidle-inhibitor.service | 12 ++++++++++++ usr/share/sway/scripts/idle-inhibitor.sh | 11 +++++++++++ 3 files changed, 23 insertions(+), 15 deletions(-) create mode 100644 usr/lib/systemd/user/swayidle-inhibitor.service create mode 100755 usr/share/sway/scripts/idle-inhibitor.sh diff --git a/etc/sway/config.d/30-applications-defaults.conf b/etc/sway/config.d/30-applications-defaults.conf index 24a3400..5797646 100644 --- a/etc/sway/config.d/30-applications-defaults.conf +++ b/etc/sway/config.d/30-applications-defaults.conf @@ -45,21 +45,6 @@ for_window [title="Confirm to replace files"] move position center for_window [title="Choose an Application"] floating enable for_window [title="Removable medium is inserted"] floating enable -# apply mark for Xwayland and wayland native browser windows -for_window [class="Chromium-browser"] mark Browser -for_window [class="Brave-browser"] mark Browser -for_window [class="firefox"] mark Browser -for_window [class="librewolf"] mark Browser -for_window [app_id="Chromium-browser"] mark Browser -for_window [app_id="brave-browser"] mark Browser -for_window [app_id="[Ff]irefox"] mark Browser -for_window [app_id="[Ll]ibrewolf"] mark Browser - -# inhibit scrensaver for fullscreen browser windows -for_window [con_mark="Browser"] { - inhibit_idle fullscreen -} - # Don't allow applications to inhibit shortcuts, i.e. grab total control of the # keyboard. Chrome currently abuses this by enabling it for all "--app=..." # shortcuts. diff --git a/usr/lib/systemd/user/swayidle-inhibitor.service b/usr/lib/systemd/user/swayidle-inhibitor.service new file mode 100644 index 0000000..1bf6f3a --- /dev/null +++ b/usr/lib/systemd/user/swayidle-inhibitor.service @@ -0,0 +1,12 @@ +[Unit] +Description=Toggle idle inhibition depending on whether the audio is playing or not +PartOf=swayidle.service +After=swayidle.service + +[Service] +ExecStart=/usr/share/sway/scripts/idle-inhibitor.sh +Restart=always +RestartSec=30 + +[Install] +WantedBy=sway-session.target diff --git a/usr/share/sway/scripts/idle-inhibitor.sh b/usr/share/sway/scripts/idle-inhibitor.sh new file mode 100755 index 0000000..d38b64b --- /dev/null +++ b/usr/share/sway/scripts/idle-inhibitor.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +set -e + +if grep -s -l -v "closed" /proc/asound/card*/pcm*/sub*/status; then + swaymsg inhibit_idle open + printf "Idle inhibition is ON." +else + swaymsg inhibit_idle none + printf "Idle inhibition is OFF." +fi