From 5bb70b7a422a41725d894df3f4035e39d6905f0c Mon Sep 17 00:00:00 2001 From: utkarshvg2401 Date: Fri, 1 Apr 2022 10:48:08 +0530 Subject: [PATCH] files-view: Add menu item to copy current path Currently, there is no option to directly copy the path of the current open directory. This can be useful when users want to use the path of the directory in the terminal or some code. Close https://gitlab.gnome.org/GNOME/nautilus/-/issues/1966 --- src/nautilus-files-view.c | 29 +++++++++++++++++++ .../ui/nautilus-files-view-context-menus.ui | 4 +++ 2 files changed, 33 insertions(+) diff --git a/src/nautilus-files-view.c b/src/nautilus-files-view.c index 2223d0bdf2..1d491c2e46 100644 --- a/src/nautilus-files-view.c +++ b/src/nautilus-files-view.c @@ -6008,6 +6008,30 @@ action_cut (GSimpleAction *action, nautilus_file_list_free (selection); } +static void +action_copy_current_location (GSimpleAction *action, + GVariant *state, + gpointer user_data) +{ + NautilusFilesView *view; + GdkClipboard *clipboard; + GList *files; + NautilusFilesViewPrivate *priv; + + view = NAUTILUS_FILES_VIEW (user_data); + priv = nautilus_files_view_get_instance_private (view); + + if (priv->directory_as_file != NULL) + { + files = g_list_append (NULL, nautilus_file_ref (priv->directory_as_file)); + + clipboard = gtk_widget_get_clipboard (GTK_WIDGET (view)); + nautilus_clipboard_prepare_for_files (clipboard, files, FALSE); + + nautilus_file_list_free (files); + } +} + static void action_create_links_in_place (GSimpleAction *action, GVariant *state, @@ -7015,6 +7039,7 @@ const GActionEntry view_entries[] = { "new-folder", action_new_folder }, { "select-all", action_select_all }, { "paste", action_paste_files }, + { "copy-current-location", action_copy_current_location }, { "paste_accel", action_paste_files_accel }, { "create-link", action_create_links }, { "new-document" }, @@ -7630,6 +7655,10 @@ real_update_actions_state (NautilusFilesView *view) action = g_action_map_lookup_action (G_ACTION_MAP (view_action_group), "preview-selection"); g_simple_action_set_enabled (G_SIMPLE_ACTION (action), selection_count != 0); + action = g_action_map_lookup_action (G_ACTION_MAP (view_action_group), + "copy-current-location"); + g_simple_action_set_enabled (G_SIMPLE_ACTION (action), + !selection_contains_search); /* Drive menu */ show_mount = (selection != NULL); diff --git a/src/resources/ui/nautilus-files-view-context-menus.ui b/src/resources/ui/nautilus-files-view-context-menus.ui index b159703666..40a066aba6 100644 --- a/src/resources/ui/nautilus-files-view-context-menus.ui +++ b/src/resources/ui/nautilus-files-view-context-menus.ui @@ -20,6 +20,10 @@ _Open With Other Application view.open-current-directory-with-other-application + + _Copy Location + view.copy-current-location +
-- GitLab