KDE - Notifica degli aggiornamenti sulla systray

Da Guide@Debianizzati.Org.

Debian-swirl.png Versioni Compatibili
Debian 6 "Squeeze"
Debian 7 "Wheezy"
Debian 8 "Jessie"
Debian 9 "Stretch"
Debian testing "Buster"

Indice

Introduzione

Scrivo questa breve guida per chi, come me, esegue il comando:

# apt-get update && apt-get dist-upgrade

(o equivalente alias contenuto nel file .bashrc di root) alla ricerca di aggiornamenti.
Dopo aver seguito i successivi tre semplici passi, la notifica della presenza di aggiornamenti dei nostri pacchetti sarà visualizzabile direttamente sulla systray, restandoci per un tempo impostabile a piacimento.

Servono fondamentalmente tre cose:

Cronjob per l'aggiornamento degli indici dei pacchetti e il download

Con i permessi di root eseguire il comando:

# crontab -e

e inserire le seguenti righe:

30 15,18,21 * * * /usr/bin/apt-get -qq update && /usr/bin/apt-get -qq -d dist-upgrade
@reboot /usr/bin/apt-get -qq update && /usr/bin/apt-get -qq -d dist-upgrade

Verrà eseguito al boot della macchina e alle 15,30 - 18,30 - 21,30 l'aggiornamento degli indici dei pacchetti e il download dei pacchetti stessi ma senza installarli. Prestare attenzione all'opzione "-qq" che sopprime i messaggi di apt-get e a "dist-upgrade" che può essere sostituito con "upgrade" in base alle proprie esigenze.
L'opzione "-d" permette il download automatico dei pacchetti in modo tale che questo possa avvenire in background rendendo il successivo aggiornamento del sistema molto più veloce. Rimuovere tale opzione se non si desidera che i pacchetti aggiornabili vengano scaricati, magari perché si vuole soltanto la notifica degli aggiornamenti per poter scegliere successivamente quali installare.
L'aggiunta della riga che inizia con "@reboot" si dimostrerà molto utile, come si vedrà più avanti, nel caso si decidesse di volere la notifica degli aggiornamenti anche all'avvio di una sessione di KDE.

Questa è l'unica parte della guida 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

Lo script che si occupa di far comparire la notifica nella systray fa uso di Kdialog.

#!/bin/bash

NUM=$(( $(apt list --upgradable 2>/dev/null | wc -l) - 1 ))

sleep 60

if [ $NUM -eq 0 ]; then exit
elif [ $NUM -eq 1 ]; then env DISPLAY=:0 kdialog --passivepopup "È stato trovato un aggiornamento" 600
else env DISPLAY=:0 kdialog --passivepopup "Sono stati trovati $NUM aggiornamenti" 600
fi
exit
NUM
variabile che conterrà il numero di pacchetti aggiornabili;
(apt list --upgradable 2>/dev/null | wc -l) - 1
fornisce una lista (estratta dalla lista aggiornata ogni ora dal job di Cron precedente) dei pacchetti che possono essere aggiornati. La soppressione dell'output di errore e il decremento di uno del numero di pacchetti si rende necessario in quanto il comando avverte l'utente di possibili problemi nel suo utilizzo all'interno di script.
sleep 60
attende sessanta secondi in modo da prevenire eventuali problemi in caso di mancato caricamento del vassoio di sistema prima dei comandi successivi;
env DISPLAY=:0 kdialog
viene utilizzato il comando env per settare la variabile d'ambiente DISPLAY ed eseguire il comando kdialog;
--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:

$ chmod +x ~/scripts/notifica
Info.png Nota
Nelle versioni di apt presenti prima di Jessie, i pacchetti da installare devono essere visualizzati attraverso Aptitude. Pertanto bisogna sostituire la riga:
NUM=$(( $(apt list --upgradable 2>/dev/null | wc -l) - 1 ))
con la riga
NUM=`aptitude search ~U | wc -l`


Job di Cron per lanciare lo script di notifica

Il job di Cron per lanciare lo script precedente deve essere specificato nel formato di crontab:

30 * * * * ~/scripts/notifica >/dev/null 2>&1

che può essere inserito dopo aver eseguito il comando:

$ crontab -e

Nell'esempio indicato, il job di Cron verrà lanciato ogni ora e quando i minuti valgono 30 (01.30, 02.30, 03.30 e così via). L'intervallo di tempo è liberamente modificabile; nell'esempio successivo lo script viene eseguito pochi minuti dopo il job di root definito nel paragrafo "Script per l'aggiornamento degli indici dei pacchetti e il download":

45 15,18,21 * * * ~/scripts/notifica >/dev/null 2>&1

Notifica all'avvio di una sessione KDE

Questo passaggio non è fondamentale ma potrebbe rivelarsi utile per gli utenti che volessero ricevere la notifica di aggiornamenti anche all'avvio della loro sessione di KDE.
La prima cosa da fare è accertarsi, come spiegato nel primo paragrafo, che Cron esegua l'aggiornamento della lista dei pacchetti all'avvio del sistema; quindi eseguire un comando simile a:

$ ln -s /percorso/dello/script/script_di_notifica /home/utente/.kde/Autostart/nome_link

che creerà, nella cartella Autostart, un link simbolico nome_link allo script di notifica. In questo modo lo script verrà lanciato all'avvio di KDE.
In particolare, con lo script chiamato notifica contenuto nella sottodirectory scripts/ della propria directory home, il comando diventa:

$ ln -s ~/scripts/notifica ~/.kde/Autostart/notifica

Kdialog

Questo script utilizza KDialog per permettere che la notifica di eventuali aggiornamenti appaia nel vassoio di sistema. L'eseguibile kdialog è presente nel pacchetto:

oppure nel pacchetto:

nel caso il precedente pacchetto non fosse installato.
Si veda anche la documentazione[1] ufficiale.

Conclusioni

Da questo momento in poi le notifiche degli aggiornamenti compariranno nella nostra systray.
Per aggiornare il sistema sarà comunque necessario dare il comando:

# apt-get upgrade

oppure:

# apt-get dist-upgrade

a seconda delle necessità.

Documentazione

[1] Kdialog
[2] man crontab
[3] man cron




Guida scritta da: S3v

Swirl-auth20.png Debianized 20%

Estesa da:
Verificata da:

Verificare ed estendere la guida | Cos'è una guida Debianized

Strumenti personali
Namespace
Varianti
Azioni
Navigazione
Risorse
Strumenti