Index: daemon/loader.c
===================================================================
--- daemon/loader.c (revision a88ec8d69f922fad91f61239c8a7c84f915b825c)
+++ daemon/loader.c (revision d027731b1848a3f06462a0aa71fd9e5926e14c9a)
@@ -256,7 +256,15 @@
 #endif
 
-static void loader_exec_program(const char * commandline, const char * working_dir, bool run_in_terminal)
-{
-  const char * argv[4];
+static
+void
+loader_exec_program(
+  const char * commandline,
+  const char * working_dir,
+  bool run_in_terminal,
+  const char * vgraph_name,
+  const char * app_name)
+{
+  const char * argv[8];
+  unsigned int i;
 
   /* for non terminal processes we use forkpty() that calls login_tty() that calls setsid() */
@@ -277,25 +285,36 @@
   }
 
+  i = 0;
+
   if (run_in_terminal)
   {
-    if (!conf_get(LADISH_CONF_KEY_DAEMON_TERMINAL, argv))
-    {
-      argv[0] = LADISH_CONF_KEY_DAEMON_TERMINAL_DEFAULT;
-    }
-
-    argv[1] = "-e";
-  }
-  else
-  {
-    if (!conf_get(LADISH_CONF_KEY_DAEMON_SHELL, argv))
-    {
-      argv[0] = LADISH_CONF_KEY_DAEMON_SHELL_DEFAULT;
-    }
-
-    argv[1] = "-c";
-  }
-
-  argv[2] = commandline;
-  argv[3] = NULL;
+    if (!conf_get(LADISH_CONF_KEY_DAEMON_TERMINAL, argv + i))
+    {
+      argv[i] = LADISH_CONF_KEY_DAEMON_TERMINAL_DEFAULT;
+    }
+    i++;
+
+    if (strcmp(argv[0], "xterm") == 0 &&
+        strchr(app_name, '"') == NULL &&
+        strchr(app_name, '\'') == NULL &&
+        strchr(app_name, '`') == NULL)
+    {
+      argv[i++] = "-T";
+      argv[i++] = app_name;
+    }
+
+    argv[i++] = "-e";
+  }
+
+  if (!conf_get(LADISH_CONF_KEY_DAEMON_SHELL, argv + i))
+  {
+    argv[i] = LADISH_CONF_KEY_DAEMON_SHELL_DEFAULT;
+  }
+  i++;
+
+  argv[i++] = "-c";
+
+  argv[i++] = commandline;
+  argv[i++] = NULL;
 
   log_info("Executing '%s' with PID %llu", commandline, (unsigned long long)getpid());
@@ -555,5 +574,5 @@
     putenv("LD_PRELOAD=libalsapid.so");
 
-    loader_exec_program(commandline, working_dir, run_in_terminal);
+    loader_exec_program(commandline, working_dir, run_in_terminal, vgraph_name, app_name);
 
     return false;  /* We should never get here */
