Rainmeter – tworzymy prostą skórkę

Jeśli chcesz mieć wskazania, takie jak na przykład użycie procesora czy ilość zajętej pamięci RAM zawsze pod ręką, to Rainmeter powinien Cię zainteresować. Wbrew nazwie, program potrafi robić praktycznie wszystko oprócz wyświetlania opadów deszczu… Chociaż właściwie przy odrobinie wysiłku można dodać do niego taką funkcję ;)

Rainmeter to bardzo elastyczna i wydajna aplikacja, umożliwiająca wyświetlanie na Windowsowym pulpicie praktycznie dowolnych informacji – od zwykłego, tekstowego zegara, poprzez wskaźniki użycia poszczególnych rdzeni procesora, aż po wykres użycia łącza internetowego.

Wraz z programem otrzymujemy kilka gotowych skórek, dziesiątki kolejnych możemy ściągnąć z serwisu DeviantArt, gdzie Rainmeter ma własną kategorię. Jeśli jednak żadna z istniejących skórek nie zadowala Twojego wyszukanego gustu, to możesz w bardzo prosty sposób stworzyć własną.

Widoczny po prawej stronie zestaw gC Suite powstał w jeden wieczór. Nie zawiera ani jednej grafiki, nie korzysta też z żadnych skryptów – jedynie z bardzo prostego języka interpretowanego przez Rainmeter.

Od początku

Zanim przystąpimy do tworzenia naszej pierwszej skórki, musimy poznać sposób, w jaki program przechowuje jej pliki. Wszystkie skórki znajdują się domyślnie w podfolderze Rainmeter\Skins Dokumentów danego użytkownika. Znajdziesz tam kilka-kilkanaście różnych podfolderów. Każdy podfolder stanowi kolejną gałąź w hierarchicznej strukturze skórki.

Dla zestawu gC główny folder nosi właśnie nazwę gC, w nim natomiast znajdują się podfoldery skórek: gC_CPU, gC_RAM, gC_SWAP, gC_Download itd. Podobnie, w menu Rainmetera widoczne jest podmenu gC, a w nim kolejne, odpowiadające nazwom podfolderów.

Każdy z podfolderów może zawierać dowolną ilość plików. Te z rozszerzeniem .INI będą rozpoznawane jako konfiguracje. Konfiguracje to różne warianty tej samej skórki, np. skórka gC_CPU zawiera trzy konfiguracje: gC_CPU, gC_CPU_DualCore, gC_CPU_QuadCore. Równocześnie może być załadowana tylko jedna konfiguracja danej skórki. Wybór innej konfiguracji przez użytkownika spowoduje zachowanie takich informacji, jak położenie skórki na pulpicie czy przezroczystość.

Utwórzmy więc w folderze Rainmeter\Skins podkatalog Demo, a w nim kolejny – CPU. Tam z kolei umieśćmy pusty plik tekstowy CPU.ini, który będzie stanowił podstawę naszej skórki. Zapisz tam też stworzony przeze mnie plik tła, z którego skorzystamy. Nadaj mu nazwę border.png.

Jeszcze kilka słów, zanim zaczniemy pisać

Konfiguracje Rainmetera to zwykłe pliki INI. Nie jest to może najnowocześniejszy format, lecz zapewnia prostotę i czytelność podczas tworzenia skórki. Dodatkowo, rozszerzono go o obsługę dyrektywy @include, której jednak nie omówię w tym poradniku (zainteresowanych odsyłam do dokumentacji).

Budowa zwykłego pliku INI jest następująca:

;Komentarz
[Sekcja1]
Wartość1=Dane1
Wartość2=Dane2
Wartość3=Dane3

[Sekcja2]
Wartość1=Dane1
...

Nazwy sekcji w pliku muszą być unikatowe, podobnie jak nazwy wartości w obrębie jednej sekcji. Wartości mogą za to powtarzać się w różnych sekcjach. Nie ma również żadnych ograniczeń dotyczących danych. Każda linia zaczynająca się od znaku średnika jest uznawana za komentarz i nie jest odczytywana przez program – ma znaczenie tylko dla osoby przeglądającej plik (może np. wyjaśniać bardziej zawiłe fragmenty).

