Como preservar a aparência e o comportamento do GTK em Java usando o sudo

Muitas vezes, quando você precisa executar alguns instaladores de Java, basta fazer algo assim:

$ sudo netbeans-8.1-linux.sh 

E infelizmente isso muda sua boa aparência nativa do GTK para um tema Metal feio e padrão.

Você pode testá-lo com esta class de amostra:

 // laf.java import javax.swing.UIManager; public class laf { public static void main(java.lang.String[] args) { try { System.out.println(UIManager.getSystemLookAndFeelClassName()); } catch (Exception e) { } } } 

E alguma saída:

 $ javac laf.java $ java laf com.sun.java.swing.plaf.gtk.GTKLookAndFeel $ sudo java laf javax.swing.plaf.metal.MetalLookAndFeel 

É assim que parece usando o sudo :

Metal padrão ali enquanto estiver usando sudo com Java

Para corrigir corretamente esse comportamento, você pode adicionar um arquivo sudoers:

 vim /etc/sudoers.d/20_keep_java_laf 

com conteúdo:

 Defaults env_keep+=GNOME_DESKTOP_SESSION_ID 

Isso fará com que o UIManager#getSystemLookAndFeelClassName() resolva a aparência agradável do ambiente de trabalho do GTK.

Agora está consertado:

Após correção para sudoers