--- a/src/desktop/hotrecoll.py
+++ b/src/desktop/hotrecoll.py
@@ -13,31 +13,23 @@
 import wnck
 import os
 import sys
+from optparse import OptionParser
 
 def main():
-    # We try to establish a timestamp for the calls to activate(), but
-    # usually fail (the event_peek() calls return None). 
-    #
-    # Try to find a nice default value. The x server timestamp is
-    # millisecond from last reset, it wraps around in 49 days, half
-    # the space is set aside for the past So a value just below 2**31
-    # should be most recent if the server is not too old?
-    # The right way to do this would probably be to create an unmapped
-    # window and arrange to receive some real event.
-    timestamp = 2**31 - 1
+    parser = OptionParser()
+    parser.add_option("-m", "--move-away", action="store_true", default=False,
+                      dest="clear_workspace", 
+                      help="iconify to other workspace to avoid crowding panel")
+    (options, args) = parser.parse_args()
+
     screen = wnck.screen_get_default()
     while gtk.events_pending():
-        event = gtk.gdk.event_peek()
-        if event != None and event.get_time() != 0:
-            timestamp = event.get_time()
         gtk.main_iteration()
 
     recollMain = ""
     recollwins = [];
     for window in screen.get_windows():
         if window.get_class_group().get_name() == "Recoll":
-            # print "win name: [%s], class: [%s]" % \
-            #      (window.get_name(), window.get_class_group().get_name())
             if window.get_name() == "Recoll":
                 recollMain = window
             recollwins.append(window)
@@ -47,13 +39,26 @@
         sys.exit(0)
 
     # Check the main window state, and either activate or minimize all
+    # recoll windows.
     workspace = screen.get_active_workspace()
     if not recollMain.is_visible_on_workspace(workspace):
         for win in recollwins:
             win.move_to_workspace(workspace)
-            win.activate(timestamp)
+            if win != recollMain:
+                win.unminimize(gtk.get_current_event_time())
+        recollMain.activate(gtk.get_current_event_time())
     else:
+        otherworkspace = None
+        if options.clear_workspace:
+            # We try to minimize to another workspace
+            wkspcs = screen.get_workspaces()
+            for wkspc in wkspcs:
+                if wkspc.get_number() != workspace.get_number():
+                    otherworkspace = wkspc
+                    break
         for win in recollwins:
+            if otherworkspace:
+                win.move_to_workspace(otherworkspace)
             win.minimize()
 
 if __name__ == '__main__':