diff --git a/apps/systray/java/src/net/i2p/apps/systray/SysTray.java b/apps/systray/java/src/net/i2p/apps/systray/SysTray.java
index 8e555114c4387adf1a915b540190a02da9dd4a9a..6900d6921146bcdbb9c6396139ae9e148b73cf32 100644
--- a/apps/systray/java/src/net/i2p/apps/systray/SysTray.java
+++ b/apps/systray/java/src/net/i2p/apps/systray/SysTray.java
@@ -18,6 +18,8 @@ import snoozesoft.systray4j.SysTrayMenuIcon;
 import snoozesoft.systray4j.SysTrayMenuItem;
 import snoozesoft.systray4j.SysTrayMenuListener;
 
+import net.i2p.util.SimpleTimer;
+
 /**
  * A system tray control for launching the I2P router console.
  *
@@ -31,6 +33,7 @@ public class SysTray implements SysTrayMenuListener {
     private static Frame          _frame;
     private static SysTray        _instance;
     private static String         _portString;
+    private static boolean        _showIcon;
     private static UrlLauncher    _urlLauncher    = new UrlLauncher();
 
     static {
@@ -41,9 +44,10 @@ public class SysTray implements SysTrayMenuListener {
 
         _browserString = _configFile.getProperty("browser", "default");
         _portString = _configFile.getProperty("port", "7657");
+        _showIcon = Boolean.valueOf(_configFile.getProperty("visible", "true")).booleanValue();
 
         if (!(new File("router.config")).exists())
-            openRouterConsole("http://localhost:" + _portString + "/");
+            openRouterConsole("http://localhost:" + _portString + "/index.jsp");
 
         if (System.getProperty("os.name").startsWith("Windows"))
             _instance = new SysTray();
@@ -58,6 +62,15 @@ public class SysTray implements SysTrayMenuListener {
     private SysTray() {
         _sysTrayMenuIcon.addSysTrayMenuListener(this);
         createSysTrayMenu();
+        SimpleTimer.getInstance().addEvent(new RefreshDisplayEvent(), REFRESH_DISPLAY_FREQUENCY);
+    }
+    
+    private static final long REFRESH_DISPLAY_FREQUENCY = 30*1000;
+    private class RefreshDisplayEvent implements SimpleTimer.TimedEvent {
+        public void timeReached() {
+            refreshDisplay();
+            SimpleTimer.getInstance().addEvent(RefreshDisplayEvent.this, REFRESH_DISPLAY_FREQUENCY);
+        }
     }
 
     public static synchronized SysTray getInstance() {
@@ -105,14 +118,23 @@ public class SysTray implements SysTrayMenuListener {
         _configFile.setProperty("browser", browser);
     }
 
+    public void refreshDisplay() {
+        if (_showIcon)
+            _sysTrayMenu.showIcon();
+        else
+            _sysTrayMenu.hideIcon();
+    }
+    
     public void hide() {
+        _configFile.setProperty("visible", "false");
+        _showIcon = false;
         _sysTrayMenu.hideIcon();
     }
 
     public void iconLeftClicked(SysTrayMenuEvent e) {}
 
     public void iconLeftDoubleClicked(SysTrayMenuEvent e) {
-        openRouterConsole("http://localhost:" + _portString + "/");
+        openRouterConsole("http://localhost:" + _portString + "/index.jsp");
     }
 
     public void menuItemSelected(SysTrayMenuEvent e) {
@@ -133,11 +155,13 @@ public class SysTray implements SysTrayMenuListener {
             if (!(browser = promptForBrowser("Select browser")).equals("nullnull"))
                 setBrowser(browser);
         } else if (e.getActionCommand().equals("openconsole")) {
-            openRouterConsole("http://localhost:" + _portString + "/");
+            openRouterConsole("http://localhost:" + _portString + "/index.jsp");
         }
     }
 
     public void show() {
+        _configFile.setProperty("visible", "true");
+        _showIcon = true;
         _sysTrayMenu.showIcon();
     }
 
@@ -149,5 +173,6 @@ public class SysTray implements SysTrayMenuListener {
 //        _sysTrayMenu.addSeparator();
         _sysTrayMenu.addItem(_itemSelectBrowser);
         _sysTrayMenu.addItem(_itemOpenConsole);
+        refreshDisplay();
     }
 }