Programmi per console: un giorno senza X

Konsole icon by everaldo.comUn punto di forza di Linux per i “pro” (e per alcuni geek di mia conoscenza – ciau Add :) ) è senza dubbio la possibilità di utilizzare programmi che funzionino da console. Niente mouse, niente clic: solo uno schermo nero che permette di fare praticamente di tutto.

Del resto è innato nella storia di Linux: tutto deve essere possibile eseguendo comandi – KDE, GNOME, FluxBox e tutti gli altri sono venuti anni se non decenni dopo /bin/sh.

X icon by Oxygen KDE Project.Rovistando nei repository è sorprendente quanto software utilizzabile da console esista. Di certo non sono user friendly, ma una volta presa la mano sono più rapidi e leggeri delle controparti grafiche e cliccose. Non avranno effetti stupefacenti, ma fanno il loro lavoro e in genere lo fanno piuttosto bene. Ho deciso quindi, ispirato da un paio di post di altri blog, di elencare alcuni dei programmi più conosciuti (o anche meno) per console. Di fatto in caso di emergenza quasi tutto si può fare anche da una poverissima riga di comando.

Quasi tutti i software qui riportati si possono installare su (K)Ubuntu tramite aptitude/Synaptic/Adept o qualunque altra interfaccia usiate per scaricare i software dai repository, selezionando il pacchetto avente lo stesso nome del programma che desiderate installare. Le poche eccezioni a questa regola sono opportunamente evidenziate nel post.

Web browser (Elinks)

ElinksCi sono parecchi browser testuali in giro, il più vecchio dei quali è Lynx, nato nel 1992. Nel 1999 è stato rilasciato Links, e da un suo fork è nato ELinks. Elinks è probabilmente il più flessibile e accessoriato tra i “concorrenti”: supporta i frame e le tabelle, può essere reso alquanto colorato e supporta addirittura il mouse (la mente vacilla di fronte a cotanta tecnologia). Inoltre se avete una casella di posta elettronica su gmail, questa offre una versione senza javascript che funziona perfettamente in ELinks. Per i casi di emergenza ELinks può rivelarsi alquanto utile.

Posta elettronica (Mutt)

MuttMutt è uno storico client per la posta elettronica nato nel 1995. L’ultima release stabile mentre scrivo è stata rilasciata il 1° Novembre – nonostante l’età la comunità e lo sviluppo di Mutt continuano a essere molto attivi. Mutt supporta SMTP, IMAP, POP3 e con una patch persino NNTP. I suoi schemi di colore sono completamente personalizzabili così come anche le scorciatoie da tastiera. Può addirittura usare automaticamente configurazioni diverse in base al mittente dell’email, alla cartella corrente o altro ancora.

Gestione file (mc)

Midnight CommanderI veramente vecchi riconosceranno subito dallo screenshot che Midnight Commander (per gli amici mc) è un clone del vecchissimo Norton Commander, anno 1986. mc è un gestore di file molto potente: permette ovviamente di spostare o rinominare file, ma ha anche la peculiarità di permettere di rinominare gruppi di file contemporaneamente utilizzando le espressioni regolari, può funzionare da client FTP, supporta la navigazione all’interno dei pacchetti RPM e molto altro.

Chat

MSN/Yahoo!/AIM/ICQ (TMSNC/CenterIM/Finch)

tmsncLe scelte qui si dividono: se siete davvero minimalisti e vi interessa solo MSN Messenger (probabilmente il client di chat più utilizzato in Italia) TMSNC è il client che fa per voi. In meno di 50KiB (a cui andrebbero sommati i 2.8 MiB delle libssl0.9.8 che però probabilmente già avete installato) contiene un client per MSN completo e sufficientemente intuitivo. Il progetto TMSNC è stato fermato dal suo programmatore principale, per cui non aspettatevi bugfix o nuove versioni di questo programma. Il cuore del suo codice confluirà nel programma Fama IM, che però è ancora troppo poco maturo per poter essere utilizzato in pianta stabile.CenterIM
Una possibile alternativa è CenterIM. Nato come fork di CenterICQ, questo client testuale supporta connessioni multiple contemporanee con più account anche con protocolli diversi. In particolare supporta ICQ2000, Yahoo!, AIM, MSN Messenger e Jabber/XMPP. Dovendo supportare più tipi di chat inevitabilmente non permette di utilizzare le feature caratteristiche di ogni protocollo.

Un’ulteriore possibilità è Finch. Finch è una interfaccia testuale a libpurple, la stessa libreria utilizzata da Pidgin, e questo gli permette di supportare un’enormità di protocolli differenti in un’unica interfaccia (AIM, ICQ, Jabber/XMPP, MSN Messenger, Yahoo!, Bonjour, Gadu-Gadu, IRC, Novell GroupWise Messenger, QQ, Lotus SameTime, SILC, SIMPLE, MySpaceIM e Zephyr). D’altro canto questo vuol dire che è costretto a portarsi dietro una serie di dipendenze piuttosto pesanti, per cui potrebbe non essere la scelta migliore se l’obiettivo è quello di esser quanto più leggeri possibile.

