O amadurecimento das linguagens de programação orientadas a objeto proporcionou uma vasta integração da plataforma e aplicativos. Excelentes linguagens como C, C++, Python, Java etc são constantemente usadas neste tipo de desenvolvimento, se destacando sem sombra de dúvida aquelas que possuem uma melhor performance e agilidade para o caso específico.
Quando voltamos ao assunto de programação para Desktop, uma das melhores soluções no mundo de código aberto são as linguagens Python e C, pois ambas possibilitam uma grande integridade com o Sistema Operacional, o qual o mesmo é desenvolvido.
O Compiz trabalha com facilidade e domina o gerenciamento de janelas, sem que possam ter algum tipo de conflito com os demais gerenciadores. Desenvolvido inicialmente pela Novell, empresa de software, hoje seu desenvolvimento é movido por grandes contribuidores do mundo inteiro.
Qualquer software que se preze deve possuir um codificação limpa e bem definida para que possam ser facilmente interpretadas por outros desenvolvedores. Por este motivo todos os desenvolvedores devem seguir o mesmo estilo de programação.
Estilo básico do algorítimo
Exemplo simples:
static void
defaultMinimizeAnimInit (CompScreen * s, CompWindow * w)
{
ANIM_SCREEN(s);
ANIM_WINDOW(w);
if (animZoomToIcon(as, aw))
{
aw->animTotalTime /= ZOOM_PERCEIVED_T;
aw->animRemainingTime = aw->animTotalTime;
aw->usingTransform = TRUE;
}
defaultAnimInit(s, w);
}
Como estamos falando de código aberto, os colaboradores usam editores de textos simples para trabalhar. Ambos recomendam o editor Vim.
Estrutura dos plugins
Virtualmente todos os plugins precisam armazenar dados de alguma forma, e na maioria das vezes tem que ser unida a uma estrutura central, um bom exemplo seria o armazenamento de dados do processo de uma animação ou a opacidade de uma janela em desvanecimento do plugin.
Para se obter esses acessos os plugins precisam de acesso à base privates em um CompDisplay e um em um CompScreen e em um CompWindow. O displayPrivateIndex é armazenado em um espaço dos plugin, geralmente visível na parte superior de um código. O initDisplay pedirá () este índice e alocará a memória para a estrutura, a seguir une a estrutura a d->base.privates [displayPrivateIndex] (que é uma união, assim d->base.privates [displayPrivateIndex] .ptr).
Para os outros índices aplica-se o mesmo processo, a não ser que o screenPrivateIndex seja armazenado geralmente na estrutura de encaixe da exposição, e o windowPrivateIndex na estrutura de encaixe da tela.
A maioria dos plugins setup para alcançar estas funções, chamadas geralmente PLUGINNAME_DISPLAY (o *d) CompDisplay, por exemplo, que conduziria a um *pd de PluginnameDisplay; variável, onde o p é a inicial do plugin.
Plugin cubo igualmente ganhou a capacidade para alcançar as estruturas de cada um, que outros encaixes (plugins) podem usar demasiadamente. Isto é conseguido por uma função do núcleo que permita que plugin peça um displayPrivateIndex de outro plugin; o descanso é uma matéria de compartilhar um encabeçamento, ou seja, são as libs (bibliotecas compartilhada) que estão em jogo.