Index: /trunk/include/VBox/log.h
===================================================================
--- /trunk/include/VBox/log.h	(revision 61559)
+++ /trunk/include/VBox/log.h	(revision 61560)
@@ -464,4 +464,6 @@
     /** Main group, IGuestPropertyChangedEvent. */
     LOG_GROUP_MAIN_GUESTPROPERTYCHANGEDEVENT,
+    /** Main group, IGuestScreenInfo. */
+    LOG_GROUP_MAIN_GUESTSCREENINFO,
     /** Main group, IGuestSession. */
     LOG_GROUP_MAIN_GUESTSESSION,
@@ -1011,4 +1013,5 @@
     "MAIN_GUESTPROCESSSTATECHANGEDEVENT", \
     "MAIN_GUESTPROPERTYCHANGEDEVENT", \
+    "MAIN_GUESTSCREENINFO", \
     "MAIN_GUESTSESSION", \
     "MAIN_GUESTSESSIONEVENT", \
Index: /trunk/src/VBox/Main/idl/VirtualBox.xidl
===================================================================
--- /trunk/src/VBox/Main/idl/VirtualBox.xidl	(revision 61559)
+++ /trunk/src/VBox/Main/idl/VirtualBox.xidl	(revision 61560)
@@ -16699,5 +16699,6 @@
   <enum
     name="GuestMonitorStatus"
-    uuid="a0001cb1-97c9-496d-82bc-616c19a9e212"
+    uuid="6b8d3f71-39cb-459e-a916-48917ed43e19"
+    wsmap="managed"
     >
     <desc>
@@ -16716,9 +16717,53 @@
       </desc>
     </const>
+
+    <const name="Blank" value="2">
+      <desc>
+        The guest monitor is enabled in the guest but should display nothing.
+      </desc>
+    </const>
   </enum>
+
+  <enum
+    name="ScreenLayoutMode"
+    uuid="9a982f4f-b815-4802-8539-d0b46435a7b7"
+    wsmap="managed"
+    >
+    <desc>
+      How IDisplay::setScreenLayout method should work.
+    </desc>
+
+    <const name="Apply" value="0">
+      <desc>
+        If the guest is already at desired mode then the API might avoid setting the mode.
+      </desc>
+    </const>
+
+    <const name="Reset" value="1">
+      <desc>
+        Always set the new mode even if the guest is already at desired mode.
+      </desc>
+    </const>
+  </enum>
+
+  <interface
+    name="IGuestScreenInfo" extends="$unknown"
+    uuid="5f99cd4d-bbd2-49ba-b24d-4b5b42fb4c3a"
+    wsmap="managed"
+    >
+    <attribute name="screenId" type="unsigned long" readonly="yes"/>
+    <attribute name="guestMonitorStatus" type="GuestMonitorStatus" readonly="yes"/>
+    <attribute name="primary" type="boolean" readonly="yes"/>
+    <attribute name="origin" type="boolean" readonly="yes"/>
+    <attribute name="originX" type="long" readonly="yes"/>
+    <attribute name="originY" type="long" readonly="yes"/>
+    <attribute name="width" type="unsigned long" readonly="yes"/>
+    <attribute name="height" type="unsigned long" readonly="yes"/>
+    <attribute name="bitsPerPixel" type="unsigned long" readonly="yes"/>
+  </interface>
 
   <interface
     name="IDisplay" extends="$unknown"
-    uuid="7303a66d-433b-25a4-f9a8-fcadf87e0c2a"
+    uuid="92d9349f-59fd-4eb1-b565-1ba51beb1c9c"
     wsmap="managed"
     wrap-hint-server-addinterfaces="IEventListener"
@@ -17039,4 +17084,19 @@
       </desc>
       <param name="fUnscaledHiDPI" type="boolean" dir="in"/>
+    </method>
+
+    <method name="queryScreenLayout">
+      <desc>
+        Queries layout of the guest screens.
+      </desc>
+      <param name="guestScreenInfo" type="IGuestScreenInfo" safearray="yes" dir="return"/>
+    </method>
+
+    <method name="setScreenLayout">
+      <desc>
+        Set video modes for the guest screens.
+      </desc>
+      <param name="screenLayoutMode" type="ScreenLayoutMode" dir="in"/>
+      <param name="guestScreenInfo" type="IGuestScreenInfo" safearray="yes" dir="in"/>
     </method>
 
Index: /trunk/src/VBox/Main/include/DisplayImpl.h
===================================================================
--- /trunk/src/VBox/Main/include/DisplayImpl.h	(revision 61559)
+++ /trunk/src/VBox/Main/include/DisplayImpl.h	(revision 61560)
@@ -272,4 +272,7 @@
                                             ULONG aScaleFactorHMultiplied);
     virtual HRESULT notifyHiDPIOutputPolicyChange(BOOL fUnscaledHiDPI);
+    virtual HRESULT queryScreenLayout(std::vector<ComPtr<IGuestScreenInfo> > &aGuestScreenInfo);
+    virtual HRESULT setScreenLayout(ScreenLayoutMode_T aScreenLayoutMode,
+                                    const std::vector<ComPtr<IGuestScreenInfo> > &aGuestScreenInfo);
 
     // Wrapped IEventListener properties
Index: /trunk/src/VBox/Main/src-client/DisplayImpl.cpp
===================================================================
--- /trunk/src/VBox/Main/src-client/DisplayImpl.cpp	(revision 61559)
+++ /trunk/src/VBox/Main/src-client/DisplayImpl.cpp	(revision 61560)
@@ -2802,4 +2802,18 @@
     LogRelFlowFunc(("%Rhrc\n", hr));
     return hr;
+}
+
+HRESULT Display::queryScreenLayout(std::vector<ComPtr<IGuestScreenInfo> > &aGuestScreenInfo)
+{
+    NOREF(aGuestScreenInfo);
+    return E_NOTIMPL;
+}
+
+HRESULT Display::setScreenLayout(ScreenLayoutMode_T aScreenLayoutMode,
+                                    const std::vector<ComPtr<IGuestScreenInfo> > &aGuestScreenInfo)
+{
+    NOREF(aScreenLayoutMode);
+    NOREF(aGuestScreenInfo);
+    return E_NOTIMPL;
 }
 
