UniformUI is the definitive way to integrate Qt and KDE apps in the GNOME desktop

I’ve been working on this script for a while, and now with the second version I think I’m pretty close to perfection. 😛 I’ve always wanted to find a software which could let me have a nice integration between different kind of applications on Ubuntu. My favorite distribution is based on GNOME, which uses GTK+ libraries to render GUI components.

It was already possible for KDE users to render GTK+ controls as native Qt ones. But not vice-versa. You could obviously already find and configure similar styles for Qt and KDE imitating your Clearlooks, Human, or whatever theme. This is a very boring process. You have to install various configuration tools (two for qt and two for KDE) and then set every single color by hand, and also the fonts of course.

My first version of this script (italian article here) was able to configure automatically every settings file (Qt 3, Qt 4, KDE 3, KDE 4) perfectly under Ubuntu 8.10. Now thanks to QGtkStyle too, it’s possible to get an even more integrated environment. You can get a native rendering of qt4 and KDE 4 controls as they were GTK+. That’s great. There is still the problem that you need to adjust Qt 3 and KDE 3 look.

UniformUI version 2 does the trick. 😀 First of all it scans your GNOME settings searching for the colors you’re using, the fonts, and the cursor theme. Then it starts building configuration files. The first is the qt3 one. If you don’t have QtCurve for KDE 3 installed on your system, the script will download it for you and manually unpack it from an Ubuntu package (it should work on every distribution by the way). After that, the KDE 3 configuration file is created.

Finally, it assures that Qt 4 and KDE 4 apps use the native GTK+ style. The only action you have to perform is starting the script in a terminal and typing your password when prompted. This is the default system mode. If you want to run in user mode, then you just have to start the script with the -u switch. In this mode every part of the configuration (even those useful and suitable for everyone) is written in you user directory. The only action performed as root is the installation of QtCurve.

Here’s a brief overview of two apps (one using GTK+ and one using Qt 3) after setting a theme in GNOME and executing UniformUI:

Pretty good, uh?
Pretty good, uh?
Here's another one, with different fonts
Here’s another one, with different fonts

Download it here.

Warning: at this moment the script runs only and exclusively on Ubuntu 9.04 Jaunty Jackalope. Do not try to run it on other versions of Ubuntu.

The script should work with almost every GNOME theme, cursor theme, and font selection. I’ve tested it on Ubuntu 9.04 but it should work in every distribution (just be sure you’ve installed QGtkStyle). If you are encountering problems related to finding the colors, check if your theme supports them, and then try to change a little one of the colors and then bring it back to what it was (manually, don’t use the restore to defaults function). Finally run the script again, it should be fine.

Remember you need to run this script every time you change theme in GNOME. But it’s not such a difficult task.

If you have any suggestions, questions, messages, or anything else… just leave a comment here. I would be delighted if you could tell me whether it is good and suitable to your tastes or not after you’ve given it a try. Thanks.

Update: thanks to Nickholas for correcting my English grammar.

UniformUI versione 2, ottimizzato per Ubuntu 9.04

Ho finalmente trovato il tempo di aggiornare il mio script (viva le vacanze) e perciò sono molto orgoglioso di presentarvi la nuova versione. Per chi non sapesse cos’è UniformUI, ricordo che è uno script che permette di integrare in modo del tutto automatico l’aspetto dei programmi Qt 3, Qt 4, KDE 3 e KDE 4 all’interno di un desktop GNOME (in particolare Ubuntu, ma con pochi accorgimenti funziona su qualsiasi distro). Leggete qui la presentazione.

Provate questa versione solo ed esclusivamente su Ubuntu 9.04.

Questa revisione include le seguenti nuove caratteristiche:

  • versione funzionante ed ottimizzata per Ubuntu 9.04
  • richiede la presenza del motore di temi QGtkStyle
  • fornisce un aspetto assolutamente nativo per le applicazioni Qt 4 e KDE 4
  • aggiunto il supporto per i font: ora le applicazioni hanno gli stessi caratteri dei programmi GNOME
  • due modalità di funzionamento: user mode e system mode

