File 0019-Apply-autostart-support-on-Windows-from-package-ming.patch of Package mingw32-kinit
From 6ba88e7f8ffd3e68b534e4bad09003650e9079a6 Mon Sep 17 00:00:00 2001
From: Ralf Habacker <ralf.habacker@freenet.de>
Date: Thu, 14 Jul 2022 16:33:26 +0200
Subject: [PATCH] Apply autostart support on Windows from package
mingw32-kdelibs4
The autostart support is activated by default and can be deactivated by
specifing the command line switch `--no-autostart`.
---
src/kdeinit/kinit_win.cpp | 39 +++++++++++++++++++++++++++++++++++++++
1 file changed, 39 insertions(+)
diff --git a/src/kdeinit/kinit_win.cpp b/src/kdeinit/kinit_win.cpp
index 9d50b72..ed3a015 100644
--- a/src/kdeinit/kinit_win.cpp
+++ b/src/kdeinit/kinit_win.cpp
@@ -525,6 +525,31 @@ void quitApplicationsOverDBus()
}
}
+bool triggerAutoStart(int phase)
+{
+ if (verbose)
+ fprintf(stderr, "trigger autostart phase %d\n", phase);
+ QDBusConnection bus = QDBusConnection::sessionBus();
+ QDBusInterface *iface = new QDBusInterface(QLatin1String("org.kde.klauncher5"),
+ QLatin1String("/KLauncher"),
+ QLatin1String("org.kde.KLauncher"),
+ bus);
+ if (!iface->isValid()) {
+ if (verbose)
+ fprintf(stderr, "invalid interface org.kde.klauncher5\n");
+ delete iface;
+ return false;
+ }
+ iface->call("autoStart", phase);
+ if (iface->lastError().isValid()) {
+ if (verbose)
+ fprintf(stderr,"could not call method autoStart on interface org.kde.klauncher5\n");
+ delete iface;
+ return false;
+ }
+ return true;
+}
+
int main(int argc, char **argv, char **envp)
{
pid_t pid = 0;
@@ -537,11 +562,15 @@ int main(int argc, char **argv, char **envp)
bool listAppsInDBus = false;
bool quitAppsOverDBus = false;
bool shutdown = false;
+ bool autostart = true;
/** Save arguments first... **/
char **safe_argv = (char **) malloc(sizeof(char *) * argc);
for (int i = 0; i < argc; i++) {
safe_argv[i] = strcpy((char *)malloc(strlen(argv[i]) + 1), argv[i]);
+ if (strcmp(safe_argv[i], "--no-autostart") == 0) {
+ autostart = false;
+ }
if (strcmp(safe_argv[i], "--no-dbus") == 0) {
launch_dbus = false;
}
@@ -580,6 +609,7 @@ int main(int argc, char **argv, char **envp)
printf(" --list list kde processes\n");
printf(" --list-dbus-apps list all applications registered in dbus\n");
printf(" --quit-over-dbus quit all application registered in dbus\n");
+ printf(" --no-autostart do not trigger auto start support\n");
printf(" --no-dbus do not start dbus-daemon\n");
printf(" --no-klauncher do not start klauncher\n");
printf(" --no-kded do not start kded\n");
@@ -667,6 +697,12 @@ int main(int argc, char **argv, char **envp)
}
}
+ if (autostart)
+ triggerAutoStart(0);
+
+ if (autostart)
+ triggerAutoStart(1);
+
if (launch_kded && !processList.find(KDED_EXENAME)) {
pid = launch(KDED_EXENAME);
if (!pid || !checkIfRegisteredInDBus("org.kde." KDED_EXENAME, 10)) {
@@ -684,6 +720,9 @@ int main(int argc, char **argv, char **envp)
}
}
+ if (autostart)
+ triggerAutoStart(2);
+
/** Free arguments **/
for (int i = 0; i < argc; i++) {
free(safe_argv[i]);
--
2.26.2