Non poteva che arrivare il momento di parlare delle chat e dei client testuali. I progetti in merito sono parecchi, alcuni più famosi di altri. Tra questi elenco quelli che ho sempre usato io: bitchX, weechat, ekg2. Vuoi per sviluppo di alcuni (bitchx), vuoi per mancata ed adeguata documentazione di altri in lingue accettabili e comprensibili ai comuni mortali e per svilluppo di release (ekg2), sono sempre rimasto non troppo convinto di cosa usare. La scelta obbligata ovviamente è ricaduta sul client che utilizzavo da anni sui server in remoto: irssi.

Irssi - Il client del futuro (concordo e non in modo provocatorio) è senza dubbio ciò che più si avvicina a quelli che sono i miei requisiti minimi: usabilità, snellicità, implementazioni, documentazione;

NB: Questo non è un how-to  su come si usa la chat, attraverso IRC; dovrebbe solo servire a chiarire alcune piccole cose riguardo irssi per facilitare l’utente nell’uso quotidiano dello stesso.

IL PROGRAMMA:

Per startarlo, essendo pensato come client text, apriamo un emulatore di terminale a scelta o direttamente da bash shell:

~$ irssi

Startato, l’interfaccia di base di default è costituita da una Topicbar (in alto) - Statusbar (in basso) - Prompt (sotto la Statusbar; dove si digitano i comandi). Al primo avvio sarà creata se non esiste la directory ~/.irssi/ contenente i settaggi generali e gli eventuali temi e script utili alla customizzazione.

 

Per effettuare la connessione si usa il comando /server o anche /connect:

/server irc.server_scelto.it porta
/connect irc.server_scelto.it porta

Per visionare la lista server:

/server list

I comandi generali sono gli stessi di tutti i client di chat IRC: join,part,kick,ban,quit etc…

NB: Lo sfondo, le trasparenze, i colori, la codifica del charset sono relativi al tipo di emulatore di terminale scelto e chiaramente ai settaggi del sistema.

Per spostarsi tra i canali si usa la combinazione di tasti:

ALT + numero

NB: numeri compresi [0-9], esempio: ALT + 1 ; ALT + 2 ; ALT + 3

NB: se i canali superano tale range (più di 10 canali),  saranno aggiunte ricorsivamente i range di lettere della tastiera [q-p] [a-l] etc…

Irssi fa riferimento a comandi (vedi /help) che molto spesso sono anche riconfigurati sotto forma di alias. La finalità sta nel definire una serie di comandi abbreviati per sopperire al bisogno di digitare non solo comandi ma anche stringhe numericamente lunghe ad ogni eventuale bisogno. Esempio, per avviare una query si può usare:

/query nick

o anche l’alias:

/q nick

Stesso discorso per chiudere di una finestra; query,canale, o finestra splittata (di cui si parlerà più avanti):

/window close

o anche l’alias:

/wc

o anche:

/win k

Per una lista degli alias settati in uso:

/alias

NB: Una delle funzionalità migliori di irssi è l’implementazione d’uso del tasto [TAB] , che funge da bash completion della shell. Gli utenti in linux sanno bene l’efficacia di questa funzionalità. Esempio in un canale:

/q a[TAB]

Mostrerà e scorrerà a schermo tutti i nick che cominciano per “a”, ad ogni successiva pressione cambierà il nick da querare. Stesso discorso per i settaggi:

/set [TAB]

o anche in specifico:

/set n[TAB]

Mostrerà tutte le opzioni di setting che cominciano con la lettera “n” (nick,nicklist,etc). Per altre info:

/help opzione

TEMI:

La directory di riferimento è sempre ~/.irssi ; è sufficiente scaricare il file di tema scelto in formato *.theme posizionato nella directory di riferimento. A seguito il comando:

/set theme nome_tema_scelto.theme

E’ disponibile una vasta gamma di temi dal link ufficiale.

SCREEN:

