Raspberry PI OS - po(d)ręczny Conky ;) - Mój konfig

Spis treści

Mój "konfig"

Okienko ConkyPrzyszedł czas na prezentację własnego "Konfiga".

Od razu chciałbym zaznaczyć, że nie jest to żaden "wyczyn". 

Jedynie efekt przymyśleń, podglądania w sieci i wielu prób pod różnymi systemami.

A propos: "różne systemy". Opisując pliki conky.config czy .conkyrc wspominałem o różnych wynikach stosowania tej samej składni pod różnymi systemami.

Poniżej jeden z przykładów tj. kontrola stanu interfejsu sieciowego wlan0.

Pod Raspbianem wykorzystanie zmiennej ${if_up wlan0} daje oczekiwany efekt. Pod Ubuntu-Mate - nie!

Podpowiem, że w tym drugim przypadku efekt osiąniemy stosując (dla wlan0) zmienną $if_match w celu sprawdzenia czy adresem przypisanym do wlan0 nie jest(!): "No Address".

...
${if_up $template2}Wi-Fi: ${addr $template2}$else${color red}${alignr}${font :style=Bold:size=9}WiFi wyłączone!${font}${color1}$endif
...

Jak widać ten konfig u mnie działa! Prezentując podstawowe możliwości Conky. Obrazek powyżej jest "spod" Ubuntu-Mate 20.10 (Bardzo przepraszam za widoczny w tytule okna błąd: jego zrzut powstał jeszcze przed modyfikacją zmiennej template0 w pliku .conkyrc).

Plik konfiguracyjny Conky umieściłem w $HOME/.config/conky Dlaczego ta lokalizacja?

Domyślnie Conky szuka pliku konfiguracyjnego w $HOME (czyli katalogu domowym).

Niby racja. Jednak tam jest już wiele plików: konfiguracyjnych oraz innych. Najczęściej w pośpiechu: stworzonych, wrzuconych i/lub edytowanych przez właściciela konta! :D.

