background image

Tips&Tricks

Superkaramba

68

lipiec/sierpień 2008

Tips&Tricks

Superkaramba

69

www.lpmagazine.org

Superkaramba 

Piotr Pawłowski

P

oprzednio  opisywany  program 
Gkrellm  (patrz  artykuł  z  Linux+  nr 
05/2008)  stanowi  dobre  narzędzie 
do  monitoringu.  Alternatywą  dla 

niego są aplety programu Superkaramba. W po-
niższym tekście postaram się pokazać jak łatwo 
można stworzyć od podstaw lub zmodyfikować 
aplet umożliwiający bieżące kontrolowanie kom-
ponentów komputera.

Instalacja Superkaramby

Program  Superkaramba,  umożliwiający  nam 
włączanie  widżetów,  można  znaleźć  na  stronie 
domowej  projektu  http://netdragon.sourceforge
.net/
 . Znajduje się także w wielu repozytoriach 
dla większości z dystrybucji linuksowych. Pro-
gram przeznaczony jest głównie dla środowiska 
graficznego KDE, jednak nie ogranicza się tylko 
do niego. Przy doinstalowaniu odpowiednich bi-
bliotek dla KDE możemy go uruchomić także na 
innych GUI. Od wersji KDE 3.5 pakiet Super-
karamba  jest  dołączony  standardowo.  Podczas 
budowy  tematu  mamy  możliwość  rozszerzania 
funkcjonalności poprzez dodawanie składników 
z takich języków programistycznych jak Python, 
Ruby, Java Script czy C++.

Zabawa graficzna

Aby nasz motyw był czytelny i wyróżniał się na 
pulpicie należy stworzyć obrazek, który posłuży 
jako tło apletu. Wiedza z zakresu grafiki ograni-
cza się wyłącznie do stworzenia obrazku o wy-
miarach, jakie umożliwia nam rozdzielczość mo-
nitora. Metodą prób i błędów tworzymy przykła-
dowe  tło  o  pożądanych  przez  nas  wymiarach. 
Wielkość tła umożliwia nam umieszczenie więk-
szej ilości komponentów, które chcemy śledzić. 
Ciekawy efekt możemy uzyskać, gdy tło będzie 
półprzeźroczyste. Aplet wykorzystujący taki ob-
razek bardzo dobrze komponuje się z pulpitem.

Oprócz stworzenia tła możemy się pokusić o 

zrobienie siatki kartograficznej, na której umiesz-
czany będzie wykres obciążenia procesora, ilość 
zajmowanej pamięci RAM lub prędkość wysyła-
nia i ściągania danych z sieci Internet. Oczywi-
ście wymiary takiej siatki muszą wymiarami być 
dopasowane do tła. Warto także zwrócić uwagę 
na kolorystykę. Odpowiednie dobranie kolorów 
w stosunku do naszego pulpitu sprawi, że aplet 
będzie wyglądał bardzo profesjonalnie.

Pierwsze kroki

Tworzenie nowego tematu można dokonać w do-
wolnym edytorze tekstu. Pliki należy zapisywać 
w formacie nazwa.theme . Aby rozpocząć two-
rzenie  należy  zdefiniować,  iż  plik  będzie  aple-
tem  programu  Superkaramba.  Następnym  kro-
kiem jest zdefiniowanie szerokości i wysokości. 
Warto tutaj nadmienić, że położenie każdego ele-
mentu względem całego tematu określane jest za 
pomocą pikseli. Początek naszego apletu będzie 
wyglądał następująco: 

karamba x=100 y=100 w=220 h=730 
locked=true 

Zmienne x oraz y służą do ustawienia okna w 
wybranej pozycji na pulpicie – okno będzie mia-
ło  rozmiar  220x730.  Rozdzielczość  powinna 
być dopasowana do naszego obrazka służącego 
za tło. Parametr locked służy do zablokowania 
możliwości zmiany położenia tematu. Ten frag-
ment można pominąć, gdyż blokowanie lub od-
blokowywanie każdego widżetu zmieniamy po-
przez najechanie kursorem na motyw i wciśnię-

