[precedente] Ultra Sparc - Copertina - Tips 04/98 [successivo]

Articoli


KDE

Di solito chi utilizza Linux, utilizza X per sviluppare/utilizzare applicazioni che richiedano l'interazione tra più entità (finestre) in un generico display. Le proprietà di X sono abbastanza note e quindi non ci soffermeremo più di tanto. La possibilità di utilizzare più window manager sopra X ha scatenato negli anni, tra gli utenti Unix prima e Linux poi, le fantasie più disparate portando a sviluppare varie interfacce che oltre a consentire di spostare le finestre, permettono di lanciare i programmi di maggiore utilizzo con la semplice pressione di un bottone oppure di modificare l'intero aspetto del desktop (si pensi ad Enlightment). Con un editor si può in un minuto aggiungere una funzionalità ad un interfaccia, permettendo di avere sempre lo stesso desktop. Ad esempio all'università utilizzo da anni sempre un clock in alto a sinistra, una barra *goodstuff, un modulo di fvwm* e il pager per gli n desk differenti.

Questo è durato e ha funzionato da sempre. Un problema nasce però dal fatto che gli ambienti Unix, essendo multiutente, spingono le persone a condividere le informazioni, focalizzando l'utilità di un programma più sulle sue `potenziali capacita' che sulla conoscenza del come utilizzare quella capacità (tanto c'è il man :-)) Con la diffusione dei PC e il confronto diretto tra Linux e Windows/Mac la questione è diventata:
Utente Linux: Beh, io di solito con Linux risolvo così questo problema.
Utente Win/Mac: Sì, ma Unix è difficile da imparare. C'è troppo da leggere.
Utente Win: Si, è ``bastato'' importare il file Autocad in Word e stampare.
Utente Linux: Mmm, latex + ps

È quindi nata l'esigenza di avere un ``desktop'' con delle proprietà che seguissero delle linee ben precise e che permettano di sviluppare delle applicazioni in grado di:

Il KDE ambisce a risolvere perlomeno i primi due punti e forse poi il terzo. Ovviamente questo riguarda un'applicazione che utiliza le librerie kde e quindi non sarà possibile (o quasi) effettuare le prime due funzioni.

Per la prima funzione, si deve stabilire un protocollo, cioè un metodo con il quale le applicazioni possono passarsi i dati e anche che significato hanno questi dati (non ha sento fare il DnD di una cosa che un programma non sa utilizzare :-)). Per la seconda funzione, si devono stabilire una serie di regole (ad esempio dove vanno messi i file che descrivono i menu e dove quelli del mio menù personale). Quando installo un programma, come fanno le persone a sapere che ``esiste'' e come lanciarlo?

Il KDE in questo caso utilizza una directory ``di sistema'' (/opt/kde oppure /usr/local/kde ad esempio) con la seguente struttura:

[yurj@naima yurj]$ ls -l /opt/kde/
total 10
drwxr-xr-x   2 root     root         2048 Mar 31 14:44 bin
drwxr-xr-x   2 root     root         1024 Mar 17 16:43 cgi-bin
drwxr-xr-x   3 root     root         1024 Mar 24 12:47 doc
drwxr-xr-x   3 root     root         3072 Mar 17 16:52 include
drwxr-xr-x   3 root     root         2048 Mar 31 14:44 lib
drwxr-xr-x  13 yurj     users        1024 Mar 24 12:47 share

Esistono altre directory, la cui funzione è specifica. Quindi quando un'applicazione kde si installa, andrà a depositare le pixmap, e il .kdelnk in maniera di apparire nel menù :-).

La modifica delle proprietà del desktop è affidata a un programma (che è un'interfaccia alle chiamate opportune della libreria kde) che permette di specificare un po' di tutto (sfondi, bordi, pulsanti sulle finestre, ecc.). È estensibile tramite moduli aggiuntivi. Ciò che è importante segnalare è che (ogni) applicazione può modificare le impostazioni ad esempio del desktop, chiamado ad esempio (invento il nome :-)) change_background_color la quale chiamerà la funzione di qt (è la librerie che sta sotto il kde) oppure direttamente la funzione di X che permette di cambiare il colore di background.

Il terzo punto non creso sia stato ancora implementato. Esiste uno standard chiamato CORBA (Common Object eccetera) che permetterebbe questo (e anche altro) e ne esiste un'implementazione free per linux:
OmniORB2 per C++ della Olivetti & Oracle Research Labs.

di Yuri Carrer


[precedente] Ultra Sparc - Copertina - Tips 04/98 [successivo]