Magazine Informatica

Conky From Scratch: installare, configurare, scrivere e personalizzare da soli il file .conkyrc

Creato il 13 ottobre 2013 da Ilbruttobug

Istantanea - 13102013 - 17:17:07

Conky! Un leggero monitor di sistema per X, come recita la pagina man del programma;

Chi lo sa usare si è reso subito conto che offre infinite possibilità, chi ne sente parlare teme che sia impossibile scriverne uno da se e ricorre a file di configurazione trovati nel web (peraltro bellissimi).

Alcuni di voi diranno: “ma perchè ricorrere a un programma di tanti anni fa, e anche ostico da capire, quando posso usare screenlets/plasma widget/gDesklet che con due clic fanno quello che fa conky?”

La risposta è semplice: saper scrivere il vostro conky vi porterà ad integrare perfettamente il widget nel vostro desktop, cosa difficile per i 3 programmi citati che avendo come pro la facilità d’utilizzo, hanno come contro il fatto che vi dovete un minimo “adattare” ai temi già pronti, a meno che non sappiate usare inkscape (può succedere che una screenlets sia completamente fuori tema con il vostro set di icone e/o tema) e sopratutto avere un widget per ogni funzione (meteo, musica, note) che potrebbero alla fine occupare molte risorse, mentre conky pur offrendo le stesse opzioni rimane leggerissimo.

Ricercando guide per conky ho notato che moltissimi siti e blog si occupano soltanto di far scaricare un file .conkyrc + relativi script pronti all’uso, che di fatto non consentono di esprimere a pieno la potenza e la personalizzazione del programma, quindi questa piccola guida si propone di gettare le basi su come installare il programma, configurarlo e redigere in pochi step un .conkyrc.

A tale scopo vanno citate le fonti di riferimento da me utilizzate:

La guida sarà strutturata in questo modo:

  1. installazione del programma e breve spiegazione della logica alla base di conky;
  2. configurazione delle opzioni più comuni;
  3. spiegazione delle variabili necessarie ad ottenere un conky identico a quello mostrato nell’immagine in cima all’articolo;
  4. avviare conky in automatico all’avvio del computer;
  5. accenno sugli scripts relativi a conky, reperibili online (a meno che non siate guru di lua, python, perl, bash et simili ovviamente);

vi consiglio a tal scopo, di aprire a tutto schermo (o scaricare) l’immagine, cosi che potrete verificare voce per voce il testo contenuto nel mio .conkyrc che spiegherò riga per riga;

Step n. 1

Installare conky (ma davvero? :D ) digitando in un terminale:

sudo apt-get install conky-all

digitando sempre in un terminale:

conky -d

lancerete il programma con la configurazione di default (situata in /etc/conky/conky.conf) e in background, ovvero che se chiudete il terminale rimane in esecuzione.

Noterete che non contiene molte informazioni, è situato di default sulla destra dello schermo ed ha lo sfondo nero.

Per iniziare a modificarlo basterà digitare il comando:

cp /etc/conky/conky.conf /home/$USER/.conkyrc

che di fatto copia la configurazione standard di conky direttamente nella vostra home in un file nascosto, visto che conky può leggere ogni file che voi indicate con l’opzione -c:

conky -c /home/$USER/.conkyrc 
conky -c /home/$USER/.conkyrc1

con questo comando lancerete due istanze di conky, una per ogni file di configurazione che desiderate avere.

Se fosse presente la necessità di riavviare conky per verificare le modifiche apportate al .conkyrc il comando è:

killall -SIGUSR1 conky

Mentre per terminarlo basta omettere l’opzione “-SIGUSR1″.

Fatta questa dovuta prefazione passiamo ad analizzare il file di configurazione :D

Step n. 2

Aprite con un editor di testo il file .conkyrc presente nella vostra home (mi raccomando non modificate quello in /etc/conky citato sopra, potreste aver bisogno di un nuovo modello in futuro);