Rainmeter odczytuje cały plik i dopasowuje dla każdej znalezionej sekcji jej znaczenie w skórce. Program rozróżnia następujące sekcje:

  • Sekcja [Rainmeter] – zawiera podstawowe informacje, takie jak nazwisko autora skórki, wymaganą częstotliwość odświeżania wskaźników, czy też minimalną wymaganą wersję Rainmetera.
  • Metadane [Metadata] – informacje nie mające wpływu na działanie skórki, np. jej nazwa, krótki opis, tagi, wersja, licencja. Służą do katalogowania i przeszukiwania hierarchii skórek.
  • Style – szablony, które możemy później wykorzystać, aby uniknąć powtarzania dużych ilości kodu. Nie będę prezentował ich użycia w tym poradniku.
  • Pomiary – informacje o tym, jakie dane pobrać z systemu i jak je przetworzyć. Mogą to być np. wykorzystanie procesora, zajętość dysków twardych, poziom naładowania baterii laptopa. Są później wyświetlane. Każdy pomiar obowiązkowo musi zawierać wartość Measure.
  • Mierniki – elementy, które aplikacja wyświetla na pulpicie. Mierniki mogą wyświetlać wyniki pomiarów lub statyczną zawartość, jak na przykład stały tekst lub obrazek. Rainmeter oferuje wiele różnych rodzajów mierników, jak na przykład paski, koła, wykresy, elementy obrotowe i inne. Każdy miernik musi obowiązkowo zawierać wartość Meter.

Uff, koniec teorii.

Pora na przygodę!

Gratulacje, przebrnąłeś przez najnudniejszy fragment! Weźmy się zatem do dzieła.

Otwórz utworzony wcześniej plik CPU.ini dowolnym edytorem tekstu (może być nawet Notatnik) i umieść w nim następujący kod:

[Rainmeter]
Update=500
Author=Krzysztof Śmiałek
AppVersion=2002000

[Metadata]
Name=avensome.net CPU Demo
Information=Demo skin for Rainmeter.
Version=0.1
License=X11

Twój plik zawiera już dwie sekcje. Jedna ma charakter czysto informacyjny, druga wpływa na ogólne działanie programu.

  • Update=500 ustawia czas odświeżania skórki na 500 milisekund. Jeśli pominiemy tą linijkę, Rainmeter przyjmie domyślną wartość odświeżania, czyli 1 sekundę. Pamiętaj, że częstsze odświeżanie oznacza wzrost obciążenia systemu.
  • Author=Krzysztof Śmiałek definiuje autora skórki. Wpis ten znajduje się w sekcji [Rainmeter] z powodów historycznych, nie ma żadnego wpływu na działanie.
  • AppVersion=2002000 definiuje minimalną wersję Rainmetera wymaganą do poprawnego działania skórki. Pierwsza cyfra oznacza główny rząd wersji (2), kolejne trzy – drugi rząd (2), a ostatnie trzy – numer kompilacji (0, czyli dowolny). Tak więc nasza skórka nie załaduje się w Rainmeterze starszym, niż 2.2. Ustawienie niższej wersji minimalnej nie powoduje automatycznie zgodności z nią. Nigdy nie wpisuj tutaj wersji programu, której nie przetestowałeś. Podanie wersji minimalnej jest opcjonalne, ale zalecane.

Sekcja [Metadata] zawiera przyjazną dla człowieka nazwę skórki, jej krótki opis, numer wersji oraz licencję, na której jest udostępniona. Pamiętaj, że nie każda licencja pozwana na edycję skórki na własny użytek lub jej ponowną publikację po zmodyfikowaniu.

Wszystko jasne? Myślę, że tak. Teraz dodamy do skórki pomiar zużycia procesora:

[MeasureCPU]
Measure=CPU

Nazwa sekcji jest całkiem dowolna, ale zaleca się stosowanie przedrostków Style, Measure oraz Meter, w zależności od tego, co sekcja opisuje. Takie nazewnictwo zwiększa przejrzystość kodu.

Tak jak już wcześniej wspomniałem, Rainmeter rozpoznaje pomiary po wartości Measure. W jej danych wpisujemy CPU, dzięki czemu program będzie mierzył wykorzystanie mocy obliczeniowej procesora. Więcej dostępnych pomiarów można znaleźć w dokumentacji programu. Zawiera ona również informacje o dodatkowych opcjach pomiarów, dzięki czemu możemy np. pobierać użycie tylko jednego rdzenia procesora.

Samo zadeklarowanie pomiaru nie powoduje jeszcze jego wyświetlenia. Do tego posłużą nam później mierniki.

Dodajmy jeszcze dwa mierniki statyczne:

[MeterBG]
Meter=Image
X=0
Y=0
W=144
H=176
SolidColor=0, 0, 0, 128

[MeterBorder]
Meter=Image
ImageName="border.png"
X=8
Y=8
W=128
H=128

MeterBG odpowiada za wyświetlanie półprzezroczystego, czarnego tła pod skórką. Wartość kluczowa Meter informuje Rainmetera, że jest to miernik. Jako jego typ podajemy Image – stosowany zwyczajowo do tworzenia jednobarwnego tła.

X i Y to współrzędne lewego górnego wierzchołka miernika, natomiast W i H – jego szerokość i wysokość. Skórka dopasowuje swoje wymiary tak, aby zawierać wszystkie mierniki. MeterBG będzie naszym największym miernikiem, zdefiniuje więc wymiary skórki: 144×176.

