Installazione Conky
Installare i pacchetti conky-all, curl, lm-sensors e hddtemp,
con il comando:
sudo apt-get install conky-all curl lm-sensors hddtemp
Per prima cosa impostare il bit SUID su hddtemp in modo da assegnare allo user che esegue hddtemp, gli stessi privilegi dell’utente root.
Questo è necessario perchè conky non potrà altrimenti eseguire sudo autonomamente dal suo file di configurazione conkyrc:
sudo chmod u+s /usr/sbin/hddtemp
Comandi base di Conky
per eseguire conky da terminale:
conky &
per eseguire conky in background ed evitare che venga terminato alla chiusura del terminale:
conky -d
File di configurazione
Le configurazioni di conky risiedono nel file ~/.conkyrc, se non devesse esistere, fare una copia del file di default:
cp /etc/conky/conky.conf ~/.conkyrc
E’ necessario riavviare conky per poter utilizzare il nostro file di configurazione:
killall conky
conky &
Il file di configurazione è diviso in due parti:
tutto ciò che riguarda la resa a schermo di conky risiede in conky.config mentre tutto ciò che riguarda la formattazione del testo risiede in conky.text.
Tutto ciò che non è compreso tra
${ }
viene interpretato da conky come testo semplice.
conky.config = {
alignment = 'top_left',
background = false,
border_width = 1,
cpu_avg_samples = 2,
default_color = 'white',
default_outline_color = 'white',
default_shade_color = 'white',
draw_borders = false,
draw_graph_borders = true,
draw_outline = false,
draw_shades = false,
use_xft = true,
font = 'DejaVu Sans Mono:size=12',
gap_x = 5,
gap_y = 60,
minimum_height = 5,
minimum_width = 5,
net_avg_samples = 2,
no_buffers = true,
out_to_console = false,
out_to_stderr = false,
extra_newline = false,
own_window = true,
own_window_class = 'Conky',
own_window_type = 'desktop',
stippled_borders = 0,
update_interval = 1.0,
uppercase = false,
use_spacer = 'none',
show_graph_scale = false,
show_graph_range = false
}
conky.text = [[
${scroll 16 $nodename - $sysname $kernel on $machine | }
$hr
${color grey}Uptime:$color $uptime
${color grey}Frequency (in MHz):$color $freq
${color grey}Frequency (in GHz):$color $freq_g
${color grey}RAM Usage:$color $mem/$memmax - $memperc% ${membar 4}
${color grey}Swap Usage:$color $swap/$swapmax - $swapperc% ${swapbar 4}
${color grey}CPU Usage:$color $cpu% ${cpubar 4}
${color grey}Processes:$color $processes ${color grey}Running:$color $running_processes
$hr
${color grey}File systems:
/ $color${fs_used /}/${fs_size /} ${fs_bar 6 /}
${color grey}Networking:
Up:$color ${upspeed eth0} ${color grey} - Down:$color ${downspeed eth0}
$hr
${color grey}Name PID CPU% MEM%
${color lightgrey} ${top name 1} ${top pid 1} ${top cpu 1} ${top mem 1}
${color lightgrey} ${top name 2} ${top pid 2} ${top cpu 2} ${top mem 2}
${color lightgrey} ${top name 3} ${top pid 3} ${top cpu 3} ${top mem 3}
${color lightgrey} ${top name 4} ${top pid 4} ${top cpu 4} ${top mem 4}
]]
e corrisponde alla seguente grafica:
La lista di tutti i parametri è reperibile sul sito ufficiale.
alignment = ‘top_left’:
Indica la posizione della finestra di conky sullo schermo.
I valori accettati sono: alignment top_left, alignment top_right, alignment bottom_left, alignment bottom_right, alignment none
background = false:
Se settato a true, conky viene forzato a funzionare in background e non dipende da nessun terminale
border_width = 1:
Spessore del bordo in pixels
cpu_avg_samples = 2:
Numero di campionamenti per il monitoraggio della cpu
default_color = ‘white’:
colore di default di testo e bordo
default_outline_color = ‘white’:
colore di default dell’outline
default_shade_color = ‘white’:
colore di default dell’ombreggiatura
draw_borders = false:
Disegna i bordi del testo
draw_graph_borders = true:
Disegna i bordi dei grafici
draw_outline = false:
Disegna i bordi attorno a testi e linee, utile se il contrasto di background è insufficiente
draw_shades = false:
Aggiunge una sottile ombra sotto testi e linee per facilitare la lettura con background a medio
contrasto. Per contrasti insufficienti, vedere draw_outline.
use_xft = true:
Utilizza Xft (X FreeType interface Library) per fonts anti-aliased
font = ‘DejaVu Sans Mono:size=12’:
Il nome del font utilizzato in X. Costituito da tre parametri:
Font Name – Il nome del font, nel nostro caso “‘DejaVu Sans Mono”;
[size=] – [optional] la dimensione del font in pixels;
[weight] – [optional] in caso si voglia il grassetto, inserire la parola “bold”.
gap_x = 5:
Gap sull’asse x, rispetto al bordo dello schermo
gap_y = 60:
Gap sull’asse y, rispoetto al bordo dello schermo
minimum_height = 5:
Minima altezza della finestra di conky
minimum_width = 5:
Minima larghezza della finestra di conky
net_avg_samples = 2:
numero campionamenti per il traffico di dati
no_buffers = true:
Sottrae i buffers (file system) dalla memoria utilizzata
out_to_console = false:
Stampa sullo “stdout” (standard output) per essere visualizzato a terminale
out_to_stderr = false
Stampa sullo “stderr” (standard error)
extra_newline = false
Aggiunge una linea extra alla fine, quando sta scrivendo sullo “stdout”
own_window_class = ‘Conky’
Imposta manualmente il nome del window manager WM_CLASS. “Conky” di default
own_window_type = ‘desktop’
Serve per utilizzare alcuni hints del window manager che influiscono sulla visualizzazione di Conky
stippled_borders = 0
Stippling dei bordi in pixels
update_interval = 1.0
Intervallo di update di conky in secondi
uppercase = false
Serve per visualizzare il testo in maiuscolo
use_spacer = ‘none’
Aggiunge spazi attorno a certi oggetti. Utile quando si usano font particolari come “Bitstream Vera Sans Mono”
show_graph_scale = false
Mostra il valore massimo nella scala del grafico
show_graph_range = false
Mostra il time-range del grafico
Analizzando ora il formato del testo visualizzato nel file di default:
${scroll 16 $nodename - $sysname $kernel on $machine | }
Scrolling del testo (su 16 caratteri in movimento) delle variabili indicate con $
$hr
Disegna una riga orizzontale
${color grey}Uptime:$color $uptime
Visualizza la scritta uptime in grigio (delimitata dai tag $color).
La variabile che segue, $uptime, utilizza il colore di default (“white”)
${color grey}Frequency (in MHz):$color $freq
${color grey}Frequency (in GHz):$color $freq_g
RAM Usage:$color $mem/$memmax - $memperc% ${membar 4}
${color grey}Swap Usage:$color $swap/$swapmax - $swapperc% ${swapbar 4}
${color grey}CPU Usage:$color $cpu% ${cpubar 4}
${color grey}Processes:$color $processes ${color grey}Running:$color $running_processes
Stessa cosa del punto precedente con altri parametri.
$hr
Disegna una riga orizzontale
${color grey}File systems:
/ $color${fs_used /}/${fs_size /} ${fs_bar 6 /}
${color grey}Networking:
Up:$color ${upspeed eth0} ${color grey} - Down:$color ${downspeed eth0}
$hr
Disegna una riga orizzontale
${color grey}Name PID CPU% MEM%
${color lightgrey} ${top name 1} ${top pid 1} ${top cpu 1} ${top mem 1}
${color lightgrey} ${top name 2} ${top pid 2} ${top cpu 2} ${top mem 2}
${color lightgrey} ${top name 3} ${top pid 3} ${top cpu 3} ${top mem 3}
${color lightgrey} ${top name 4} ${top pid 4} ${top cpu 4} ${top mem 4}
Modifica File di configurazione
Un esempio di file personalizzato del mio desktop è il seguente e sono stati modificati i font, i size del font, i colori e i parametri da visualizzare.
E’ necessaria l’installazione del font-awesome quindi:
sudo apt-get install fonts-font-awesome
conky.config = {
alignment = 'top_right',
background = true,
cpu_avg_samples = 2,
default_color = "FFFFFF",
draw_borders = false,
draw_graph_borders = false,
draw_outline = false,
draw_shades = true,
use_xft = true,
font = 'Ubuntu Mono:size=10',
gap_x = 10,
gap_y = 10,
minimum_width = 0, minimum_height = 0,
net_avg_samples = 2,
no_buffers = true,
out_to_console = false,
own_window = true,
own_window_class = "Conky",
own_window_type = "normal",
own_window_hints = "undecorated,below,sticky,skip_taskbar,skip_pager",
own_window_transparent = true,
own_window_colour = "000000",
update_interval = 1,
uppercase = false,
override_utf8_locale = true,
double_buffer = true,
text_buffer_size = 32768,
border_inner_margin = 10,
border_outer_margin = 0,
xftalpha = 0.8,
color1 = CCAB8D,
};
conky.text = [[
${color1}
${voffset 5}
${alignr}${font Ubuntu:style=Medium:pixelsize=50}${time %H:%M}${font}
${voffset 5}
${alignr}${font Ubuntu:style=Medium:pixelsize=13}${time %A %d %B %Y}${font}
${voffset 5}
${color #DD3A21}$nodename: ${scroll 16 $sysname $kernel on $machine}${color}
${hr}
${font FontAwesome}?${font} IP address:
${goto 20}${addrs eth0}
${goto 20}${upspeedgraph eth0 30,178 06E9F8 2104FA}${goto 202}${downspeedgraph eth0 30,175 FFFF00 DD3A21}
${font FontAwesome}${goto 20}?${font} ${upspeed eth0}${font FontAwesome}${goto 202}?${font} ${downspeed eth0}
${hr}
${font FontAwesome}?${font} DiskIO:
${goto 20}${diskiograph_read 30,178 06E9F8 2104FA}${goto 202}${diskiograph_write 30,175 FFFF00 DD3A21}
${font FontAwesome}${goto 20}?${font} ${diskio_read}${font FontAwesome}${goto 202}?${font} ${diskio_write}
${hr}
${font FontAwesome}?${font} Memory usage:
${goto 20}${mem}/${memmax} (${memperc}%) | Swap: ${swapperc}%
${goto 20}${memgraph 30,355 AAF5D0 00B35B}
${hr}
${color1}File systems:
${color1}sda: /home${goto 125}${color}${fs_used /home}/${fs_size /home} ${fs_used_perc /home}% ${color1}
${color1}sda: /${goto 125}${color}${fs_used /}/${fs_size /} ${fs_used_perc /}% ${color1}
${color1}sdb: /home${goto 125}${color}${fs_used /home/banco/mediaHD/}/${fs_size /home/banco/mediaHD/} ${fs_used_perc /home/banco/mediaHD/}% ${color1}
${hr}
${color1}Temperatures in Celsius:
${color1}sda ${alignr} ${color} ${execi 10 hddtemp /dev/sda | cut -c32-36}
${color1}sdb ${alignr} ${color} ${execi 10 hddtemp /dev/sdb | cut -c31-36}
${color1}Core0 ${alignr}${color} ${execi 60 sensors | grep "Core 0" | cut -c16-22}
${color1}Core1 ${alignr}${color} ${execi 60 sensors | grep "Core 1" | cut -c16-22}
${color1}GPU ${alignr} ${color} ${execi 60 nvidia-settings -query [gpu:0]/GPUCoreTemp -t}°C
${hr}
${goto 20}CPU0: ${cpu cpu0}%${goto 100}${cpubar 7,80 cpu0}
${goto 20}CPU1: ${cpu cpu1}%${goto 100}${cpubar 7,80 cpu1}
${hr}
${color #FFFF00}${goto 20}Name ${goto 200}Pid${goto 255}Cpu%${goto 310}Mem%${color}
${goto 20}${top name 1} ${goto 180}${top pid 1}${goto 235}${top cpu 1}${goto 290}${top mem 1}
${goto 20}${top name 2} ${goto 180}${top pid 2}${goto 235}${top cpu 2}${goto 290}${top mem 2}
${goto 20}${top name 3} ${goto 180}${top pid 3}${goto 235}${top cpu 3}${goto 290}${top mem 3}
${goto 20}${top name 4} ${goto 180}${top pid 4}${goto 235}${top cpu 4}${goto 290}${top mem 4}
${goto 20}${top name 5} ${goto 180}${top pid 5}${goto 235}${top cpu 5}${goto 290}${top mem 5}
]];
Ecco le sezioni una per una
Orario e data
${color1}
${voffset 5}
${alignr}${font Ubuntu:style=Medium:pixelsize=50}${time %H:%M}${font}
${voffset 5}
${alignr}${font Ubuntu:style=Medium:pixelsize=13}${time %A %d %B %Y}${font}
Nodename e Net
${color #DD3A21}$nodename: ${scroll 16 $sysname $kernel on $machine}${color}
${hr}
${font FontAwesome}?${font} IP address:
${goto 20}${addrs eth0}
${goto 20}${upspeedgraph eth0 30,178 06E9F8 2104FA}${goto 202}${downspeedgraph eth0 30,175 FFFF00 DD3A21}
${font FontAwesome}${goto 20}?${font} ${upspeed eth0}${font FontAwesome}${goto 202}?${font} ${downspeed eth0}
Con scroll è possibile far scorrere il testo (16 caratteri) delle variabili sysname, kernel e machine.
Il traffico di rete in entrata ed uscita si ottiene con le variabili:
upspeedgraph, downspeedgraph, upspeed e downspeed
“hr” indica una linea di separazione
Disk IO
${hr}
${font FontAwesome}?${font} DiskIO:
${goto 20}${diskiograph_read 30,178 06E9F8 2104FA}${goto 202}${diskiograph_write 30,175 FFFF00 DD3A21}
${font FontAwesome}${goto 20}?${font} ${diskio_read}${font FontAwesome}${goto 202}?${font} ${diskio_write}
Il traffico di dati sull’HDD in lettura e scrittura si ottiene con le variabili:
diskiograph_read, diskiograph_write, diskio_read e diskio_write
Memory usage
${hr}
${font FontAwesome}?${font} Memory usage:
${goto 20}${mem}/${memmax} (${memperc}%) | Swap: ${swapperc}%
${goto 20}${memgraph 30,355 AAF5D0 00B35B}
“mem” indica la memoria utilizzata
“memmax” indica la memoria totale disponibile
“memperc” indica il rapporto tra le due
“swapperc” indica la percentuale di swap utilizzata
File Systems
${hr}
${color1}File systems:
${color1}sda: /home${goto 125}${color}${fs_used /home}/${fs_size /home} ${fs_used_perc /home}% ${color1}
${color1}sda: /${goto 125}${color}${fs_used /}/${fs_size /} ${fs_used_perc /}% ${color1}
${color1}sdb: /home${goto 125}${color}${fs_used /home/banco/mediaHD/}/${fs_size /home/banco/mediaHD/} ${fs_used_perc /home/banco/mediaHD/}% ${color1}
“fs_used” indica la quantità di spazio utilizzato
“fs_size” indica la quantità di spazio totale disponibile
“fs_used_perc” indica la quantità di spazio disponibile occupata
Temperatures
${hr}
${color1}Temperatures in Celsius:
${color1}sda ${alignr} ${color} ${execi 10 hddtemp /dev/sda | cut -c32-36}
${color1}sdb ${alignr} ${color} ${execi 10 hddtemp /dev/sdb | cut -c31-36}
${color1}Core0 ${alignr}${color} ${execi 60 sensors | grep "Core 0" | cut -c16-22}
${color1}Core1 ${alignr}${color} ${execi 60 sensors | grep "Core 1" | cut -c16-22}
${color1}GPU ${alignr} ${color} ${execi 60 nvidia-settings -query [gpu:0]/GPUCoreTemp -t}°C
${hr}
execi esegue il comando “command” ogni “num” secondi.
Nel caso specifico viene eseguito
hddtemp /dev/sda | cut -c32-36
ecco il perchè dell’assegnare il bit SUID ad hddtemp, che altrimenti, senza sudo non ritornerebbe nessun output. Dalla stringa in output di hddtem si estrapolano i gradi tramite cut.
Nel mio caso, avendo 2 HDD, si esegue la stessa cosa, sia per sda che sdb.
Per i processori si utilizza invece sensors.
${color1}Core0 ${alignr}${color} ${execi 60 sensors | grep "Core 0" | cut -c16-22}
${color1}Core1 ${alignr}${color} ${execi 60 sensors | grep "Core 1" | cut -c16-22}
Il discorso GPU invece dipende dai driver utilizzati.
Nel mio caso, avendo installato i driver NVIDIA proprietari, è necessario utilizzare il tool nvidia-settings con:
${color1}GPU ${alignr} ${color} ${execi 60 nvidia-settings -query [gpu:0]/GPUCoreTemp -t}°C
Con i driver open invece, è sempre possibile estrapolare i dati con sensors.
sensors può essere eseguito da terminale per visualizzare parecchie informazioni
${color1}GPU ${alignr} ${color} ${execi 60 nvidia-settings -query [gpu:0]/GPUCoreTemp -t}°C
La temperatura inerente la GPU, dovrebbe essere qualcosa simile a “temp1”, in questo caso:
sensors | grep "temp"
Nel mio caso l’output sarebbe di più righe e quindi ci si potrebbe avvalere di cut e awk.
Con awk selezionerei solo la seconda riga, poi filtrerei solo i caratteri indicanti la temperatura:
sensors | grep "temp1" | awk 'FNR == 2 {print}' | cut -c16-19}°C
Cpus
${hr}
${goto 20}CPU0: ${cpu cpu0}%${goto 100}${cpubar 7,80 cpu0}
${goto 20}CPU1: ${cpu cpu1}%${goto 100}${cpubar 7,80 cpu1}
${hr}
${color #FFFF00}${goto 20}Name ${goto 200}Pid${goto 255}Cpu%${goto 310}Mem%${color}
${goto 20}${top name 1} ${goto 180}${top pid 1}${goto 235}${top cpu 1}${goto 290}${top mem 1}
${goto 20}${top name 2} ${goto 180}${top pid 2}${goto 235}${top cpu 2}${goto 290}${top mem 2}
${goto 20}${top name 3} ${goto 180}${top pid 3}${goto 235}${top cpu 3}${goto 290}${top mem 3}
${goto 20}${top name 4} ${goto 180}${top pid 4}${goto 235}${top cpu 4}${goto 290}${top mem 4}
${goto 20}${top name 5} ${goto 180}${top pid 5}${goto 235}${top cpu 5}${goto 290}${top mem 5}
Qui vengono indicate le cpu e le barre grafiche (cpubar)
Infine con top vengon mostrati i 5 processi più esosi di risorse.
Inserire in avvio automatico il nostro script personalizzato.
Nel mio caso (xfce4) avviare Sessione e Avvio e nella sezione Avvio Automatico aggiungere
la voce conky, la descrizione del comando e il comando conky stesso:
Riavviando conky dovrebbe avviarsi in automatico secondo le nostre indicazioni.
Commenti recenti