drun mode now removes field codes when printing the command
This commit is contained in:
parent
0decee5d78
commit
f51a335465
28
modes/drun.c
28
modes/drun.c
@ -399,12 +399,34 @@ static bool uses_dbus(GDesktopAppInfo* info) {
|
|||||||
return g_desktop_app_info_get_boolean(info, "DBusActivatable");
|
return g_desktop_app_info_get_boolean(info, "DBusActivatable");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static char* get_cmd(GAppInfo* info) {
|
||||||
|
const char* cmd = g_app_info_get_commandline(info);
|
||||||
|
size_t cmd_size = strlen(cmd);
|
||||||
|
char* new_cmd = calloc(1, cmd_size + 1);
|
||||||
|
size_t new_cmd_count = 0;
|
||||||
|
for(size_t count = 0; count < cmd_size; ++count) {
|
||||||
|
if(cmd[count] == '%') {
|
||||||
|
if(cmd[++count] == '%') {
|
||||||
|
new_cmd[new_cmd_count++] = cmd[count];
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
new_cmd[new_cmd_count++] = cmd[count];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(new_cmd[--new_cmd_count] == ' ') {
|
||||||
|
new_cmd[new_cmd_count] = 0;
|
||||||
|
}
|
||||||
|
return new_cmd;
|
||||||
|
}
|
||||||
|
|
||||||
void wofi_drun_exec(const gchar* cmd) {
|
void wofi_drun_exec(const gchar* cmd) {
|
||||||
GDesktopAppInfo* info = g_desktop_app_info_new_from_filename(cmd);
|
GDesktopAppInfo* info = g_desktop_app_info_new_from_filename(cmd);
|
||||||
if(G_IS_DESKTOP_APP_INFO(info)) {
|
if(G_IS_DESKTOP_APP_INFO(info)) {
|
||||||
wofi_write_cache(mode, cmd);
|
wofi_write_cache(mode, cmd);
|
||||||
if(print_command) {
|
if(print_command) {
|
||||||
printf("%s\n", g_app_info_get_commandline(G_APP_INFO(info)));
|
char* cmd = get_cmd(G_APP_INFO(info));
|
||||||
|
printf("%s\n", cmd);
|
||||||
|
free(cmd);
|
||||||
exit(0);
|
exit(0);
|
||||||
} else {
|
} else {
|
||||||
set_dri_prime(info);
|
set_dri_prime(info);
|
||||||
@ -422,7 +444,9 @@ void wofi_drun_exec(const gchar* cmd) {
|
|||||||
info = g_desktop_app_info_new_from_filename(cmd);
|
info = g_desktop_app_info_new_from_filename(cmd);
|
||||||
char* action = space + 1;
|
char* action = space + 1;
|
||||||
if(print_command) {
|
if(print_command) {
|
||||||
printf("%s\n", g_app_info_get_commandline(G_APP_INFO(info)));
|
char* cmd = get_cmd(G_APP_INFO(info));
|
||||||
|
printf("%s\n", cmd);
|
||||||
|
free(cmd);
|
||||||
fprintf(stderr, "Printing the command line for an action is not supported\n");
|
fprintf(stderr, "Printing the command line for an action is not supported\n");
|
||||||
} else {
|
} else {
|
||||||
set_dri_prime(info);
|
set_dri_prime(info);
|
||||||
|
Loading…
Reference in New Issue
Block a user