Magellan

L’idea

Il progetto Magellan è stato pensato per mettere a disposizione degli utenti linux le funzionalità di un software context aware, come quelle fornite da Marco Polo per gli utenti Macosx.
Si tratta di un software che, in base a diversi aspetti (come l’ora attuale o lo stato di una periferica del computer), intuisce il contesto in cui sta lavorando l’utente, contesto che può indicare sia il luogo che l’attività svolta dall’utente.

Una volta specificati dall’utente i contesti di cui è interessato, gli aspetti che identificano con una certa probabilità questi contesti e le azioni da svolgere durante un cambio di contesto; è possibile quindi automatizzare diversi compiti senza doversi più preoccupare di eseguirli manualmente dopo la prima configurazione.

Per realizzare questo si è quindi pensato a un demone da avviare al login dell’utente che avrà il compito di ascoltare eventi forniti da librerie diverse, nonchè di compiere le azioni specificate dall’utente mediante script forniti da quest’ultimo o funzioni integrate direttamente nel demone.

Tecnologie Utilizzate

Il linguaggio di programmazione che verrà usato per la realizzazione del programma è Python.

Fra le diverse funzionalità del programma quelle prioritarie sono senza dubbio la capacità di:

  • Rilevare reti wifi
  • Monitorare lo stato della batteria
  • Rilevare monitor esterni collegati
  • Rilevare altri dispositivi collegati (come chiavette usb, stampanti)

Per far questo si utilizzeranno diverse librerie, fra queste le API DBUS fornite da devicekit-powerNetworkManager nonchè Xrandr per avere informazioni sull’output video.

Per le API DBUS si farà utilizzo quanto più possibile dei segnali forniti direttamente da queste ultime, mentre per le altre librerie che obbligano a controllarne periodicamente lo stato si realizzerà un semplice wrapper per generare gli eventi necessari alla componente del programma che si occupa di rilevare i cambiamenti di contesto. Allo stesso modo per semplificare l’interazione con DBUS si prenderà spunto da librerie come quella realizzata percnetworkmanager.

Casi d’uso

  • Marco al lavoro ha bisogno di montare uno share di rete, ma questo ovviamente a casa non è disponibile. Configura Magellan per fare in modo che si accorga quando è al lavoro in base alla rete wifi dell’ufficio, e quindi montare lo share quando vi arriva e smontarlo quando lo lascia.
  • Paolo preferirebbe che, di giorno, il pc attivasse lo screensaver dopo 2 brevi minuti dalla sua assenza, bloccando così lo schermo; mentre una volta a casa sua di sera, per vedere filmati in flash preferisce avere un timeout più alto. Seleziona per Magellan un contesto basato sull’ora del giorno, cambiando così automaticamente il settaggio dello screensaver.
  • Alberto ha abbinato una connessione bluetooth del proprio cellulare con il computer, decide di usare la presenza del cellulare nelle vicinanze del computer per lanciare un proprio script che monti una partizione crittata (e che viceversa lo smonti quando non ci si trova più in presenza del cellulare). Apre Magellan e crea una nuova regola basata sui dispositivi bluetooth abbinati.
  • Enrico usa BackInTime per i backup su uno share di rete, purtroppo quando lo share non è disponibile BackInTime ogni ora lamenta con un’icona lampeggiante nell’area di notifica l’impossibilità di effettuare backup… Decide così di usare Magellan per attivare il cron job solo quando lo share è montato.