diff --git a/CMakeLists.txt b/CMakeLists.txt index 1df8c19a01..d5aa7b1129 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -50,6 +50,14 @@ find_package(Qt${QT_MAJOR_VERSION} ${QT_MIN_VERSION} CONFIG REQUIRED COMPONENTS DBus ) +if (UNIX AND NOT APPLE) + set(HAVE_X11 TRUE) + + if (QT_MAJOR_VERSION STREQUAL "5") + find_package(Qt5X11Extras REQUIRED) + endif() +endif() + find_package(KF5 ${KF5_MIN_VERSION} REQUIRED COMPONENTS KCMUtils NewStuff diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 7642c5c674..2d7cba7900 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -471,6 +471,14 @@ target_link_libraries(dolphin KF5::Crash ) +if (HAVE_X11) + if (QT_MAJOR_VERSION STREQUAL "5") + target_link_libraries(dolphin PRIVATE Qt5::X11Extras) + else() + target_link_libraries(dolphin PRIVATE Qt::GuiPrivate) + endif() +endif() + include(DbusInterfaceMacros) generate_and_install_dbus_interface( diff --git a/src/config-dolphin.h.cmake b/src/config-dolphin.h.cmake index 61440cf3c3..af78c8622c 100644 --- a/src/config-dolphin.h.cmake +++ b/src/config-dolphin.h.cmake @@ -3,3 +3,4 @@ #cmakedefine01 HAVE_KUSERFEEDBACK #cmakedefine01 HAVE_PACKAGEKIT #cmakedefine01 HAVE_TERMINAL +#cmakedefine01 HAVE_X11 diff --git a/src/dolphinmainwindow.cpp b/src/dolphinmainwindow.cpp index e4aa16d5fa..f3ec70753c 100644 --- a/src/dolphinmainwindow.cpp +++ b/src/dolphinmainwindow.cpp @@ -289,7 +289,7 @@ void DolphinMainWindow::activateWindow(const QString &activationToken) if (KWindowSystem::isPlatformWayland()) { KWindowSystem::setCurrentXdgActivationToken(activationToken); } else { - KStartupInfo::setNewStartupId(window()->windowHandle(), KStartupInfo::startupId()); + KStartupInfo::setNewStartupId(window()->windowHandle(), activationToken.toUtf8()); } KWindowSystem::activateWindow(window()->windowHandle()); diff --git a/src/main.cpp b/src/main.cpp index a45083e400..a9b85dbcc8 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -35,6 +35,14 @@ #include #include +#if HAVE_X11 +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) +#include +#else +#include +#endif +#endif + #ifndef Q_OS_WIN #include #endif @@ -181,6 +189,10 @@ int main(int argc, char **argv) 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)) {