cie kombinacji  Ctrl+L lub kliknięcie prawym 
przyciskiem  myszy  i  wybraniu  opcji  Przełącz 
zablokowanie  pozycji
.  Kolejnym  etapem  jest 
określenie  standardowej  czcionki,  jej  koloru 
oraz rozmiaru. Jako, że chcemy dołączyć stwo-
rzone  przez  nas  tło  musimy  również  zadekla-
rować użycie obrazka. Uzyskujemy to poprzez 
wpisanie poniższych linijek: 

defaultfont font="Sans serif" 
fontsize=11 color=255,255,255 
image x=0 y=0 path="images/bg.png" 
name="background"

Druga  linijka  służy  do  dodania  stworzonego 
przez nas obrazka jako tło motywu. Taki plik jest 
już gotowy do implementacji w programie. Wy-
starczy zapisać go z rozszerzeniem *.theme.

Uzyskanie informacji o systemie

Pierwszą rzeczą, jaką chcielibyśmy uzyskać są 
informacje o naszym ulubionym systemie ope-
racyjnym. Z rzeczy, jakie nas interesują to aktu-
alnie zalogowany użytkownik, wersja zainstalo-
wanego jądra, wersja KDE oraz czas pracy na-
szego  komputera.  Z  pomocą  przychodzą  nam 
zmienne środowiskowe. Należy zwrócić uwagę 
na to, że aplety Superkaramby potrafią interpre-
tować  takie  polecenia  jak  konsola  systemowa. 
Listing 1. przedstawia uzyskanie wcześniej wy-
mienionych danych.

Przyjrzyjmy  się  bliżej  opisanym  polece-

niom.  Jak  widać,  każde  polecenie  musi  zo-
stać  ujęte  w  cudzysłowie,  podobnie  jak  zwy-
kły tekst, który chcemy wyświetlić dla opisa-
nia  wartości.  W  linijkach  opisujących  aktual-
nie  zalogowanego  użytkownika  skorzystałem 
z  dobrodziejstw  zmiennych  środowiskowych. 
Dzięki nim, oprócz nazwy użytkownika, może-

Listing 1. 

Pobieranie informacji o systemie

# Użytkownik

text  

x

=10 

y

=35  

value

=

"Uzytkownik 

   :"

text 

x

=100 

y

=35  

sensor

=program 

   

program

=

"echo ${USER}"

# Kernel

text 

x

=10 

y

=50 

value

=

"Kernel :"

text 

x

=100 

y

=50 

sensor

=program 

   

program

=

"echo `uname -r`"

# KDE

text 

x

=10 

y

=65 

value

=

"KDE:"

text 

x

=100 

y

=65 

sensor

=program 

   

program

=

"kde-config --version | 

     grep KDE | sed -e 's/.*: //'"

#Uptime

text 

x

=10 

y

=80 

value

=

"Czas pracy:"

text 

x

=100 

y

=80 

sensor

=uptime 

   

format

=

"%d dni(dzien) %Hh %Mmin"

 

interval

=6000

background image

Tips&Tricks

Superkaramba

68

lipiec/sierpień 2008

Tips&Tricks

Superkaramba

69

www.lpmagazine.org

my uzyskać szereg innych danych takie jak ar-
chitektura naszego procesora, nazwę i typ hosta 
czy domyślna używana powłoka. Informacja o 
jądrze także została zaczerpnięta dzięki polece-
niu uname z flagą -r. Warto poeksperymento-
wać, jakie jeszcze przydatne informacje może-
my uzyskać. Sprawdzenie wersji naszego śro-
dowiska graficznego sprowadza się do skorzy-

stania z trzech poleceń: 

kde-config

grep

 oraz 

sed

. Jak widać istnieje możliwość korzystania 

