Added display_generic option to drun
This commit is contained in:
parent
a8312f64f2
commit
0d1836649e
@ -47,6 +47,9 @@ If true shows all the entries in path, this will show entries that have the same
|
|||||||
.TP
|
.TP
|
||||||
.B print_command=\fIBOOL\fR
|
.B print_command=\fIBOOL\fR
|
||||||
If true the command used to launch the desktop file will be printed to stdout instead of invoking it, default is false.
|
If true the command used to launch the desktop file will be printed to stdout instead of invoking it, default is false.
|
||||||
|
.TP
|
||||||
|
.B display_generic=\fIBOOL\fR
|
||||||
|
If true then generic names will be displayed in () next to the application name, default is false.
|
||||||
|
|
||||||
.SH DRUN
|
.SH DRUN
|
||||||
When images are enabled drun mode will pull icon themes however being a GTK app it's possible you'll need to run gtk\-update\-icon\-cache to get them to apply.
|
When images are enabled drun mode will pull icon themes however being a GTK app it's possible you'll need to run gtk\-update\-icon\-cache to get them to apply.
|
||||||
|
24
modes/drun.c
24
modes/drun.c
@ -28,7 +28,7 @@
|
|||||||
#include <gtk/gtk.h>
|
#include <gtk/gtk.h>
|
||||||
#include <gio/gdesktopappinfo.h>
|
#include <gio/gdesktopappinfo.h>
|
||||||
|
|
||||||
static const char* arg_names[] = {"print_command"};
|
static const char* arg_names[] = {"print_command", "display_generic"};
|
||||||
|
|
||||||
static struct mode* mode;
|
static struct mode* mode;
|
||||||
|
|
||||||
@ -40,6 +40,7 @@ struct node {
|
|||||||
static struct wl_list widgets;
|
static struct wl_list widgets;
|
||||||
|
|
||||||
static bool print_command;
|
static bool print_command;
|
||||||
|
static bool display_generic;
|
||||||
|
|
||||||
static char* get_text(char* file, char* action) {
|
static char* get_text(char* file, char* action) {
|
||||||
GDesktopAppInfo* info = g_desktop_app_info_new_from_filename(file);
|
GDesktopAppInfo* info = g_desktop_app_info_new_from_filename(file);
|
||||||
@ -47,8 +48,16 @@ static char* get_text(char* file, char* action) {
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
const char* name;
|
const char* name;
|
||||||
|
char* generic_name = strdup("");
|
||||||
if(action == NULL) {
|
if(action == NULL) {
|
||||||
name = g_app_info_get_display_name(G_APP_INFO(info));
|
name = g_app_info_get_display_name(G_APP_INFO(info));
|
||||||
|
if(display_generic) {
|
||||||
|
const char* gname = g_desktop_app_info_get_generic_name(info);
|
||||||
|
if(gname != NULL) {
|
||||||
|
free(generic_name);
|
||||||
|
generic_name = utils_concat(3, " (", gname, ")");
|
||||||
|
}
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
name = g_desktop_app_info_get_action_name(info, action);
|
name = g_desktop_app_info_get_action_name(info, action);
|
||||||
}
|
}
|
||||||
@ -60,7 +69,9 @@ static char* get_text(char* file, char* action) {
|
|||||||
if(G_IS_FILE_ICON(icon)) {
|
if(G_IS_FILE_ICON(icon)) {
|
||||||
GFile* file = g_file_icon_get_file(G_FILE_ICON(icon));
|
GFile* file = g_file_icon_get_file(G_FILE_ICON(icon));
|
||||||
char* path = g_file_get_path(file);
|
char* path = g_file_get_path(file);
|
||||||
return utils_concat(4, "img:", path, ":text:", name);
|
char* ret = utils_concat(5, "img:", path, ":text:", name, generic_name);
|
||||||
|
free(generic_name);
|
||||||
|
return ret;
|
||||||
} else {
|
} else {
|
||||||
GtkIconTheme* theme = gtk_icon_theme_get_default();
|
GtkIconTheme* theme = gtk_icon_theme_get_default();
|
||||||
GtkIconInfo* info = NULL;
|
GtkIconInfo* info = NULL;
|
||||||
@ -72,10 +83,14 @@ static char* get_text(char* file, char* action) {
|
|||||||
info = gtk_icon_theme_lookup_icon(theme, "application-x-executable", wofi_get_image_size(), 0);
|
info = gtk_icon_theme_lookup_icon(theme, "application-x-executable", wofi_get_image_size(), 0);
|
||||||
}
|
}
|
||||||
const gchar* icon_path = gtk_icon_info_get_filename(info);
|
const gchar* icon_path = gtk_icon_info_get_filename(info);
|
||||||
return utils_concat(4, "img:", icon_path, ":text:", name);
|
char* ret = utils_concat(5, "img:", icon_path, ":text:", name, generic_name);
|
||||||
|
free(generic_name);
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
return strdup(name);
|
char* ret = utils_concat(2, name, generic_name);
|
||||||
|
free(generic_name);
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -295,6 +310,7 @@ void wofi_drun_init(struct mode* this, struct map* config) {
|
|||||||
mode = this;
|
mode = this;
|
||||||
|
|
||||||
print_command = strcmp(config_get(config, "print_command", "false"), "true") == 0;
|
print_command = strcmp(config_get(config, "print_command", "false"), "true") == 0;
|
||||||
|
display_generic = strcmp(config_get(config, "display_generic", "false"), "true") == 0;
|
||||||
|
|
||||||
struct map* entries = map_init();
|
struct map* entries = map_init();
|
||||||
struct wl_list* cache = wofi_read_cache(mode);
|
struct wl_list* cache = wofi_read_cache(mode);
|
||||||
|
Loading…
Reference in New Issue
Block a user