Sto cercando un modo semplice per determinare la quantità approssimativa di tempo al giorno che passo su un computer. Questo può essere un compito difficile se si tenta di monitorare processi, pressioni di tasti, clic del mouse e simili, perché si può fare qualsiasi cosa dal pensare a un problema di codifica, leggere un articolo Web, parlare al telefono o andare a spasso cane. Il computer non può leggermi nella mente. Da quando lascio i computer su 24/7 monitoraggio accessi non funzionerà.
Mi è venuta l'idea di registrare quanto tempo il computer trascorre in modalità screensaver. Il mio errore non sarebbe quindi maggiore del prodotto del tempo di inattività del salvaschermo con il numero di volte che passa in modalità salvaschermo. Sottraendo questo da 24 ore mi darebbe una stima che sarebbe ragionevole per i miei scopi.
Il problema è: non so come accedere quando lo screensaver si accende e si spegne. Attualmente eseguo Ubuntu 10.10 sulla maggior parte delle macchine, sto per iniziare l'aggiornamento a 11.04 su alcune di esse.
Qualche idea?
[modifica] Dopo aver cercato su Google ho colpito il monitor Dbus che sembrava funzionare, ma manca un ingrediente importante. Ecco lo script che sto eseguendo che avvia il monitor come demone:
#!/bin/bash
RUNNING=`ps -A | grep "dbus-monitor"`
if [ ! $RUNNING ]; then
echo "(Re)starting dbus-monitor daemon"
nohup dbus-monitor "--profile" "type='signal',interface='org.gnome.ScreenSaver'" >> ${HOME}/sc.log &
fi
Ecco l'output che produce dopo aver bloccato e sbloccato lo schermo un paio di volte:
sig 1304860712 153829 2 /org/freedesktop/DBus org.freedesktop.DBus NameAcquired
sig 1304860717 318732 462 /org/gnome/ScreenSaver org.gnome.ScreenSaver ActiveChanged
sig 1304860725 547928 463 /org/gnome/ScreenSaver org.gnome.ScreenSaver ActiveChanged
sig 1304861018 17 464 /org/gnome/ScreenSaver org.gnome.ScreenSaver ActiveChanged
sig 1304862919 403523 466 /org/gnome/ScreenSaver org.gnome.ScreenSaver ActiveChanged
La seconda colonna è ovviamente unix UTC in pochi secondi. L'ingrediente mancante è che non identifica se lo screensaver è acceso o spento! Suppongo che potrei supporre che si attivino dal momento in cui NameAcquired accade, ma mi fa venire la nausea che potrebbe esserci un evento mancante o extra che non posso prevedere, il che getterebbe tutto fuori sincrono.
Molto obbligato per le idee.
jkcunningham