如何保护GTK外观和感觉在Java中使用sudo

时间:2015-12-01 10:23:11

标签: java linux gtk environment-variables sudo

通常,当您需要运行某些Java安装程序时,您只需执行以下操作:

$ sudo netbeans-8.1-linux.sh

不幸的是,这会切换你漂亮的原生GTK外观&感觉到一些丑陋的默认金属主题。

您可以使用此示例类对其进行测试:

// 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) {
        }
    }
}

还有一些输出:

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

这是使用sudo看起来的样子:

Standard Metal there on while using sudo with Java

1 个答案:

答案 0 :(得分:0)

要正确修复此行为,您可以添加sudoers文件:

vim /etc/sudoers.d/20_keep_java_laf

内容:

Defaults env_keep+=GNOME_DESKTOP_SESSION_ID

这将导致UIManager#getSystemLookAndFeelClassName()解析桌面,漂亮,GTK外观&感觉。

现在已修复:

After fix to sudoers