Index: /trunk/src/VBox/Frontends/VirtualBox/src/selector/UISelectorWindow.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/selector/UISelectorWindow.cpp	(revision 55551)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/selector/UISelectorWindow.cpp	(revision 55552)
@@ -470,7 +470,8 @@
         /* Launch/show current VM: */
         CMachine machine = pItem->machine();
-        vboxGlobal().launchMachine(machine, qApp->keyboardModifiers() == Qt::ShiftModifier ?
-                                            VBoxGlobal::LaunchMode_Headless :
-                                            VBoxGlobal::LaunchMode_Default);
+        vboxGlobal().launchMachine(machine,
+                                   UIVMItem::isItemRunningHeadless(pItem)         ? VBoxGlobal::LaunchMode_Separate :
+                                   qApp->keyboardModifiers() == Qt::ShiftModifier ? VBoxGlobal::LaunchMode_Headless :
+                                                                                    VBoxGlobal::LaunchMode_Default);
     }
 }
@@ -1976,5 +1977,5 @@
     {
         if ((UIVMItem::isItemPoweredOff(pItem) && UIVMItem::isItemEditable(pItem)) ||
-            (UIVMItem::isItemStarted(pItem) && pItem->canSwitchTo()))
+            (UIVMItem::isItemStarted(pItem) && (pItem->canSwitchTo() || UIVMItem::isItemRunningHeadless(pItem))))
             return true;
     }
Index: /trunk/src/VBox/Frontends/VirtualBox/src/selector/UIVMItem.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/selector/UIVMItem.cpp	(revision 55551)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/selector/UIVMItem.cpp	(revision 55552)
@@ -477,4 +477,25 @@
 
 /* static */
+bool UIVMItem::isItemRunningHeadless(UIVMItem *pItem)
+{
+    if (isItemRunning(pItem))
+    {
+        /* Open session to determine which frontend VM is started with: */
+        CSession session = vboxGlobal().openExistingSession(pItem->id());
+        if (!session.isNull())
+        {
+            /* Acquire the session type: */
+            const QString strSessionType = session.GetMachine().GetSessionType();
+            /* Close the session early: */
+            session.UnlockMachine();
+            /* Check whether we are in 'headless' session type: */
+            if (strSessionType.compare("headless", Qt::CaseInsensitive) == 0)
+                return true;
+        }
+    }
+    return false;
+}
+
+/* static */
 bool UIVMItem::isItemPaused(UIVMItem *pItem)
 {
Index: /trunk/src/VBox/Frontends/VirtualBox/src/selector/UIVMItem.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/selector/UIVMItem.h	(revision 55551)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/selector/UIVMItem.h	(revision 55552)
@@ -80,4 +80,5 @@
     static bool isItemStarted(UIVMItem *pItem);
     static bool isItemRunning(UIVMItem *pItem);
+    static bool isItemRunningHeadless(UIVMItem *pItem);
     static bool isItemPaused(UIVMItem *pItem);
     static bool isItemStuck(UIVMItem *pItem);
