Intereting Posts
Shellscript для удаления определенных тегов в файле HTML Способы вызова системного вызова в новом ядре Почему root должен запускать неограниченные команды как сам по doas? «Xdg-mime query filetype» возвращает другой тип файла, чем «file -mime-type» Как работает ошибка сегментации под капотом? Создание следующего доступного имени файла для шаблона (02-output.log и т. Д.) Лучше регистрировать, чем /var/log/dpkg.log управления пакетами? Как написать скрипт bash, который отправляет графическое уведомление всем X-дисплеям пользователей? Загрузка ноутбука очень медленная Как прозрачно контролировать SSH-доступ / сетевой трафик в Gentoo / общем Linux? Отправить почту при запуске Почему есть команда chgrp, если есть chown ловушка сценария bash для выхода и err и логика разницы Как найти все файлы, созданные в каталоге после создания определенного файла? Поиск данных из всех файлов в папке

Как отключить звук при блокировке экрана xscreensaver

objective – отключить звук всякий раз, когда происходит блокировка экрана.

Идеально восстановить звук после разблокировки.

Звуковая система – Pulseaudio.

Запустите этот скрипт один раз при запуске сеанса X-графики:

#!/bin/bash -euET { set -o pipefail export DBUS_SESSION_BUS_ADDRESS="${DBUS_SESSION_BUS_ADDRESS:-unix:path=/run/user/$(id -u)/bus}" export DISPLAY="${DISPLAY:-:0}" xscreensaver-command -watch | while read -r line ; do echo "handling event: $line" if [[ $line = LOCK* ]]; then volume=$(pamixer --get-volume) echo "current volume is $volume" pamixer --set-volume 0 fi if [[ $line = UNBLANK* ]]; then echo "setting volume to $volume" pamixer --set-volume "$volume" fi done exit } 

Часть “daemon” этого скрипта xscreensaver-command -watch будет зависать и ожидать каких-либо событий от xscreensaver. Всякий раз, когда происходит событие «LOCK» или «UNBLANK», громкость звука обнуляется и восстанавливается соответственно.

Я обнаружил, что самый простой способ – это скрипт оболочки, который запускается при запуске. Это должно работать независимо от того, какая заставка используется (если есть).

 #!/bin/bash gdbus monitor -y -d org.freedesktop.login1 | grep LockedHint --line-buffered | while read line do case "$line" in *""*) amixer -q -D pulse sset Master off ;; *""*) amixer -q -D pulse sset Master on ;; esac done