summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDave Davenport <qball@gmpclient.org>2023-01-11 00:20:57 +0100
committerDave Davenport <qball@gmpclient.org>2023-01-11 00:21:53 +0100
commit82b2ce943588c68d3301968e647fa3c460ea83ea (patch)
treeba6c8f13b70ca04c9fc954b7d3414634aef12520
parentb02a9d552b7b5fd550c3bd09e829bba31cc102c4 (diff)
[FileBrowser] Allow command to be overwritten
-rw-r--r--doc/rofi.14
-rw-r--r--doc/rofi.1.markdown2
-rw-r--r--source/modes/filebrowser.c14
3 files changed, 18 insertions, 2 deletions
diff --git a/doc/rofi.1 b/doc/rofi.1
index bf050441..115dd38b 100644
--- a/doc/rofi.1
+++ b/doc/rofi.1
@@ -38,7 +38,7 @@ To show the \fB\fCdrun\fR dialog:
.RE
.PP
-A very useful setup in minimalistic window managers is to combine \fB\fCdrun\fR, \fB\fCrun\fR
+A useful setup in minimalistic window managers is to combine \fB\fCdrun\fR, \fB\fCrun\fR
with \fB\fCwindow\fR mode:
.PP
@@ -1157,6 +1157,8 @@ configuration {
show-hidden: false;
/** return 1 on cancel. */
cancel-returns-1: true;
+ /** command */
+ command: "xdg-open";
}
}
diff --git a/doc/rofi.1.markdown b/doc/rofi.1.markdown
index b80fa584..b709dd94 100644
--- a/doc/rofi.1.markdown
+++ b/doc/rofi.1.markdown
@@ -712,6 +712,8 @@ configuration {
show-hidden: false;
/** return 1 on cancel. */
cancel-returns-1: true;
+ /** command */
+ command: "xdg-open";
}
}
```
diff --git a/source/modes/filebrowser.c b/source/modes/filebrowser.c
index 9095fc71..b8ee2161 100644
--- a/source/modes/filebrowser.c
+++ b/source/modes/filebrowser.c
@@ -50,6 +50,7 @@
#include "rofi-icon-fetcher.h"
#define FILEBROWSER_CACHE_FILE "rofi3.filebrowsercache"
+#define DEFAULT_OPEN "xdg-open"
#if defined(__APPLE__)
#define st_atim st_atimespec
@@ -97,6 +98,7 @@ typedef struct {
} FBFile;
typedef struct {
+ char *command;
GFile *current_dir;
FBFile *array;
unsigned int array_length;
@@ -344,6 +346,7 @@ static void get_file_browser(Mode *sw) {
}
static void file_browser_mode_init_config(Mode *sw) {
+ FileBrowserModePrivateData * pd = (FileBrowserModePrivateData*)mode_get_private_data(sw);
char *msg = NULL;
gboolean found_error = FALSE;
@@ -380,6 +383,14 @@ static void file_browser_mode_init_config(Mode *sw) {
file_browser_config.show_hidden = p->value.b;
}
+ p = rofi_theme_find_property(wid, P_STRING, "command", TRUE);
+ if ( p != NULL && p->type == P_STRING ) {
+ pd->command = g_strdup(p->value.s);
+ } else {
+ pd->command = g_strdup(DEFAULT_OPEN);
+ }
+
+
if (found_error) {
rofi_view_error_dialog(msg, FALSE);
@@ -484,7 +495,7 @@ static ModeMode file_browser_mode_result(Mode *sw, int mretv, char **input,
(pd->array[selected_line].type == DIRECTORY &&
special_command)) {
char *d_esc = g_shell_quote(pd->array[selected_line].path);
- char *cmd = g_strdup_printf("xdg-open %s", d_esc);
+ char *cmd = g_strdup_printf("%s %s",pd->command, d_esc);
g_free(d_esc);
char *cdir = g_file_get_path(pd->current_dir);
helper_execute_command(cdir, cmd, FALSE, NULL);
@@ -546,6 +557,7 @@ static void file_browser_mode_destroy(Mode *sw) {
(FileBrowserModePrivateData *)mode_get_private_data(sw);
if (pd != NULL) {
g_object_unref(pd->current_dir);
+ g_free(pd->command);
free_list(pd);
g_free(pd);
mode_set_private_data(sw, NULL);