<- PW: GTK+ Terza Puntata - Copertina - PW: IOCCC ->

PlutoWare


Multi Gnome Terminal

di Cristiano De Michele


L'articolo...

Multi Gnome Terminal (MGT) è una versione estesa del terminale standard di GNOME che permette di aprire più terminali in una stessa finestra, di passare rapidamente dall'uno all'altro tramite la pressione di opportune combinazioni di tasti, di visualizzare lo stato dei terminali non visibili e altro ancora. Tale progetto si ispira a konsole, il terminale di KDE 2.x e a screen, l'intramontabile applicativo GNU per la gestione di più terminali in un'unica console.


Indice


Storia recente in breve

     La prima versione di Linux con cui ebbi a che fare fu la 0.99, che installai utilizzando una decina di dischetti scaricati dalla rete; era l'anno 1995 e fu decisamente un buon inizio. Ai tempi utilizzavo fvwm, anche se presto scoprii fvwm95, ed ero davvero entusiasta, con linux, di poter avere sul mio PC un sistema operativo unix-like come quelli che usavo in facoltà. Certo, la configurazione del server X a caratteri (quell'xf86config che molti ricorderanno:-) era un pò scoraggiante, ma io e mio fratello passavamo anche nottate cercando di far funzionare la nostra scheda video al meglio con XFree86. Le cose sul piano dell'interfaccia grafica rapidamente migliorarono con l'avvento di KDE e di distribuzioni come SuSE o RedHat qualche anno fa. Poi arrivò KDE2, con il suo look fantasy accattivante per un appassionato lettore del Signore degli Anelli come me. Quest'ultima poteva tutto sommato anche essere una buona soluzione definitiva per il Desktop, tuttavia per curiosità, poco prima dell'estate scorsa, decisi di provare GNOME. Installai quindi la Ximian GNOME dalla rete, e ne fui molto impressionato.

     La mia curiosità per il progetto GNOME nasceva dal fatto che avevo letto su "Linux facile" la vicenda delle librerie originariamente non libere Qt, e del tentativo di GNOME di ripristinare la libertà compromessa con l'uso di KDE, che utilizzava appunto le Qt. In sostanza dunque iniziai ad utilizzare GNOME lanciando screen (il noto programma della GNU) nell'emulatore di terminale standard, per poter avere a disposizione più terminali nella stessa finestra, ed evitare in tal modo di sovraffollare il desktop. Durante il lavoro infatti devo collegarmi a diversi computer, e l'esigenza di avere più terminali è piuttosto forte; così pur essendo screen un buon programma, mi stuzzicava l'idea di poter avere a disposizione una soluzione grafica per il multi-tabbing. Lo scorso mese di Luglio pensai dunque di iniziare a sviluppare una sorta di screen grafico, e ne parlai con un mio amico. Originariamente l'idea era di fare il merge di GNOME Terminal e screen, facendo dunque il necessario reverse engineering sui due programmi.

     Io mi sarei dovuto occupare di GNOME Teminal e il mio amico di screen, successe tuttavia che il mio amico non aveva molto tempo da dedicare alla faccenda, mentre io invece, spinto dalla mia solita curiosità, iniziai a mettere le mani nel codice del terminale GNOME, dopo essermi fatto un'idea di come funzionassero le GTK+. Aggiunsi prima di tutto un widget Notebook, che era il modo naturale per avere più terminali, ma ovviamente le cose non funzionavano ancora molto bene: aggiungendo un nuovo tab con un terminale quest'ultimo non era del tutto funzionale come previsto. Ciononostante, tra un crash e un piccolo passo in avanti riuscii a sistemare tutti i problemi relativi alla creazione ed eliminazione di un nuovo terminale.

     C'era allora da mettere a posto tutto quello che riguardava le Preferenze e la configurazione del Terminale. Con un pò di pazienza venni a capo anche di questo problema, e iniziai a pensare alla possibilità di creare nuovi terminali eseguendo in essi un comando predefinito, un pò come in screen ma in maniera grafica usando bottoni o menu. A questo punto, come si può capire, l'originaria idea di riciclare il codice di screen era stata abbandonata, e il progetto aveva preso una diversa direzione, ma la cosa non era male, anzi si stava facendo interessante. Decisi anche di contattare Miguel de Icaza, che per me al tempo era soltanto l'autore del Terminale, ed egli si mostrò molto entusiasta del progetto del multi terminale. Contemporaneamente misi MGT su SourceForge ( http://www.sourceforge.net ), dove tuttora ho a disposizione spazio per la pagina web di MGT, una repository CVS e altre cose; inoltre, ed era ormai fine Agosto, feci anche il mio primo annuncio su FreshMeat. Ancora non conoscevo CVS ed ero all'oscuro di molte altre cose, ma c'era da imparare, mi stavo davvero divertendo e i primi commenti positivi di utenti che avevano scaricato MGT furono degli ottimi stimoli ad andare avanti: potenza dell'Open Source!

     La prima versione che preparai era la 1.1.1 volendo sottolineare il fatto che il programma era già stabile ed utilizzabile e che presto avrei fatto uso di CVS. I primi package che preparai furono un tarball dei sorgenti e delle patch per gnome-core, infatti originariamente avevo lavorato sui sorgenti di GNOME, anche se presto mi sembrò opportuno creare un pacchetto separato e indipendente. La storia è più o meno questa, una storia quindi guidata dal caso ma motivata dall'entusiasmo e dalla passione per Linux, ossia per la libertà!


