Index: trunk/src/VBox/Frontends/VirtualBox/Makefile.kmk
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/Makefile.kmk	(revision 89703)
+++ trunk/src/VBox/Frontends/VirtualBox/Makefile.kmk	(revision 89704)
@@ -1556,4 +1556,5 @@
 UICommon_QT_MODULES = Core Gui Widgets
 UICommon_QT_MODULES.linux   += X11Extras
+UICommon_QT_MODULES.linux   += DBus
 UICommon_QT_MODULES.solaris += X11Extras
 UICommon_QT_MODULES.freebsd += X11Extras
Index: trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.cpp	(revision 89703)
+++ trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.cpp	(revision 89704)
@@ -4743,6 +4743,8 @@
             else if (strKey == GUI_CloudConsoleManager_Restrictions)
                 emit sigCloudConsoleManagerRestrictionChange();
+#ifdef VBOX_WS_X11
             else if (strKey == GUI_DisableHostScreenSaver)
                 emit sigDisableHostScreenSaverStateChange(isFeatureAllowed(GUI_DisableHostScreenSaver));
+#endif
             /* Details categories: */
             else if (strKey == GUI_Details_Elements)
Index: trunk/src/VBox/Frontends/VirtualBox/src/platform/x11/VBoxX11Helper.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/platform/x11/VBoxX11Helper.cpp	(revision 89703)
+++ trunk/src/VBox/Frontends/VirtualBox/src/platform/x11/VBoxX11Helper.cpp	(revision 89704)
@@ -19,4 +19,8 @@
 #include <QString>
 #include <QX11Info>
+#include <QtDBus/QDBusConnection>
+#include <QtDBus/QDBusReply>
+#include <QtDBus/QDBusInterface>
+#include <QtDBus/QDBusConnectionInterface>
 
 /* GUI includes: */
@@ -156,2 +160,29 @@
     return XQueryExtension(pDisplay, extensionName, &major_opcode, &first_event, &first_error);
 }
+
+QStringList X11ScrenSaverServices()
+{
+    QStringList serviceNames;
+    QDBusConnection bus = QDBusConnection::sessionBus();
+    QDBusReply<QStringList> replyr = bus.interface()->registeredServiceNames();
+    if (!replyr.isValid())
+        return serviceNames;
+    for (int i = 0; i < replyr.value().size(); ++i)
+    {
+        const QString strServiceName = replyr.value()[i];
+        if (strServiceName.contains("screensaver", Qt::CaseInsensitive))
+        {
+            printf("%s\n", qPrintable(strServiceName));
+            serviceNames << strServiceName;
+        }
+    }
+    return serviceNames;
+}
+
+void X11InhibitScrenSaver(const QStringList &serviceNameList)
+{
+    Q_UNUSED(serviceNameList);
+}
+
+#ifdef VBOX_WS_X11
+#endif
Index: trunk/src/VBox/Frontends/VirtualBox/src/platform/x11/VBoxX11Helper.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/platform/x11/VBoxX11Helper.h	(revision 89703)
+++ trunk/src/VBox/Frontends/VirtualBox/src/platform/x11/VBoxX11Helper.h	(revision 89704)
@@ -54,3 +54,9 @@
 SHARED_LIBRARY_STUFF bool X11CheckExtension(const char *extensionName);
 
+/* Returns the list of DBus screensaver services.*/
+SHARED_LIBRARY_STUFF QStringList X11ScrenSaverServices();
+
+/* Disables Screen Saver through QDBus. */
+SHARED_LIBRARY_STUFF  void X11InhibitScrenSaver(const QStringList &serviceNameList);
+
 #endif /* !FEQT_INCLUDED_SRC_platform_x11_VBoxX11Helper_h */
Index: trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.cpp	(revision 89703)
+++ trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.cpp	(revision 89704)
@@ -712,5 +712,13 @@
 void UIMachineLogic::sltDisableHostScreenSaverStateChanged(bool fDisabled)
 {
+#if defined(VBOX_WS_X11)
+    QStringList services = X11ScrenSaverServices();
+    if (services.isEmpty())
+        return;
+
     Q_UNUSED(fDisabled);
+#else
+    Q_UNUSED(fDisabled);
+#endif
 }
 
@@ -1496,4 +1504,5 @@
     connect(gEDataManager, &UIExtraDataManager::sigDisableHostScreenSaverStateChange,
             this, &UIMachineLogic::sltDisableHostScreenSaverStateChanged);
+    sltDisableHostScreenSaverStateChanged(gEDataManager->disableHostScreenSaver());
 #endif
 }
