L’interfaccia uniforme tra le librerie grafiche, ovvero UniformUI per GNOME

Personalmente devo dire che specie in passato, ero uno a cui piaceva cambiare spesso il tema di GNOME. C’è stato il periodo in cui impazzivo per Murrine, poi ho apprezzato Clearlooks, ora sul portatile uso Darkroom con i colori modificati.

Nonostante questo però, ancora prima di cambiare tema, mi accorgevo sempre di una cosa abbastanza spiacevole. :\

Usando GNOME è impossibile non accorgersi di quanto le applicazioni basate su altri toolkit grafici siano… potrei dire orrende. Prendiamo per esempio i programmi per KDE 3… Hanno il classico tema Plastik, che non è brutto, però stona. Ed ha anche lo schema di colori blu standard, che con il tema di Ubuntu (nel mio caso) non ha nulla a che vedere.

Lo stesso vale anche per i programmi KDE 4, che hanno un bel tema, ma troppo diverso dallo stile GNOME. La situazione cambia totalmente se si tratta di Qt 3. Ci troviamo di fronte a un look del secolo scorso. L’interfaccia di base è spartanissima e ti fa odiare il lavorare con Qcad o simili. 😛 Con i programmi Qt 4 qualcosa si salva, l’aspetto è un po’ integrato anche se si può migliorare di molto.

Sintomi da incoerenza multipla
Sintomi da incoerenza multipla

Nell’immagine vedete uno screeshot di Ubuntu Intrepid a cui sono stati aggiunti alcuni software con le varie librerie grafiche, senza modificarne l’aspetto. Si salva solo VLC, che almeno è guardabile, anche se i colori sono un po’ più scuri di quanto dovrebbero.

Quando mi sono capitate queste cose, finora, la soluzione era quella di installare i configuratori di Qt (versione 3 e 4) e cambiare i colori e il tema a mano, fino a trovare una combinazione gradevole. Tutto ciò dopo ogni cambiamento di tema e di colori. Per i programmi KDE, la soluzione poteva essere di installare tantissimi pacchetti KDE 4 solo per cambiare il tema, oppure peggio per KDE 3… Nessun modo.

Ero stanco di questa situazione, ed ho voluto crearmi un modo di poter svolgere il lavoro: cambiare quattro configurazioni diverse per ottenere un aspetto omogeneo in un attimo e senza fatica! 😀

Dopo sabati (e altri giorni) passati a programmare, vari tentativi, bug trovati e fix applicati, sono riuscito ad ottenere uno script in bash estremamente semplice da eseguire. Una volta aperto esso ricava la configurazione di GNOME (colori e tema del puntatore, e in più le icone, anche se per ora è un dato non utilizzato) e scrive le configurazioni adatte per KDE 3, KDE 4, Qt 3 e Qt 4; infine le applica.

Il processo è automatico e indolore. 🙂

Una volta chiuse le applicazioni, si riaprono ed ecco il risultato:

Dopo la cura
Dopo la cura

Durante la realizzazione dello script, ho avuto modo di analizzare un po’ la struttura delle varie configurazioni, capire dove dovevano andare le informazioni, e così via. È stato veramente divertente e sono contento di condividere con voi il risultato.

Lo script si chiama UniformUI e penso che sarà utilissimo a tutti gli utenti GNOME. A mio avviso questo script è comodissimo e permette di risparmiare tempo.

Mi piacerebbe perfezionarlo e migliorarlo, e chissà, magari in futuro potrebbe diventare diffuso. Il codice naturalmente è rilasciato sotto licenza GPL. Se volete dare una mano fatemelo sapere e proponetemi i vostri miglioramenti! 😉

Per usare lo script, scaricate il file da qui (versione 1, vedete sotto per le ultime versioni) e dategli i permessi di esecuzione. Infine, fatelo eseguire in un terminale (altrimenti non vedrete l’output). Chiudete le applicazioni che usano librerie Qt e riapritele.

