diff --git a/src/gui/Clipboard.cpp b/src/gui/Clipboard.cpp index f0fbf01ab1..f43d7197b0 100644 --- a/src/gui/Clipboard.cpp +++ b/src/gui/Clipboard.cpp @@ -21,6 +21,7 @@ #include #include #include +#include #include #include "core/Config.h" @@ -101,6 +102,12 @@ void Clipboard::clearCopiedText() || m_lastCopied == clipboard->text(QClipboard::Selection)) { clipboard->clear(QClipboard::Clipboard); clipboard->clear(QClipboard::Selection); +#ifdef Q_OS_UNIX + // Gnome Wayland doesn't let apps modify the clipboard when not in focus, so force clear + if (QProcessEnvironment::systemEnvironment().contains("WAYLAND_DISPLAY")) { + QProcess::startDetached("wl-copy", {"-c"}); + } +#endif } m_lastCopied.clear(); diff --git a/src/gui/DatabaseWidget.cpp b/src/gui/DatabaseWidget.cpp index 816d3ace1d..e38b943ac6 100644 --- a/src/gui/DatabaseWidget.cpp +++ b/src/gui/DatabaseWidget.cpp @@ -971,7 +971,11 @@ void DatabaseWidget::openUrlForEntry(Entry* entry) } else { QUrl url = QUrl::fromUserInput(entry->resolveMultiplePlaceholders(entry->url())); if (!url.isEmpty()) { +#ifdef KEEPASSXC_DIST_APPIMAGE + QProcess::execute("xdg-open", {url.toString(QUrl::FullyEncoded)}); +#else QDesktopServices::openUrl(url); +#endif if (config()->get(Config::MinimizeOnOpenUrl).toBool()) { getMainWindow()->minimizeOrHide(); diff --git a/src/gui/MainWindow.cpp b/src/gui/MainWindow.cpp index d576ff70a5..1f1e459e76 100644 --- a/src/gui/MainWindow.cpp +++ b/src/gui/MainWindow.cpp @@ -1205,7 +1205,11 @@ void MainWindow::showUpdateCheckDialog() void MainWindow::customOpenUrl(QString url) { +#ifdef KEEPASSXC_DIST_APPIMAGE + QProcess::execute("xdg-open", {url}); +#else QDesktopServices::openUrl(QUrl(url)); +#endif } void MainWindow::openDonateUrl()