Nie jesteś zalogowany na forum.

#1 2016-09-14 08:47:07

nycko
Użytkownik
Data rejestracji: 2015-10-31
Liczba postów: 32
WWW

Openbox, powiadomienie wizualne oraz dźwiękowe przy zmianie głośności

Jako, że potrzebowałem funkcjonalności takiej, jak w temacie postanowiłem napisać prosty skrypt, który ją umożliwia.

Wymagane paczki:
xfce4-notifyd
libnotify
sox


~/bin/volume

#!/bin/bash

## aktualny poziom głośności
STATUS=`amixer get Master | grep -m 1 '%' | cut -d'[' -f2 | cut -d'%' -f1`

## regulacja głośności w zależności od podanego parametru co 10%
if [ "$1" = "toggle" ]; then
	amixer set Master toggle
elif [ "$1" = "volup" ]; then
	amixer set Master unmute
	amixer set Master 10%+
elif [ "$1" = "voldown" ]; then
	amixer set Master unmute
	amixer set Master 10%-
fi

## odegranie dźwięku
play /usr/share/sounds/freedesktop/stereo/bell.oga -q

## zakończenie aktualnie widocznych powiadomień
(pidof xfce4-notifyd 1>/dev/null && killall xfce4-notifyd)

## poziom głośności po zmianie
STATUS_NEW=`amixer get Master | grep -m 1 '%' | cut -d'[' -f2 | cut -d'%' -f1`

## dźwięk włączony/wyłączony globalnie
MUTED=`amixer get Master | grep -m 1 '%' | cut -d'[' -f3 | cut -d']' -f1`

## ikona w zależności od poziomu dźwieku
if [ "$STATUS_NEW" -le 33 ]; then
	ICON="audio-volume-low"
elif [ "$STATUS_NEW" -ge 66 ]; then
	ICON="audio-volume-high"
else
	ICON="audio-volume-medium"
fi

if [ "$MUTED" = "off" ]; then
	ICON="audio-volume-muted"
fi

## wyświetlenie powiadomienia
notify-send " " -i $ICON -h int:value:$STATUS_NEW -h string:synchronous:volume

openbox rc.xml

(...)
<keybind key="XF86AudioMute">
     <action name="Execute">
        <command>volume toggle</command>
     </action>
</keybind>
<keybind key="XF86AudioLowerVolume">
    <action name="Execute">
       <command>volume voldown</command>
    </action>
</keybind>
<keybind key="XF86AudioRaiseVolume">
    <action name="Execute">
       <command>volume volup</command>
    </action>
</keybind>
(...)

Skrypt jak dla mnie działa przyzwoicie, ale jeśli ktoś miałby lepsze rozwiązanie, to chętnie przyjmę sugestie.

PS. libnotify jest oryginalne, wersji paczowanej z opcją replace nie udało mi się zmusić do poprawnego działania.
PS2. może komuś udałoby się przerobić skrypt, aby  spaczowany notify-send -p -r $PID działał poprawnie, tzn, poprawnie podmieniał aktualnie wyświetlane powiadomienie na nowe, zamiast wyświetlać nowe powyżej poprzedniego.

Offline

Stopka

Napędzają nas PacmanVPS i MegiTeam

Forum oparte na FluxBB