Sì, a L4N ci piace Conky - già affrontato da Doc precedentemente - e ci piace poiché per i netbook è più che ideale, risorse contenute e piena personalizzazione. Ottimo direi ;). Oggi vorrei farvi vedere uno script che ho sul netbook per avere la notifica degli aggiornamenti tramite, appunto, Conky.
Come funziona
Dunque, la dinamica è semplice, da una parte sarà necessario configurare il sistema per fare in modo che aggiorni la lista di pacchetti ogni tot tempo. Per fare questo metteremo in cron uno script che faccia aggiornare la lista ogni mmm... mettiamo un'ora. Dopodiché ci vorrà uno script in pearl per conky che indichi il numero di aggiornamenti. Per ultimo impostare la riga sul conkyrc. Semplice.Cron
Dovreste avere il pacchetto cron installato, in teoria, è difficile che non lo sia.Creiamo un file di testo e lo chiamiamo aggiornamenti.sh dopodiché immettiamo questo contenuto:
Per Archlinux
#!/bin/bash
pacman -Sy
Per Debian
#!/bin/bashsalvate e con i permessi di admin spostate il file dentro a /etc/cron.hourly
aptitude update
se il file è nella home potete usare il comando:
(sudo) mv ~/aggiornamenti.sh /etc/cron.hourly/
Script in pearl
La procedura, è la seguente: creiamo un'altro file e lo chiamiamo ad esempio: agg-conky, conterrà questo:Nota: Se preferite che lo script sia in Bash potete provare quello fatto da Valantin, che approfitto per ringraziare. Il seguente è invece fatto in perl, le procedure, comunque sia, sono le stesse.
Per Archlinux
#!/usr/bin/perl
use strict;
use warnings;
my $n = (`pacman -Qu | wc -l`);
chomp ($n);
if ($n == 0)
{
print "Aggiornato"
}
else
{
print "$n Disponibili"
}
Per Debian
#!/usr/bin/perl
use strict;
use warnings;
my $n = (`aptitude search "~U" | wc -l`);
chomp ($n);
if ($n == 0)
{
print "Aggiornato"
}
else
{
print "$n Disponibili"
}
Una volta fatto lo salvate e lo mettete in una directory. Io ho scelto /.conky-scripts dentro la home.
Dateli i permessi di esecuzione facendo tasto destro col mouse, nelle proprietà del file.
Conky
Ecco il codice da mettere nel vostro conkyrc. Nel mio caso ho preferito che mettesse in moto lo script in pearl ogni mezzora, ma potete decidere voi. (i parametri in rosso potete deciderli voi)${voffset -1}${font Trebuchet MS:size=10}Pacman/Aptitude/ecc:${font} ${font Trebuchet MS:size=7}${execi 1800 perl ~/.conky-scripts/agg-conky}${font}Quel simboletto di pillola, a fianco pacman, che vedete nell'immagine è la lettera "g" del font WC Sold Out E Bta. Se volete impostarlo anche voi, scaricate il font, mettetelo dentro la cartella /.fonts nella vostra home e poi aggiungete il carattere al conky, dovrebbe venire una cosa del genere:
${voffset -4}${font WC Sold Out E Bta:size=9}g${font} ${voffset -1}${font Trebuchet MS:size=10}Pacman:${font} ${font Trebuchet MS:size=7}${execi 1800 perl ~/.conky-scripts/agg-conky}${font}Avete fatto.
Ovviamente aspetto il vostro feedback per dirmi come si fa con Fedora, Opensuse e/o chi più ne ha più ne metta.
Fonti ringraziamenti:
Forum di Archlinux
El blog de Cruz
Consiglio: sostituisci /home/vostro-nome-utente/ con il solito ~. Diviene tutto più semplice!
RispondiEliminaperfetto grazie :D
RispondiEliminasi potrebbe benissimo fare in bash senza scomodare l'interprete perl :P
RispondiEliminase vi serve ve lo posto
@Doc:
RispondiEliminaPrima di farlo ho provato se conky prendeva il ~, e funziona! Grazie mile, appena modificato. In effetti si risparmia la solita magagna "vostro-nome-utente" ;)
@Valantin:
Posta pure! che se non è un casino posso vedere di integrarlo o fare riferimento al commento dentro la guida ;)
quello che non ho capito è se cambia qualcosa se sia in bash che in perl. Conviene uno al posto dell'altro o è uguale?
@Santiago
RispondiEliminaPerché? Dubitavi della bontà del mio suggerimento?
Presumo che il consiglio di Valantin sia motivato dal fatto che il bash è più leggero del perl.
bhè il bash è un linguaggio semplice e diciamo che si è più leggero dell'interprete perl, anche se per una cosa così non è che ci voglia poi tanto impegno sia in uno che nell'altro :P
RispondiEliminaora non sono su linux e non posso provare cmq
#!/bin/bash
UPDATE = `aptitude search "~U" | wc -l`
if [ UPDATE -eq 0 ] ; then
echo "Aggiornato"
elif [ UPDATE -eq 1 ] ; then
echo "Un Aggiornamento"
elif [ UPDATE -gt 1 ] ; then
echo "$UPDATE Aggiornamenti"
else
echo "ERRORE"
fi
non lo ho provato, ma dovrebbe andare.
@Doc, no non dubitavo! mi sono chiesto come mai non è venuto in mente anche a me? e per non accettare il fatto di non essere stato brillante, mi sono risposto che l'avevo provato ma non funzionava con conky, dopodiché sicuramente me ne ero scordato :D
RispondiEliminaInvece non l'avevo provato, non mi era neanche venuto in mente, e funziona alla grande. Quindi grazie :)
@Valantin, quando avrò un po' di tempo libero lo proverò, nel frattempo segnalo la cosa con un link al tuo commento ;)
@Valantin:
RispondiEliminaho provato quello in bash ma sembra che ci sia un'errore, non so perché ogni tanto la stringa di pacman mi compare vuota O.o Tu per caso l'hai provato?
no mi spiace non l'ho provato, ma mi sembra strano, a meno di qualche errore nei confronti negli if (che ogni volta mi scordo i nomi e devo andarli a cercare) nn penso ci siano errori, lo usavo sul mio sistema e andava a dovere. ora non sò con arch se ci sia qualcosa da sistemare....
RispondiEliminaprova a mettere un print al posto di echo e vedi come và....
se puoi spiegarmi meglio cosa accade e in che circostanze sarebbe meglio, visto che il mio script è lo stesso in perl solo che ho aggiunto il controllo se ci sono errori (cioè non viene riportato alcun numero perchè magari aptitude non esiste o non sò)
#!/bin/bash
RispondiEliminaUPDATE=`aptitude search "~U" | wc -l`
if [ $((UPDATE)) -eq '0' ] ; then
echo "Aggiornato"
elif [ $((UPDATE)) -eq 1 ] ; then
echo "Un Aggiornamento"
elif [ $((UPDATE)) -gt 1 ] ; then
echo "$UPDATE Aggiornamenti"
else
echo "ERRORE"
fi
questo funziona sicuramente su debian, appena testato :P
per il tuo problema mi è appena venuto in mente che potrebbe essere un problema di più chiamate a pacman contemporaneamente, una dallo script e una per controllare la lista dei pacchetti e quindi ti dà problemi
"per il tuo problema mi è appena venuto in mente che potrebbe essere un problema di più chiamate a pacman contemporaneamente, una dallo script e una per controllare la lista dei pacchetti e quindi ti dà problemi"
RispondiEliminasi si l'ho pensato ieri sera e credo che il problema sia proprio questo, il fatto è che non saprei come risolverlo, forse con un "sleep X" per ritardare uno dei due comandi... a questo punto il tuo script va bene, è la guida che manca di una parte.