z tzw. pipingu. W odmienny sposób wyciąga-
my  informacje  o  czasie  pracy.  Superkaram-
ba  posiada  zaimplementowane  funkcje,  które 
umożliwiają określenie długości pracy na kom-
puterze. Służą do tego zmienne 

%D

%H

 oraz 

%M

 

. Polecenie 

interval

 służy do odświeżania in-

formacji. W tym momencie dane będą spraw-
dzane co 60 sekund.

Procesor

W następnej sekcji chcemy, aby wyświetlane by-
ło obciążenie, częstotliwość i temperatura proce-
sora oraz 8 procesów, które najbardziej obciąża-
ją nasz system. 

Opcją  szczególną,  na  którą  pozwala  nam 

Superkaramba i która zostanie przeze mnie za-
stosowana,  jest  wykres  graficzny. Aby  wykres 
był  bardziej  czytelny  warto  przygotować  plik 
graficzny,  który  będzie  stanowił  tło.  W  tym 
przypadku  najpierw  należy  zdefiniować  poło-
żenie obrazka oraz ścieżkę dostępu do niego za 
pomocą znacznika image, a następnie w tym sa-
mym miejscu w naszym motywie umieścić wy-
kres (wartości x oraz y muszą być identyczne) 
za  pomocą  znacznika  graph.  Do  pobrania  da-
nych o obciążeniu znów przychodzi nam z po-
mocą Superkaramba – zmienna 

%load

 ułatwia 

nam  zadanie.  Oprócz  obciążenia  możemy  tak-
że dowiedzieć się ile obciążenia powoduje użyt-
kownik (

%user

) oraz system (

%system

). Odna-

lezienie informacji o częstotliwości oraz tempe-
raturze procesora należy do indywidualnego po-
dejścia użytkownika. W moim przypadku dane 
te znajdowały się w plikach /proc/cpuinfo oraz 
/proc/acpi/thermal_zone/TZS0/temperature 

Za  pomoca  poleceń 

cat

,  grep  oraz  sed  dotar-

łem do potrzebnych wartości. Całą sekcję opi-
suje Listing 2.

Pamięć

Znając już proces uzyskiwania informacji z ze-
wnętrznych poleceń możemy zająć się tym, na 
co pozwala nam Superkaramba. Jedną z takich 
opcji, jest uzyskiwanie danych dotyczących pa-
mięci – zarówno RAM oraz Swap, jak i pojem-
ności dysków twardych. Z pamięci podręcznej 
możemy uzyskać takie dane jak: pamięć wol-
na (

%fm

), pamięć zajęta (

%um

), pamięć całkowi-

ta (

%tm

), całkowita, wolna i zajęta pamięć swap 

(

%ts

%fs

%us

). Z dostępnych opcji wybiera-

my te, które chcemy śledzić i umieszczamy je 
w zmiennej format.

Uzyskiwanie  wolnej  lub  zajętej  przestrze-

ni na dyskach twardych jest nie mniej łatwe jak 
w przypadku pamięci podręcznej. Podstawowe 
informacje  uzyskujemy  za  pomocą  zmiennych 
opisanych  w  Listingu  3.  Należy  zwrócić  uwa-
gę  na  zmienną  mountpoint.  Dzięki  niej  usta-
wiamy  ścieżkę  dostępu  do  dysku,  którego  ob-
jętość  chcemy  na  bieżąco  monitorować,  np. 

mountpoint="/mnt/cdrom"

 . Daje to nam moż-

liwość nie tylko do nadzorowania objętości dys-
ków, lecz także poszczególnych katalogów, np. 
domowego.

Sieć

