decoration Tag "multimedia" decoration

decoration
decoration
08.12 2007
19:01

Windows pod Linuksem - wirtualizacja

Co daje nam wirtualizacja?

Wirtualizacja pozwala na utworzenie nowej wirtualnej maszyny, na już działającym systemie operacyjnym. Możliwe jest przypisanie dla jej sprzętu dowolnych parametrów (np. znacznie większa ilość pamięci), zależnie od tego jakie możliwości daje nam program ją obsługujący. Na takiej maszynie można zainstalować również system operacyjny, jeśli ustawiona architektura procesora jest zgodna z danym systemem, oraz spełnione są inne wymagania sprzętowe. Dla tych, którzy jeszcze nie do końca rozumieją – można powiedzieć, że otrzymujemy nowy komputer wewnątrz naszego działającego systemu operacyjnego.

 

Jakie oprogramowanie?

Znanych jest mi kilka programów, które umożliwiają użytkownikowi utworzenie na swoim komputerze nowej maszyny wirtualnej. Najbardziej znany jest chyba VMware. Opatrzony jest on niestety licencją komercyjną. Sam odtwarzacz (Player) służący do uruchamiania maszyny jest dostępny bezpłatnie, jednak za środowisko umożliwiające przygotowanie takiej maszyny trzeba już zapłacić. Kolejną propozycją jest VirtualBox. Jeśli chodzi o funkcjonalność w stosunku do VMware, jest ona z pewnością mniejsza, ale ma inny spory atut – jedną z licencji na której jest wydawany jest GPL. Kolejną propozycją również wydawaną na licencji GPL jest QEMU. Trzeba mu jednak przyznać, że jeszcze nie sprawuje się aż tak dobrze jak VirtualBox. Mój wybór padł więc na VirtualBox'a.

 

 

Instalacja VirtualBox'a

Podejrzewam, że każda (przynajmniej dobra) dystrybucja Linuksa zaopatrzyła swoje repozytoria w VirtualBox'a. Opiszę tutaj jednak sposób instalacji niezależny od posiadanej dystrybucji. W pierwszej kolejności należy odwiedzić stronę http://www.virtualbox.org/ . Tam w zakładce download wybieramy for Linux -> all distributions. Pobranemu plikowi nadajemy prawa do wykonywania:

chmod a+x VirtualBox_1.5.2_Linux_x86.run

i uruchamiamy z konta roota:

./VirtualBox_1.5.2_Linux_x86.run

Archiwum zostanie rozpakowane do /opt/VirtualBox-1.5.2. Kolejnym krokiem jest skompilowanie modułu dla jądra:

cd /opt/VirtualBox-1.5.2/src/
make
make install

Aby moduł był ładowany automatycznie przy starcie, dopisujemy go do odpowiedniego pliku. Dla różnych systemów lokalizacja tego pliku będzie różna. Przykładowa jego lokalizacja to: /etc/sysconfig/modules. Moduł, który trzeba dopisać to vboxdrv. Jeżeli nie zostanie on dopisany, do uruchamiania przy starcie, będzie trzeba załadować go ręcznie przed uruchomieniem VirtualBox'a:

modprobe vboxdrv

Aby VirtualBox miał dostęp do urządzeń podpiętych do portu USB, prawdopodobnie będzie trzeba dopisać linijkę:

usbfsnone /proc/bus/usb usbfs devgid=1001,devmode=666 0 0

do pliku /etc/fstab. Do uruchomienia maszyny wirtualnej przez zwykłego użytkownika, wymagane jest dodanie go do grupy vboxusers:

gpasswd -a uzytkownik vboxusers

po czym, jeśli jest on zalogowany należy go przelogować.

 

Tworzenie maszyny wirtualnej

Nadszedł czas, aby utworzyć maszynę wirtualną. W tym celu uruchamiamy managera:

/opt/VirtualBox-1.5.2/VirtualBox