Wartość SolidColor odpowiada za zabarwienie całej powierzchni miernika wybranym kolorem. Rainmeter wczytuje kolory w formacie RGBA, a kolejne składowe oddzielone są przecinkami. Jeśli nie słyszałeś wcześniej o RGBA, jest to zwykła przestrzeń kolorów RGB, rozszerzona o obsługę przezroczystości, gdzie 255 oznacza pełne pokrywanie, a 0 – pełną przezroczystość. Nasze tło będzie więc czarne, a jego przezroczystość wyniesie 50%.

MeterBorder wyświetli na obszarze skórki stworzony wcześniej przeze mnie obrazek – białą ramkę z zaokrąglonymi narożnikami, która będzie się ładnie komponować z czarnym, półprzezroczystym tłem. Ponownie używamy miernika typu Image, tym razem jednak podajemy nazwę pliku do wyświetlenia: ImageName="border.png". Dane tekstowe w plikach Rainmetera należy podawać ujęte w cudzysłowy.

Jak można łatwo obliczyć, ramka będzie odsunięta o 8 pikseli od lewej, prawej i górnej krawędzi.

Teraz możesz zapisać plik i wybrać z menu Rainmetera opcję „Odśwież wszystko”. Na liście dostępnych skórek pojawi się Demo -> CPU -> CPU.ini. Po wczytaniu skórki powinieneś zobaczyć tło i ramkę w jego górnej części.

Ożywiamy naszą skórkę

Dodaj do pliku kolejny fragment kodu:

[MeterBar]
Meter=Bar
MeasureName=MeasureCPU
X=20
Y=20
W=104
H=104
BarColor=255, 255, 255

Jest to kolejny miernik, tym razem typu Bar – a więc w postaci pionowego paska o zmiennej wysokości (więcej informacji w dokumentacji). Przy pomocy wartości MeasureName nakazujemy mu korzystanie z pomiaru MeasureCPU, który utworzyliśmy wcześniej.

Umieszczamy miernik pośrodku białej ramki oraz ustawiamy jego kolor na nieprzezroczystą biel – tym razem korzystając z systemu RGB (RGBA również jest dozwolony).

Możesz ponownie zapisać plik i odświeżyć skórkę – powinieneś zobaczyć ruszający się pionowy pasek wewnątrz ramki.

Wolną przestrzeń u dołu wykorzystamy na dodanie napisu informującego o tym, co skórka wskazuje oraz wyświetlającego wartość liczbową. Dodamy w tym celu dwie etykiety: jedną wyrównaną do lewej, ze statycznym napisem „CPU” oraz drugą, wyrównaną do prawej i pobierającą dane z pomiaru MeasureCPU.

Voila!

Zapisz plik i ciesz się działającą skórką domowej roboty! A teraz do dzieła, stwórz własną i podziel się nią w komentarzu :)

Kompletny listing skórki:

[Rainmeter]
Update=500
Author=Krzysztof Śmiałek
AppVersion=2002000

[Metadata]
Name=avensome.net CPU Demo
Information=Demo skin for Rainmeter.
Version=0.1
License=X11

[MeasureCPU]
Measure=CPU

[MeterBG]
Meter=Image
X=0
Y=0
W=144
H=176
SolidColor=0, 0, 0, 128
[MeterBorder]
Meter=Image
ImageName="border.png"
X=8
Y=8
W=128
H=128

[MeterBar]
Meter=Bar
MeasureName=MeasureCPU
X=20
Y=20
W=104
H=104
BarColor=255, 255, 255

[MeterLabel]
Meter=String
X=8
Y=144
W=64
H=24
FontFace="Segoe UI"
FontSize=16
StringStyle=Bold
FontColor=255, 255, 255
AntiAlias=1
Text="CPU:"

[MeterValue]
Meter=String
MeasureName=MeasureCPU
X=136
Y=144
W=64
H=24
FontFace="Segoe UI"
FontSize=16
StringStyle=Bold
FontColor=255, 255, 255
AntiAlias=1
StringAlign=RIGHT
Postfix="%"
 

Spider

Hmmm… natrafiłam na ten post całkiem późno od jego napisania (jak widać), ale jestem naprawdę wdzięczna. ;)
Jak programowaniem i komputerem zajmuję się już trochę czasu, tak na rainmeter trafiłam całkiem nie dawno i jak to ja – kiedy przestudiowałam cały program i zaczęłam się tym bawić, zapragnęłam stworzyć własną skórkę, a ten artykuł bardzo mi w tym pomógł.

Bardzo fajnie, przejrzyście napisane. Nie miałam żadnych problemów ze zrozumieniem (może z uwagi na wcześniejszą przygodę z programowaniem, ale na pewno to duża zasługa umiejętnego przetłumaczenia). Tak więc dziękuję pięknie, z chęcią poprzeglądam resztę materiałów znajdujących się na tej stronie. ;)

Pozdrawiam
Spider

 

Kamil

Dzięki za pomoc ,fajny i prosty poradnik dla takiego początkującego jak ja :D