#include <KLocalizedString>
#include <KConfigGui>
#include <KIO/PreviewJob>
+#include <KWindowSystem>
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
#include <Kdelibs4ConfigMigrator>
#include <QDBusConnectionInterface>
#include <QSessionManager>
+#if HAVE_X11
+#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
+#include <private/qtx11extras_p.h>
+#else
+#include <QX11Info>
+#endif
+#endif
+
#ifndef Q_OS_WIN
#include <unistd.h>
#endif
// Prohibit using sudo or kdesu (but allow using the root user directly)
if (getuid() == 0) {
if (!qEnvironmentVariableIsEmpty("SUDO_USER")) {
- std::cout << "Running Dolphin with sudo can cause bugs and expose you to security vulnerabilities. "
- "Instead use Dolphin normally and you will be prompted for elevated privileges when "
- "performing file operations that require them."
+ std::cout << "Running Dolphin with sudo can cause bugs and expose you to security vulnerabilities."
<< std::endl;
return EXIT_FAILURE;
} else if (!qEnvironmentVariableIsEmpty("KDESU_USER")) {
- std::cout << "Running Dolphin with kdesu can cause bugs and expose you to security vulnerabilities. "
- "Instead use Dolphin normally and you will be prompted for elevated privileges when "
- "performing file operations that require them."
+ std::cout << "Running Dolphin with kdesu can cause bugs and expose you to security vulnerabilities."
<< std::endl;
return EXIT_FAILURE;
}
"will be selected.")));
parser.addOption(QCommandLineOption(QStringList() << QStringLiteral("split"), i18nc("@info:shell", "Dolphin will get started with a split view.")));
parser.addOption(QCommandLineOption(QStringList() << QStringLiteral("new-window"), i18nc("@info:shell", "Dolphin will explicitly open in a new window.")));
- parser.addOption(QCommandLineOption(QStringList() << QStringLiteral("daemon"), i18nc("@info:shell", "Start Dolphin Daemon (only required for DBus Interface)")));
+ parser.addOption(QCommandLineOption(QStringList() << QStringLiteral("daemon"), i18nc("@info:shell", "Start Dolphin Daemon (only required for DBus Interface).")));
parser.addPositionalArgument(QStringLiteral("+[Url]"), i18nc("@info:shell", "Document to open"));
parser.process(app);
}
if (!parser.isSet(QStringLiteral("new-window"))) {
- if (Dolphin::attachToExistingInstance(urls, openFiles, splitView)) {
+
+ QString token;
+ if (KWindowSystem::isPlatformWayland()) {
+ token = qEnvironmentVariable("XDG_ACTIVATION_TOKEN");
+ qunsetenv("XDG_ACTIVATION_TOKEN");
+ } else if (KWindowSystem::isPlatformX11()) {
+#if HAVE_X11
+ token = QX11Info::nextStartupId();
+#endif
+ }
+
+ if (Dolphin::attachToExistingInstance(urls, openFiles, splitView, QString(), token)) {
// Successfully attached to existing instance of Dolphin
return 0;
}