Blob Blame History Raw
diff --git a/kdecore/kernel/ktoolinvocation_x11.cpp b/kdecore/kernel/ktoolinvocation_x11.cpp
index 5168f2f..ed2a9ab 100644
--- a/kdecore/kernel/ktoolinvocation_x11.cpp
+++ b/kdecore/kernel/ktoolinvocation_x11.cpp
@@ -405,18 +405,20 @@ void KToolInvocation::invokeTerminal(const QString &command,
     QStringList cmdTokens = KShell::splitArgs(exec);
     QString cmd = cmdTokens.takeFirst();
 
-    if (exec == QLatin1String("konsole") && !workdir.isEmpty()) {
-        cmdTokens << QString::fromLatin1("--workdir");
-        cmdTokens << workdir;
-        // For other terminals like xterm, we'll simply change the working
-        // directory before launching them, see below.
+    if (exec == QLatin1String("konsole")) {
+        cmdTokens += QString::fromLatin1("--nofork");
+
+        if (!workdir.isEmpty()) {
+            cmdTokens << QString::fromLatin1("--workdir");
+            cmdTokens << workdir;
+            // For other terminals like xterm, we'll simply change the working
+            // directory before launching them, see below.
+        }
     }
 
-    QString error;
-    if (self()->startServiceInternal("kdeinit_exec_with_workdir",
-                                    cmd, cmdTokens, &error, 0, NULL, startup_id, false, workdir)) {
+    if (!QProcess::startDetached(cmd, cmdTokens)) {
       KMessage::message(KMessage::Error,
-                      i18n("Could not launch the terminal client:\n\n%1", error),
+                      i18n("Could not launch the terminal client"),
                       i18n("Could not launch Terminal Client"));
     }
 }