KDE - Notifica degli aggiornamenti sulla systray: differenze tra le versioni

nessun oggetto della modifica
Nessun oggetto della modifica
Nessun oggetto della modifica
Riga 5: Riga 5:


Servono fondamentalmente tre cose:
Servono fondamentalmente tre cose:
* Un job di cron che effettua la risincronizzazione dei file contenenti gli indici dei pacchetti;
* Un job di [[Utilizzo del servizio di scheduling Cron|cron]] che effettua la risincronizzazione dei file contenenti gli indici dei pacchetti;
* Uno script per notificare nella systray gli aggiornamenti eventualmente trovati;
* Uno script per notificare nella systray gli aggiornamenti eventualmente trovati;
* Un secondo job di cron che lancia lo script precedente;
* Un secondo job di cron che lancia lo script precedente;
Riga 12: Riga 12:
Questo primo job di cron può essere inserito in ''/etc/cron.hourly'' per essere lanciato ogni ora; il suo funzionamento è banale:
Questo primo job di cron può essere inserito in ''/etc/cron.hourly'' per essere lanciato ogni ora; il suo funzionamento è banale:


creare un file contenente le seguenti righe:
creare, come utente root, un file contenente le seguenti righe:
<pre>#!/bin/sh
<pre>#!/bin/sh
apt-get update &>/dev/null</pre>
apt-get update &>/dev/null</pre>


salvare il file e renderlo eseguibile; se ad esempio lo abbiamo chiamato ''aggiorna'':
salvare il file in ''/etc/cron.hourly'' e renderlo eseguibile; se ad esempio lo abbiamo chiamato ''aggiorna'':
<pre># chmod +x aggiorna</pre>
<pre># chmod +x /aggiorna</pre>


Il compito di questo job è soltanto quello di aggiornare la lista degli indici dei pacchetti, senza aggiornare il sistema. L'output e gli eventuali errori del comando vengono soppressi. Per le mie necessità è sufficiente in quanto gli errori sono spesso dovuti all'irraggiungibilità dei repo, cosa in genere risolta in poco tempo.
Il compito di questo job è soltanto quello di aggiornare la lista degli indici dei pacchetti, senza aggiornare il sistema. L'output e gli eventuali errori del comando vengono soppressi. Per le mie necessità è sufficiente in quanto gli errori sono spesso dovuti all'irraggiungibilità dei repo, cosa in genere risolta in poco tempo.
Se si vuol far in modo che lo script venga eseguito ad intervalli diversi dall'ora, è possibile inserire un job nella directory ''/etc/cron.d'' secondo il formato di [[Utilizzo del servizio di scheduling Cron#Crontab_Command_settings|crontab]].
Se si vuol far in modo che lo script venga eseguito ad intervalli diversi dall'ora, è possibile inserire un job nella directory ''/etc/cron.d'' secondo il formato di [[Utilizzo del servizio di scheduling Cron#Crontab_Command_settings|crontab]].
Questa è l'unica parte in cui i comandi vanno dati con i permessi di root; i successivi passi vanno eseguiti attraverso i normali privilegi utente.


===Script di notifica nella systray===
===Script di notifica nella systray===
Lo script che si occupa di far comparire la notifica nella systray fa uso di Kdialog:
Lo script che si occupa di far comparire la notifica nella systray fa uso di [http://techbase.kde.org/Development/Tutorials/Shell_Scripting_with_KDE_Dialogs:link kdialog]:
<pre>#!/bin/bash
<pre>#!/bin/bash


Riga 34: Riga 36:
exit</pre>
exit</pre>


: '''aptitude search ~U''' fornisce una lista (estratta dalla lista aggiornata ogni ora dal job di cron precedente) dei pacchetti che possono essere aggiornati.
: '''NUM''' variabile che conterrà il numero di pacchetti aggiornabili;
: '''wc -l''' prende l'output del comando precedente e ne conta le linee. In pratica conta il numero di pacchetti che possono essere aggiornati.
: '''aptitude search ~U''' fornisce una lista (estratta dalla lista aggiornata ogni ora dal job di cron precedente) dei pacchetti che possono essere aggiornati;
: '''--display :0''' parametro che indica a kdialog di utilizzare il nostro server grafico.
: '''wc -l''' prende l'output del comando precedente e ne conta le linee. In pratica conta il numero di pacchetti che possono essere aggiornati;
: '''--passivepopup''' parametro che indica a Kdialog di mostrare un popup di notifica contenente il testo specificato tra virgolette.
: '''--display :0''' parametro che indica a kdialog di utilizzare il nostro server grafico;
: '''600''' numero che esprime, in secondi, il tempo per cui resta attiva la notifica nella systray.
: '''--passivepopup''' parametro che indica a Kdialog di mostrare un popup di notifica contenente il testo specificato tra virgolette;
: '''600''' numero che esprime, in secondi, il tempo per cui resta attiva la notifica nella systray;


In maniera simile a quanto fatto con lo script precedente, salvare il file in una directory della nostra home (~/scripts ad esempio ) chiamandolo ''notifica'' (o in qualche altro modo) e renderlo eseguibile:
In maniera simile a quanto fatto con lo script precedente, salvare il file in una directory della nostra home (''~/scripts'' ad esempio ) chiamandolo ''notifica'' (o in qualche altro modo) e renderlo eseguibile:
<pre>$ chmod +x ~/scripts/notifica</pre>
<pre>$ chmod +x ~/scripts/notifica</pre>


Riga 46: Riga 49:
Il job di cron per lanciare lo script precedente deve essere specificato nel formato di crontab:
Il job di cron per lanciare lo script precedente deve essere specificato nel formato di crontab:
<pre>30 * * * * ~/scripts/notifica >/dev/null 2>&1</pre>
<pre>30 * * * * ~/scripts/notifica >/dev/null 2>&1</pre>
che può essere inserito dopo aver dato, da '''utente''', il comando:
che può essere inserito dopo aver dato il comando:
<pre>$ crontab -e</pre>
<pre>$ crontab -e</pre>
Questo job verrà lanciato ogni 30 minuti. L'intervallo di tempo è liberamente modificabile; ad esempio, se si vuol lanciare il job ogni 10 min:
Questo job verrà lanciato ogni 30 minuti. L'intervallo di tempo è liberamente modificabile; ad esempio, se si vuol lanciare il job ogni 10 min:
6 999

contributi