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()) {