Po jakimś czasie znalezienie czegokolwiek bywa ;) bardzo kłopotliwe. A konfiguracje (kolejne wersje, backup'y) i składniki (grafiki, fonty, itp.) okienka Conky czasami ulegają modyfikacjom/edycji.

Dlatego też (już na wstępie!) warto im dedykować osobny katalog. IMO dobrym miejsce na to jest istniejący w katalogu domowym użytkownika podkatalog .config.

Stworzenie odpowiedniego podkatalogu to: mkdir ~/.config/conky Poniższa zawartość .conkyrc - wzięta z katalogu $HOME/.config/conky pod Raspbianem 32b:

conky.config = {
-- zmienne
template0 = [[Raspbian 32b]],
template1 = [[eth0]],
template2 = [[wlan0]],
-- parametry okna
alignment = 'bottom_left',
background = true,
gap_x = 15,
gap_y = 15,
minimum_height = 300,
minimum_width = 280,
maximum_width = 280,
no_buffers = true,
out_to_console = false,
out_to_stderr = false,
extra_newline = false,
own_window = true,
own_window_class = 'Conky',
own_window_type = 'normal',
own_window_transparent = false,
own_window_argb_value = 255,
own_window_argb_visual = true,
own_window_colour = 'black',
own_window_hints = 'undecorated,sticky,skip_taskbar,skip_pager,below',
border_width = 1,
border_inner_margin = 5,
border_outer_margin = 3,
stippled_borders = 0,

double_buffer = true,
cpu_avg_samples = 2,
net_avg_samples = 1,

-- polskie czcionki UTF8
override_utf8_locale = true,

-- format wyświetlania jednostek
-- pojemności nośników, transferu, itd.
short_units = true,
format_human_readable = true,

-- ramki
draw_borders = true,
draw_outline = false,
draw_shades = false,
use_xft = true,
font = 'DejaVu Sans:style=Regular:size=10',

-- definicje kolorów
default_color = '98a886',
-- biały
color1 = 'white',
-- RPi
color2 = 'c41949',
-- szare
color3 = '555555',
color4 = 'c0c0c0',
-- zielony
color5 = '66ff33',
-- niebieski
color6 = '66ffff',
-- złoty
color7 = 'ffd700',
-- pomarańcowy2
color8 = 'ff9933',

default_shade_color = 'd0d0d0',
default_outline_color ='00ff00',

update_interval = 0.5,
uppercase = false,
use_spacer = 'none',

-- wykresy
draw_graph_borders = true,
show_graph_scale = false,
show_graph_range = false
}

conky.text = [[${image ~/.config/conky/pic/RPI1.png -p 2,25}${color c41949}${font :style=Bold:size=14}$template0${font :style=Regular:size=10}${alignr}${color1}${freq_g cpu0}GHz
${alignc}${font :style=Bold:size=9}($sysname $kernel, ${fs_type}),${font}
${color4}${alignc}Aktywny: ${uptime},
${alignc}Zalogowany: ${user_times}
${color}${hr 1}${font :style=Bold:size=10}${color2}
CPU ${font}${color}(U=${exec /opt/vc/bin/vcgencmd measure_volts | cut -c6-9}V, temp: ${exec /opt/vc/bin/vcgencmd measure_temp | cut -c6-9}C)${alignr}
(${color5}${processes}${color1}/${color}${running_processes}${color1})
${cpugraph 808080 ffd700 -l}
${font :style=Bold:size=10}${color7}${cpubar cpu1 10,100} ${cpu cpu1}%${alignr}${cpu cpu2}% ${cpubar cpu2 10,100}
${cpubar cpu3 10,100} ${cpu cpu3}%${alignr}${cpu cpu4}% ${cpubar cpu4 10,100}${color2}
${font :style=Bold:size=10}TOP5${color4}${font} (nazwa) ${alignr}$color5 PID $color7 %CPU$color6 %MEM ${color4}
${top name 2} ${alignr}${color5} ${top pid 2},${color7} ${top cpu 2}%,${color6} ${top mem 2}%,${color4}
${top name 3} ${alignr}${color5} ${top pid 3},${color7} ${top cpu 3}%,${color6} ${top mem 3}%,${color4}
${top name 4} ${alignr}${color5} ${top pid 4},${color7} ${top cpu 4}%,${color6} ${top mem 4}%,${color4}
${top name 5} ${alignr}${color5} ${top pid 5},${color7} ${top cpu 5}%,${color6} ${top mem 5}%,${color4}
${top name 6} ${alignr}${color5} ${top pid 6},${color7} ${top cpu 6}%,${color6} ${top mem 6}%,${color4}
${hr 1} ${color2}${font :style=Bold:size=10}
RAM: ${color1}$mem $font $color6 ($memmax), ${color5}użyte: ${memperc}%${color2}
${font :style=Bold:size=10}DYSK: ${color1}${fs_used /}$font $color6 (${fs_size /}), ${color5}wolne: ${fs_free_perc /}%$color
${hr 1} $color
GW: ${color1}${gw_ip},${color}
Sieć ($template1}: ${color1}${addr $template1}
${if_up $template2}Wi-Fi: ${addr $template2}$else${color red}${alignr}${font :style=Bold:size=9}WiFi wyłączone!${font}${color1}$endif
${image ~/.config/conky/pic/dn1.png -p 0,435}${color3}${downspeedgraph eth0 25,137 002000 00ff00 -l} ${upspeedgraph $template1
25,137 400000 ff4415 -l}${image ~/.config/conky/pic/up1.png -p 246,355}
${color 00ff00}${offset 30}${font :style=Bold:size=10}${downspeed $template1}/s (${totaldown $template1}),${alignr}${color red}${upspeed $template1}/s (${totalup $template1})${color}${font}
]]

Plik conky.shDalsze (szczegółowe) omówienie poszczególnych elementów pliku .conkyrc wykracza poza ramy tego artykułu. Jak wspominałem. To elementarz!

IMO informacje zawarte na stronie Autora są wystarczające. Nawet dla "zaczynających".

Omawiając konfigurację Conky nie sposób nie wspomnieć o czcionkach/fontach.

Ale zanim do tego przejdę chciałbym wskazać jak można uruchomić Conky z przygotowanym plikiem konfiguracyjnym.

W tym celu (najlepiej) w oknie terminala (Ctrl+Alt+T) wywołać edytor nano:

~S sudo nano /usr/bin/conky.sh

Za pomocą edytora nano tworzy w katalogu: /usr/bin (dlatego wymagane są uprawnienia administratora) plik o nazwie: conky.sh o następującej treści:

#!/bin/sh
# gdzie: -p 4 - opóźnienie uruchomienia conky o 4s,
# -b - włączenie podwójnego buforowania,
# jeśli w .conkyrc double buffer włączone (true) można odpuścić
# -c - argumentem tej opcji jest (wraz ze ścieżką)
# nazwa pliku konfiguracyjnego

(conky -p 4 -b -c ~/.config/.conkyrc) &
exit0

Po zapisaniu pliku (Ctrl+O) oraz wyjściu z niego (Ctrl+X) plikowi trzeba nadać odpowiednie uprawnienia (do wykonywania):

~S sudo chmod a+x /usr/bin/conky.sh

Tak przygotowany plik conky.sh możemy uruchomić z linii komend:

~S sh conky.sh

Plik conky.desktopRóżnica między uruchomieniem skryptu conky.sh a komendą conky (bez parametrów) polega na tym, że w drugim przypadku (w katalogu domowym) szukany jest plik konfiguracyjny.

Jeśli go nie ma - conky wczyta konfigurację domyślną!

Jeśli chcemy by Conky uruchamiał się przy każdym logowaniu do konta użytkownika musimy w katalogu /etc/xdg/autostart stworzyć plik conky.desktop o następującej treści:

[Desktop Entry]
Type=Application
Name=Conky
Comment=Uruchamia Conky
NoDisplay=true
Exec=sh /usr/bin/conky.sh
NotShowIn=Gnome;KDE;XFCE;

By sprawdzić, czy wszystko działa prawidłowo - wyloguj się i ponownie zaloguj.

Powinieneś zobaczyć okno conky zgodne z konfiguracją zawartą w pliku .conkyrc.

Zwróć jednak uwagę, że plik conky.sh pobiera plik konfiguracyjny z następującej lokalizacji: ~/.config/conky.

Dlatego plik konfiguracyjny winien tam się znaleźć. Pozwala to stworzyć każdemu użytkownikowi własną konfigurację Conky.