Le estensioni di Multi Gnome Terminal

     MGT, come ho già avuto modo di dire, è nato come una patch per gnome-core, e solo in seguito è divenuto un progetto a sè stante. Nella prima release, rispetto al terminal standard, aveva in più un notebook widget e la possibilità di personalizzare i menu per creare nuovi terminali (ved. Fig6 ) con comandi definiti dall'utente. Non era molto, ma già era di grande aiuto per molti che amavano GNOME ed erano costretti a riempire il Desktop con svariati terminali.

In Fig1 e in Fig2 si può vedere la finestra principale di MGT con più terminali aperti in vari tab, nella prima figura sono presenti solo la "buttonbar" e la "menubar" mentre nella seconda figura è presente la "toolbar" ma non la "buttonbar", e i tabs sono posti in basso. Queste due figure quindi mostrano bene l'estrema configurabilità dell'interfaccia di MGT. In tali figure si noti anche come i primi due tab sono colorati in blu: ciò vuol dire che in tali terminali è stato stampato del nuovo output. Se fossero rossi, ad esempio, (tali colori possono essere comunque personalizzati ved. Fig 5) significherebbe che in quei terminali è viene stampato correntemente del nuovo output. Oltre ciò un'altra caratteristica del programma è che il titolo della finestra è esattamente il titolo assegnato dal terminale corrente; questo vuol dire che se si cambia terminale il titolo della finestra cambia corrispondentemente. Con gnome-terminal standard, infatti, con delle opportune sequenze di escape si può assegnare al titolo della finestra un titolo a piacimento; Multi Gnome Terminale si comporta sotto tale aspetto in maniera del tutto trasparente.

Al riguardo si consideri anche la Fig3 , che mostra i settaggi generali nella finestra delle Preferenze; il titolo della finestra può anche essere stampato nei tab usando l'opzione 'Titled Tabs'; inoltre si può scegliere il numero di caratteri del titolo che al massimo devono essere stampati nei tab. Riguardo alle opzioni generali, nella finestra delle Preferenze si noti anche il checkbutton per abilitare o meno la conferma alla chiusura del terminale; si può evitare in tal modo di chiudere inavvertitamente la finestra e con essa tutti i terminal aperti all'interno di quest'ultima. Passiamo ora a dare una rapida descrizione delle opzioni relative al background (Preferences−> Image) riportate in Fig4 : anche qui ho aggiunto qualcosa: l'immagine di sfondo anzitutto può anche essere riscalata alle dimensioni del terminale, inoltre il background di quest'ultimo, sia esso trasparente o un immagine, può essere tinteggiato e scurito a proprio piacimento. Tali ultime estensioni sono state mutuate da Eterm, e possono rendere dal punto di vista grafico MGT molto accattivante.