Per quanto riguarda le due modalità, quella predefinita è la system mode. Ciò significa che cambierà lo stile in modo che per tutti gli utenti sia almeno sufficientemente integrato. Questo non vale per i colori naturalmente, perché ogni utente può usare un tema con colori diversi perciò sarebbe inutile. La scelta migliore è che ogni utente esegua lo script in system mode ogni volta che cambia tema.

Per agire in user mode bisogna passare l’opzione -u allo script. Ciò ha come inconveniente, tra l’altro, che lo stile dei widget delle applicazioni KDE 3 non viene cambiato, ma è comunque una cosa di poco conto (però irrisolvibile).

Potete scaricare lo script da qui. Provatelo e fatemi sapere che cosa ne pensate. 😉

Aggiornamento 14/06/2009: corretto un bug per cui in caso di font con stili (tipo grassetto e corsivo), i caratteri rimanevano uguali. Ora gli stili vengono ignorati e il font viene impostato correttamente.

Risolto il problema di crackling di Pulseaudio col controllo PCM

Come ricorderete al tempo in cui avevo scritto la guida per l’installazione di Ubuntu sul mio Dell XPS M1530, ero stato molto preciso nel consigliare le impostazioni per il volume. Riporto qui quanto avevo scritto:

Le impostazioni dell’audio non sono ottimali. È il caso di cliccare col destro sull’applet del volume e selezionare “Apri regolazione volume”. Impostare il canale principale al massimo ed il PCM a circa 4/5. A questo punto un altro clic destro sull’applet e si vanno ad aprire le preferenze. Selezionate come canale di default il PCM. Andate su Sistema > Preferenze > Audio e su “Tracce predefinite del mixer” selezionate sempre il PCM.

Questo aveva permesso (e permette tuttora) di avere una regolazione del volume accurata e lineare. Infatti, regolandolo tenendo sempre al massimo il PCM e muovendo lo slider Principale, avremo un suono pressoché silenzioso fino a che non vengono superati i 3/4 della barra. Avere una barra per il 75% inutilizzata a me non piace, e non lo trovo sensato.

Purtroppo, la finezza dell’uso del PCM ha un risvolto grave.

Colpevole od innocente?
Colpevole od innocente?

Se devo essere sincero non ho la certezza che ciò sia legato a PulseAudio, ma a quanto pare non sono il solo a pensarlo. 🙂 Il fatto è che quando si mette muto il controllo e il sistema tenta di riprodurre un suono, tutto ciò che si ottiene è un fastidiosissimo sfregolio sulle casse. Un cosiddetto crackling che è veramente fastidioso ed inopportuno. Il colpevole è sicuramente il controllo PCM. Infatti, tornando alla configurazione originaria, ciò non accade. Mi sono chiesto quindi se ci fosse un altro modo di avere una regolazione del volume lineare, ma che non risentisse di questo problema.

Alla fine sono riuscito a trovarla. Ora vado a regolare direttamente il Master del dispositivo PulseAudio, così sono a posto. Ho aggiornato il mio precedente post, vi riporto qui quanto ho scritto:

Le impostazioni dell’audio non sono ottimali. È il caso di cliccare col destro sull’applet del volume e selezionare “Apri regolazione volume”. Impostare il canale principale al massimo, così come il PCM. Ora bisogna scegliere come dispositivo “Playback: HDA Intel – STAC92xx Analog (PulseAudio Mixer)”. Il master va messo al 50% per ora. A questo punto un altro clic destro sull’applet e si vanno ad aprire le preferenze. Selezionate come canale di default il Master del dispositivo precedentemente detto. Andate su Sistema > Preferenze > Audio e su “Tracce predefinite del mixer” selezionate sempre tale Master.

Fatemi sapere come vi trovate. 😉

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.