diff -Naur fbpanel-6.1-old/plugins/menu/system_menu.c fbpanel-6.1/plugins/menu/system_menu.c --- fbpanel-6.1-old/plugins/menu/system_menu.c 2010-04-15 11:43:56.000000000 +0300 +++ fbpanel-6.1/plugins/menu/system_menu.c 2014-06-24 18:43:24.019213372 +0300 @@ -38,14 +38,14 @@ do_app_file(GHashTable *ht, const gchar *file) { GKeyFile *f; - gchar *name, *icon, *action,*dot; + gchar *name, *icon, *exec, *terminal, *action, *dot; gchar **cats, **tmp; xconf *ixc, *vxc, *mxc; ENTER; DBG("desktop: %s\n", file); /* get values */ - name = icon = action = dot = NULL; + name = icon = exec = terminal = action = dot = NULL; cats = tmp = NULL; f = g_key_file_new(); if (!g_key_file_load_from_file(f, file, 0, NULL)) @@ -60,11 +60,20 @@ DBG("\tOnlyShowIn\n"); goto out; } - if (!(action = g_key_file_get_string(f, desktop_ent, "Exec", NULL))) + if (!(exec = g_key_file_get_string(f, desktop_ent, "Exec", NULL))) { DBG("\tNo Exec\n"); goto out; } + if (g_key_file_get_boolean(f, desktop_ent, "Terminal", NULL)) + { + action = malloc(9+strlen(exec)+1); + strcpy(action, "xterm -e "); + strcat(action, exec); + } else { + action = malloc(strlen(exec)+1); + strcpy(action, exec); + } if (!(cats = g_key_file_get_string_list(f, desktop_ent, "Categories", NULL, NULL))) { @@ -121,6 +130,8 @@ out: g_free(icon); g_free(name); + g_free(exec); + g_free(terminal); g_free(action); g_strfreev(cats); g_key_file_free(f);