diff --git a/apps/desktopgui/src/net/i2p/desktopgui/Main.java b/apps/desktopgui/src/net/i2p/desktopgui/Main.java
index 56abf9e2c57be8aa935720bf876c221e2096259a..03aa216b6ec2b693c8908b7e7679f9aee7d26747 100644
--- a/apps/desktopgui/src/net/i2p/desktopgui/Main.java
+++ b/apps/desktopgui/src/net/i2p/desktopgui/Main.java
@@ -7,6 +7,7 @@ package net.i2p.desktopgui;
 import javax.swing.SwingUtilities;
 import javax.swing.UIManager;
 import javax.swing.UnsupportedLookAndFeelException;
+import java.awt.GraphicsEnvironment;
 
 import net.i2p.I2PAppContext;
 import net.i2p.desktopgui.router.RouterManager;
@@ -54,7 +55,21 @@ public class Main {
      * Main method launching the application.
      */
     public static void beginStartup(String[] args) {
-        System.setProperty("java.awt.headless", "false");
+        boolean wasHeadless = Boolean.valueOf(System.getProperty("java.awt.headless")).booleanValue();
+        if(wasHeadless) {
+            System.setProperty("java.awt.headless", "false");
+        }
+        boolean headless_check = true;
+        try {
+            // X permissions error is a java.lang.InternalError (a Throwable)
+            GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
+            headless_check = ge.isHeadlessInstance();
+        } catch (Throwable t) {}
+        if (wasHeadless)
+            System.setProperty("java.awt.headless", "true");
+        if (headless_check) {
+            return;
+        }
         try {
             UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
         } catch (ClassNotFoundException ex) {
@@ -87,6 +102,7 @@ public class Main {
             }
             
         });
+
     }
     
     /**