Sviluppi futuri: roadmap

    La lista dei task di MGT è ancora molto lunga, il feedback infatti che ricevo giornalmente dalle persone che usano MGT la fa crescere continuamente; la branch attuale di MGT è la 1.3.x che sostanzialmente è una branch di bugs fixing, cioè nella quale non sto aggiungendo nuovità al programma ma solo eliminando bug. La release di sviluppo invece è la 1.4.0 in cui le novità principali saranno tre: oltre a queste, tra i cambiamenti minori, ci sarà l'aggiunta nel menu popup del comando 'Remove' per rimuovere il terminale corrente e nella toolbar di bottoni hardset per creare nuovi terminali. Infine nella release 1.5.0 verrà aggiunto il supporto per aprire due terminali nello stesso tab e il grouping dei comandi, ossia la possibilità di organizzare i menu dei comandi con sottomenu. Parallelamente a tale lavoro di sviluppo di MGT, sto anche portando avanti il porting di MGT in GNOME 2 che richiede qualche attenzione, visto che l'utilizzo delle librerie Bonobo e gconf ha come conseguenza una quasi totale riscrittura del codice :).


Il Progetto Multi Gnome Terminal

La registrazione del progetto a Sourceforge è avvenuta il 28/08/2001, e nonostante siano passati solo 5 mesi molte cose sono accadute. Infatti ora esistono i package per Mandrake, Debian, Red Hat, SuSE, NetBSD, Slackware; sto inoltre lavorando all'implementazione delle estensioni di MGT nel terminal standard di GNOME 2: riguardo a GNOME 2 se qualcuno è curioso esiste già anche una versione molto preliminare del terminale standard nella CVS repository di GNOME in cui ho aggiunto parte delle features di MGT. La home page è http://multignometerm.sf.net ed è rilasciato sotto licenza GPL. Nell'home page troverete tutti i package riportati prima e anche le informazioni per fare il check out della developer release di MGT dalla CVS repository a sourceforge. Nel caso in cui qualcuno sia interessato a collaborare al progetto di MGT, io mi auguro che degli appassionati volenterosi ci siano, poiché c'è ancora molto da fare.

Per dare un contributo comunque non dovete essere necessiaramente dei programmatori C o degli esperti di Gtk+, infatti ci sono anche da fare cose non concernenti la programmazione, come ad esempio lo sviluppo di una pagina web migliore di quella attuale. Attualmente Marina Sturino e Claudio Dalla Vecchia stanno sviluppando un nuovo sito per MGT più curato graficamente, e potete contattarli se vi va di aiutarli nello sviluppo del sito di MGT. Oltre al sito un altro aspetto non è molto curato attualmente, usando un eufemismo, è la documentazione: per capire meglio cosa intendo andate alla Home Page di MGT e seguite il link su DOCS di MGT, vi renderete conto di quanto ci sia da fare ancora. In ogni caso sia che vogliate collaborare a tale progetto sia che vogliate sapere qualcosa in più non esitate a scrivermi.


Fig1: MGT: menu e button bar con tabs in alto

Fig2: MGT: menu e toolbar, con tabs in basso

Fig3: Preferenze: Settaggi Generali.

Fig4: Preferenze: Sfondo

Fig5: Preferenze: Colori

Fig6: Edit dei comandi



L'autore

Cristiano De Michele, Laureato in Fisica all'Università di Pisa attualmente è studente di Dottorato presso l'Universià di Napoli "Federico II", per quanto concerne gli interessi scientifici si occupa di simulazioni numeriche di liquidi sottoraffreddati mentre riguardo agli interessi informatici, appassionato di Linux, è coinvolto nel progetto GNOME ed è membro della GNOME Foundation.


<- PW: GTK+ Terza Puntata - Copertina - PW: IOCCC ->