From afc0e0240e966b3bb7a9527d60566adbf76ee7ac Mon Sep 17 00:00:00 2001 From: Cristian Maglie Date: Wed, 24 Oct 2018 18:20:58 +0200 Subject: [PATCH] Override desktop check when setting look and feel on linux The swing UIManager class detects the correct look and feel settings by looking inside the `sun.desktop` system property, here's the extract of the JDK: String desktop = AccessController.doPrivileged(new GetPropertyAction("sun.desktop")); Toolkit toolkit = Toolkit.getDefaultToolkit(); if ("gnome".equals(desktop) && toolkit instanceof SunToolkit && ((SunToolkit) toolkit).isNativeGTKAvailable()) { // May be set on Linux and Solaris boxs. return "com.sun.java.swing.plaf.gtk.GTKLookAndFeel"; } Since we want always the GTK look and feel (even if the desktop is not strictly a GNOME desktop) we force the `sun.desktop` property always to `gnome`. --- arduino-core/src/processing/app/linux/Platform.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/arduino-core/src/processing/app/linux/Platform.java b/arduino-core/src/processing/app/linux/Platform.java index 28cdc63f4..2220aaeb6 100644 --- a/arduino-core/src/processing/app/linux/Platform.java +++ b/arduino-core/src/processing/app/linux/Platform.java @@ -39,6 +39,8 @@ public class Platform extends processing.app.Platform { @Override public void setLookAndFeel() throws Exception { + // Override desktop check + System.setProperty("sun.desktop", "gnome"); super.setLookAndFeel(); GTKLookAndFeelFixer.installGtkPopupBugWorkaround(); }