Pidgin è veramente un programma dalle mille risorse: giorno dopo giorno trovo sempre il modo di ampliarne le funzionalità, di personalizzarlo e di aggiungere qualcosa di utile o divertente. Le features di base sono già notevoli, tanto per citare le 3 funzionalità più particolari a cui non potrei più rinunciare:
- possibilità di vedere se un contatto vi ha rimosso dalla sua lista, molto comodo per sapere chi non vi vuole più parlare
- possibilità di disabilitare la notifica ai contatti mentre state digitando loro un messaggio, così non lasciate trasparire indecisioni o lentezza…
- possibilità di loggare tutti i cambiamenti di stato dei contatti, ideale per vedere ad esempio chi si è connesso un attimo mentre non eravate al pc
Oltre a ciò vi sono una moltitudine di plugins, alcuni già installati assieme al pacchetto di base e molti altri scaricabili dalla rete. Anche tra i plugins ve ne sono alcuni di cui veramente non potrei più fare a meno, ovvero:
- Psychic Mode, per anticipare i vostri amici e sapere quando stanno per scrivervi… un vero must per gli psicotici1 come me
- gSMS, che vi notifica tramite sms se qualche contatto vi ha scritto mentre non eravate al pc, sfruttando il servizio sms di Google Calendar
- Text replacement, ottimo per correggere errori ortografici oppure per trasformare letteralmente il vostro gergo in chat (effetto assicurato!)
Altra comodità sono i Buddy Pounces che vi permettono di pianificare tutta una serie di azioni in seguito ad eventi relativi ai vostri contatti. Detto in questi termini è molto riduttivo, perché in effetti le possibilità offerte sono veramente molto numerose, anche se non del tutto complete. Tuttavia se credete che le potenzialità siano terminate vi sbagliate, infatti è possibile interagire con Pidgin anche tramite D-Bus2, un sistema IPC altamente flessibile con il quale le possibilità di estensioni diventano praticamente illimitate!
Molto probabilmente sulla vostra linux-box avete già installato Python, mentre invece potreste non avere installata l’interfaccia per l’uso di D-Bus da Python, in tal caso provvedete ad installare il pacchetto python-dbus prima di cominciare a scrivere i vostri scripts. Ora che tutto il necessario è installato non resta che lavorare di fantasia e utilizzare un qualsiasi editor di testo. Il primo script che ho sentito l’esigenza di scrivere è stato un risponditore automatico personalizzabile per singoli contatti e che potesse inviare come risposta l’output di un comando arbitrario, in modo da renderlo molto flessibile. Per aggiungere un pizzico di divertimento vi propongo l’integrazione con il famoso generatore di frasi casuali Polygen, che formalmente è un interprete di un metalinguaggio che permette di definire linguaggi. Potete installarlo comodamente dai repositories, i pacchetti si chiamano polygen e polygen-data. Le grammatiche messe a disposizione sono molto numerose, le potete trovare catalogate all’interno di /usr/share/polygen/ e per poterle usare basta passarle come parametro all’applicativo polygen, ad esempio se volete una frase sul mondo della programmazione ad oggetti digitate:
polygen /usr/share/polygen/ita/oop.grm
Ed otterrete un’esilarante frase tipo questa: “Apriamo la struttura della classe Rockerduck. State attenti. Se osservate bene, il campo DoWriteElement è private. In effetti potremmo chiederci la ragione di quest’apparente complicazione: eh, non è facile: del resto lo sviluppatore non sono io, non so cos’aveva in mente chi l’ha fatto. Come faremo a salvare su XML l’attributo? Niente di più facile, basta spegnere e riaccendere. Fine. Ora fate attenzione perché è importante: se siete ancora svegli, la proprietà DequeueField è in override. C’è una ragione particolare? Purtroppo non ho capito perché sia stato implementato così in questa versione.”
Per rendere più umano il risponditore potete aggiungere una breve attesa di durata variabile prima dell’esecuzione di polygen, ad esempio con un banale comando:
sleep $(($RANDOM/5000)
Il fulcro dello script è l’istruzione import che ci permette di usare la libreria “os” per il lancio di comandi e l’utilizzo dei relativi output all’interno del codice, oltre naturalmente alla librerie fondamentali “dbus” e correlate. Per il resto il codice è piuttosto intuitivo, quindi non ha senso commentarlo e non lo inserisco nemmeno nel post per ovvi motivi di impaginazione. Il risultato finale è disponibile qui
, scaricatelo e divertitevi a personalizzarlo a seconda delle vostre esigenze! Circa le grammatiche di polygen, le mie preferite per questo scopo sono “telefonia” e “genio”. Con la prima otterrete delle fenomenali frasi del tipo “Benvenuto al customer care RuboTel. Per tirare lo sciacquone digita 4. Sapere dove è Bin Laden e se il suo telefono è raggiungibile digita 7. Per insultare un operatore digita 9. Grazie”. Vi meraviglierete nel vedere come alcuni vostri contatti proveranno veramente a digitare una delle cifre proposte
La grammatica “genio” invece genera una domanda ed una relativa risposta, quindi nello script consiglio di limitarsi a scrivere la domanda con il comando:
polygen /usr/share/polygen/ita/genio.grm | head -1
In questo modo gli amici che cercheranno di contattarvi si vedranno bombardare di domande assurde del tipo “Come faccio a inserire Redhat LinuxPPC?” oppure “Non riesco a overclockare la URL a cristalli liquidi da Photoshop 98, come si fa?”. Il risultato è assicurato, ma attenzione a non abusarne
Ultima nota, il controllo sull’alias all’interno della routine ReceivedImMsg può naturalmente essere utilizzato per personalizzare le risposte ai vari contatti così come anche per filtrare alcuni nick come nell’esempio dove la risposta automatica non viene inviata ai messaggi automatici di IRC da parte del server a cui ci si connette e da parte del NickServ prima dell’identificazione del proprio username.
Non vi resta che rendere eseguibile lo script tramite chmod, avviarlo, lasciarlo attivo in background ed attendere che qualcuno vi scriva un messaggio. Buon divertimento!
1. Attenzione, se non lo siete già… allora l’uso di questo plugin vi farà diventare psicotici sul serio! Se non altro agli occhi degli altri…
2. Se siete su Debian Etch come me, ricordatevi di compilare Pidgin con il supporto a D-Bus: basta aggiungere lo switch –enable-dbus quando eseguite ./configure