Screen è un applicativo che è decisamente utile quando si lavora su più shell contemporaneamente e si vuole evitare di aprire 2-3-4 terminali con conseguenti login e/o processi sulla stessa box. Esempio: sono sul server1 e mentre lavoro a config.txt con vi ho bisogno di greppare una stringa da esempio.txt; come faccio ad evitare di uscire momentaneamente dal primo editor aperto per digitare i comandi in shell che mi servono per continuare il mio lavoro essendo in remoto o anche in locale? Ecco che screen ci aiuta tenendo aperta una sessione in modo virtuale per noi. Siccome irssi è un client di chat che sfrutta la shell e siccome non è detto che il nostro emulatore di terminale abbia la modalità tabbed e/o vogliamo evitare di aprire 2-3-4 terminali contemporaneamente andando inutilmente ad appesantire il sistema stesso (è cosa buona e giusta :P) utilizzare screen per virtualizzare irssi. Questa cosa ci consentirà in ogni momento di ritornare alla nostra shell di base, nel frattempo screen si preoccuperà di tenere aperta la sessione irssi.

NB:  Potrebbe sembrare macchinoso spiegato, ma è tutto molto semplice. Ovviamente per uscire “modalità detach - staccata” e/o riaprire “modalità attach” si usano delle facili combinazioni di tasti preimpostate attraverso keys. Esempio d’uso:

~$ screen irssi

Aquesto punto, si aprirà una sessione screen con irssi. Volendo virtualizzare “detaching” il processo si userà la combinazione di tasti:

CTRL + a + d

o anche:

CTRL +a  CTRL +d

Ritornati in shell otterremo come output:

[detached]

possiamo visionare i processi virtualizzati in corso:

~$ screen -list
There is a screen on:
 9162.irssi    (Attached)
1 Socket in /tmp/screens/S-user.

Stesso risultato ottenibile con:

~$ screen -ls

Come da esempio il comando ci mostra quanti e quali processi sono attualmente detacchati con relativo socket e percorso.

Per riattaccare il processo attualmente virtualizzato:

~$ screen -raAd

NB: riattaccherà l’applicativo “irssi” nel nostro caso solo se non ci sono altri applicativi detachati in corso, altrimenti sarà necessario specificare quale di essi riattaccare specificando il socket.

~$ screen -r socket

esempio:

~$ screen -list
There are screens on:
 11260.pts-2.genarch    (Detached)
 11245.pts-2.genarch    (Detached)
2 Sockets in /tmp/screens/S-user.
~$ screen -r 11245.pts-2.genarch

NB: riattaccherà il secondo processo listato identificato con il socket 11245.pts-2.genarch.

Volendo **killare uno dei due socket si utilizzerà il comando:

~$ screen -X -S socket kill

Come da esempio precedente, volendo killare il secondo processo in modalità screen:

~$ screen -X -S  11245.pts-2.genarch kill 

Per altre info vi rimando al man screen .

Può  essere comodo a questo punto creare un alias al comando_ **‘screen irssi’_. Modificare **~/.bashrc o /etc/profile come da esempio:

~$ vi ~/.bashrc
alias irssi='screen irssi'

Idem per richiamare irssi in caso di detach di una singola sessione aperta in screen:

alias screenr='screen -raAd'

SCRIPTS:

Irssi di base può sembrare “scarno” e molto spesso si può presentare l’esigenza di abilitare funzioni che non fanno parte del client di base. Per questa ragione irssi permette l’utilizzo di scripts esterni in perl.

NB: Alcuni script richiedono i moduli perl adeguati al caso installati. Se fosse necessario è possibile installare i moduli richiesti dallo script, attraverso CPAN, come da esempio generico:

~# perl -MCPAN -e 'install LWP::Simple'

NB: E’ un esempio di utilizzo di CPAN per installare moduli aggiuntivi perl richiesti da un eseguibile.pl , va adeguato al tipo di modulo richiesto se non fosse presente. Non mi dilungo altrimenti ci vorrebbe un corso accellerato solo per CPAN.

