9 luglio 2009

Dalla parte del cliente

Anche se alla fine non ho capito se il governo ha rinviato di 6 mesi l'entrata in vigore della azione collettiva (per voi ribelli esterofili class action) anche per la nostra italica penisola, possiamo rallegrarci del fatto che c'è comunque qualcuno che si prende cura della soddisfazione e dei diritti dei clienti: Alexander Larsson e Cody Russel.

OK, non sono due giornalisti d'assalto come Bernstein e Woodward, né due avvocati, né due (euro)parlamentari, ma solo due sviluppatori che stanno lavorando (o hanno appena finito di lavorare) rispettivamente sui branch client-side-windows e client-side-decorations delle GTK+.

Se il primo promette maraviglie al di là della comprensione di un comune mortale, me per primo (per cui non ne parlerò per evitare di dire cazzare, lasciando l'ingrato compito ad altri, magari Andrea "Cimi" Cimitan¹), l'intento e le finalità del secondo sono più immediate. Traducendo le parole di Russel: "supportare nelle GTK+ la possibilità di avere decorazioni di finestra temizzabili gestite dal client attraverso una proprietà di stile"

Se non avete capito il senso di tali parole e ve state lì attoniti al nunzio... beh, cercate su Internet una buona spiegazione di come funziona X Window System, della sua architettura client/server, della distinzione toolkit/window-manager e solo dopo aver fatto vostri tali concetti tornate qui a leggere quanto segue.

Fatto? (cit.)

Bene, in tal caso, come le vostre ricerche dovrebbero avervi mostrato, in X Window System c'è sempre stata una distinzione tra il toolkit, usato per disegnare la parte "interna" della finestra, e il window manager, usato per disegnare la decorazione e gestire il posizionamento e similia. Così come le vostre ricerche dovrebbero avervi mostrato che il window-manager può usare un toolkit o altre funzioni di un desktop environment (per esempio Metacity usa GTK+ per disegnare i menù contestuali e GConf per memorizzare le sue informazioni) senza comunque perdere la possibilità di essere eseguito in un altro ambiente grafico.

Nel branch client-side-decorations si implementa la possibilità per le finestre create con il toolkit GTK+ di "disabilitare" il window-manager (suppongo usando la proprietà "undecorated") e lasciare che sia la finestra stessa a fornire le porzioni e le funzioni necessarie all'interazione: trascinamento, ridimensionamento, pulsanti di chiusura, massimizzazione, minimizzazione.

Non ho avuto modo di provare, ma cià non vieta voi di cominciare a perdervi nelle fantasie più sfrenate!

[1] cose avete capito??? l'ingrato compito di spiegarlo, non di dire cazzate....

6 commenti:

Cimi ha detto...

Ohh noo! xD

Cimi ha detto...

Comunque scarica questo: http://desrt.mcmaster.ca/random/icanhasedit.py
e provalo con: "python ./icanhasedit.py file_di_testo"

Dà un'idea di quello che potrebbero essere le decorazioni integrate nel toolkit.

Source: http://blogs.gnome.org/desrt/2008/08/11/icanhasedit/

Leo ha detto...

L'idea del client-side-decorations non è male, ma siamo sicuri che sia la strada giusta da seguire?

Fra i principi di un buon software vi è anche la singola responsabilità delle entità, e qui lo stiamo trasgredendo (anche se solo in parte), affidando al toolkit "interno" alla finestra la gestione della stessa (che non dovrebbe competergli!).

Inoltre, siete sicuri che tal modifica non intaccherà l'Estendibilità del software?

Io sono un po' scettico.

Luca Ferretti ha detto...

@Leo

In realtà un po' scettico lo sono anche io, si rischia di mandare all'aria parecchie cose e parecchie convenzioni.

E poi mi piacerebbe sapere quale è la finalità a lungo termine e le motiviazioni pragmatiche di tutto ciò: ha a che vedere con i meccanismi di interazione descritti nel recente design paper di gnome-shell?? Per quei meccanismi sarebbe necessario qualcosa del genere (ma anche altro) nel toolkit, solo che Cody Russel non ha mai messo mano finora a gnome-shell ed è lavorante Canonical...

Boh?!? Aspettiamo e vediamo

Cimi ha detto...

A noi l'idea è sempre piaciuta, si hanno moltissimi vantaggi sia da parte del theming (molto più gradevole se gestita dall'engine), sia da parte delle prestazioni (confrontate cairo contro l'xml di metacity...) che dalla parte dell'usabilità (finalmente sarà possibile spostare le finestre anche prendendole per la toolbar e non solamente sul bordo)

Leo ha detto...

State seguendo l'evoluzione della faccenda?

http://blog.didrocks.fr/index.php/post/Design-experience-and-demos-in-GTK-Clutter