otrzymując okienko w stylu QT. Dalsza obsługa programu już nie powinna stwarzać trudności. GUI jest na tyle przyjazne, że początkujący użytkownik może szybko przygotować maszynę do pracy. Klikając na przycisk 'Nowa' (Ctrl+N) dostajemy okienko kreatora wyjaśniające nam wszystkie czynności po kolei: Wpisujemy nazwę, oraz typ systemu (wybrałem: WinXP), przydzielamy ilość pamięci RAM dla naszej nowej maszyny (wybrałem: 192MB). Teraz tworzymy nowy dysk twardy, co spowoduje uruchomienie następnego kreatora. Zalecam tutaj wybrać obraz o stałym (wybrałem 10G) rozmiarze (UWAGA: przy obrazie o stałym rozmiarze nie musimy mieć dostępnego aż tyle na dysku ile będzie on zajmować, ale zalecane jest jednak, żeby nie przekraczał on rozmiaru partycji na której zostanie utworzony). Po zakończeniu obu kreatorów można przejść w ustawienia utworzonej maszyny i włączyć kontroler USB, dźwięk (np. ALSA), zamontować napęd CD gospodarza (/dev/cdrom). Tutaj taka moja obserwacja: cdrom musi być w lokalizacji /dev/cdrom, jeżeli nasz cdrom to /dev/hdc, lub coś podobnego, to należy go podlinkować (przez root'a) do /dev/cdrom:

ln -s /dev/hdc /dev/cdrom

 

Instalacja systemu

Teraz można uruchomić maszynę wirtualną i zacząć rozruch z płyty CD, ewentualnie z obrazu *.iso (ściągniętego np. z MSDNAA). Instalacja systemu przebiega w taki sam sposób jak instalacja systemu bez kontroli VirtualBox'a.

 

 

Instalacja sterowników

Jeżeli nasz system już działa użytkownik będzie pewnie chciał zainstalować sterowniki dla urządzeń. Jedna uwaga tutaj: działający sprzęt jest wirtualny i nie jest zgodny z tym co faktycznie mamy 'pod blachą'. Twórcy VirtualBox'a dali użytkownikom pewien dodatek, który znajdziemy w katalogu /opt/VirtualBox-1.5.2/additions. Jest to obraz płyty *.iso, na którym znajdują się sterowniki do wirtualnych urządzeń. Zalecam zamontować ten dysk w VirtualBox'ie i zainstalować znajdujące się tam sterowniki. Dzięki temu np. będzie można uzyskiwać niestandardowe rozdzielczości, oraz poruszać się między maszyną wirtualną, a Linuksem bez potrzeby uwalniania kursora.

 

 

VirtualBox, a urządzenia USB

Wiele użytkowników pewnie się zastanawia, czy będzie działać prawidłowo ich sprzęt podłączany do USB pod tym wirtualnym Windows'em. Z moich testów wynika, że nie ma problemów z obsługą drukarek, skanerów, pendrive'ów, kamer internetowych pod VirtualBox'em. Identyfikatory tych urządzeń są przekazywane dla maszyny wirtualnej (jeżeli jest włączony kontroler USB), gdzie zostają przechwycone przez działający tam system operacyjny. Przechwycone przez VirtualBox'a urządzenie jednak nie będzie mogło być w tym samym czasie obsługiwane przez system Linuks i system wirtualny.

 



16.02 2007
11:39

Framebuffer w Linuksie


Podkreśliłem tutaj specjalnie Linuksa, gdyż nie wiem jak sprawa się ma w innych systemach unix'owych, ale podejrzewam, że też mogą być wyposażone w urządzenia tego typu. W przypadku innych systemów niż Linux poniższa metoda nie zadziała, gdyż wymagana jest tutaj modyfikacja jądra Linuksa.


Do najpopularniejszych zastosowań framebuffer używany jest by zmienić rozdzielczość konsoli systemowej. Dzięki temu użytkownik otrzymuje większą wygodę w poruszaniu się po systemie właśnie poprzez konsolę. Framebuffer wykorzystywany również może być do przeglądania plików graficznych, pdf'ów, czy klipów wideo.

 

 

Wybór sterownika


Aby przygotować system do obsługi framebuffer należy odpowiednio skompilować jądro. Przedstawię tutaj sposób kompilacji jądra ze sterownikiem vesafb-tng.


W pierwszej kolejności należy pobrać patch'a do jądra, który umożliwi obsługę tego steronika. Vesafb-tng jest projektem rozwijanym przez polskiego dewelopera Gentoo Linux - Michała Januszewskiego. Dzięki temu sterownikowi można uzyskać w konsoli rozdzielczości niestandardowe (m.in. dla monitorów panoramicznych), których domyślny sterownik vesafb nie obsługuje.


Plik można pobrać ze strony: http://dev.gentoo.org/~spock/projects/vesafb-tng/ nazwa pliku: vesafb-tng-***.patch. Aby vesafb-tng działała poprawnie należy pobrać patch odpowiedni do wersji skompilowanego w systemie jądra.

 

Przygotowanie jądra


Po pobraniu pliku przechodzimy do miejsca przechowywania źródeł jądra i aktualizujemy je patchem wydając polecenie:

cat scieżka/do/vesafb-tng.patch | patch -p1

Aby w kompilować w jądro sterownik wpisujemy:

make menuconfig

i przechodzimy do Device Drivers > Graphics support. Jeśli nie mamy jeszcze w kompilowanego w jądro obsługi framebuffer zaznaczamy Support for frame buffer devices, a następnie VESA VGA graphics support i wybieramy sterownik vesafb-tng, zmieniając przy okazji rozdzielczość konsoli:

 


po czym wychodzimy i kompilujemy jądro poleceniem make. Skompilowanym jądrem zastępujemy aktualne i uruchamiamy ponownie komputer.


Poniżej przykład z obsługa framebuffer:

 

 

Pliki graficzne


Jednym z programów umożliwiających przeglądanie plików graficznych jest fbi. Znaleźć go można pod adresem: http://linux.bytesex.org/fbida/. Po skompilowaniu programu i wszystkich wymaganych bibliotek będzie można przeglądać grafiki m.in. w formatach jpg, gif, png. Do działania programu wymagana jest obsługa framebuffer, w przeciwnym wypadku nic z tego nie będzie. Poniżej przykładowe zdjęcie wyświetlane w konsoli systemowej.

 

 

 

Pliki wideo


Jeżeli można wyświetlić w konsoli pliki graficzne, to można również wyświetlić pliki wideo. Jednym z programów, który to umożliwia jest znany chyba wszystkim użytkownikom linuksa MPlayer. Aby była możliwość odtwarzania plików wideo w konsoli należy skompilować program z obsługą directfb. Uruchomienie pliku video odbywa sie standardowo: mplayer plik.avi Poniżej przykład jak działa obsługa wideo pod konsolą linuksa:

 


Na koniec dołączam jeszcze kilka stron, gdzie można znaleźć informacjie o obsłudze framebuffer:



19.05 2007
14:42

Linux - instalacja kamery internetowej

Przygotowanie jądra

Zanim zaczniemy odbierać obraz z naszej kamery należy odpowiednio przygotować jądro.
Od wersji 2.6.27 obsługę sterownika Gspca włączono bezpośrednio do jądra, dzięki czemu nie musimy pobierać dodatkowych modułów do kompilacji. Jeżeli jeszcze posiadamy jądro starsze niż wersja 2.6.27 najlepiej je zaktualizować, w przeciwnym wypadku konieczna będzie kompilacja dodatkowego modułu (patrz: starsze jądra).

 

cd /usr/src/linux
make menuconfig

 

Wszystkie konieczne do wprowadzenia modyfikacje znajdziemy w 'Device Drivers -> Multimedia Devices'. W pierwszej kolejności zaznaczamy 'Video For Linux'. Następnie przejdźmy do 'Video capture adapters', gdzie na samym dole znajdziemy 'V4L USB devices'. Następnie w nim zaznaczamy jako moduł 'GSPCA based webcams'.


Kernel

Konfiguracja jądra Linuksa


Teraz musimy wybrać odpowiedni sterownik. W tym celu podłączmy naszą kamerę i w konsoli wyświetlmy podłączone urządzenia USB – lsusb wywołujemy z konta roota. Przykładowy wpis wygląda następująco:

 

Bus 005 Device 003: ID 046d:08aa Logitech, Inc.

 

Ważne dla nas są te liczby koło nazwy urządzenia. Listę obsługiwanego sprzętu przez sterownik Gspca znajdziemy na stronie http://mxhaard.free.fr/spca5xx.html. Najlepiej wyszukać nasze urządzenie na podstawie ID zwróconego przez polecenie lsusb. Nazwę sterownika znajdziemy w kolumnie 'Bridge'.

Wróćmy teraz do konfiguracji jądra. Wchodzimy do 'GSPCA based webcams' i wyszukujemy potrzebny nam sterownik i oznaczamy jako moduł. W gruncie rzeczy możemy zaznaczyć wszystkie, ale czy to nam jest potrzebne?

Kernel - gspca

Gspca - wybór sterownika

 

Następnie kompilujemy jądro, instalujemy moduły, zastępujemy starszą wersje  i restartujemy komputer:

 

make  && make modules_install
cp arch/XXXX/boot/bzImage /boot/vmlinuz

 

Starsze jądra

W przypadku starszych wersji jądra niż 2.6.27 w konfiguracji jądra zaznaczamy tylko 'Video For Linux' – tak jak na pierwszym screenie. Następnie kompilujemy jądro, zastępujemy je i restartujemy komputer.
Po załadowaniu nowego jądra możemy przystąpić do instalacji sterownika Gspca. Sterownik  można pobrać tutaj: http://mxhaard.free.fr/download.html. Jeżeli używamy jądra starszego niż 2.6.11 to pobieramy sterownik o nazwie spca5xx-v4l1. Najprawdopodobniej jednak jądro jest w miarę aktualne, więc wybieramy plik o nazwie gspcav1.
Po rozpakowaniu wydajemy polecenia:

 

make 
make install

 
Ścieżka do plików źródłowych wykorzystywanego jądra powinna zostać automatycznie znaleziona. Jeżeli nie, należy się upewnić, czy jądro znajduje się w folderze /usr/src, oraz czy posiadamy źródła na pewno do bieżącej wersji jądra.

 

Test kamery

Jeżeli podczas kompilacji nie wystąpiły żadne trudności, to powinniśmy już mieć w systemie działające sterowniki dla naszej kamerki w postaci modułów. Do sprawdzenia, czy działa wszystko prawidłowo możemy użyć mplayera skompilowanego z opcja vl1/vl2. Następnie w konsoli wpisujemy:

 

mplayer tv:// -tv driver=v4l:width=640:height=480:device=/dev/video0

 

W efekcie tego polecenia otrzymamy okienko z aktualnym obrazem z naszej kamery internetowej.

Mplayer - test kamery

Obraz z kamery internetowej

 

Problem z obrazem

W niektórych przypadkach – szczególnie w tych serownikach dostarczonych z jądrem mogą się pojawić problemy z kodowaniem obrazu otrzymywanego z kamery.

 

Problem z kamerą gspca

Problem - błędnie wyświetlany obraz

 

Rozwiązać ten problem może kompilacja biblioteki libv4l. W tym celu pobieramy np. wersje libv4l-0.5.9.tar.gz:

 

wget http://people.atrpms.net/~hdegoede/libv4l-0.5.9.tar.gz
tar xvf libv4l-0.5.9.tar.gz
cd libv4l-0.5.9
make
make PREFIX=/usr install

 

Teraz przed uruchomieniem aplikacji używającej kamery internetowej będziemy musieli podać ścieżkę do tej biblioteki:

 

LD_PRELOAD=/usr/lib/libv4l/v4l1compat.so mplayer tv:// -tv driver=v4l:width=640:height=480:device=/dev/video0

 

Jeżeli nie chcemy ciągle dodawać zmiennej LD_PRELOAD, możemy dopisać linijkę np. na koniec pliku /etc/profile

 

export LD_PRELOAD=/usr/lib/libv4l/v4l1compat.so

 

Wykorzystanie kamery

Wykorzystanie kamery internetowej w Linuksie nie jest jeszcze tak powszechne jak wśród użytkowników Windowsa. Głównym problemem jest ciągle mała ilość aplikacji umożliwiających jej wykorzystanie, a w szczególności brak komunikatorów internetowych działających pod kontrolą tego systemu udostępniających taką możliwość. Najpopularniejszym jest Skype od wersji 2.0. Innym jest aMSN (http://amsn-project.net/) działający w sieci MSN.

 

Skype - webcam

Skype pozwala emitować obraz z kamery internetowej

 



16.06 2007
16:47

Obsługa MIDI w Linuksie

Przygotowanie jądra


Przed przystąpieniem do kompilacji oprogramowania należy wcześniej przygotować odpowiednio jądro systemu. Należy tutaj zadbać by dźwięk w systemie działał w oparciu o sterowniki ALSA (nie testowałem tego rozwiązania na OSS, ale też powinno działać). Do poprawnego działania wymagane jest urządzenie /dev/snd/seq. Jeżeli znajduje się takie w naszym systemie, to prawdopodobnie można ominąć ten krok.


W przypadku, gdy nie posiadamy urządzenia snd/seq wpisujemy w katalogu ze źródłami jądra (np: /usr/src/linux) polecenie

 

make  menuconfig


a następnie przechodzimy do 'Device Drivers -> Sound -> Advanced Linux Sound Architecture' i zaznaczamy jako moduł, albo całkiem wkompilowywujemy 'Sequencer support'.

 


Następnie kompilujemy jądro i kopiujemy je do miejsca docelowego:

 

make && make  modules_install
cp  arch/i386/boot/bzimage /boot/vmlinuz[/c]


jeżeli wybraliśmy opcję jako moduł, każemy go załadować:

 

modprobe  snd-seq


oraz dopisujemy do pliku z automatycznie ładowanymi modułami (np. /etc/sysconfig/modules) linijkę:

 

snd-seq


co spowoduje załadowanie modułu przy każdym uruchomieniu systemu.

 

 

Kompilacja Timidity


Program Timidity można pobrać z oficjalnej strony: http://timidity.sourceforge.net/ (ok. 1,4MB). Rozpakowujemy archiwum, a następnie przechodzimy do kompilacji. Do konfiguracji użyłem parametrów:

 

./configure --prefix=/usr --enable-audio=alsa 
--enable-dynamic --enable-server --enable-alsaseq
make
make  install


Parametry konfiguracji można oczyłiście dobrać sobie ręcznie uprzednio zapoznając się z dołączoną dokumentacją, ważna jest natomiast opcja --enable-server, która pozwoli uruchomić Timidity jako serwer dźwięku MIDI.

 

Konfiguracja Timidity


Jeżeli kompilacja przebiegła pomyślnie, należy wybrać odpowiedni schemat dźwiękowy dla programu. Ja zdecydowałem się na shompatches. Pobrać można go z http://www.i.h.kyoto-u.ac.jp/~shom/timidity/shominst/shominst-0409.zip (ok. 10MB). Po pobraniu pliku przechodzimy do katalogu /usr/share/timidity. Jeżeli nie istnieje należy go utworzyć. Następnie rozpakowujemy tutaj pobrane wcześniej archiwum. Aby sprawdzić, czy pliki rozpakowały się poprawnie wydajemy polecenie:

 

ls /usr/share/timidity


i powinniśmy otrzymać podobną listę plików:

 

default.cfg     gsdrum.cfg     mt32.cfg     sfx.cfg     timidity.cfg
gsdrum25.cfg     inst     power.cfg     shominst-0409.zip


Następnie otwieramy plik /usr/share/timidity/timidity.cfg i poprawiamy w nim odpowiednio ścieżki:

 

dir /usr/share/timidity/inst/GUS
dir /usr/share/timidity/inst
dir /usr/share/timidity/inst/test


Aby przetestować, czy wszystko działa poprawnie uruchamiamy serwer:

 

timidity -iA


oraz ewentualnie wybrany plik midi:

 

timidity m4129.mid

 

 

Skrypt startowy


Aby nie trzebabyło uruchamiać za każdym razem serwera ręcznie warto utworzyć skrypt startowy, który załaduje go automatycznie przy starcie systemu. Nie mogę tutaj podać konkretnej treści pliku, bo różne dystrybucje używają różnych lokalizacji tych plików oraz różnych sposobów uruchamiania. Najczęściej pliki startowe znajdują się w katalogu /etc/init.d/ lub /etc/rc.d/init.d/. Polecam skopiować pod inną nazwą działający skrypt, a następnie zmodyfikować go podając jako parametr uruchomienia komendę:

 

/usr/bin/timidity -iA > /dev/null &


oraz jako polecenie na przerwanie skryptu:

 

killall  timidity


Następnie utworzyć dowiązania symboliczne do odpowiednich poziomów uruchamiania (rc5.d, rc6.d). Aby przetestować, czy skrypt działa poprawnie, polecam ponownie uruchomić komputer. Jeżeli nie udało się uruchomić serwera przy starcie należy sprawdzić, czy prawidłowo został dopisany wiersz z modułem snd-seq, bo często to jest źródłem problemu dla startu serwera.


Poniżej jeszcze zdjęcie pokazujące, że serwer Timidity poprawnie jest rozpoznawany przez Wine:

 

 



08.08 2007
13:32

Xfce i klawiatura multimedialna


Aby umożliwić korzystanie z dodatkowych klawiszy funkcyjnych nie jest wymagane żadne dodatkowe oprogramowanie. Oczywiście wykorzystanie dodatkowych aplikacji pomoże w osiągnięciu pewnych efektów wizualnych, których jednak nie każdy będzie potrzebować.

 

Kod klawisza


W pierwszej kolejności musimy się dowiedzieć, jaki klawisz został wciśnięty przez użytkownika. Do tego celu poszczególnym akcjom, jakie będziemy chcieli obsłużyć musimy przypisać kod klawisza. Jednym ze sposobów uzyskania takiej informacji jest użycie programu xev. Po wpisaniu w konsoli tego polecenia otrzymamy okienko, nad którym przeprowadzamy testy. Wciskając odpowiednie klawisze, czy zestawy klawiszy, otrzymamy odnośnie ich informacje:

 

KeyRelease  event, serial 31,  synthetic NO,  window 0x3800001,
 root 0x5d,  subw 0x0, time 1103643055, (-139,-2), root:(412,316),
 state 0x0,  keycode 223 (keysym 0x0,  NoSymbol), same_screen YES,
XLookupString  gives 0  bytes:  
XFilterEvent  returns:  False


Z tych danych możemy odczytać, że kod naszego klawisza posiada przykładowo numer 223.

 

Przypisywanie symboli


Kolejnym krokiem jest przypisanie kodu klawisza, do jego symbolu na serwerze Xów. Aby zobaczyć listę wszystkich dodatkowych obsługiwanych symbolów wystarczy podejrzeć plik:

 

cat /usr/share/X11/XKeysymDB


Następnie dopisujemy kod klawisza oraz jego symbol do pliku .Xmodmap w katalogu domowym użytkownika:

 

echo "keycode 176 =  XF86AudioRaiseVolume" >> ~/.Xmodmap


Każdy dopisany kod klawisza powinien znaleźć się w osobnej linii. Następnie musimy zrestartować Xy.


Aby połączyć symbol naciskanego klawisza z Xfce przechodzimy do ustawień klawiatury w panelu Xfce a następnie do zakładki 'Skróty'. Po utworzeniu nowego schematu (na domyślnym nie można dodawać własnych skrótów) dodajemy nowe polecenie oraz przyciskamy wybrany klawisz, aby przypisać mu wybraną akcję.

 

 

Przykład obsługi głośności


Obsługa głośności za pomocą klawiatury jest jedyn z najpopularniejszych ustawień dodatkowych klawiszy szczególnie wśród użytkowników laptopów. Klawisze do obsługi głośności mają numery: 160, 174, 176. Dopisujemy więc do pliku ~/.Xmodmap wiersze:

 

keycode 176 =  XF86AudioRaiseVolume
keycode 174 =  XF86AudioLowerVolume
keycode 160 =  XF86AudioMute


Aby zmienić poziomy głośności wykorzystam program aumix (http://jpj.net/~trevor/aumix.html). Domyślnie wykorzystuje on urządzenie miksujące /dev/mixer, dlatego jeżeli jesteśmy użytkownikami systemu ALSA w jądrze trzeba wkompilować Device Drivers -> Sound -> Advanced Linux Sound Architecture -> OSS Mixer API. Dodatkowo, do wyświetlenia paska poziomu głośności na pulpicie użyję programu Xosd (https://sourceforge.net/projects/libxosd/). Po skompilowaniu obu programów najlepiej przygotować skrypt, który pozwoli łatwe przekazywanie parametrów wykonywanej operacji. W przypadku mojego skryptu wywołanie akcji wygląda następująco:

 

  • volume up - zwiększenie głośności o 5% (aumix -v+5)
  • volume down - zmniejszenie głośności o 5% (aumix -v-5)
  • volume mute - wyciszenie dźwięku, lub jego przywrócenie, jeśli jest wyciszony (aumix -v0 lub aumix -v???)


Takie właśnie polecenia wraz ze ścieżką do skryptu należy wpisać w skrótach klawiatury w Xfce. Do wyświetlenia prezentacji graficznej poziomu głośności użyjemy polecenia osd_cat w następującej formie:

 

osd_cat -c green -s 1 -d 1 -b  percentage
 -f "-Misc-Fixed-Bold-R-Normal--18-120-100-100-C-90-*-*"
 -A center -p  middle -P `aumix -q |  grep vol |  cut -c5-7` &


Efektem polecenia będzie zielony pasek procentowo wyświetlający poziom głośności:

 


Aby można było przywrócić poziom głośności po wyciszeniu musimy gdzieś go zapamiętać. W swoim skrypcie posłużyłem się plikiem tymczasowym w katalogu /tmp, ale równie dobrze można zapamiętać ten poziom w jakiejś zmiennej systemowej.


Poniżej kod skryptu, który można pobrać jako cały plik ze stopki artykułu.

 

#!/bin/sh

if [ $1 ]; then
  if [ $1 == "up" ]
  then
    aumix -v+5
  fi
  if [ $1 == "down" ]
  then
    aumix -v-5
  fi
  if [ $1 == "mute" ]
  then
     if [ `aumix -q | grep vol | cut -c5-7` == "0," ]
     then
       aumix -v`cat /tmp/sound_lvl`
     else
       aumix -q | grep vol | cut -c5-7 >> /tmp/sound_lvl
       aumix -v0 
     fi
  fi
 osd_cat -c green -s 1 -d 1 -b percentage 
  -f "-Misc-Fixed-Bold-R -Normal--18-120-100-100-C-90-*-*"
  -A center -p middle -P `aumix -q | grep vol | cut -c5-7` &

else
  echo "Usage:"
  echo "  volume up"
  echo "  volume down"
  echo "  volume mute"

fi


Copyleft (C) tom000.info 2004-2010. Some rights reserved.