Troverete circa 3 blocchi:

  • l’intestazione del programma e la licenza (commentato, cioè non interpretato come istruzione, anteponendo il carattere #);
  • le impostazioni per la visualizzazione della finestra;
  • le informazioni riguardanti il testo stampato a schermo;

N.B. i punti 2 e 3 sono separati dalla riga

TEXT

che di fatto separa le due parti del teto (naturalmente ogni file .conkyrc che creerete deve avere come minimo gli ultimi due punti!); di conseguenza prima della riga “text”, insieme alle variabili elencate, potete inserire tutte le righe di commento che volete senza modificare l’aspetto del widget; mentre utilizzando il carattere # dopo tale riga, la stringa che segue non verrà mostrata a schermo, ma toglierà spazio sfalsando le voci.

Riporto il punto numero 2 del mio .conkyrc, commentato a dovere e separato da spazi:

own_window yes           # crea una propria finestra
own_window_type desktop  # definisce il tipo di finestra, consultare documentazione
own_window_class Conky   # definisce la classe
own_window_colour 000000 # colore di sfondo (hexcode senza il carattere hash #)
own_window_argb_visual yes   # trasparenza reale (richiede il compositore)
own_window_argb_value 0      # valore della trasparenza (0-255)
double_buffer yes                      
background yes           # parte di default in background (identico all'opzione -d)
cpu_avg_samples 2
net_avg_samples 2
no_buffers yes
out_to_console no
out_to_stderr no
extra_newline no
update_interval 1.0                    # intervallo di aggiornamento
use_spacer none
times_in_seconds no
# ------ posizione ------
alignment top_left                     # allineamento della finestra
gap_x 6                                # distanza x
gap_y 35                               # distanza y

# ------ dimensioni ------
maximum_width 280                       # larghezza massima
minimum_size 5 5                        # misura minima della finestra

# ------ aspetto ------
default_color 3e3e3e                     # colore di default 
color2 white                             # colore n 2
uppercase no                             # maiuscole attive se "yes"
draw_borders no                          # disegna bordi
border_width 2                           # spessore bordi
draw_outline no                          # disegna bordi carattere
default_outline_color 3e3e3e             # colore bordi carattere
draw_shades yes                          # disegna ombre
default_shade_color 000000               # colore ombre
draw_graph_borders no                    # disegna bordi sui grafici
stippled_borders no                      # bordo puntinato
show_graph_scale no
show_graph_range no                      # mostra i minuti nel grafico
# ------ fonts ------
use_xft yes                              # usa fonts personalizzati
xftfont Astron Boy:size=12               # font di default

Sarebbe impossibile spiegarle una per una, quindi per l’elenco completo delle voci utilizzabili in questa sezione, nonchè la spiegazione su cosa fanno vi rimando alla pagina configuration settings del sito di conky, sebbene solo la modifica di queste elencate qui vi permette già una buona partenza.

Basta anche procedere per tentativi (tenendo d’occhio i commenti nelle righe più importanti) per capire come risponde l’aspetto alle modifiche; Inoltre, alcune delle voci le ho inserite da me, verificate se sono già presenti nella vostra configurazione, altrimenti se le copiate da qui potreste creare dei conflitti.

Piccolo hint: invece che inviare di continuo “killall -SIGUSR1 conky” nel terminale per provare le modifiche, basta cliccare salva nell’editor di testo 2 o più volte che il programma riceverà comunque il segnale di restart.

Piccolo hint n.2: se intendete cercare qualche variabile/oggetto o una funzione in particolare nelle pagine di documentazione online di conky, utilizzate la funzione di ricerca del browser, attivabile nella maggior parte dei casi con la shortkey ctrl-f.

Dopo preso confidenza con queste impostazioni andiamo al sodo… “e finalmente” direte!

Step n. 3

Inizia da qua la parte creativa della configurazione, che vi consentirà letteralmente di plasmare il vostro conky a piacimento, e se vi prenderà la mano, fidatevi… non ve ne stancherete più di modificarla! ;)

La bibbia di riferimento in questo passo è conky objects dal sito;

Tenendo dunque a portata di mano l’immagine, come già detto sopra, analizziamo un blocco per volta:

Blocco numero 1 denominato “system info”:

1. TEXT
2. SYSTEM INFO ${color2}${hr}${color}
3
4. ${alignc}$user_names@$nodename
5. ${alignc}${exec uname -o} 
6. ${alignc}Ubuntu 12.04.3 LTS
7. ${alignc}${exec uname -rs}
8. ${alignc}AMD Athlon(tm)X2 DualCore QL-66

riga 1: già vista, dice a conky: “da adesso in poi stampa il widget”

riga 2: testo semplice, seguito dall’istruzione “utilizza colore 2″ (definito precedentemente, nel mio caso bianco),disegna riga orizzontale,rimetti il colore di default(grigio nel mio caso).

