Problemas Compiz e Java, Soluções
- 21 de junho de 2008
Se você usa Java no desktop e mantém o Compiz ativo, pode encontrar janelas que ficam cinza, travam ou não respondem direito. Aconteceu comigo usando o Zend Studio todo dia. Com o Compiz ligado, a janela abria e ficava completamente cinza. A correção é simples e funciona para outros aplicativos Java.
No caso do Zend, basta editar o script de inicialização e exportar uma variável antes do restante do código. O arquivo costuma ter um nome como Zend_Development_Environment. Abra e adicione a linha abaixo logo no começo:
vim ZendStudio-5.5.0/Zend_Development_Environment
export AWT_TOOLKIT=MToolkit
Depois de salvar, inicie o programa de novo. Aqui resolveu de primeira e o Compiz continuou ativo sem atrito.
O que está acontecendo por trás é um choque entre o compositor gráfico e o toolkit padrão de janelas do Java. Ao forçar o uso do MToolkit, o Java passa a desenhar de um jeito mais compatível com o ambiente composto e os artefatos visuais somem. O ajuste vale para qualquer app Java. Se preferir aplicar só a um programa, crie um wrapper simples:
#!/bin/bash
export AWT_TOOLKIT=MToolkit
java -jar meuapp.jar
Se quiser que todos os seus programas Java usem esse caminho, adicione ao seu ~/.bashrc ou ~/.profile:
export AWT_TOOLKIT=MToolkit
Também dá para ajustar um atalho .desktop usando env no Exec:
[Desktop Entry]
Name=Minha App Java
Exec=env AWT_TOOLKIT=MToolkit java -jar /caminho/para/app.jar
Icon=icone.png
Type=Application
Se ainda aparecer janela cinza, botões que não respondem ou renderização estranha, feche o app, confirme se a variável foi aplicada e tente novamente. Em casos teimosos, reinicie a sessão gráfica. Como alternativa, algumas combinações ajudam em cenários específicos:
# Tentar look and feel GTK
export AWT_TOOLKIT=gtk
# Forçar Java 2D sem aceleração problemática
export JAVA_2D_NODDRAW=true
export J2D_D3D=false
Ou passando propriedades direto na execução:
java -Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel -Dawt.toolkit=sun.awt.motif.MToolkit -jar aplicacao.jar
Em distribuições como Ubuntu, Fedora, openSUSE e Debian com efeitos ativos, esse ajuste costuma ser suficiente para IDEs e ferramentas como Eclipse, NetBeans, IntelliJ, Zend Studio, JDeveloper, além de editores e utilitários em Java. A ideia é simples: manter o Compiz ligado e, ao mesmo tempo, usar seus aplicativos sem dor de cabeça.