13:29
Xfce – dodawanie aplikacji do menu
Środowisko Xfce do wyświetlania menu korzysta ze specyfikacji XDG, tak więc w miarę łatwy sposób możemy za pomocą konsoli systemowej dodawać i usuwać elementy menu.
Aby dodać nowy element do menu musimy posiadać plik opisujący dany element. Plik taki posiada rozszerzenie .desktop. Dostarczany on jest często przez deweloperów wraz z aplikacjami, które instalujemy. Jednak, jeśli takiego nie posiadamy, musimy go utworzyć. Struktura takiego pliku wygląda następująco:
[Desktop Entry] Name=NazwaAplikacji
Comment=Komentarz
Comment[pl]=Komentarz w języku polskim
Exec=/sciezka/do/pliku -wraz_z_parametrami uruchamiania
Icon=/sciezka/do/ikony.png
Categories=Kategorie;wMenu
Type=Application Encoding=UTF-8
To tylko część parametrów, które możemy ustawić przed dodaniem naszej aplikacji. Zazwyczaj nie ma konieczności podawania wszystkich zawartych w specyfikacji.
Przygotowany w ten sposób plik zapisujemy jako nasza-aplikacja.desktop, a następnie dodajemy ją poleceniem:
xdg-desktop-menu install nasza-aplikacja.desktop
Od razu po uruchomieniu dodany program powinien znaleźć się w menu.
Aby usunąć dodaną aplikację wystarczy skorzystać z polecenia:
xdg-desktop-menu uninstall inna-aplikacja.desktop
Więcej o specyfikacji menu XDG:
- http://standards.freedesktop.org/desktop-entry-spec/desktop-entry-spec-latest.html
- http://standards.freedesktop.org/menu-spec/menu-spec-latest.html

13:14
Problemy z klawiaturą w Xfce-4.6
Po aktualizacji Xfce4 do wersji 4.6 z niewiadomego dla mnie powodu przy ładowaniu środowiska przestało mi uwzględniać konfigurację klawiszy z pliku ~/.Xmodmap. Więc przez około 3 dni nie mogłem za pomocą klawiatury w wygodny sposób kontrolować m.in. poziomu głośności. W końcu postanowiłem przy tym przysiąść i znalazłem bardzo szybko proste, chociaż pewnie nie optymalne rozwiązanie – dodanie polecenia do skryptów startowych Xfce4.
Aby uaktywnić konfigurację tych klawiszy, trzeba je przekazać do serwera Xorg. Służy do tego polecenie xmodmap.
W Xfce4 otwieramy menedżera ustawień i wybieramy Sesja i uruchamianie. Na zakładce Automatyczne uruchamianie dodajemy polecenie: /usr/bin/xmodmap /sciezka/do/.Xmodmap.

Przy okazji – zapraszam do zapoznania się z artykułem Xfce i klawiatura multimedialna.

12:21
Monitorowanie urządzeń - lm-sensors
Konfiguracja jądra
Jak zwykle – na początek trzeba zacząć od przygotowanie jądra systemu. Przed tym warto dokładniej zapoznać się z naszym sprzętem komputerowym:
lspci
cd /usr/src/linux
make menuconfig
W jądrze nie czeka nas zbyt wiele modyfikacji. Przechodzimy do zakładki Device Drivers ---> I2C support i zaznaczamy: I2C device interface jako moduł. Następnie przechodzimy do I2C Hardware Bus support i zaznaczamy urządzenia jakie posiadamy (ewentualnie żadne). Następnie udajemy się do Device Drivers ---> Hardware Monitoring support i tutaj również zaznaczamy posiadane przez nas urządzenia. Jeśli nie wiemy co dokładnie zaznaczyć można zaznaczyć wszystko, ale po co nam śmieci w systemie.
Na koniec przekompilujemy i zainstalujemy nowe moduły:

make && make modules_install
Teraz trzeba skopiować nowe jądro na miejsce starego – ścieżka nowego powinna być widoczna gdzieś pod koniec wypisach na ekran informacji po kompilacji jądra.
cp arch/x86/boot/bzImage /boot/vmlinuz
Ponownie uruchamiamy komputer – na wszelki wypadek jeśli zostały dodane jakieś elementy wkompilowane w jądro (nie jako moduły)
Kompilacja Lm-Sensors
Przejdźmy teraz do aplikacji odpowiedzialnej za pobieranie informacji o stanie podzespołów komputera. Lm-sensors można pobrać z oficjalnej strony. Następnie rozpakowujemy i kompilujemy:
tar xvf lm_sensors-3.1.0.tar.bz2
cd lm_sensors-3.1.0
make PREFIX=/usr
make install PREFIX=/usr
Przed uruchomieniem musimy załadować nasze skompilowane moduły – w podobny sposób jak tutaj:
modprobe i2c-core
modprobe i2c-proc
Do wykrycia sprzętu, który zostanie obsłużony uruchamiamy:
sensors-detect
Odpowiadamy na wszystkie pytania twierdząco, aby przeskanować wszystkie typy urządzeń. Na koniec zostaniemy zapytani, czy wygenerować plik konfiguracyjny – również odpowiadamy YES.
Aby sprawdzić, czy wszystko działa poprawnie wydajemy polecenie
sensors
lub jeżeli chcemy wskazać inny plik konfiguracyjny:
sensors -c /etc/sysconf/lm_sensors
Aplikacje
W zależności od tego jakiego środowiska używamy możemy skorzystać z kilku aplikacji odczytujących informacje z lm-sensors.
Dla KDE jest to np. KSensors, Kima.
Dla Gnome: ComputerTemp, dla XFCE: Xfce4-sensors.
Z innych aplikacji pomocnych przy monitorowaniu systemu przez lm-sensors można wymienić Conky, GKrellM.


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

English
Nazywam się Tomasz Chudyk i witam na mojej stronie. Jestem studentem piątego roku informatyki. Moje zainteresowania krążą głównie wokół open-source, Linuksa i technologi internetowych.