Monitorowanie  sieci  LAN  jest  kolejnym  eta-
pem  w  tworzeniu  naszego  widżetu.  Znajo-
mość modyfikacji tej części jest bardzo przy-
datna,  gdyż  zdarzają  się  tematy  Superkaram-
by, w które sami będziemy musieli zmodyfiko-
wać, aby uzyskać pożądany efekt. W tej sekcji 
także warto posłużyć się poznanymi już wcze-
śniej znacznikami graph i image do graficznej 
prezentacji obciążenia sieci. Istotnymi parame-
trami  są  device  oraz  format.  Pierwsza  z  nich 
wskazuje  na  urządzenie  sieciowe  w  naszym 
komputerze, dzięki któremu łączymy się z In-
ternetem. Za pomocą drugiego określamy, któ-
ra prędkość nas interesuje – wysyłanie czy po-
bieranie danych. Kolejnym etapem jest pobra-
nie  danych  dotyczących  pobierania/wysyłania 
danych.  Takie  informacje  możemy  uzyskać 
z  właściwości  naszej  karty  sieciowej.  Linijka 
RX bytes odpowiada za aktualne prędkości na-
szego urządzenia. Zależy nam na pobraniu tyl-
ko wartości wysyłania. Wykorzystując polece-
nie 

awk 

podajemy, którą grupę znaków chcemy 

pobrać. (Listing4). 

Superkaramba  pozwala  na  pisanie  znacz-

nie  bardziej  rozbudowanych  tematów.  Warto 
wykorzystywać skrypty pisane w językach pro-
gramowania  do  wprowadzenia  większej  inte-
rakcji z użytkownikiem. 

Listing 2. 

Obciążenie, taktowanie i temperatu-

ra procesora

# Procesor -> Obciążenie

image 

x

=10 

y

=140 

path

=

"images/

   grid.png"

graph  

x

=10 

y

=140  

sensor

=CPU 

w

=200

   

h

=25 

points

=70 

color

=255,255,127

text   

x

=10 

y

=170  

   

value

=

"Obciazenie CPU : "

text 

x

=200 

y

=170  

sensor

=CPU 

   

format

=

"%load%"

 

align

=right

# Procesor -> Częstotliwość

...
text 

x

=176 

y

=185  

sensor

=program 

   

program

=

"cat /proc/cpuinfo | 

      grep 'cpu MHz' | sed -e 's/
         .*: //'"

 

...

#Procesor -> Temperatura

...
text 

x

=200 

y

=200 

sensor

=program 

program

=

"cat /proc/acpi/thermal_

zone/TZS0/temperature | grep 
'temperature' | sed -e 's/.*: //'"

 

align

=right 

interval

=1000

Listing 3. 

Zmienne do informacji stanów dysków

%fg – wolna przestrzeń w gigabajtach
%fp – procent wolnej przestrzeni
%ug – zajęta przestrzeń w gigabajtach
%up – procent zajętej przestrzeni
%tg – całkowita pojemnośc dysku w 
gigabajtach

Listing 4. 

Monitoring prędkości karty sieciowej 

image 

x

=10 

y

=655 

path

=

"images/

   grid.png"

graph  

x

=10 

y

=655  

sensor

=network 

   

device

=

"eth1"

 

format

=

"%out"

 

w

=200 

h

=25 

color

=255,127,127 

   

interval

=1000 

max

=100

text 

x

=200 

y

=690  

sensor

=program 

   

program

="/sbin/ifconfig eth1 | 

      grep 'RX byte' | awk '{print 
         

$3

 

$4

}'" 

align

=right 

            

interval

=10000

text   

x

=10 

y

=705 

sensor

=network 

   

device

=

"eth1"

 

format

=

"%out KB/s"

 

      

decimals

=1

Piotr Pawłowski jest studentem drugiego ro-
ku Informatyki i Ekonometrii. Z linuxa korzy-
sta  od  prawie  roku  jednak  od  pierwszego 
zetknięcia stał się jego wiernym użytkowni-
kiem. Jest czynnym członkiem Koła Nauko-
wego  Systemów  Informatycznych  E-xpert 
działającego przy Katedrze Informatyki Eko-
nomicznej Uniwersytetu Gdańskiego.
Kontakt z autorem: p.pawlowski@e-xpert.pl

O autorze