Sterowanie głośnością za pomocą klawiatury: Różnice pomiędzy wersjami
Z FluxboxPL.org
m (→Zawartość skryptu: poprawka skryptu) |
|||
(Nie pokazano 1 pośredniej wersji utworzonej przez tego samego użytkownika) | |||
Linia 21: | Linia 21: | ||
COLOUR=yellow | COLOUR=yellow | ||
CHANNEL=Master | CHANNEL=Master | ||
− | |||
ERROR="Houston, we've got a syntax error ;)" | ERROR="Houston, we've got a syntax error ;)" | ||
+ | CurVol() { | ||
+ | echo "Głośność: $(amixer get \"$CHANNEL\" | grep % | awk '{print $5}' | head -1 | sed 's:\[::g;s:\]::g')" | ||
+ | } | ||
if [ $USE_OSD -eq 1 ]; then | if [ $USE_OSD -eq 1 ]; then | ||
showVol() { | showVol() { | ||
killall osd_cat 2> /dev/null | killall osd_cat 2> /dev/null | ||
− | + | CurVol | osd_cat -f $FONT -A $ALIGN -p $POSSITION -c $COLOUR | |
} | } | ||
syntaxError() { | syntaxError() { | ||
killall osd_cat 2> /dev/null | killall osd_cat 2> /dev/null | ||
− | echo $ERROR | osd_cat -f $FONT -A $ALIGN -p $POSSITION -c $COLOUR | + | echo "$ERROR" | osd_cat -f $FONT -A $ALIGN -p $POSSITION -c $COLOUR |
} | } | ||
elif [ $USE_OSD -eq 0 ]; then | elif [ $USE_OSD -eq 0 ]; then | ||
showVol() { | showVol() { | ||
− | + | CurVol | |
} | } | ||
syntaxError() { | syntaxError() { | ||
− | echo $ERROR | + | echo "$ERROR" |
} | } | ||
else | else |
Aktualna wersja na dzień 10:52, 17 cze 2008
Spis treści
Wstęp
Poniższe howto ma celu pokazać jak w prosty sposób sterować głośnością mixera pod Fluxboksem za pomocą klawiatury.
Zakładamy, że naszym serwerem dźwięku jest ALSA (warunek konieczny) oraz posiadamy tylko jedną kartę dźwiękową (jeżeli posiadamy więcej kart potrzebne będą drobne zmiany w skrypcie).
Wymagane aplikacje:
- amixer - mikser ALSY sterowany z linii komend
- osd_cat - program do wyświetlania informacji za pomocą OSD (opcjonalnie)
Skrypt
Zawartość skryptu
Na początek tworzymy skrypt o nazwie mixer.sh i nadajemy mu atrybut wykonywalności (chmod +x mixer.sh
). Do skryptu wklejamy kod:
#!/bin/bash USE_OSD=1 # boolean, 1 = use osd, 0 = don't use FONT=-dejavu-*-*-r-*-*-*-*-*-*-m-*-*-* ALIGN=left POSSITION=top COLOUR=yellow CHANNEL=Master ERROR="Houston, we've got a syntax error ;)" CurVol() { echo "Głośność: $(amixer get \"$CHANNEL\" | grep % | awk '{print $5}' | head -1 | sed 's:\[::g;s:\]::g')" } if [ $USE_OSD -eq 1 ]; then showVol() { killall osd_cat 2> /dev/null CurVol | osd_cat -f $FONT -A $ALIGN -p $POSSITION -c $COLOUR } syntaxError() { killall osd_cat 2> /dev/null echo "$ERROR" | osd_cat -f $FONT -A $ALIGN -p $POSSITION -c $COLOUR } elif [ $USE_OSD -eq 0 ]; then showVol() { CurVol } syntaxError() { echo "$ERROR" } else echo "Masz babo placek... miało być '0' lub '1', komentarze są pisane po to, żeby je czytać ;)" exit; fi case $1 in "set") amixer set "$CHANNEL" "$2"% > /dev/null && showVol ;; "increase") amixer set "$CHANNEL" "$2"%+ > /dev/null && showVol ;; "decrease") amixer set "$CHANNEL" "$2"%- > /dev/null && showVol ;; "get") showVol ;; *) syntaxError ;; esac
W pierwszych linijkach skryptu za pomocą zmiennych możemy ustawić czy, gdzie i jak będzie wyświetlany komunikat o poziomie głośności. Możemy również zmienić ustawić jaki kanał ma obsługiwać skrypt (w powyższym przykładzie jest to Master, inne to np. PCM; pełna lista po wpisaniu w terminalu amixer scontrols
).
Użycie
Przykłady użycia skryptu:
./mixer.sh set 80
- ustawienie głośności na poziom 80% i wyświetlenie aktualnego stanu w OSD lub w konsoli./mixer.sh increase 10
- zwiększenie głośności o 10 punktów procentowych i wyświetlenie aktualnego stanu w OSD lub w konsoli./mixer.sh decrease 10
- zmniejszenie głośności o 10 punktów procentowych i wyświetlenie aktualnego stanu w OSD lub w konsoli./mixer.sh get
- wyświetlenie aktualnego stanu w OSD lub w konsoli
Konfiguracja skrótów klawiszowych
Aby podpiąć skrypt pod klawiaturę można zrobić odpowiednie wpisy w ~/.fluxbox/keys albo, jeśli posiadamy klawiaturę z dodatkowymi przyciskami, pod klawisze multimedialne za pomocą xmodmap lub xbindkeys.
Przykładowy plik ~/.fluxbox/keys:
Control Escape :Exec ~/.skrypty/mixer.sh set 0 Control F1 :Exec ~/.skrypty/mixer.sh set 10 Control F2 :Exec ~/.skrypty/mixer.sh set 20 Control F3 :Exec ~/.skrypty/mixer.sh set 30 Control F4 :Exec ~/.skrypty/mixer.sh set 40 Control F5 :Exec ~/.skrypty/mixer.sh set 50 Control F6 :Exec ~/.skrypty/mixer.sh set 60 Control F7 :Exec ~/.skrypty/mixer.sh set 70 Control F8 :Exec ~/.skrypty/mixer.sh set 80 Control F9 :Exec ~/.skrypty/mixer.sh set 90 Control F10 :Exec ~/.skrypty/mixer.sh set 100 Control F11 :Exec ~/.skrypty/mixer.sh decrease 10 Control F12 :Exec ~/.skrypty/mixer.sh increase 10 Control grave :Exec ~/.skrypty/mixer.sh get
W powyższym przykładzie konfiguracja jest następująca:
- Ctrl + Esc - ustawienie głośności na 0%
- Ctrl + F1 - ustawienie głośności na 10%
- Ctrl + F2 - ustawienie głośności na 20%
- (...)
- Ctrl + F9 - ustawienie głośności na 90%
- Ctrl + F10 - ustawienie głośności na 100%
- Ctrl + F11 - zmniejszenie głośności o 10%
- Ctrl + F12 - zwiększenie głośności o 10%
- Ctrl + ` (pod Esc) - pokazanie aktualnej głośności
Uwagi końcowe
Minimalnym skokiem mixera nie jest 1%, a około 3-4%, dlatego nie da się dokładnie ustawić mixera, a jedynie wartość przybliżoną do porządanej.
I tak, jeżeli na początku mamy głośność 100% i użyjemy komendy ./mixer set 80
, to w rzeczywistości (przynajmniej u mnie) otrzymujemy poziom nie 80%, a 81%. Teraz jeśli stwierdzimy, że jest nadal za głośno i użyjemy ./mixer.sh decrease 10
to głośność zmniejszy się do poziomu nie 71%, a 68%.
Jednak różnice są praktycznie nie do wychwycenia, poza względami estetycznymi ów mankament nie ma większego znaczenia.