Noterete subito il cambiamento. 😀

Aggiornamento 12/06/2009: È uscita la versione 2! A questa pagina le note di rilascio ed il download.

37 pensieri riguardo “L’interfaccia uniforme tra le librerie grafiche, ovvero UniformUI per GNOME

  1. Non ci credo!
    sei riuscito a realizzare il motore qt-gtk-engine, che cercavo!!!
    lo segnalo dappertutto il tuo script.
    Per primo pollycoke.
    poi digg, e poi…
    basta, ma grazie, sei un master!

  2. un’altra soluzione (molto) valida è QTCurve: altamente configurabile, uguale identico in tutte le versioni (qt3,4,gtk2). L’unico neo è che non so se esiste un configurator lato gnome (ne ancora me ne sono interessato). Il vantaggio principale risiede nel fatto che il tema è veramente omogeneo sotto tutti i toolkit: non distingui gtk2 da qt3/4 e viceversa.
    Comunque, complimenti per l’idea, penso che faro’ le prove con il tuo script. Eventualmente, si potrebbe pensare qualcosa di collaborativo basato su qtcurve (se ti garba) da farsi insieme.
    salut 😉

  3. @ Ciesko, grazie, possiamo parlarne anche stasera alla riunione del Lug. 🙂
    @ Gianni Amato, io personalmente sì, ma tieni conto che non è il mio mestiere. 😉
    @ Hayabusa, eh eh eh. 😀
    @ Mackos-gnu, be’ cala un po’… Non ho inventato nessun motore, ho solo “pimpato” un po’ quelli esistenti. 😉
    @ LuNa, si, è vero. Guarda un po’ che tema applico alle configurazioni, nel sorgente dello script… QtCurve! 😀 Qualsiasi aiuto è ben accetto comunque, se hai una idea, proviamoci!
    @ Peppiniello, grazie.
    @ frozzi, a te. 😛

  4. Un paio di cose che puoi correggere, se ti va.

    Dovresti controllare se esistono i file, prima di leggerli, ma questo è un peccato che si può lasciar correre.
    La cosa più importante secondo me è che non testi se il tema è installato per l’utente o globalmente. Dando per scontato che sia in /usr/share/themes non sempre funziona, anche auqndo in realtà potrebbe…

    per il resto mi pare un buon lavoro. (forse chiederei comferma prima d’applicare i cambiamenti)

  5. @lazza: azz, guardando gli screenshot mi pareva human 🙂 se è qtcurve meglio ancora 😛 ho visto lo script e non è male, anche se ci sono degli errorini raggirabili (alcuni te li ha suggeriti scimmia)
    Suggerisco di implementare (se ti va inizio a farlo e ti fornisco il .diff) una funzionalità (tramite switch tipo –opzione sulla command line) tipo “–resume” per ripristinare le impostazioni precedenti.
    buon linux a tutti 😉

  6. @ Bl@ster, infatti mi chiedevo anche io come mai. 😛
    @ scimmia, hai perfettamente ragione. Sono difetti che in parte avevo considerato, in parte trascurato, ma li devo correggere. Grazie della segnalazione. 🙂
    @ Federico, prego figurati. 😉
    @ LuNa, Human l’ho tenuto su Gnome nello screenshot, mentre il resto era QtCurve. Naturalmente, se metti QtCurve anche su Gnome è tutto perfetto. 😀
    È fantastico se mi mandi le tue modifiche. 😛 Grazie!

  7. Proposta : se lo script fosse eseguito in automatico quando si cambia tema tramite il configuratore di gnome? Sarebbe molto comodo!
    Un’altra domanda.. Come viene scelto il tema da applicare alle altre librerie? E se questo non esiste viene in qualche modo automaticamente scaricato?
    Ciao! Nicola

  8. @ Sergej, mah, il font di default di Kde è un Sans 10 (o 9), non mi sembra così brutto. 😉 Per i programmi Qt3 invece inietto apposta una impostazione per mettere il font a Sans 9. Casomai mandami per email uno screenshot e qualche istruzione per ripetere il causarsi del “bug”. 😉
    @ lowrence55, ed ora lo hai provato. 🙂
    @ nicola, è vero sarebbe il massimo. Solo che non so come implementare questa cosa! 😛 Il tema viene scelto con un semplice criterio: QtCurve va con tutto e sta bene con Clearlooks e simili. Se il tema non c’è, viene installato. È l’unica parte ubuntu/debian-centrica di tutto lo script, ma si può modificare.
    @ navback e no1globe, grazie!
    @ Davide Capodaglio, hai ragione e lo conoscevo, ma non mi soddisfava per due motivi:
    1. funziona solo su Qt 4… e tutto il resto dove finisce?
    2. scaricato e compilato da svn… Non esattamente la comodità.
    Così ho deciso che avrei preferito vedere i programmi bene indipendentemente dal toolkit, e dalla versione. 😛

  9. Lavoro ottimo! Complimenti davvero…

    Ho notato solo una cosa: io ho impostato come icone oxigen ma le applicazioni kde3 non le prendono… rimane sempre il tema cristal. Da che cosa dipende? puoi implementare le icone anche per le applicazioni kde3?
    (te lo chiedo perché io essenzialmente uso kaffeine e k3b) …

    Grazie ancora e complimenti per l’idea ed il lavoro fatto!

  10. Per ora l’indicazione del tema di icone in uso è solo una informazione stampata a schermo, non è implementata. Se devo essere sincero, all’inizio volevo far sì che venisse cambiato il tema di icone. Poi ho notato che, purtroppo, ciò ha una tendenza molto forte a fare glitch.
    Spero che in futuro si riesca a trovare un modo per evitare questi glitch. Che poi a aggiungere le icone è un attimo. 🙂

  11. ma guarda questo qui.. con che faccia ha potuto plasmare un simile software così scandaloso e demoralizzante: vergogna, vergogna!
    vedremo domani che riscopre l’acqua calda.. pfiu!

    ~:D

  12. Forse gli errori sono dovuti al fatto che se il mio script non trova i colori in gconf li reimmete forzatamente per poi andarli a pescare… Bene comunque che abbia funzionato. 😉

  13. ciao! volevo avvisarti che ho siccome ho ritenuto molto valido il tuo script, ho pacchettizzato in debian gtkstyle integrando nel debian anche il tuo script in postinstall. L’unico problema è che siccome la sezione relativa al cursore non funzionava come dovrebbe su Ubuntu Karmic Koala, l’ho commentata. Se riesci a porre rimedio a questo bug, lo inserisco nella prossima versione del pacchetto.
    Ovviamente per correttezza ho citato il tuo sito e l’autore e ho lasciato tutte le note sul copyright all’interno dello script. Se ci sono problemi contattami. Qui trovi il post con i pacchetti debian per architetture i386 amd64 e generiche: http://www.sourceslist.eu/guide/uniformare-lo-stile-delle-applicazioni-qt-in-ubuntu-con-gtkstyle-e-uniformui/
    ciao Alex

    1. Wow, bello. 🙂 Però fai una cosa, commenta anche il download e l’installazione manuale che fa del motore di rendering, che non funziona altresì, e invece fai in modo che usi Polymer! 😉 Ho intenzione di continuare lo script, ma per ora ho poco tempo per starci dietro, purtroppo.

  14. Ok appena ho un pò di tempo gli dò un occhiata anche perchè devo cercare di capire meglio come funziona. E putroppo anche io non è che abbia poi così tanto tempo libero. 🙂

  15. Ciao io se fossi in te cambierei “~/.themes” etc. etc. con “$HOME/.themes” etc. etc., perché “~” è poco affidabile, a me ha dato errore…
    Comunque ottimo script, sei un genio 😀

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *