From ffc74bf10b1544c83372420150a4f6ce6caad889 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=80lex=20Fiestas?= Date: Tue, 9 Dec 2014 22:07:22 +0100 Subject: [PATCH] Add an alternative way of executing kdeconnectd via autostart We are currently using KDED only to start the daemon which makes little sense. The reason for this was so we can start/stop the service at will via KDED startup interface. This sucks, it is a horrible interface for starting/disabling kdeconnect and makes us depend on KDED for no good reason. So what this patch does is make use of XDG autostart which is supported in all major desktops (GNOME/UNITY/XFACE/KDE...). KDE has an interface to disable autostarted programs (although the interface sucks). --- kded/CMakeLists.txt | 21 ++++++++++++++++----- kded/kdeconnectd.desktop.cmake | 10 ++++++++++ 2 files changed, 26 insertions(+), 5 deletions(-) create mode 100644 kded/kdeconnectd.desktop.cmake diff --git a/kded/CMakeLists.txt b/kded/CMakeLists.txt index 7560ae3c2..98304e4eb 100644 --- a/kded/CMakeLists.txt +++ b/kded/CMakeLists.txt @@ -3,14 +3,25 @@ include_directories(${CMAKE_SOURCE_DIR}) add_definitions(-DTRANSLATION_DOMAIN="kdeconnect-kded") configure_file(config-kded.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-kded.h) -add_library(kded_kdeconnect MODULE kded.cpp) -target_link_libraries(kded_kdeconnect KF5::Service KF5::DBusAddons) -install(TARGETS kded_kdeconnect DESTINATION ${PLUGIN_INSTALL_DIR}) -install(FILES kdeconnect.desktop DESTINATION ${SERVICES_INSTALL_DIR}/kded) add_executable(kdeconnectd kdeconnectd.cpp) target_link_libraries(kdeconnectd kdeconnectcore KF5::DBusAddons KF5::ConfigWidgets) + +set(NEW_DAEMON_STARTUP_DESC "WIP: Start kdeconnectd without kded") +option(WITH_AUTOSTART NEW_DAEMON_STARTUP_DESC Off) +add_feature_info(WITH_AUTOSTART WITH_AUTOSTART NEW_DAEMON_STARTUP_DESC) + +if (NOT WITH_AUTOSTART) + add_library(kded_kdeconnect MODULE kded.cpp) + target_link_libraries(kded_kdeconnect KF5::Service KF5::DBusAddons) + install(TARGETS kded_kdeconnect DESTINATION ${PLUGIN_INSTALL_DIR}) + install(FILES kdeconnect.desktop DESTINATION ${SERVICES_INSTALL_DIR}/kded) +else() + configure_file(kdeconnectd.desktop.cmake ${CMAKE_CURRENT_BINARY_DIR}/kdeconnectd.desktop) + install(FILES ${CMAKE_CURRENT_BINARY_DIR}/kdeconnectd.desktop DESTINATION ${AUTOSTART_INSTALL_DIR}) +endif() + install(TARGETS kdeconnectd DESTINATION ${LIBEXEC_INSTALL_DIR}) include(DbusActivationMacros) -dbus_add_activation_service(org.kde.kdeconnect.service.in) +dbus_add_activation_service(org.kde.kdeconnect.service.in) \ No newline at end of file diff --git a/kded/kdeconnectd.desktop.cmake b/kded/kdeconnectd.desktop.cmake new file mode 100644 index 000000000..15a560337 --- /dev/null +++ b/kded/kdeconnectd.desktop.cmake @@ -0,0 +1,10 @@ +[Desktop Entry] +Type=Service +Exec=${CMAKE_INSTALL_PREFIX}/${LIBEXEC_INSTALL_DIR}/kdeconnectd +X-KDE-StartupNotify=false +X-KDE-autostart-phase=0 +X-GNOME-Autostart-enabled=true +OnlyShowIn=KDE;GNOME;Unity;XFCE +NoDisplay=true + +Name=KDEConnect daemon \ No newline at end of file