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);
