Launcher: Add support for Terminal=true

This commit is contained in:
o9000
2017-09-02 10:53:20 +02:00
parent eb93af3622
commit 14c3824632
12 changed files with 105 additions and 30 deletions

View File

@@ -113,6 +113,8 @@ gboolean read_desktop_file_full_path(const char *path, DesktopEntry *entry)
{
entry->name = entry->generic_name = entry->icon = entry->exec = entry->cwd = NULL;
entry->hidden_from_menus = FALSE;
entry->start_in_terminal = FALSE;
entry->startup_notification = TRUE;
FILE *fp = fopen(path, "rt");
if (fp == NULL) {
@@ -192,6 +194,10 @@ gboolean read_desktop_file_full_path(const char *path, DesktopEntry *entry)
entry->icon = strdup(value);
} else if (strcmp(key, "NoDisplay") == 0) {
entry->hidden_from_menus = strcasecmp(value, "true") == 0;
} else if (strcmp(key, "Terminal") == 0) {
entry->start_in_terminal = strcasecmp(value, "true") == 0;
} else if (strcmp(key, "StartupNotify") == 0) {
entry->startup_notification = strcasecmp(value, "true") == 0;
}
}
}

View File

@@ -17,6 +17,8 @@ typedef struct DesktopEntry {
char *path;
char *cwd;
gboolean hidden_from_menus;
gboolean start_in_terminal;
gboolean startup_notification;
} DesktopEntry;
// Parses a line of the form "key = value". Modifies the line.

View File

@@ -435,7 +435,7 @@ void launcher_action(LauncherIcon *icon, XEvent *evt, int x, int y)
launcher_reload_hidden_icons((Launcher *)icon->area.parent);
if (evt->type == ButtonPress || evt->type == ButtonRelease)
tint_exec(icon->cmd, icon->cwd, icon->icon_tooltip, evt->xbutton.time, &icon->area, x, y);
tint_exec(icon->cmd, icon->cwd, icon->icon_tooltip, evt->xbutton.time, &icon->area, x, y, icon->start_in_terminal, icon->startup_notification);
}
// Populates the list_icons list from the list_apps list
@@ -490,6 +490,8 @@ void launcher_reload_icon(Launcher *launcher, LauncherIcon *launcherIcon)
launcherIcon->cwd = strdup(entry.cwd);
else
launcherIcon->cwd = NULL;
launcherIcon->start_in_terminal = entry.start_in_terminal;
launcherIcon->startup_notification = entry.startup_notification;
if (launcherIcon->icon_name)
free(launcherIcon->icon_name);
launcherIcon->icon_name = entry.icon ? strdup(entry.icon) : strdup(DEFAULT_ICON);

View File

@@ -33,6 +33,8 @@ typedef struct LauncherIcon {
Imlib_Image image_pressed;
char *cmd;
char *cwd;
gboolean start_in_terminal;
gboolean startup_notification;
char *icon_name;
char *icon_path;
char *icon_tooltip;