Archivio

Posts Tagged ‘conky’

Conky: Xfce4

9 Maggio 2018 Commenti chiusi

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.

Categorie:Conky, Xfce Tag: , ,