Problemas Compiz e Java, Soluções

Problemas Compiz e Java, Soluções
Tempo de leitura: 3 min de leitura
Link copiado!

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.