Conky: System Monitor

Pubblicato il 14 Settembre 2008 da deviantdark

Ho da qualche tempo scoperto Conky, un monitor di sistema davvero utile [almeno per me].
Ha un’interfaccia davvero spartana ma personabilissima, e l’installazione è semplice come al solito [basta aver abilitato i repo universe].
Da terminale diamo:

sudo apt-get install conky

L’applicazione risulterà installata.
Per lanciarla, è sufficiente dare il comando da terminale:

conky

Per la configurazione, è necessario dare il comando:

zcat /usr/share/doc/conky/examples/conkyrc.sample.gz > ~/.conkyrc

Questo salverà nella nostra home il file .conkyrc, editabile con Gedit [per visualizzare il file con Nautilus, è necessario abilitare la visualizzazione dei file nascosti].
Per editare il file, diamo il comando:

gedit $HOME/.conkyrc

Per raccapezzarci in mezzo a quei codici, possiamo dare un’occhiata alle variabili e alle impostazioni.
Solitamente nei blog che trattano di argomenti simili a quelli che tratto io, gli articoli terminano in questo modo. Applicazione installata, due cenni a come configurarla, poi stop.
Personalmente trovo articoli del genere piuttosto banali e comunissimi. Io non vorrei limitarmi a questo, ma scendere di più nello specifico, cercando di dare una mano a tutti i miei lettori nel configurare al meglio il proprio conky.

Va innanzitutto precisato che le configurazioni dei .conkyrc reperibili in rete [magari pubblicati in blog e forum da molte persone] non sono applicabili a tutti i PC. Questo sia per una mancata compatibilità hardware, sia per la possibile assenza di pacchetti importanti installati [vedi lmsensors, hddtemp, ecc..].

Detto questo, diamo un’occhiata al nostro .conkyrc.
Come sempre, le righe commentate danno informazioni sull’utilizzo della stringa successiva.
Alla fine del documento, sotto la scritta TEXT, sono invece presenti le informazioni che verranno formattate sul desktop da conky.

Vediamo come poter costruire il nostro .conkyrc per rendere un output molto simile a questo:

Quello che vediamo, è stato configurato secondo le istruzioni di A new vision of conky. Gli script disponibili all’indirizzo linkato sono stati creati dal ragazzo che ha condiviso il suo lavoro.
Io, nello screenshot qui sopra, faccio uso solo dello script che monitora la temperatura del disco fisso.
Vediamo quindi, in ordine, come impostare i vari parametri.

Velocità di download/upload:

Per impostare la velocità di rete, dobbiamo innanzitutto sapere il modo in cui la nostra connessione viene riconosciuta. Io, ad esempio, mi connetto a un router tramite cavo USB, e la mia rete è riconosciuta come eth0. Se mi connettessi via wireless, ad esempio, potrebbe essere wlan0 o eth1.
Per scoprirlo dobbiamo esaminare gli output dei comandi sudo ifconfig e sudo iwconfig. Gli output di quei comandi ci restituiranno le informazioni necessarie a capire in che modo è riconosciuta la nostra interfaccia di connessione. Nell’esempio che segue, io utilizzerò eth0.
La stringa da apporre sotto TEXT nel .conkyrc è questa:

Download speed ${downspeed eth0} Kb/s
Upload speed ${upspeed eth0} Kb/s

Totale di download/upload

Se volessimo inserire anche la dimensione totale degli upload e download della sessione corrente, le stringhe sono queste:

Total downloaded ${totaldown eth0}
Total uploaded. ${totalup eth0}

Temperatura del disco fisso

Come dicevo sopra, per monitorare la temperatura del disco fisso utilizzo uno script, appositamente posizionato all’interno di $HOME/scripts. Il nome dello script è hddmonit.sh, e lo possiamo trovare all’interno del tarball di a new vision of conky.
La stringa per monitorare la temperatura del disco è questa:

HDD ${execi 1 ~/scripts/hddmonit.sh}°C

A seconda di dove posizioniamo il nostro script, dovremo modificare la stringa qui sopra per impostare il percorso corretto.
Ora veniamo ai dischi fissi.

Spazio libero/occupato dei dischi fissi

