Guida al Corretto Funzionamento di Compiz 27 June, 2007
Premessa
Dopo la fusione bisognava chiarire un po’ le idee…
Armatevi di pazienza e leggetevi con calma ed attentamente ciò che segue… Alla fine vi sembrerà tutto più chiaro ![]()
Cercherò di essere il più possibile schematico così da rendere più semplice la comprensione…

Come è strutturato “Compiz”
La struttura è la seguente:
- Core, il programma “compiz” che viene lanciato
- Plugins Ufficiali, senza plugins “compiz” non è praticamente niente, come un kernel senza programmi, una shell senza binari installati… Questi sono quelli di base, con pochi effetti, ma sviluppati con maggior attenzione all’usabilità
- Plugins della Community, sono i plugins sviluppati dalla community, rappresentano gran parte del progetto “Compiz Fusion” e comprendono tutti quei plugin più “esotici”, come il cubo riflettente, expo dei desktop, ring switcher, animazioni…
- Decoratori di finestre, come Emerald, Gtk-window-decorator, Kde-window-decorator…
- Utilità di configurazione, come CCSM, aka CompizConfig…
- Programmi esterni, come le trayicons…
Cos’è il Core e cosa sono i Plugins
Come precedentemente detto, compiz senza plugins non è niente.
E’ necessario quindi lanciare questi plugins, che svolgono funzioni di ogni tipo: c’è un plugin per il ridimensionameno (resize), uno per lo spostamento delle finestre (move), uno per le decorazioni (decoratation), uno per il cubo (cube), uno per le “finestre tremolanti” (wobbly) etc etc…
Ce ne sono quindi di tutti i gusti, e costituiscono le “funzionalità” di Compiz.
Immaginatevi quindi “compiz” (il programma che lanciate da terminale o da dove volete) come il “kernel” che gestisce l’accesso alla scheda video. I plugins a loro volta si interfacciano ad esso e producono gli effetti e le funzionalità che poi vediamo.
E’ indispensabile quindi che il Core sia stabile ed il più possibile “centralizzato” (da questo si capisce l’importanza della fusione in seguito ad un dispersivo fork come è stato per Beryl)
L’avvio dei Plugins
Come saprete compiz viene lanciato generalmente con:
compiz
--replace gconf
Ma una volta le cose non stavano così, ai tempi di XGL, un annetto fa
per chi c’era…
Ma cosa significa???
Al di là di quel “--replace” (che sarebbe essenzialmente la flag per dirgli di sostituire qualsiasi gestore di finestre attivo, metacity, kwin, xfwm etc etc…) la sintassi utilizzata è la seguente:
compiz
--replace PLUGIN1 PLUGIN2 PLUGIN3…
Ad esempio per lanciare compiz con la possibilità di muoverlo, il ridimensionamento e le decorazioni basta lanciare:
compiz
--replace move resize decoration
Se c’è qualcuno che si ricorda, infatti, agli inizi si lanciava compiz con lunghissime stringhe di plugin da lanciare, il che ovviamente era scomodo, perchè obbligava al riavvio di compiz tutte le volte che si voleva lanciare un plugin nuovo (oltre ad essere scomodo…)
Ma per ovviare a questo problema era nato il plugin gconf.
Il Plugin Gconf
Il plugin gconf fu il primo tentativo di subordinare l’avvio dei plugins ad un plugin stesso!!!
Gconf infatti è un semplice plugin che gestisce le impostazioni e l’avvio selettivo ed in tempo reale di altri plugins.
Sotto la voce “active_plugins”, utilizzando gconf-editor, è possibile aggiungere e rimuovere i plugins attivi, guadagnando in ordine ed in velocità.
Così quando lanciate compiz --replace gconf accade che compiz lancia subito il plugins gconf, il quale a sua volta (è la funzionalità del plugin) lancia tutti i plugins richiesti… (ad esempio basta aggiungere move, resize, decoration dentro la voce active_plugins per lanciarli).
Allo stesso tempo controlla se vengono fatte modifiche alle impostazioni dei plugins… che vengono salvate/caricate sempre dal demone gconf (il plugin gconf scrive le sue modifiche sul demone omonimo di gnome).
Beryl ed il suo Plugin per le opzioni
Beryl non salvava su gconf… utilizzava file di testo che poteva essere editato mediante il “Beryl Settings Manager”.
Ma come faceva???
Evidentemente non lanciava beryl --replace gconf ma qualcos’altro, tipo beryl --replace BerylSettings (scusatemi ma non so come si chiamava).
BerylSettings era pertanto un plugin che aveva funzionalità simili al plugin gconf, ma che scriveva su semplici file di testo.
Il Plugin Ini
Il plugin ini è stato aggiunto recentemente a Compiz e permette di fare esattamente quello che il plugin gconf fa attraverso gconf, ma scrivendo su file di testo.
Si tratta quindi di un porting migliorato dell’efficiente plugin di salvataggio di Beryl, utilizzato di default da Beryl stesso. (ricordate che beryl non usava gconf?)
Il Plugin Ccp
Il plugin ccp è un nuovissimo plugin frutto della fusione, e permette di lanciare tutti i plugin settati dal configuratore.
In pratica, un avvio del tipo:
compiz
--replace ccp
lancerà a sua volta tutti i plugin abilitati nel configuratore, risolvendo dipendenze e svolgendo il lavoro completamente in automatico.
Che figata, ed il bello è che sembra funzionare veramente bene
La Configurazione tramite CompizConfig
Il plugin ccp “legge” i settaggi che avete impostato in CompizConfig e lancia tutti i plugin richiesti. Se abilitate un nuovo plugin tramite il configuratore lui provvederà a lanciarlo, senza alcuna modifica manuale a gconf (che non è nemmeno più richiesto).
Il configuratore può poi utilizzare diversi backend (dove salvare i files):
- Flat file configuration
- Gconf backend
Di base viene fornito con la configurazione testuale (i settings si trovano nella home nella directory ~/.compizconfig), ma volendo si possono riutilizzare i settings di gconf e salvarli direttamente lì: basta installare il pacchetto con pacman (compizconfig-backend-gconf) e selezionare il backend voluto (premete il pulsante in basso a sinistra per accedere alla schermata per la selezione del backend).
CompizConfig è il corrispettivo (svolge una funzione analoga) di Beryl Settings Manager del vecchio Beryl. In più però, questo CompizConfig è indipendente dai plugin installati, ovvero installando nuovi plugins lui aggiungerà automaticamente le nuove voci, senza dover installare una versione aggiornata di CompizConfig!
Decoratori
Potete installare 3 configuratori diversi:
- Gtk-window-decorator, conosciuto brevemente come gwd, può utilizzare i temi di metacity
- Kde-window-decorator, conosciuto brevemente come kwd, può utilizzare i temi di kwin
- Emerald, il vecchio decoratore di beryl, con i suoi orrendi temi che possono essere scaricati da gnomelook
I primi due sono sviluppati in compiz-core e vengono forniti praticamente di default, il terzo è installabile a parte (pacchetto emerald-git).
Per funzionare, richiedono che il plugin decoration sia abilitato.
Programmi Esterni
Giusto per ricordare… è in sviluppo una trayicon (compiz-icon), che funziona e non funziona (io ho trovato già 3 grossi bug nonostante non capisca niente di python). Va fatta funzionare con dei workaround finchè non fixeranno i bug ![]()
Ricordo pure uno stralcio di manager per l’avvio di compiz, chiamato compiz-manager.
Conclusioni
Spero di aggiornare questo articolo perchè l’ho scritto molto di fretta, essendo veramente impegnato ultimamente… però mi sembrava giusto scriverlo per fare un sunto della situazione…
Spero abbiate gradito lo sforzo
Ciao, Cimi ![]()
Posted in Compiz, Howto, Italian |
27 June, 2007 alle 17:02
ottimo articolo…
ora è tutto molto più chiaro.. soprattutto per chi (come me) non mastica molto inglese…
complimenti anche per il lavoro che svolgi per la comunità.
27 June, 2007 alle 17:18
Un articolo veramente chiarificatore, ha risolto dei dubbi amletici che avevo rinchiuso nel cassetto del “oh, se va lascio che vada, senza farmi troppe domande”
27 June, 2007 alle 17:19
si capisce
buona spiegazione.
27 June, 2007 alle 17:23
[...] News Tranquilli, a chiarirvi le idee ci pensa Cimi, il geniale inventore di Murrine¹, con questo illuminante post che descrive splendidamente il panorama ancora un pò oscuro e confuso [...]
27 June, 2007 alle 17:40
Ottimo, finalmente capisco cosa leggo
è un vero guazzabuglio, dovrebbero darsi un po’ di contegno caspita!
Ma non c’è niente di simile a beryl manager? Perchè l’hanno abbandonato del tutto? Non si poteva portare?
27 June, 2007 alle 17:50
Infatti, finalmente un po’ chiarezza.
Forse ho capito anche perché avevo alcuni problemi.
Grazie Cimi.
P.S.: mantener questo post aggiornato sarebbe una buona idea..
27 June, 2007 alle 17:51
@Raideiin:
Ho specificato meglio nel post che CompizConfig svolge una funzione analoga
27 June, 2007 alle 18:20
Complimenti Cimi per l’articolo! Chiaro e diretto..stavo impazzendo per capire cosa diavolo facesse il mio compiz!!! Grazie!!
27 June, 2007 alle 19:15
Complimenti per la stesura, è venuta super-bene!
27 June, 2007 alle 20:19
Complimenti per lo sforzo, giusto qualche precisazione:
1) I plugin adesso sono di due tipi: quelli distribuiti con il core e quelli distribuiti con Compiz Fusion, questo è molto importante da specificare, perché ci saranno alcuni plugin “ufficiali” sviluppati secondo linee più rigide e altri più liberi, aggiuntivi. Quindi le sezioni sono: core, plugin ufficiali, plugin aggiuntivi (Compiz Fusion), eccetera…
2) Per quanto ne so il plugin gconf è esistito da subito. Quelle righe infinite che si vedevano nelle prime guide per lanciare Compiz non erano lì per un motivo preciso o giustificato, ma erano frutto della scarsa conoscenza di chi scriveva. Scrivendo il comando “compiz –replace gconf place cube move decoration eccetera” in realtà compiz leggeva solo “–replace gconf” e ignorava il resto. Ovviamente gconf era (come oggi) opzionale, per questo in molti si confondono.
3) È possibile lanciare compiz senza gconf, senza ccp e senza ini, e configurarlo direttamente con chiamate DBus. Non ho mai sperimentato una mostruosità del genere cmq…
4) Beryl - che io ricordi - non si lanciava con “beryl –replace BerylSettings” o con niente del genere, ma direttamente con beryl-manager. E ovviamente c’è stato un momento in cui beryl funzionava con gconf, come Compiz, ma forse il nome non era ancora Beryl
5) La vera forza di CompizConfig Settings Manager è in realtà quella di scovare da solo le opzioni dei vari plugin. Non bisogna mettere mano al codice del configuratore ogni volta che si aggiunge una nuova opzione ad un plugin.
Credo che queste fossero le segnalazioni più importanti da fare. Come sempre, buon wobblamento a tutti
27 June, 2007 alle 21:01
@felipe: felice di vederti qui

