From 62b986055a668a6936ef724b5ea80dbe90886020 Mon Sep 17 00:00:00 2001 From: Armaan Bhojwani Date: Wed, 9 Jun 2021 21:54:32 -0400 Subject: [PATCH] Add "open with xdg-open" option to downloads --- src/downloads.c | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/src/downloads.c b/src/downloads.c index ec0b242..52a8eb0 100644 --- a/src/downloads.c +++ b/src/downloads.c @@ -181,6 +181,15 @@ download_copy_path(GtkMenuItem *tb, gpointer data) { strlen(path) - 7); // Offset by 7 to remove "file://" } +void +download_xdg_open(GtkMenuItem *tb, gpointer data) { + struct DownloadItem *payload = data; + const gchar *path = webkit_download_get_destination(payload->download); + char *cmd = malloc(strlen(path) + 9); + sprintf(cmd, "xdg-open %s", path); + system(cmd); +} + void download_click(GtkToolButton *tb, gpointer data) { GtkWidget *pmenu = gtk_menu_new(); @@ -191,13 +200,21 @@ download_click(GtkToolButton *tb, gpointer data) { option = gtk_menu_item_new_with_label("Cancel download"); g_signal_connect(G_OBJECT(option), "activate", G_CALLBACK(download_cancel), data); + gtk_widget_show(option); + gtk_menu_shell_append(GTK_MENU_SHELL(pmenu), option); } else { option = gtk_menu_item_new_with_label("Remove download"); g_signal_connect(G_OBJECT(option), "activate", G_CALLBACK(download_remove), data); + gtk_widget_show(option); + gtk_menu_shell_append(GTK_MENU_SHELL(pmenu), option); + + option = gtk_menu_item_new_with_label("Open file with xdg-open"); + gtk_widget_show(option); + gtk_menu_shell_append(GTK_MENU_SHELL(pmenu), option); + g_signal_connect(G_OBJECT(option), "activate", + G_CALLBACK(download_xdg_open), data); } - gtk_widget_show(option); - gtk_menu_shell_append(GTK_MENU_SHELL(pmenu), option); option = gtk_menu_item_new_with_label("Copy download URL"); gtk_widget_show(option); -- 2.39.2