Conky to program monitorujący na bieżąco wybrane parametry maszyny, na której został uruchomiony. Domyślnie, dosłownie rezyduje w tle, wyświetlając informacje o stopniu wykorzystania procesora, wolnej przestrzeni na dysku, procesach. Przy tym w porównaniu np. do gdesklets jest szalenie lekki i nie przejawia typowych dla innych aplikacji monitorujących dużych zachcianek na czas procesora.
Teraz coś dla ludzi, którzy nie do końca rozumieją jak zmusić do wyświetlania informacji pobieranych z czujników rozmieszczonych na płycie głównej. Conky posiada zmienną i2c, która wymaga kilku parametrów, pierwszy określony jako dev, odpowiedzialny za wskazanie urządzenia, z którego mają być odczytywane informacje, drugi type określa rodzaj czujnika i w końcu ostatni określa numer czujnika. Jeśli chcemy dowiedzieć się jak nazywa się urządzenie, z którego należy odczytać informacje, musimy zajrzeć po prostu do katalogu /sys/bus/i2c/devices/ Jeśli chcesz zrobić to szybko, otwórz po prostu konsolę i wpisz:
# cd /sys/bus/i2c/devices/ # ls
Dla dobrze skonfigurowanego lm_sensors, dla mojej płyty (K7VZA v.2) jest to: 9191-6000 Właśnie to musimy wpisać w pole dev.
Drobna uwaga. Ten sposób działa prawdopodobnie tylko z jądrami z serii 2.6 (tak przynajmniej mówi oficjalna dokumentacja Conky, możliw jest jednak skorzystanie z pewnego obejścia poprzez wykorzystanie np. tail i wyłuskania informacji z dowolnego pliku - ten sposób opiszę później).
A oto przykładowy kod Conky, którego ja używam, skorzystaj z niego jeśli nie wiesz jak samemu zapisać odpowiednie wartości, pamiętaj tylko o podmianie słów zmień_mnie na odpowiednią nazwę urządzenia. Całość możesz po prostu wkleić za słówkiem kluczowym TEXT w pliku konfiguracyjnym Conkiego.
${color lightgrey}Temp: ${color lightgrey}CPU:${color #cc2222} ${i2c zmień_mnie temp 1}${color lightgrey}, SYS:${color #cc2222} ${i2c zmień_mnie temp 2}${color lightgrey}, SBr:${color #cc2222} ${i2c zmień_mnie temp 3}
${color lightgrey}Fan: ${color lightgrey}CPU:${color #cc2222} ${i2c zmień_mnie fan 1}${color lightgrey}, P/S:${color #cc2222} ${i2c zmień_mnie fan 2}
Od wersji 2.6.22 zmienił się sposób przechowywania informacji i struktura pseudo systemu plików dla urządzeń i2c (w tym także dla monitorów sprzętu). Od teraz informacji o temperaturze należy szukać w katalogu /sys/class/hwmon, co wymusiło także poprawki w samym Conkim. Nowa wersja 1.2.7 Conkiego wprowadza obsługę dodatkowych zmiennych platform oraz hwmon. Aby szybko przystosować nasz plik wystarczy sprawdzić poleceniem ls /sys/class/hwmon numer urządzenia (jeśli dostaniemy hwmon0 to numerem jest właśnie 0) i zamienić zmienne i2c na hwmon oraz wspomniane liczby urządzeń, aby wyglądało to mniej więcej tak:
Temp: CPU: ${hwmon zmień_mnie temp 1}, SYS: ${hwmon zmień_mnie temp 2}, SBr: ${hwmon zmień_mnie temp 3}
Fan: CPU: ${hwmon zmień_mnie fan 1}, P/S: ${hwmon zmień_mnie fan 2}
Drugi sposób - jeśli sensory działają, ale Conky nie potrafi ich obsłużyć
Aby uzyskać informacje, wykorzystamy metodę exec, która wykonuje polecenie i wyświetla jego stadardowe wyjście oraz kilka podstawowych poleceń operujących na tekstach. Jeśli posiadasz w systemie poprawnie skonfigurowane lm_sensors, komenda sensors powinna dać na wyjściu coś w tym stylu:
# sensors via686a-isa-6000 Adapter: ISA adapter CPU core: +1.63 V (min = +0.06 V, max = +3.10 V) +2.5V: +3.10 V (min = +2.37 V, max = +2.62 V) ALARM I/O: +3.34 V (min = +3.13 V, max = +3.47 V) +5V: +5.08 V (min = +4.51 V, max = +5.50 V) +12V: +12.06 V (min = +10.81 V, max = +13.20 V) CPU Fan: 4560 RPM (min = 998 RPM, div = 8 ) P/S Fan: 0 RPM (min = 84375 RPM, div = 8 ) SYS Temp: +33.4°C (high = +50°C, hyst = +55°C) CPU Temp: +33.1°C (high = +50°C, hyst = +55°C) SBr Temp: +22.4°C (high = +45°C, hyst = +50°C) #
Jak łatwo zauważyć są tu interesujące nas informacje, w postaci tekstu, który Conky jak najbardziej umie wyświetlić, teraz sęk w tym aby pozbyć się nadmiaru śmieci.
Oczywiście nic nie stoi na przeszkodzie aby wyświetlić całość tego wyjścia jeśli masz taką ochotę, wystarczy wpisać w miejscu za znacznikiem TEXT w pliku ~/.conkyrc, np. coś takiego: ${exec sensors}. Dzięki temu Conky wyświetli całe wyjście tego polecenia. Jeśli jednak chcemy wyłuskać tylko część informacji warto skorzystać z kilu filtrów. Grep wyłuska dla nas linie zawierające odpowiednie informacje, a cut przepuści tylko pola, które mu wskarzemy. Jeśli mamy ochotę oglądać tylko i wyłącznie temperature procesora, płyty głównej oraz zasilacza zapiszmy to w ten sposób:
${exec sensors | grep 'SYS Temp\|CPU Temp\|SBr Temp' | cut -c 1-19}
Zapis parametrów grepa oznacza linie zawierające ciągi znaków SYS Temp lub CPU Temp lub SBr Temp (znak potoku w wyrażeniach, które tu tworzymy oznacza alternatywe, i aby nie był interpretowany przez powłokę koniecznie musimy go poprzedzić backslashem stąd zapis \|). Parametr cut mówi, które znaki mają być wycięte z tego co przekaże nam grep (wyciynamy pierwsze 19 liter co odpowiada wycięciu na przykład takiego fragmentu: CPU Temp: +33.1°C).
Jeśli chcesz sprawdzić co zostanie wyświetlone za pomocą takiego wyrażenia możesz po prostu wykonać ją w konsoli, wpisując po prostu: # sensors | grep 'SYS Temp\|CPU Temp\|SBr Temp' | cut -c 1-19
Miłej zabawy. 
Dzięki temu artowi udało mi się uruchomić temperatury w Conky 
A wszystko przez te nowe jąderko ![]()