Io ho 3 dischi da monitorare: il disco principale [filesystem], un disco da 120GB contenente la mia musica e un disco da 320GB contenente i miei backup.
Sono tutto etichettati e montati sotto /media.
Ecco le mie stringhe:

Home: ${fs_used /home}/${fs_size /home}
Music Disk: ${fs_used /media/120GB}/${fs_size /media/120GB}
Backup: ${fs_used /media/320GB}/${fs_size /media/320GB}

Possiamo anche utilizzare una barra grafica per la dimensione del disco, con la variabile fs_bar.

Temperatura del CPU

Per poter monitorare questo elemento, abbiamo bisogno di installare e configurare lmsensors. Per farlo vi rimando a questo wiki scritto dalla comunità ufficiale italiana di ubuntu-it.org.
Una volta installato e configurato, potremo utilizzare conky per monitorare la temperatura del CPU.
La mia stringa è la seguente:

CPU ${execi 2 cat /sys/bus/pci/drivers/k8temp/000*/temp1_input | cut -c1,2}°C

Carico di CPU e uptime

Le ultime due variabili presenti nel mio .conkyrc sono piuttosto semplici. Una monitora il carico di CPU, l’altra il tempo di uptime [ovvero da quanto tempo è attiva la sessione corrente].
Le stringhe di queste ultime due variabili sono:

CPU usage: ${cpu}%
Uptime: ${uptime}

Musica in ascolto

Ci sono anche altre variabili interessanti.
Alcune in particolare sono molto eyecandy, quelle che permettono di visualizzare il nome dell’artista e del brano che stiamo ascoltando con il nostro player.
Ne ho raccolte 3, per diversi lettori multimediali, che daranno un output simile al seguente:

listening to: Korn - Here to stay

Differiscono in base al player che stiamo utilizzando, quindi ecco le tre variabili configurate a dovere.

Exaile:

${execi 10 exaile --get-title} - ${execi 10 exaile --get-artist} - ${execi 10 exaile --get-album}

Rhythmbox:

${if_running rhythmbox}${exec /usr/bin/rhythmbox-client --no-start --no-present --print-playing|cut -b -99}$endif

Audacious:

${if_running audacious}${exec audtool --current-song | cut -b-99}$endif

Amarok:

Per Amarok c’è bisogno di un passaggio in più.
Innanzitutto dobbiamo creare uno script, che salveremo in una nuova cartella chiamata .conky all’interno della nostra home.
Diamo quindi da terminale:

mkdir .conky
cd .conky
gedit amarok

Inseriamo nel documento queste stringhe:

#!/bin/bash
# amaroK info display script
#
# requirements: amaroK (!)

case “$1″ in

# Now Playing Info
artist) dcop amarok player artist ;;
title) dcop amarok player title ;;
album) dcop amarok player album ;;
year) dcop amarok player year ;;
genre) dcop amarok player genre ;;
progress)
curr=`dcop amarok player trackCurrentTime`
tot=`dcop amarok player trackTotalTime`
if33; then
expr $curr \* 100 / $tot
fi
;;

# Collection Info
totalArtists) dcop amarok collection totalArtists ;;
totalAlbums) dcop amarok collection totalAlbums ;;
totalTracks) dcop amarok collection totalTracks ;;
totalGenres) dcop amarok collection totalGenres ;;
totalCompilations) dcop amarok collection totalCompilations ;;

esac

Diamo poi da terminale:

sudo chmod +x amarok

Ora che lo script è pronto ed avviabile, inseriamo queste stringhe nel nostro .conkyrc:

${if_running amarokapp}${execi 10 ~/.conky/amarok artist} - ${execi 10 ~/.conky/amarok title}$endif

Le variabili per gli altri lettori non le conosco, ma credo siano ampiamente disponibili sul web.

Un solo cenno ai “simboli” presenti nello scrreenshot. Fanno parte di alcuni set di font presenti nel tarball di a new vision of conky.
Basta inserire nel .conkyrc il font e la lettera dello stesso che disegna un simbolo esplificativo.
Ad esempio, per la velocità di download, il cerchio con la freccia in basso, si visualizza così:

