Como silenciar o som quando o xscreensaver bloqueia a tela

2

O objetivo é silenciar o som sempre que o bloqueio de tela acontece.

Idealmente, restaure o som após o desbloqueio também.

O sistema de som é o Pulseaudio.

    
por VasyaNovikov 07.09.2018 / 08:50

2 respostas

2

Inicie este script uma vez ao iniciar sua sessão gráfica do 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
}

A parte "daemon" deste script xscreensaver-command -watch irá travar e aguardar por qualquer evento do xscreensaver. Sempre que ocorrer um evento "LOCK" ou "UNBLANK", o volume do som será zerado e restaurado, respectivamente.

    
por 07.09.2018 / 08:50
0

Eu descobri que a maneira mais simples é um script de shell que é executado na inicialização. Isso deve funcionar com qualquer proteção de tela em uso (se houver).

#!/bin/bash

gdbus monitor -y -d org.freedesktop.login1 | grep LockedHint --line-buffered |
    while read line
    do
        case "$line" in
            *"<true>"*)
                amixer -q -D pulse sset Master off
            ;;
            *"<false>"*)
                amixer -q -D pulse sset Master on
            ;;
        esac
    done
    
por 23.09.2018 / 10:35