Tornando agli scripts, la directory di riferimento è ~/.irssi/scripts e/o anche ~/.irssi/scripts/autorun per gli scripts che si intendono runnare automaticamente all’avvio del client.

NB: gli script autoloadati non richiedono ovviamente di essere richiamati con i comandi opportuni dal client dopo lo start.

Di default le directory non esistono; per crearle:

~$ mkdir ~/.irssi/scripts ; mkdir ~/.irssi/scripts/autorun

Sul link ufficiale sono raccolti numerosi scripts per le più svariate funzioni. Io elenco quelli che reputo fondamentali per vivere una vita serena di chat IRC:

nicklist.pl : abilita la nicklist sul lato destro del client.

Scarichiamo in una delle directory di riferimento; poi da client irssi:

/script load nicklist.pl

Se irssi è runnato con screen e si intende abilitare la nicklist in screen:

/nicklist SCREEN

Se vogliamo runnare automaticamente lo script all’avvio di irssi:

~$ echo "/script load nicklist.pl" >> $HOME/.irssi/startup

/set nicklist_automode SCREEN
/save

oidenty.pl : abilitazione identificazione ed eventualmente spoofing del servizio auth “ident” attraverso oidentd.

NB: richiede chiaramente opportuna installazione e configurazione del demone oidentd.

usercount.pl : abilitazione dello stat numerico degli utenti presenti nella statusbar.

/load usercount.pl

o anche:

/run usercount.pl
/script load usercount.pl

NB: sono tutti comandi che richiamano uno script.

/statusbar window add usercount

adv_windowlist.pl : statusbar avanzata che mostrerà il nome dei canali seguita della numerazione classica 1,2,3 …

Dopo averla loadata:

/set awl_display_key $Q%K|%n$H$C$S
/set awl_block -15

NB: è possibile mantanere la statusbar classica compresa di usercount.pl per comodità ed abilitarle entrambe oppure decidere di eliminare la vecchia statusbar.

/statusbar window visible inactive

NB: consultare /help statusbar.

Salviamo i cambiamenti:

/save

NB: per invertire il processo e ritornare alla vecchia statusbar:

/script unload adv_windowlist
/statusbar window visible active

trackbar.pl : un linea di demarcazione stile mIRC, che segna il testo e le azioni ancora da leggere.

mouse.pl : implementazione delle funzioni di gestione del client irssi attraverso il mouse (cosa non supportata da irssi e in alcuni casi molto comoda), compreso lo scrolling.

Le funzioni si aggiungono a quelle default, facilmente visionabili con il solito comando:

/set

Di default lo scrolling è settato per funzionare sulla finestra attiva, io preferisco averlo sulla nicklist implementata con nicklist.pl per comodità. Esempio:

/set mouse_scroll_down /nicklist scroll +20
/set mouse_scroll_up /nicklist scroll -20

NB:  una volta abilitato e richiamato lo script, per abilitare il copy/paste nelle finestre attive bisogna cliccare due volte nella finestra attiva. Il mouse restarà di default per 5 secondi in modalità copy/paste.  Si può decidere di cambiare il timer ovviamente.  Stesso discorso per la funzione di spostamento dei canali tenendo in pressione il tasto sinistro e spostando il mouse verso destra/sinistra. Anche questa funzione è ampiamente configurabile.

Il risultato è un client “minimalistico” che non ha nulla da invidiare in funzioni rispetto ai migliori client grafici (xchat,kvirc,etc..)

 

Considerazioni:  capite bene che questo post è solo una panoramica più dettagliata del client, rivolta a quegli utenti che per mancata informazione ritengono i client testuali, in specifico irssi poco consono ad un uso casalingo e deficitario rispetto al prodotto client/usabilità/chat. Spero sia stato in minima parte utile per cambiare quell’idea, tenendo sempre a mente che poi, alla fine, è una questione di scelte.

# End