${font PizzaDude Bullets:size=16}r

Dove la lettera finale [r] corrisponde al simbolo.

Infine, per avere conky all’avvio, andiamo in Sistema > Preferenze > Sessioni e aggiungiamo una nuova sessione:
nome: Conky
comando: conky

#BUG Report:
Su alcune versioni di Ubuntu, conky denota un fastidioso sfarfallio.
Per eliminare questo problema, editiamo lo xorg.conf:

sudo gedit /etc/X11/xorg.conf

E aggiungiamo nella sezione “Module” la riga:

Load "dbe"

Poi riavviamo X e il problema dovrebbe sparire.
Se abbiamo problemi invece con la decorazione, la soluzione è differente a seconda che si usi Compiz o Metacity.
Ci può essere la possibilità che l’output di conky presenti una decorazione di ombreggiatura nel contorno.
Per eliminarla dobbiamo eseguire due procedure differenti.

Con Compiz:

Apriamo il CompizConfig Settings Manager [Sistema > Preferenze > Advanced Desktop Effects Settings] e clicchiamo sul plugin Window Decoration [o Decorazione Finestra].
L’ultimo valore è quello che ci interessa, Shadow Windows. Di default il valore è any, ma noi dovremo inserire questo:

any -conky

In questo modo tutte le finestra avranno l’ombreggiatura, tranne quella di conky.
Il .conkyrc dovrà riportare la seguente stringa:

own_window_type normal

Assicuriamoci inoltre che sia presente questa stringa:

own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager

Con Metacity:

Il problema con metacity è più complesso. Personalmente ho potuto risolverlo solamente disabilitando l’opzione show_desktop per Nautilus dall’editor di configurazione. Così conky non ha più l’ombreggiatura, ma non posso più visualizzare le icone sul desktop.
Per disabilitare il desktop apriamo il terminale, digitiamo il comando gconf-editor e spostiamoci in apps > Nautilus > preferences. Lì togliamo la spunta alla voce show_desktop.

Con metacity il .conkyrc dovrà riportare la seguente stringa:

own_window_type desktop