riga 3: spazio vuoto (occhio a non mettere troppi spazi dopo text, il programma li interpreta!)

riga 4: allinea al centro, dimmi il nome utente attuale,carattere semplice “@”, dimmi il nome host

riga 5: allinea al centro, esegui il comando shell “uname -o”

riga 6: allinea al centro, testo semplice

riga 7: allinea al centro, esegui il comando shell “uname -rs”

riga 8: allinea al centro, testo semplice

Come partenza riassume bene il concetto su come ragiona conky;

Chi ha familiarità con il codice html noterà che ci sono delle analogie: ogni oggetto previsto da conky va indicato con il tag $ { }, altrimenti verrà stampato come testo semplice; per velocizzare il modo per scrivere le parentesi graffe utilizzate le combinazionti di tasti altgr+7 e altgr+0;

Sostanzialmente conky pone in sequenza tutto ciò che scrivete alla lettera, considerando ogni spazio e ritorno a capo.

Blocco numero 2 denominato “system monitor”;

qui il particolare interessante è che iniziamo a complicarci la vita con i grafici:

1. SYSTEM MONITOR ${color2}${hr}${color}
2.
3. ${alignc}CPU Usage
4. ${color}${cpugraph cpu0 20 ffffff}
5. CPU 1 ${alignr}CPU 2
6.  ${cpu cpu1}% ${alignr}${cpu cpu2}% 
7. CPU ${alignr}${execi 1 sensors | sed -n '8p'}
8. RAM${alignr}$mem/$memmax
9. $memperc%${alignc}${color2}${membar}${color}
10. Swap${alignr}$swap/$swapmax
11. $swapperc%${alignc}${color2}${swapbar}${color}

riga 1: simile alla riga presente in “system info”

riga 2: spazio

riga 3: allinea al centro, testo semplice

riga 4: colore di default, disegna il grafico della cpu con argomenti: cpu0, altezza 20, colore bianco (n.b. l’aspetto del grafico è personalizzabile a puntino sopratutto nelle opzioni di configurazione, situate prima di “text”)

riga 5: testo semplice, allinea a destra, testo semplice

riga 6: utilizzo in percentuale della cpu1, segno %, allinea a destra, utilizzo in percentuale della cpu2