IRC (Irssi)

irssiEssendo una rete storicamente piena di geek e nerd, esistono moltissimi client testuali per IRC, ma il principe è sicuramente Irssi.

La possibilità di modificarlo tramite scripting perl, l’autologging, il rilevamento dei copia & incolla, la funzionalità proxy e molto altro lo rendono un client estremamente popolare (almeno nella nicchia di utenti che preferiscono l’interfaccia testuale), e ha feature che lo rendono molto appetibile agli smanettoni e probabilmente comparabile in alcuni campi a client più blasonati come XChat o KVIrc.

RSS (Newsbeuter)

Non sono un particolare fan dei feed RSS: ne seguo giusto una ventina, che potrebbero sembrare tanti, ma in realtà sono molto selezionati e non sputano fuori cinquanta notizie ogni ora. Un “aggregatore” di RSS però è per molti uno strumento immancabile. Nel caso delle versioni testuali la parte del leone la fa in genere Raggle, un buon lettore di RSS con molte features, il cui unico, grosso neo è che l’ultima release stabile risale a Dicembre 2005 e da allora il progetto sembra abbandonato.
newsbeuterUn’alternativa molto accattivante è Newsbeuter. È altamente personalizzabile, e supporta anche un meccanismo di plug in che permette, ad esempio, di aggiungere automaticamente un articolo del feed ai propri preferiti su del.icio.us. Può utilizzare opzionalmente elinks come motore di rendering, dispone di un sistema di memorizzazione dei preferiti, può importare l’elenco dei feed da leggere via OPML e è in grado di sincronizzarsi con un eventuale account su bloglines.com (e non è escluso che in futuro supporti anche Google Reader).

Visualizzare immagini (zgv)

Per quanto possa sembrare completamente demente, è possibile visualizzare le immagini su Linux senza utilizzare alcun server X. Il barbatrucco è possibile grazie a un programma che si chiama zgv e a un pizzico di magia di nome SVGAlib. Non allego alcun screenshot dato che l’interfaccia di zgv si riduce all’immagine mostrata a schermo. In realtà zgv permette anche di navigare le cartelle per caricare l’immagine scelta mostrando prima le anteprime. Supporta i più comuni formati grafici (gif, bmp, jpg, png, tif e così via), permette di fare slideshow e altro ancora.

Nel caso in cui sia disponibile un server X e si desideri semplicemente mostrare l’immagine a schermo senza avviare gwenview o chi per lui, è possibile utilizzare display , un semplice programma compreso nel pacchetto imagemagick. display non fa altro che aprire una finestra che mostra l’immagine desiderata.

Visualizzare video (MPlayer)

MPlayer con le aalibAncora più strana è l’idea di guardare video senza utilizzare X. Ma grazie a un pizzico di magia di nome fbdev, MPlayer è in grado di mostrare i video in una comunissima console. Per usarlo in questa modalità è sufficiente avviare mplayer con lo switch -vo fbdev o -vo fbdev2. Non posso assicurare nulla sulle performance in questa modalità, dato che il device /dev/fb0 non è presente sul mio Kubuntu e non ho voglia di scoprire cosa fare per crearlo.

Un’alternativa(?) è avviare mplayer con lo switch -vo aa oppure -vo caca. In questo modo MPlayer convertirà ogni frame in una sua rappresentazione “equivalente” con caratteri ASCII e la mostrerà sullo schermo. Con la seconda variante è possibile avere una rozza sostituzione dei colori.

Musica (MOC/cplay)

L’offerta di player per MP3 e simili è sorprendentemente varia. Le due scelte più popolari sono MOC e cplay. MOC farà sentire a casa chi utilizza Midnight Commander per gestire i file, dato che l’interfaccia di utilizzo è molto simile. MOC supporta anche lo streaming da internet (Icecast e Shoutcast) e presto supporterà anche last.fm.

cplay offre funzionalità simili, permette di ascoltare le canzoni di una playlist in ordine oppure in modo casuale, include una funzionalità di ricerca per trovare le canzoni in un certo sottoalbero del filesystem.

Editing testo (Vim/Emacs)

vimLinux ha a disposizione un arsenale enorme di editor di testo più o meno raffinati. I giganti della situazione sono però senza dubbio Emacs e Vim. Tra gli utenti dell’uno o dell’altro si scatenano periodicamente guerre di religione. Usare l’uno o l’altro in realtà probabilmente dipende da quale ci si trova a usare per primo e si decide di approfondirne lo conoscenza.

