diff --git a/ChangeLog b/ChangeLog
index 33c8ac1aa3..a4a52646c8 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -27,6 +27,7 @@ Enhancements:
- #6984 Update synergy UI. Client error messages
- #6962 | #6965 Add macOS 10.13 builder
- #6990 Change VersionChecker URL and include system language in the header
+- #6999 Detect if Linux is running with Wayland, and display a warning message
===========
v1.13.1-stable
diff --git a/src/gui/res/Synergy.qrc b/src/gui/res/Synergy.qrc
index 345e6b7000..fc477154eb 100644
--- a/src/gui/res/Synergy.qrc
+++ b/src/gui/res/Synergy.qrc
@@ -21,5 +21,6 @@
image/welcome.png
icons/64x64/folder.png
fonts/Arial.ttf
+ image/setupBlocker.png
diff --git a/src/gui/res/image/setupBlocker.png b/src/gui/res/image/setupBlocker.png
new file mode 100644
index 0000000000..e1aa696a02
Binary files /dev/null and b/src/gui/res/image/setupBlocker.png differ
diff --git a/src/gui/src/SetupWizardBlocker.cpp b/src/gui/src/SetupWizardBlocker.cpp
new file mode 100644
index 0000000000..bfcfc5f763
--- /dev/null
+++ b/src/gui/src/SetupWizardBlocker.cpp
@@ -0,0 +1,58 @@
+/*
+ * synergy -- mouse and keyboard sharing utility
+ * Copyright (C) 2012-2016 Symless Ltd.
+ *
+ * This package is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * found in the file LICENSE that should have accompanied this file.
+ *
+ * This package is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#include
+#include
+
+#include "SetupWizardBlocker.h"
+#include "MainWindow.h"
+
+static const std::vector blockerTitels = {
+ "No Wayland support",
+};
+
+static const std::vector blockerText = {
+ "We have detected your system is using Wayland. It is not currently \n"
+ "supported, but we are working on it. It's top of our priority list. \n"
+ "\n"
+ "Please switch to Xorg if you wish to continue using Synergy today.",
+};
+
+SetupWizardBlocker::SetupWizardBlocker(MainWindow& mainWindow, qBlockerType type) :
+ m_MainWindow(mainWindow)
+{
+ setupUi(this);
+
+ label_Title->setText(blockerTitels[static_cast(type)]);
+
+ label_HelpInfo->setText(blockerText[static_cast(type)]);
+
+ connect(m_pButtonSupport, &QPushButton::released, this, &SetupWizardBlocker::onlineSupport);
+ connect(m_pButtonCancel, &QPushButton::released, this, &SetupWizardBlocker::cancel);
+}
+
+void SetupWizardBlocker::onlineSupport()
+{
+ QDesktopServices::openUrl(QUrl("https://symless.com/help"));
+ cancel();
+}
+
+void SetupWizardBlocker::cancel()
+{
+ QDialog::reject();
+ QCoreApplication::quit();
+}
diff --git a/src/gui/src/SetupWizardBlocker.h b/src/gui/src/SetupWizardBlocker.h
new file mode 100644
index 0000000000..7620ed43be
--- /dev/null
+++ b/src/gui/src/SetupWizardBlocker.h
@@ -0,0 +1,41 @@
+/*
+ * synergy -- mouse and keyboard sharing utility
+ * Copyright (C) 2012-2016 Symless Ltd.
+ *
+ * This package is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * found in the file LICENSE that should have accompanied this file.
+ *
+ * This package is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#pragma once
+#include "ui_SetupWizardBlocker.h"
+#include
+
+class MainWindow;
+
+class SetupWizardBlocker : public QDialog, public Ui::SetupWizardBlocker
+{
+ Q_OBJECT
+
+public:
+ enum class qBlockerType
+ {
+ waylandDetected
+ };
+ explicit SetupWizardBlocker(MainWindow& mainWindow, qBlockerType type);
+
+protected:
+ void onlineSupport();
+ void cancel();
+
+private:
+ MainWindow& m_MainWindow;
+};
diff --git a/src/gui/src/SetupWizardBlocker.ui b/src/gui/src/SetupWizardBlocker.ui
new file mode 100644
index 0000000000..de278e6ad0
--- /dev/null
+++ b/src/gui/src/SetupWizardBlocker.ui
@@ -0,0 +1,177 @@
+
+
+ SetupWizardBlocker
+
+
+
+ 0
+ 0
+ 720
+ 580
+
+
+
+
+ 0
+ 0
+
+
+
+
+ 720
+ 580
+
+
+
+
+ 720
+ 580
+
+
+
+
+ 720
+ 580
+
+
+
+
+ Arial
+
+
+
+ Qt::NoContextMenu
+
+
+ Setup Synergy
+
+
+ 1.000000000000000
+
+
+
+
+ 278
+ 87
+ 165
+ 165
+
+
+
+
+
+
+ :/res/image/setupBlocker.png
+
+
+ true
+
+
+
+
+
+ 0
+ 273
+ 720
+ 25
+
+
+
+
+ Arial
+ 18
+ 50
+ false
+
+
+
+ Test header
+
+
+ Qt::RichText
+
+
+ Qt::AlignHCenter|Qt::AlignTop
+
+
+ true
+
+
+
+
+
+ 153
+ 321
+ 455
+ 150
+
+
+
+
+ Arial
+ 13
+ 50
+ false
+
+
+
+ large text test large text test large text test
+
+
+ Qt::RichText
+
+
+ Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop
+
+
+ true
+
+
+
+
+
+ 642
+ 540
+ 71
+ 25
+
+
+
+
+ Arial
+ 13
+ 50
+ false
+
+
+
+ Cancel
+
+
+
+
+
+ 500
+ 540
+ 131
+ 25
+
+
+
+
+ Arial
+ 13
+ 50
+ false
+
+
+
+ Online support
+
+
+
+
+
+
+
+
diff --git a/src/gui/src/main.cpp b/src/gui/src/main.cpp
index 4d1fc3fc24..6d1ac22e34 100644
--- a/src/gui/src/main.cpp
+++ b/src/gui/src/main.cpp
@@ -21,6 +21,7 @@
#include "MainWindow.h"
#include "AppConfig.h"
#include "SetupWizard.h"
+#include "SetupWizardBlocker.h"
#include
#include
@@ -98,6 +99,14 @@ int main(int argc, char* argv[])
QObject::connect(dynamic_cast(&app), SIGNAL(aboutToQuit()),
&mainWindow, SLOT(saveSettings()));
+ std::unique_ptr setupBlocker;
+ if (qgetenv("XDG_SESSION_TYPE") == "wayland")
+ {
+ setupBlocker.reset(new SetupWizardBlocker(mainWindow, SetupWizardBlocker::qBlockerType::waylandDetected));
+ setupBlocker->show();
+ return QApplication::exec();
+ }
+
std::unique_ptr setupWizard;
if (appConfig.wizardShouldRun())
{