riga 7: testo semplice, esegui comando shell “sensors | sed -n ’8p’” ogni 1 secondo (naturalmente occorre installare e configurare lm-sensors, inoltre il parametro di sed che nel mio caso è 8 potrebbe essere diverso per voi, in generale basta che nell’output di sensors individuate il numero di riga che vi occorre e lo sostituite a 8

riga 8: testo semplice, allinea a destra, utilizzo della ram / totale della ram

riga 9: percentuale di ram utilizzata, carattere %, allinea al centro, colore bianco, barra per indicare l’utilizzo della ram, colore di default

riga 10 e riga 11: come riga 8 e 9 ma riferite alla swap

Blocco numero 3 denominato “disk monitor”:

DISK MONITOR ${color2}${hr}${color}
Temperatura Hard Disk: ${alignr}${hddtemp /dev/sda}°C
${alignc}/home ${fs_used_perc /home}%
${fs_used /home}/${fs_size /home} ${color2}${fs_bar 6 /home}${color}
${alignc}/ ${fs_used_perc /}%
${fs_used /}/${fs_size /} ${color2}${fs_bar 6 /}${color}
${alignc}/boot ${fs_used_perc /boot}%
${fs_used /boot}/${fs_size /boot} ${color2}${fs_bar 6 /boot}${color}

che sostanzialmente è simile al precedente, cambiano naturalmente le opzioni e le variabili, ma potete farvi aiutare dalle pagine di documentazione di conky.

Blocchi 4 e 5 chiamati “network monitor” e “misc info”:

NETWORK MONITOR ${color2}${hr}${color}
${alignc}Local IP - ${addr wlan1}
${alignc}Upload - ${upspeed wlan1}
${alignc}Download - ${downspeed wlan1}
MISC INFO ${color2}${hr}${color}
Battery:$battery_percent % ${color2}$battery_bar${color}
${alignc}Uptime:$uptime

che come, gia detto al blocco 3, presentano voci similari a quelle già analizzate.

Data questa spiegazione e la consultazione delle pagine online della documentazione (senza dimenticare la pagina man sempre disponibile da terminale con il comando “man conky” che contiene le stesse voci dei documenti online) dovreste ora essere in grado di scrivere il vostro .conkyrc :D

Le possibilità sono infinite, potete cambiare font e dimensione per un titolo con:

${font Droid Sans:size 15}il mio primo conky!${font Astron Boy:size 12}

Oppure posizionare dove volete il testo, con le variabili:

${offset <numero-pixel>} ${voffset <numero-pixel>}

in cui <numero-pixel> è un numero intero, anche negativo.

O ancora caricare delle immagini (icone o disegni), basta consultare l’elenco delle variabili (circa 300) disponibile nel sito.

Step n. 4

Abbiamo visto come avviare e riavviare conky, vedremo ora come lanciarlo in automatico all’avvio con un semplice script.

Aprite un editor di testo e inserite queste righe nel file:

#!/bin/bash
# script di avvio per conky
sleep 1                              # attende un secondo
conky -c /home/$USER/.conkyrc1       # lancia il primo conky
sleep 1                              # attende un secondo
conky -c /home/$USER/.conkyrc2       # lancia il secondo conky
exit

Naturalmente dovete inserire qui tutti i file .conkyrc che volete; il comando “sleep 1” aiuta nel caricare una finestra alla volta, per evitare problemi di visualizzazione.

Salvate il file con nome “conky_startup.sh” in una directory a vostra scelta: vi consiglio di creare una sottocartella per conky come ad esempio “/home/$USER/scripts_per_conky/” cosi potrete poi inserirci tutti i vostri script e i file necessari a conky.

Digitate poi:

chmod +x ~/scripts_per_conky_/conky_startup.sh

per renderlo eseguibile; fatto ciò andate nelle impostazioni e aggiungete lo script appena creato alle applicazioni in avvio automatico.

Step n. 5

Siamo cosi giunti alla conclusione., ma vorrei anche accennarvi qualche interessante scripts trovato in rete.

Vanno assolutamente segnalati:

Conky vision, con data, ora e meteo: vi basta scaricare il pacchetto, decomprimerlo e leggere il read-me (i più coraggiosi possono mettere dove preferiscono i file necessari e modificare di conseguenza i percorsi all’interno del .conkyrc allegato).

È ovviamente possibile modificare la posizione delle scritte, ma tenete presente che dovete modificare di conseguenza anche i parametri che seguono il percorso delle immagini, altrimenti le icone verranno sfalsate (tenete a portata di mano la documentazione di conky).

Un altro conky utilissimo è quello per audacious, che trovate qui: rileva se il programma è aperto, se si, stampa le informazioni sul brano in riproduzione; La pagina reca anche le istruzioni in inglese per eseguirlo e personalizzarlo.

L’ultimo conky è scritto da me, serve per mostrare gli appunti in un widget tipo post-it: la logica è semplice e potete scriverlo da voi.

Create un file di testo vuoto chiamato “conky_appunti” in cui inserirete le vostre annotazioni;

Create poi un .conkyrc che riporti la riga:

${execi 3 cat /home/$USER/percorso/a/conky_appunti.txt}

in questo modo, ogni volta che scriverete dei nuovi appunti nel vostro file avrete il memo sul desktop.

Come scritto anche sul sito di conky, è possibile inoltre utilizzare il linguaggio lua scripts per disegnare grafici riprodotti da conky, ma occorrerebbe un articolo lungo come questo; Vi basti sapere che nel web è semplicissimo reperire un infinità di scripts e conkyrc pronti per l’uso che siete invitati a riportare nei commenti naturalmente :D

E così avete trovato un nuovo passatempo, come vedete tra file da scrivere da zero e ricerche online, avete dalla vostra parte un programma all’inizio ostico e complesso ma che se domato rivela enormi potenzialità, praticamente illimitate: d’altronde il sito ufficiale dice proprio:

Conky can display just about anything!

di conseguenza, l’unico limite è la grandezza del vostro schermo e la vostra creatività!

Non esitate a postare il vostro risultato, fornire suggerimenti, script, chiedere aiuto e quant’altro nei commenti :D

cheers by DrV!


Archiviato in:Linux Tagged: #!/bin/bash, autostart, bash, conky, conkyrc, desktop, desktop-environment, editor_testuale, gedit, guida, kate, killall, leafpad, nano, personalizzazione, script, sigusr

Potrebbero interessarti anche :

Ritornare alla prima pagina di Logo Paperblog

Possono interessarti anche questi articoli :