Allora io ero un niubbone
1) La mia “sbadataggine” mi ha fatto trascurare di specificare questo particolare importante, ora sistemo
2) Questo non lo sapevo
3) Dbus = Modalità suicidio?
4) Certo… Io intendevo che come chiamata “nascosta” di beryl-manager facesse proprio quello… compiz-manager non fa altro che chiamare compiz –replace ccp (l’equivalente di berylsettings) ma in maniera trasparente.
E’ beryl-manager che lancia beryl –replace “BerylSettings”
5) L’avevo specificato questo!
28 June, 2007 alle 0:06
grande, ottimo articolo!
28 June, 2007 alle 10:12
Il backend che c’era per Beryl non era flat-file?
28 June, 2007 alle 11:22
Sì c’è scritto anche nella guida che salvava su file di testo
28 June, 2007 alle 12:13
Guida graziosa
Il plugin ini è stato una manna dal cielo per chi come me usa una distro light con solo xfce ma vuole usare compiz con gtk-window-decorator ( sperando in un xfwm4-compiz-decorator :p )
)
Ora son curioso di provare questo nuovo configuratore sperando sempre che non richieda gconf o altre enormi librerie gnome alla compilazione (ancora non ho visto i sorgenti
28 June, 2007 alle 17:22
Cimi scusa l’ot, ma dove ti posso mandare una mail? Devo chiederti una cosa in merito ad un problema che ho con un tema.
28 June, 2007 alle 17:31
@Cimi:
1) ok
2) ok
3) sì, na cosa del genere ._.
4) ok, non avevo capito
5) ah, mi sembrava ti riferissi solo al rilevamento dei plugin installati, e non alle loro relative opzioni. ok
Come sempre, buon wobblamento (continuato) a tutti!
28 June, 2007 alle 18:11
Articolo fantastico, ora devo capire come si inserisce Murrine nel discorso e poi sarò felice…
28 June, 2007 alle 18:14
Ottttttttttttttttttttttttttttttttttttttttttttttttimo lavoro, anche se purtroppo non posso permettermi di usare compiz, almeno finché non sistemeranno i problemi con programmi che usano pesantemente OpenGL (vedi ParaView & c.)
CiauZ
28 June, 2007 alle 23:06
Ciao raga,
a me non funziona:
1) kwd crasha che è uno s****o e per forza devo avviare compiz –replace -v -c emerald &
2) sono con una radeon mobility 9200 Aiglx e open source driver (che sotto ne compiz ne beryl mi dà problemi) con una lentezza pazzesca.
3) non riesco a ruotare il cubo con la rotellina del mouse ma solo con i pulsanti.
Insomma…qualcuno mi da una mano
Grazie
29 June, 2007 alle 9:29
Bell’articolo!Si capisce finalmente qualcosa.
Che i temi di Emerald siano brutti però proprio no.
Su Murrine no comment sembra di tornare nel passato!Bei contrasti grafici e cura nei dettagli peccato sia obsoleto nel 2007.
29 June, 2007 alle 11:25
Obsoleto? E cosa non sarebbe obsoleto?
29 June, 2007 alle 11:40
bella guida cimi
29 June, 2007 alle 15:03
Obsoleto Murrine?! Ma come c#z…
Ovviamente userai uno di quei c#z di temi pixmaps..
Beata ignoranza.
29 June, 2007 alle 16:24
ciao! molto chiarificatore! a volte il semplice fatto di leggere che un “backend” e’ il file dove vengono salvate le informazioni, ti fa chiarezza su una serie di cose… (e io che pensavo che un backend fosse una cosa chissa’ quando complicata :P).
grazie!
chiudo con la domanda piu’ stupida del mondo, perdonatemi…
cosa fa di preciso il decoratore?
e che differenza c’e’ tra murrine e le altre cose? io sono uno di quei “beati ignoranti” citati da Xander…
mi bastano anche dei link ad articoli o cose varie (anche in inglese)
29 June, 2007 alle 17:43
grazie e complimenti
29 June, 2007 alle 21:44
Ottimo, ci voleva un po’ di chiarezza: anche se smanettando un pochino non ci voleva molto a capire come funziona compiz-fusion e come è stato suddiviso in core, plugin ufficiali e plugin che definirei “extra” (ossia belli da vedere, alcuni un po’ tamarri, li accomuna il fatto di essere inutili :p ), questo articolo mi ha chiarito alcune cose riguardo la provenienza di alcune cose, ossia cosa deriva da Beryl e cosa è stato mantenuto di Compiz. Complimenti!
PS: Un solo appunto: da quel che scrivi dedurrei che lanciando il comando “compiz –replace” senza altri parametri non si avvia nessun plugin. Eppure io lo avvio in questo modo, ed i plugin funzionano, e sono quelli attivati tramite CCSM (backend gconf)… Forse il parametro ccp lo prende di default? Sapresti chiarirmi questo punto? Grazie di nuovo.
30 June, 2007 alle 0:05
@riva.dani: Ubuntu?
Se non erro usa cosa non standard tipo compiz.real o cose simili
30 June, 2007 alle 13:23
Xfwm non supporta il “protocollo” –replace, bisogna killarlo precedentemente.
30 June, 2007 alle 18:03
Scusate se intervengo ma ho letto un po’ di imprecisioni riguardo CompizConfig ed i precedenti in Beryl.
Prima di iniziare vi consiglio di leggere questo articolo (ora è down, quindi semmai leggete la cache) che scrissi quando CompizConfig si chiamava ancora CCS, ma che vale ancora quasi totalmente (basta fare s/ccs/compizconfig/ e poco più :P)…
Iniziamo col dire che CompizConfig è l’aggiornamento e miglioramento di quello che era LibBS (libBerylSettings), quindi chiunque sta usando libCompizConfig di fatto usa parte del codice che era presente già in Beryl (sopratutto nella gestione dei plugin, nell’autoriconoscimento delle opzioni e dei conflitti).
Beryl non necessitava alcuna direttiva di lancio per quanto riguarda la configurazione (o comunque il caricamento di plugin) visto che automaticamente caricava libbs che poi pensava a tutto il resto (come ora fa libcompizconfig)…
Beryl manager, per tanto, non faceva altro che lanciare “beryl –replace”. Niente di più.
Da quando è nato Beryl-Settings (insieme a libbs - quindi si parla di molti mesi fa), il configuratore si adattava ai plugin, quindi già allora installando un nuovo plugin, o modificando un’opzione direttamente dal “plugin.c” il settings manager si adattava… Esattamente come avviene ora… Tutto questo insieme alla gestione dei conflitti era già stato implementato da mesi e mesi. Quindi di fatto c’è stato solo un porting mirato all’integrazione con strumenti “compizari”
Poi, il plugin INI è tutt’altro che basato su quello di Beryl, è strutturato in modo ingestibile da un umano imho (un file per ogni plugin, ci vuole una vita per tutto!) ed è stato scritto da zero da mykedee.
Il backend ini di compizconfig, invece è pari-pari quello di Beryl (anche a livello di codice)…
Il backend gconf, invece, non copia i settaggi del plugin gconf di compiz per usarli con l’ini di compizconfig, ma agisce DIRETTAMENTE sulle chiavi usate da gconf, il che rende identico (a livello pratico, non tecnico) avviare compiz –replace ccp o compiz –replace gconf (se si usa il backend gconf per ccp)
Mi sembra non ci sia altro, ma ora vado di fretta sicché non so nemmeno se ho postato tutto
Bye
Treviño
1 July, 2007 alle 13:45
Cimi, Ubuntu usa compiz.real, hai ragione…
1 July, 2007 alle 19:06
@Trevino:
non c’è nessuna imprecisione perchè ho specificato che il comando “lanciato” da beryl era in realtà “trasparente all’utente”, leggi anche la risposta di felipe
Riguardo al backend gconf io nn ho mai detto che li copiasse sul file di testo, ho scritto che “utilizza gconf e salva lì” (si la frase in effetti nn è chiara =) )
Comunque se si usa –replace ccp e –replace gconf non è affatto la stessa cosa perchè se noti ccp gestisce anche le dipendenze dei plugins mentre gconf legge active_plugins, quindi sono incompatibili purtroppo (solo i settaggi sono gli stessi)
2 July, 2007 alle 0:50
[...] creato ad hoc, c’è chi fa campagna pubblicitaria mostrandone le potenzialità e chi ne spiega il funzionamento. Una sola cosa mancava: una bella gui di configurazione stile beryl-manager. Presto detto qualcuno [...]
2 July, 2007 alle 2:19
Riguardo Beryl non ho parlato di incorrettezze, ma di imprecisioni per questo motivo… Visto che da quanto scritto non è così chiaro che la cosa era “trasparente all’utente”.
Considerando poi che beryl - in quanto fork - non necessitava di un plugin come ccp che fa da “ponte” per le librerie di configurazione, ma usava direttamente queste chiamandole dal core.
Riguardo il backend gconf (ah, ne esiste anche uno per kconfig come saprai, magari aggiungilo…), la frase che hai anche riscritto te, aveva tratto in inganno…
Come ho scritto io, non sono ovviamente la stessa cosa a livello tecnico… Ma a livello dei dati trattati sì. La gestione delle dipendenze/conflitti/ecc… non è dovuta a ccp ma a libcompizconfig (che ccp chiama…), e - non ho controllato - ma il backend gconf dovrebbe comunque usare la variabile active_plugins (ordinandola correttamente).
Tutto il resto, che ho detto mi pare corretto… Soprattutto ripeto che sia libcompizconfig che «l’autoconfigurarsi del configuratore» sono tutt’altro che una novità… Entrabe le cose sono beryliane.
Bye
2 July, 2007 alle 2:42
@Treviño:
) ho preferito omettere per evitare gaffe! 
Ti ricordo che hai di fronte a te un berilliano di un tempo (non sopportavo la politica di compiz quando era ancora troppo “excessive”, ora invece sono stracontento del merge e di dare tutti i meriti a compiz del core, ma ricordiamoci che beryl non è stata soltanto una “bambinata per ragazzini”).
Per kconfig ovviamente lo so ma essendo io altamente ignaro del funzionamento di kconfig (ed essendo questo blog gnome-oriented
Magari ci puoi illuminare tu… comunque per me ini power! (non sono mai stato un amante di gconf)
Per quanto riguarda la gestione di gconf io non ho notato modifiche ad active_plugins quando aggiungo/tolgo plugins, per quello ho detto che ccp scrive soltanto i settings.
Ora controllo
2 July, 2007 alle 3:30
Bene, bene…
Su kconfig non ti so dire troppo, anche io uso ini (troppo più comodo da gestire anche via nano se necessario)!
Per gconf, controlla magari… Anche se sicuramente basta guardare il codice del backend per vederlo al volo
4 July, 2007 alle 0:32
[...] la siguiente direccion me encuentro un articulo interesante del creador de Murrine, en el que nos comenta los elementos [...]
5 July, 2007 alle 18:07
Per quella che è la mia esperienza se si vogliono sfruttare le potenzialità di compizconfig si DEVE lanciare compiz con compiz –replace ccp. Lanciando, al contrario, con compiz –replace gconf si ottengono degli strani risultati utilizzando il configuratore (non tutti i plugin vengono abilitati “al volo” e spesso e volentieri il sistema scazza nel riconoscere i plugin effettivamente in uso).
Pensate che questo sia un bug? se è così lo segnalo…
7 July, 2007 alle 14:09
salve, io sono abbastanza nuovo di linux. credete che sia meglio per adesso lasciare installato beryl o di mettere gia compiz fusion? perchè ho letto che non è ancora molto stabile. io uso Ubuntu feisty
8 September, 2007 alle 17:39
Grazie al tuo ottimo lavoro, ora finalmente compiz-fusion funziona divinamente ache sul mio portatile, grazie 1000! (ati a parte)
8 June, 2008 alle 16:17
[...] Il repo è di Shame e vi fornisce i pacchetti stable/unstable di fusion per etch, lenny e [...]