Se impostato su override, conky rimarrà sempre in primo piano, anche con altre finestre in esecuzione [solo se lo si avvia allo startup del computer comunque. Se lo sia avvia una volta effettuato l'accesso, la finestra di conky rimane "below"].
Se impostato su normal invece, la finestra di conky avrà la decorazione di una finestra comune, con l’ombreggiatura sul bordo [non disattivabile come con Compiz].
È importante però disattivare l’opzione show_desktop in nautilus, come descritto sopra.3

  1. $tot 333

3

28 Responses

  1. Simone Says:

    Ecco… lo sapevo.
    Conki è il tipico programma che provo, tengo un po’, disinstallo, reinstallo, disinstallo…
    Il tuo post (ben scritto) mi ha fatto venire voglia per l’ennesima volta di reinstallarlo :-)

    ps. Belle le statistiche sui browser e OS! Non le mette mai nessuno invece sono sempre interessanti.

    Scritto con Mozilla Firefox Mozilla Firefox 3.0.1 , su Sistema Operativo Linux Linux

  2. deviantdark Says:

    Pure per me sarà la… quinta volta? che lo metto :)
    Credo che dopo questa “evoluzione” [a new vision of conky] lo terrò però. Mi piace assaje.

    Le statistiche in realtà sono un mezzo fake.
    O, meglio, sono dati piuttosto reali [presi da shinystat], ma non è un plugin per Wordpress.. solo un PNG creato ad hoc da me e messo lì :D

    Piacciono un sacco anche a me comunque, peccato non vederle spesso in giro.

    Scritto con Mozilla Firefox Mozilla Firefox 3.0.1 , su Sistema Operativo Linux Linux

  3. darkmax86 Says:

    Ciao,
    provato ma non vedo i font belli come i tuoi! Forse perchè sono sotto kde?

    Scritto con Mozilla Firefox Mozilla Firefox 3.0.1 , su Sistema Operativo Linux Linux

  4. deviantdark Says:

    Io uso corbel come font. Dipende sicuramente da quello :)
    Prova a modificare nel tuo .conkyrc il valore:

    xftfont nomefont:size=10

    Sostituendo a “nomefont” il nome del carattere che vuoi impostare.

    Scritto con Mozilla Firefox Mozilla Firefox 3.0.1 , su Sistema Operativo Linux Linux

  5. darkmax86 Says:

    ed i font dove li devo mettere per utilizzarli?

    Scritto con Mozilla Firefox Mozilla Firefox 3.0.1 , su Sistema Operativo Linux Linux

  6. deviantdark Says:

    Leggi qui.
    Leggi fino in fondo però.. ;)

    Scritto con Mozilla Firefox Mozilla Firefox 3.0.1 , su Sistema Operativo Linux Linux

  7. Bono Says:

    ciao, avevo provato a installare e configurare conky tempo fa, ma credo di avere fatto qualche casino con il file di configurazione, e anche dando da terminale “sudo apt-get remove conky” e poi reinstallandolo, se lo voglio avviare la riga di comando mi dice “missing text block in configuration; exiting”
    sai come posso risolvere?
    grazie, ciao!

    Scritto con Mozilla Firefox Mozilla Firefox 3.0.1 , su Sistema Operativo Linux Linux

  8. deviantdark Says:

    Vai nella home e abilita la visualizzazione dei file nascosti. Cerca il file .conkyrc e rimuovilo, se c’è.
    Poi da terminale dai:

    zcat /usr/share/doc/conky/examples/conkyrc.sample.gz > ~/.conkyrc

    Se anche così non funziona, creati un file chiamato appunto .conkyrc [non dimenticare il punto iniziale] e incollaci dentro queste stringhe:

    # Conky sample configuration
    #
    # the list of variables has been removed from this file in favour
    # of keeping the documentation more maintainable.
    # Check http://conky.sf.net for an up-to-date-list.

    # set to yes if you want Conky to be forked in the background
    background yes

    # X font when Xft is disabled, you can pick one with program xfontsel
    #font 5×7
    #font 6×10
    #font 7×13
    #font 8×13
    #font 9×15
    #font *mintsmild.se*
    #font -*-*-*-*-*-*-34-*-*-*-*-*-*-*

    # Use Xft?
    use_xft yes

    # Xft font when Xft is enabled
    xftfont Sans:size=10

    # Text alpha when using Xft
    xftalpha 0.8

    # Print everything to stdout?
    # out_to_console no

    # MPD host/port
    # mpd_host localhost
    # mpd_port 6600
    # mpd_password tinker_bell

    # Print everything to console?
    # out_to_console no

    # mail spool
    mail_spool $MAIL

    # Update interval in seconds
    update_interval 2.0

    # This is the number of times Conky will update before quitting.
    # Set to zero to run forever.
    total_run_times 0

    # Create own window instead of using desktop (required in nautilus)
    own_window yes

    # If own_window is yes, you may use type normal, desktop or override
    own_window_type desktop

    # Use pseudo transparency with own_window?
    own_window_transparent yes

    # If own_window_transparent is set to no, you can set the background colour here
    own_window_colour black

    # If own_window is yes, these window manager hints may be used
    own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager

    # Use double buffering (reduces flicker, may not work for everyone)
    double_buffer yes

    # Minimum size of text area
    minimum_size 280 5

    # Draw shades?
    draw_shades no

    # Draw outlines?
    draw_outline no

    # Draw borders around text
    draw_borders no

    # Draw borders around graphs
    draw_graph_borders yes

    # Stippled borders?
    stippled_borders 8

    # border margins
    border_margin 4

    # border width
    border_width 1

    # Default colors and also border colors
    default_color 000000
    default_shade_color 000000
    default_outline_color 000000

    # Text alignment, other possible values are commented
    #alignment top_left
    #alignment top_right
    alignment bottom_left
    #alignment bottom_right
    #alignment none

    # Gap between borders of screen and text
    # same thing as passing -x at command line
    gap_x 7
    gap_y 60

    # Subtract file system buffers from used memory?
    no_buffers yes

    # set to yes if you want all text to be in uppercase
    uppercase no

    # number of cpu samples to average
    # set to 1 to disable averaging
    cpu_avg_samples 2

    # number of net samples to average
    # set to 1 to disable averaging
    net_avg_samples 2

    # Force UTF8? note that UTF8 support required XFT
    override_utf8_locale yes

    # Add spaces to keep things from moving about? This only affects certain objects.
    use_spacer left

    # Allow each port monitor to track at most this many connections (if 0 or not set, default is 256)
    #max_port_monitor_connections 256

    # Maximum number of special things, e.g. fonts, offsets, aligns, etc.
    #max_specials 512

    # Maximum size of buffer for user text, i.e. below TEXT line.
    #max_user_text 16384

    # variable is given either in format $variable or in ${variable}. Latter
    # allows characters right after the variable and must be used in network
    # stuff because of an argument

    # stuff after ‘TEXT’ will be formatted on screen

    TEXT

    —————————————

    Se nemmeno così funziona, dai da terminale:

    sudo apt-get --purge remove conky
    sudo apt-get install conky

    Scritto con Mozilla Firefox Mozilla Firefox 3.0.1 , su Sistema Operativo Linux Linux

  9. Bono Says:

    ciao, con l’opzione –purge sono riuscito a reinstararlo ma me lo avviava in una finestra. Creando il file .conkyrc nella home e copiandoci il tuo codice poi da terminale pare avviato, ma non vedo niente da nessuna parte, nè finestre ne testi sullo sfondo (ho messo qualche variabile dopo “TEXT”
    sai come posso risolvere?
    scusa ancora per il disturbo
    ciaoo

    Scritto con Mozilla Firefox Mozilla Firefox 3.0.1 , su Sistema Operativo Linux Linux

  10. Bono Says:

    ce l’ho fatta! dovevo soltanto cambiare i colori del testo nel file di configurazione!
    grazie ancora!
    ciao!

    Scritto con Mozilla Firefox Mozilla Firefox 3.0.1 , su Sistema Operativo Linux Linux

  11. deviantdark Says:

    Bene :)

    Scritto con Epiphany Epiphany 2.20 , su Sistema Operativo Linux Linux

  12. Martino Says:

    ciao, a me da un errore nella parte di exaile, più che altro è proprio il comando exaile –get-title che mi da come output:
    Smile Like You Mean It
    location: /usr/lib/xulrunner-1.9.0.1/libxpcom.so
    before 3

    cioè il titolo più
    location: /usr/lib/xulrunner-1.9.0.1/libxpcom.so
    before 3, sai per caso cosa dovrei modificare?

    Scritto con Mozilla Firefox Mozilla Firefox 3.0.1 , su Sistema Operativo Linux Linux

  13. deviantdark Says:

    Assolutamente no, mi spiace.
    È possibile forse che abbia a che fare con xulrunner? Prova ad installare [se disponibile] la versione più aggiornata e la versione -dev.
    Nell’articolo ho riportato la variabile che a me funziona.
    Mistero.

    Scritto con Epiphany Epiphany 2.22 , su Sistema Operativo Linux Linux

  14. nickioc Says:

    ciao, grazie alla tua ottima guida sn riuscto ad installare conky, ma mi potresti spiegare come si fa a mettere le icone vicino alla variabile, come si vedono nel tuo screenshot? grazie

    Scritto con Mozilla Firefox Mozilla Firefox 3.0.3 , su Sistema Operativo Ubuntu Linux Ubuntu Linux

  15. nickioc Says:

    @scusa, ho letto i commenti e ho cercato un po’ su google, ho trovato quello che mi serviva, grazie comunque!

    Scritto con Mozilla Firefox Mozilla Firefox 3.0.3 , su Sistema Operativo Ubuntu Linux Ubuntu Linux

  16. Moleskine Says:

    Ciao..Scusa disturbo ma è normale che dando il comando da terminale gedit $HOME/.conkyrc, mi si apra un file dove non c’è nessuna stringa di comanda, ciò è praticamente vuoto.Cmq provando a far girare conky con il comando da terminale mi si avvia in finestra, dando informazioni di2base” se cosi si puo dire.Scusami ma sono un neofita di ubuntu e con linguaggio di programmazione e script ancora ci combatto un bel pò=)
    Spero in una tua risposta, ciao

    Scritto con Mozilla Firefox Mozilla Firefox 3.0.5 , su Sistema Operativo Ubuntu Linux Ubuntu Linux

  17. deviantdark Says:

    Probabilmente non hai generato un file .conkyrc di default.
    Hai dato prima

    zcat /usr/share/doc/conky/examples/conkyrc.sample.gz > ~/.conkyrc

    ?

    Scritto con Mozilla Firefox Mozilla Firefox 3.0.5 , su Sistema Operativo Windows Windows XP

  18. marcaleni Says:

    Conky mi rimane in primo piano sul desktop, ma sotto le finestre che apro….

    il problema pero’ è che le icone sul desktop spariscono dietro di lui e nn possono essere + recuperate se nn dal percorso “scrivania”

    Scritto con Mozilla Firefox Mozilla Firefox 3.0.5 , su Sistema Operativo Ubuntu Linux Ubuntu Linux

  19. deviantdark Says:

    Devi impostare la variabile own_window_type
    Prova con Desktop o Normal.

    Scritto con Mozilla Firefox Mozilla Firefox 3.0.5 , su Sistema Operativo Ubuntu Linux Ubuntu Linux

  20. calz Says:

    quale può essere il percorso della mio sensore per la cpu, non è quello che proponi tu, quel file (/sys/bus/pci/drivers/k8temp/000*/temp1_input | cut -c1,2) non c’è, anche se ho fatto tutta l’installazione col wiki consigliato? grazie

    Scritto con Mozilla Firefox Mozilla Firefox 3.0.5 , su Sistema Operativo Ubuntu Linux Ubuntu Linux

  21. calz Says:

    e scusa la seconda domanda: come si fa a monitorare 2 hdd? il primo è ok.

    Scritto con Mozilla Firefox Mozilla Firefox 3.0.5 , su Sistema Operativo Ubuntu Linux Ubuntu Linux

  22. deviantdark Says:

    Prova a guardare nella directory /sys/bus/pci/drivers, e cerca lì qualche info sul tuo CPU.
    Per gli hard disk non saprei… cerca informazioni su hddtemp.

    Scritto con Mozilla Firefox Mozilla Firefox 3.0.5 , su Sistema Operativo Ubuntu Linux Ubuntu Linux

  23. calz Says:

    purtroppo i /sys/bus/pci/drivers non trovo nulla di confacente, ho tentato come molti altri fanno con l’istruzione ${acpitemp}, ma nulla. grazie comunque, ciao.

    Scritto con Mozilla Firefox Mozilla Firefox 3.0.5 , su Sistema Operativo Ubuntu Linux Ubuntu Linux

  24. calz Says:

    sono finalmente riuscito (leggi post sopra) e documento qui per altre persone nelle mie condizioni:
    la stringa inserita che funziona è:
    ${execi 30 sensors | grep ‘CPU Temp’ | awk ‘{print $3}’}
    il mio driver rilevato da sensors è:
    w83627thf-isa-0290.
    ciao

    Scritto con Mozilla Firefox Mozilla Firefox 3.0.5 , su Sistema Operativo Ubuntu Linux Ubuntu Linux

  25. ghitu2 Says:

    E’ possibile visualizzare la canzone in ascolto anche se si usa vlc?

    Scritto con Mozilla Firefox Mozilla Firefox 3.0.6 , su Sistema Operativo Ubuntu Linux Ubuntu Linux

  26. deviantdark Says:

    Non ne ho idea, anche se googlando un po’ non ho trovato nulla.

    Scritto con Mozilla Firefox Mozilla Firefox 3.0.6 , su Sistema Operativo Ubuntu Linux Ubuntu Linux

  27. ciro Says:

    grazie per la dritta

    Scritto con Debian IceWeasel Debian IceWeasel 3.0.6 , su Sistema Operativo Debian GNU/Linux Debian GNU/Linux

  28. ciro Says:

    E l’orologio come si fà

    Scritto con Mozilla Firefox Mozilla Firefox 3.0.14 , su Sistema Operativo Linux Linux

Leave a Comment

Please note: Comment moderation is enabled and may delay your comment. There is no need to resubmit your comment.