Entrambi gli editor sono estendibili (Emacs tramite Emacs Lisp e Vim usando Python, Ruby, Tcl, Perl e altri linguaggi) e hanno varie librerie che li trasformano, ad esempio, in IDE che permettono l’editing, la compilazione e il debugging di programmi. Supportano il syntax highlighting, l’autocompletamento, possono interfacciarsi a motori di correzione ortografica e così via.

In effetti sono entrambi così flessibili da avere plug in che li utilizzano in modo completamente deviato: ci sono client IRC, si può giocare a Tetris, a Sudoku, avviare sessioni psicoanalitiche con ELIZA e molto altro. Una battuta comune su Emacs è che sarebbe un buon sistema operativo se solo avesse un buon editor di testo.

Distrazioni a parte è importante capire che Emacs e Vim sono editor di testo e non word processor: si focalizzano sul contenuto e non sull’aspetto dei documenti. Usandoli in accoppiata con LaTeX si possono usare come editor WYSIWYM (What You See Is What You Mean: quello che vedi è quello che intendi, filosofia contrapposta a quella WYSIWYG What You See Is What You Get quello che vedi è quello che otterrai).

Entrambi gli editor hanno controparti per il mondo grafico, rispettivamente XEmacs e gVim.

L’enormità di funzioni messe a disposizione dai due editor, che qui non ho neanche scalfito in superficie, li rendono estremamente potenti ma anche molto complessi. La curva di apprendimento è piuttosto ripida, ma lo studio necessario viene ripagato in entrambi i casi con un aumento della produttività e con la capacità di automatizzare facilmente processi noiosi e che portano via del tempo.

A causa della complessità dei due programmi è importante iniziare con una buona guida che ne spieghi almeno l’utilizzo di base. Vim mette a disposizione il programma vimtutor, ma sono facilmente utilizzabili in rete molti altri tutorial tra il serio e il faceto. Stessa cosa vale per Emacs.

N.B.: io uso Vim, ma non ve ne farò una colpa se utilizzerete Emacs ;)

P2P

BitTorrent (rTorrent)

rTorrentI torrent sono un ottimo mezzo per condividere file di grosse dimensioni, e un buon client per BitTorrent fa sempre comodo. Uno dei più utilizzati è rTorrent (screenshot al lato dal sito ufficiale di rTorrent). rTorrent vanta l’utilizzo di una libreria molto performante, supporta la crittazione del protocollo e può essere controllato oltre che tramite l’interfaccia ncurses via XML-RPC over SCGI o via FastCGI. Dalla versione 0.7 di rTorrent è supportato anche il protocollo PXE (Peer eXchangE) per mantenere vivi i download anche in caso di momentanea assenza del tracker.

eDonkey/Kad (aMule)

aMule cmdL’altra faccia del P2P è la rete eDonkey in parallelo alla rete Kadmelia: le due reti a cui si collegano client come eMule o aMule. E proprio aMule può essere utilizzato anche in ambiente puramente testuale. Per farlo è necessario modificare il file amule.conf , individuare la riga AcceptExternalConnections e impostarla a 1 (AcceptExternalConnections=1) e inserire l’hash md5 della password che si desidera usare alla destra di ECPassword=. Per ottenere l’hash della password si può eseguire echo -n pwd | md5sum, dove “pwd” va sostituito con la password che si vuole utilizzare per controllare aMule. Effettuate queste modifiche si deve avviare amule eseguendo amuled -f: in questo modo partirà solo il demone di aMule che si occupa del download senza GUI. Ora si può eseguire amulecmd, che si connetterà all’istanza di amuled e permetterà di controllarlo tramite un’interfaccia a riga di comando personalizzata.

Altri programmi utili

Riporto in ordine esclusivamente alfabetico un altro po’ di programmi utili o curiosi da utilizzare esclusivamente dall’interfaccia testuale:

  • antiword: trasforma un documento di Microsoft Word in uno stream di puro testo comodamente leggibile da console.
  • cmatrix: uno “screensaver” che ricorda la famosa animazione di Matrix.
  • oleo: un foglio di calcolo testuale particolarmente amichevole per chi utilizza Emacs.
  • pdftotext: trasforma un documento pdf in testo – fa parte del progetto Xpdf, ma su *Ubuntu fa parte del pacchetto poppler-utils.
  • tpp: utility per effettuare presentazioni alla PowerPoint in formato esclusivamente testuale.

Direi che è tutto. Ricordatevi che potete gestire più programmi testuali contemporaneamente usando Screen (wiki), dtach (wiki) o Twin (wiki). Salutate X :)

One thought on “Programmi per console: un giorno senza X

  1. Add

    Grazie mille! Sai che ora passerò le prossime nottate a provarli tutti, vero? In realtà è una nuova spinta a formattare e mettere Dapper…per ora grazie, quando li provo poi ti dico (e soprattutto chiedo!) :)
    Dimenticavo, pian piano sto leggendo tutto, complimenti, bel blog!

Leave a Reply