Created
August 13, 2025 19:19
-
-
Save dctucker/f439df8fa2f396e4f4159045a4434b4f to your computer and use it in GitHub Desktop.
Patch for GNOME Files to use <Super> instead of <Control> for accelerators
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/src/gtk/nautilusgtkplacessidebar.c b/src/gtk/nautilusgtkplacessidebar.c | |
index d1649e5c7..c93d6779f 100644 | |
--- a/src/gtk/nautilusgtkplacessidebar.c | |
+++ b/src/gtk/nautilusgtkplacessidebar.c | |
@@ -2620,7 +2620,7 @@ on_key_pressed (GtkEventControllerKey *controller, | |
if ((state & modifiers) == GDK_SHIFT_MASK) | |
open_flags = NAUTILUS_OPEN_FLAG_NEW_TAB; | |
- else if ((state & modifiers) == GDK_CONTROL_MASK) | |
+ else if ((state & modifiers) == GDK_SUPER_MASK) | |
open_flags = NAUTILUS_OPEN_FLAG_NEW_WINDOW; | |
open_row (NAUTILUS_GTK_SIDEBAR_ROW (row), open_flags); | |
@@ -3117,7 +3117,7 @@ on_row_released (GtkGestureClick *gesture, | |
{ | |
NautilusOpenFlags open_flags = NAUTILUS_OPEN_FLAG_NORMAL; | |
- open_flags = (state & GDK_CONTROL_MASK) ? | |
+ open_flags = (state & GDK_SUPER_MASK) ? | |
NAUTILUS_OPEN_FLAG_NEW_WINDOW : | |
NAUTILUS_OPEN_FLAG_NEW_TAB; | |
diff --git a/src/nautilus-application.c b/src/nautilus-application.c | |
index 71b90253b..cc238c51f 100644 | |
--- a/src/nautilus-application.c | |
+++ b/src/nautilus-application.c | |
@@ -811,13 +811,13 @@ nautilus_init_application_actions (NautilusApplication *app) | |
nautilus_application_set_accelerator (G_APPLICATION (app), | |
- "app.clone-window", "<Primary>n"); | |
+ "app.clone-window", "<super>n"); | |
nautilus_application_set_accelerator (G_APPLICATION (app), | |
"app.help", "F1"); | |
nautilus_application_set_accelerator (G_APPLICATION (app), | |
- "app.quit", "<Primary>q"); | |
+ "app.quit", "<super>q"); | |
nautilus_application_set_accelerator (G_APPLICATION (app), | |
- "app.preferences", "<Primary>comma"); | |
+ "app.preferences", "<super>comma"); | |
} | |
static void | |
diff --git a/src/nautilus-files-view.c b/src/nautilus-files-view.c | |
index 10a29a20e..4bb7f7804 100644 | |
--- a/src/nautilus-files-view.c | |
+++ b/src/nautilus-files-view.c | |
@@ -9791,26 +9791,28 @@ nautilus_files_view_class_init (NautilusFilesViewClass *klass) | |
gtk_widget_class_add_binding_action (widget_class, GDK_KEY_Delete, 0, "view.delete-permanently-menu-item", NULL); | |
gtk_widget_class_add_binding_action (widget_class, GDK_KEY_F2, 0, "view.rename", NULL); | |
+ gtk_widget_class_add_binding_action (widget_class, GDK_KEY_E, GDK_SUPER_MASK, "view.rename", NULL); | |
gtk_widget_class_add_binding_action (widget_class, GDK_KEY_Menu, 0, "view.popup-menu", NULL); | |
gtk_widget_class_add_binding_action (widget_class, GDK_KEY_F10, GDK_SHIFT_MASK, "view.popup-menu", NULL); | |
- gtk_widget_class_add_binding_action (widget_class, GDK_KEY_o, GDK_CONTROL_MASK, "view.open-with-default-application", NULL); | |
+ gtk_widget_class_add_binding_action (widget_class, GDK_KEY_o, GDK_SUPER_MASK, "view.open-with-default-application", NULL); | |
/* This is not necessary per-se, because it's the default activation | |
* keybinding. But in order for it to appear in the context menu as a | |
* keyboard shortcut, we need to bind it to the menu item action here. */ | |
gtk_widget_class_add_binding_action (widget_class, GDK_KEY_Return, 0, "view.open-with-default-application", NULL); | |
- gtk_widget_class_add_binding_action (widget_class, GDK_KEY_i, GDK_CONTROL_MASK, "view.properties", NULL); | |
+ gtk_widget_class_add_binding_action (widget_class, GDK_KEY_i, GDK_SUPER_MASK, "view.properties", NULL); | |
gtk_widget_class_add_binding_action (widget_class, GDK_KEY_Return, GDK_ALT_MASK, "view.properties", NULL); | |
- gtk_widget_class_add_binding_action (widget_class, GDK_KEY_a, GDK_CONTROL_MASK, "view.select-all", NULL); | |
- gtk_widget_class_add_binding_action (widget_class, GDK_KEY_i, GDK_CONTROL_MASK | GDK_SHIFT_MASK, "view.invert-selection", NULL); | |
- gtk_widget_class_add_binding_action (widget_class, GDK_KEY_m, GDK_CONTROL_MASK, "view.create-link", NULL); | |
- gtk_widget_class_add_binding_action (widget_class, GDK_KEY_m, GDK_CONTROL_MASK, "view.create-link-shortcut", NULL); | |
- gtk_widget_class_add_binding_action (widget_class, GDK_KEY_m, GDK_CONTROL_MASK | GDK_SHIFT_MASK, "view.create-link-in-place", NULL); | |
- gtk_widget_class_add_binding_action (widget_class, GDK_KEY_m, GDK_CONTROL_MASK | GDK_SHIFT_MASK, "view.create-link-in-place-shortcut", NULL); | |
- gtk_widget_class_add_binding_action (widget_class, GDK_KEY_Return, GDK_CONTROL_MASK, "view.open-item-new-tab", NULL); | |
+ gtk_widget_class_add_binding_action (widget_class, GDK_KEY_a, GDK_SUPER_MASK, "view.select-all", NULL); | |
+ gtk_widget_class_add_binding_action (widget_class, GDK_KEY_i, GDK_SUPER_MASK | GDK_SHIFT_MASK, "view.invert-selection", NULL); | |
+ gtk_widget_class_add_binding_action (widget_class, GDK_KEY_m, GDK_SUPER_MASK, "view.create-link", NULL); | |
+ gtk_widget_class_add_binding_action (widget_class, GDK_KEY_m, GDK_SUPER_MASK, "view.create-link-shortcut", NULL); | |
+ gtk_widget_class_add_binding_action (widget_class, GDK_KEY_m, GDK_SUPER_MASK | GDK_SHIFT_MASK, "view.create-link-in-place", NULL); | |
+ gtk_widget_class_add_binding_action (widget_class, GDK_KEY_m, GDK_SUPER_MASK | GDK_SHIFT_MASK, "view.create-link-in-place-shortcut", NULL); | |
+ gtk_widget_class_add_binding_action (widget_class, GDK_KEY_Return, GDK_SUPER_MASK, "view.open-item-new-tab", NULL); | |
gtk_widget_class_add_binding_action (widget_class, GDK_KEY_Return, GDK_SHIFT_MASK, "view.open-item-new-window", NULL); | |
- gtk_widget_class_add_binding_action (widget_class, GDK_KEY_o, GDK_CONTROL_MASK | GDK_ALT_MASK, "view.open-item-location", NULL); | |
- gtk_widget_class_add_binding_action (widget_class, GDK_KEY_c, GDK_CONTROL_MASK, "view.copy", NULL); | |
- gtk_widget_class_add_binding_action (widget_class, GDK_KEY_x, GDK_CONTROL_MASK, "view.cut", NULL); | |
+ gtk_widget_class_add_binding_action (widget_class, GDK_KEY_o, GDK_SUPER_MASK | GDK_ALT_MASK, "view.open-item-location", NULL); | |
+ gtk_widget_class_add_binding_action (widget_class, GDK_KEY_c, GDK_SUPER_MASK, "view.copy", NULL); | |
+ gtk_widget_class_add_binding_action (widget_class, GDK_KEY_x, GDK_SUPER_MASK, "view.cut", NULL); | |
+ gtk_widget_class_add_binding_action (widget_class, GDK_KEY_v, GDK_SUPER_MASK, "view.paste", NULL); | |
} | |
static void | |
@@ -9945,18 +9947,18 @@ nautilus_files_view_init (NautilusFilesView *view) | |
gtk_shortcut_controller_set_scope (priv->shortcuts, GTK_SHORTCUT_SCOPE_MANAGED); | |
gtk_widget_add_controller (GTK_WIDGET (view), GTK_EVENT_CONTROLLER (priv->shortcuts)); | |
- ADD_SHORTCUT_FOR_ACTION (priv->shortcuts, "view.zoom-in", "<control>equal|<control>plus|<control>KP_Add|ZoomIn"); | |
- ADD_SHORTCUT_FOR_ACTION (priv->shortcuts, "view.zoom-out", "<control>minus|<control>KP_Subtract|ZoomOut"); | |
- ADD_SHORTCUT_FOR_ACTION (priv->shortcuts, "view.show-hidden-files", "<control>h"); | |
+ ADD_SHORTCUT_FOR_ACTION (priv->shortcuts, "view.zoom-in", "<super>equal|<super>plus|<super>KP_Add|ZoomIn"); | |
+ ADD_SHORTCUT_FOR_ACTION (priv->shortcuts, "view.zoom-out", "<super>minus|<super>KP_Subtract|ZoomOut"); | |
+ ADD_SHORTCUT_FOR_ACTION (priv->shortcuts, "view.show-hidden-files", "<super>h"); | |
/* Despite putting copy/cut at the widget scope instead of the global one, | |
* we're putting paste "managed" so that it's easy to switch between apps | |
* with e.g. Alt+Tab and paste directly the copied file without having to | |
* make sure the focus is on the files view. | |
*/ | |
- ADD_SHORTCUT_FOR_ACTION (priv->shortcuts, "view.paste_accel", "<control>v"); | |
- ADD_SHORTCUT_FOR_ACTION (priv->shortcuts, "view.new-folder", "<control><shift>n"); | |
- ADD_SHORTCUT_FOR_ACTION (priv->shortcuts, "view.select-pattern", "<control>s"); | |
- ADD_SHORTCUT_FOR_ACTION (priv->shortcuts, "view.zoom-standard", "<control>0|<control>KP_0"); | |
+ ADD_SHORTCUT_FOR_ACTION (priv->shortcuts, "view.paste_accel", "<super>v"); | |
+ ADD_SHORTCUT_FOR_ACTION (priv->shortcuts, "view.new-folder", "<super><shift>n"); | |
+ ADD_SHORTCUT_FOR_ACTION (priv->shortcuts, "view.select-pattern", "<super>s"); | |
+ ADD_SHORTCUT_FOR_ACTION (priv->shortcuts, "view.zoom-standard", "<super>0|<super>KP_0"); | |
#undef ADD_SHORTCUT_FOR_ACTION | |
/* This one should have been a keybinding, because it should trigger only | |
diff --git a/src/nautilus-list-base.c b/src/nautilus-list-base.c | |
index ebcf78b9b..d657e0f8e 100644 | |
--- a/src/nautilus-list-base.c | |
+++ b/src/nautilus-list-base.c | |
@@ -252,7 +252,7 @@ on_item_click_pressed (GtkGestureClick *gesture, | |
button = gtk_gesture_single_get_current_button (GTK_GESTURE_SINGLE (gesture)); | |
modifiers = gtk_event_controller_get_current_event_state (GTK_EVENT_CONTROLLER (gesture)); | |
- selection_mode = (modifiers & (GDK_CONTROL_MASK | GDK_SHIFT_MASK)); | |
+ selection_mode = (modifiers & (GDK_SUPER_MASK | GDK_SHIFT_MASK)); | |
/* Before anything else, store event state to be read by other handlers. */ | |
priv->deny_background_click = TRUE; | |
@@ -365,7 +365,7 @@ on_view_click_pressed (GtkGestureClick *gesture, | |
/* Don't interfere with GtkListBase default selection handling when | |
* holding Ctrl and Shift. */ | |
modifiers = gtk_event_controller_get_current_event_state (GTK_EVENT_CONTROLLER (gesture)); | |
- selection_mode = (modifiers & (GDK_CONTROL_MASK | GDK_SHIFT_MASK)); | |
+ selection_mode = (modifiers & (GDK_SUPER_MASK | GDK_SHIFT_MASK)); | |
if (!selection_mode) | |
{ | |
gtk_selection_model_unselect_all (GTK_SELECTION_MODEL (priv->model)); | |
diff --git a/src/nautilus-pathbar.c b/src/nautilus-pathbar.c | |
index f7e9a2c72..c205afbc7 100644 | |
--- a/src/nautilus-pathbar.c | |
+++ b/src/nautilus-pathbar.c | |
@@ -721,7 +721,7 @@ on_click_gesture_pressed (GtkGestureClick *gesture, | |
case GDK_BUTTON_PRIMARY: | |
{ | |
- if ((state & GDK_CONTROL_MASK) != 0) | |
+ if ((state & GDK_SUPER_MASK) != 0) | |
{ | |
g_signal_emit (button_data->path_bar, path_bar_signals[OPEN_LOCATION], 0, | |
button_data->path, | |
diff --git a/src/nautilus-query-editor.c b/src/nautilus-query-editor.c | |
index 5748ed35c..2d5e8c36c 100644 | |
--- a/src/nautilus-query-editor.c | |
+++ b/src/nautilus-query-editor.c | |
@@ -920,7 +920,7 @@ nautilus_gtk_search_entry_is_keynav_event (guint keyval, | |
keyval == GDK_KEY_End || keyval == GDK_KEY_KP_End || | |
keyval == GDK_KEY_Page_Up || keyval == GDK_KEY_KP_Page_Up || | |
keyval == GDK_KEY_Page_Down || keyval == GDK_KEY_KP_Page_Down || | |
- ((state & (GDK_CONTROL_MASK | GDK_ALT_MASK)) != 0)) | |
+ ((state & (GDK_SUPER_MASK | GDK_CONTROL_MASK | GDK_ALT_MASK)) != 0)) | |
{ | |
return TRUE; | |
} | |
diff --git a/src/nautilus-rename-file-popover.c b/src/nautilus-rename-file-popover.c | |
index ec98fe1ba..330db7e9f 100644 | |
--- a/src/nautilus-rename-file-popover.c | |
+++ b/src/nautilus-rename-file-popover.c | |
@@ -131,7 +131,7 @@ on_event_controller_key_key_pressed (GtkEventControllerKey *controller, | |
{ | |
return name_entry_on_f2_pressed (widget, self); | |
} | |
- else if (keyval == GDK_KEY_z && (state & GDK_CONTROL_MASK) != 0) | |
+ else if (keyval == GDK_KEY_z && (state & GDK_SUPER_MASK) != 0) | |
{ | |
return name_entry_on_undo (widget, self); | |
} | |
diff --git a/src/nautilus-toolbar.c b/src/nautilus-toolbar.c | |
index 2f63ca804..7e4e37ba8 100644 | |
--- a/src/nautilus-toolbar.c | |
+++ b/src/nautilus-toolbar.c | |
@@ -270,7 +270,7 @@ nautilus_toolbar_init (NautilusToolbar *self) | |
gtk_shortcut_new (gtk_shortcut_trigger_parse_string ((trigger)), \ | |
gtk_named_action_new ((action))))) | |
- ADD_SHORTCUT_FOR_ACTION (shortcuts, "toolbar.edit-location", "<control>l|Go|OpenURL"); | |
+ ADD_SHORTCUT_FOR_ACTION (shortcuts, "toolbar.edit-location", "<super>l|Go|OpenURL"); | |
ADD_SHORTCUT_FOR_ACTION (shortcuts, "toolbar.prompt-root-location", "slash|KP_Divide"); | |
/* Support keyboard layouts which have a dead tilde key but not a tilde key. */ | |
ADD_SHORTCUT_FOR_ACTION (shortcuts, "toolbar.prompt-home-location", "asciitilde|dead_tilde"); | |
diff --git a/src/nautilus-window-slot.c b/src/nautilus-window-slot.c | |
index 27fbd13fc..866fc9d57 100644 | |
--- a/src/nautilus-window-slot.c | |
+++ b/src/nautilus-window-slot.c | |
@@ -600,7 +600,8 @@ nautilus_window_slot_handle_event (NautilusWindowSlot *self, | |
"search-visible"); | |
if (keyval == GDK_KEY_Escape || | |
- keyval == GDK_KEY_BackSpace) | |
+ keyval == GDK_KEY_BackSpace || | |
+ keyval == GDK_KEY_minus) | |
{ | |
g_autoptr (GVariant) action_state = NULL; | |
@@ -1284,8 +1285,8 @@ set_back_forward_accelerators (NautilusWindowSlot *self) | |
gtk_shortcut_new (gtk_shortcut_trigger_parse_string ((trigger)), \ | |
gtk_named_action_new ((action))))) | |
- ADD_SHORTCUT_FOR_ACTION (self->shortcuts, "slot.back", ltr ? "<alt>Left|Back" : "<alt>Right|Back"); | |
- ADD_SHORTCUT_FOR_ACTION (self->shortcuts, "slot.forward", ltr ? "<alt>Right|Forward" : "<alt>Left|Forward"); | |
+ ADD_SHORTCUT_FOR_ACTION (self->shortcuts, "slot.back", ltr ? "<super>bracketleft|<super>Left|<alt>Left|Back" : "<alt>Right|<super>Right|Back"); | |
+ ADD_SHORTCUT_FOR_ACTION (self->shortcuts, "slot.forward", ltr ? "<super>bracketright|<super>Right|<alt>Right|Forward" : "<alt>Left|<super>Left|Forward"); | |
#undef ADD_SHORTCUT_FOR_ACTION | |
} | |
@@ -1373,24 +1374,24 @@ nautilus_window_slot_init (NautilusWindowSlot *self) | |
__VA_ARGS__))) | |
ADD_SHORTCUT_FOR_ACTION_WITH_ARGS (self->shortcuts, | |
- "slot.files-view-mode", "<control>1", | |
+ "slot.files-view-mode", "<super>1", | |
"u", NAUTILUS_VIEW_LIST_ID); | |
ADD_SHORTCUT_FOR_ACTION_WITH_ARGS (self->shortcuts, | |
- "slot.files-view-mode", "<control>2", | |
+ "slot.files-view-mode", "<super>2", | |
"u", NAUTILUS_VIEW_GRID_ID); | |
ADD_SHORTCUT_FOR_ACTION_WITH_ARGS (self->shortcuts, | |
- "slot.open-location", "<alt>Home|HomePage|Start", | |
+ "slot.open-location", "<super>Home|HomePage|Start", | |
"s", home_uri); | |
ADD_SHORTCUT_FOR_ACTION_WITH_ARGS (self->shortcuts, | |
"slot.open-location", "Favorites", | |
"s", SCHEME_STARRED ":///"); | |
- ADD_SHORTCUT_FOR_ACTION (self->shortcuts, "slot.focus-search", "<control>f|Search"); | |
- ADD_SHORTCUT_FOR_ACTION (self->shortcuts, "slot.search-global", "<control><shift>f"); | |
- ADD_SHORTCUT_FOR_ACTION (self->shortcuts, "slot.reload", "F5|<ctrl>r|Refresh|Reload"); | |
- ADD_SHORTCUT_FOR_ACTION (self->shortcuts, "slot.stop", "Stop"); | |
- ADD_SHORTCUT_FOR_ACTION (self->shortcuts, "slot.up", "<alt>Up"); | |
- ADD_SHORTCUT_FOR_ACTION (self->shortcuts, "slot.down", "<alt>Down"); | |
- ADD_SHORTCUT_FOR_ACTION (self->shortcuts, "slot.bookmark-current-directory", "<control>d|AddFavorite"); | |
+ ADD_SHORTCUT_FOR_ACTION (self->shortcuts, "slot.focus-search", "<super>f|Search"); | |
+ ADD_SHORTCUT_FOR_ACTION (self->shortcuts, "slot.search-global", "<super><shift>f"); | |
+ ADD_SHORTCUT_FOR_ACTION (self->shortcuts, "slot.reload", "F5|<super>r|Refresh|Reload"); | |
+ ADD_SHORTCUT_FOR_ACTION (self->shortcuts, "slot.stop", "Stop|<super>period"); | |
+ ADD_SHORTCUT_FOR_ACTION (self->shortcuts, "slot.up", "<super>Up|minus"); | |
+ ADD_SHORTCUT_FOR_ACTION (self->shortcuts, "slot.down", "<super>Down"); | |
+ ADD_SHORTCUT_FOR_ACTION (self->shortcuts, "slot.bookmark-current-directory", "<super>d|AddFavorite"); | |
#undef ADD_SHORTCUT_FOR_ACTION | |
#undef ADD_SHORTCUT_FOR_ACTION_WITH_ARGS | |
diff --git a/src/nautilus-window.c b/src/nautilus-window.c | |
index 5797763ce..e6146f35e 100644 | |
--- a/src/nautilus-window.c | |
+++ b/src/nautilus-window.c | |
@@ -1123,16 +1123,16 @@ nautilus_window_initialize_actions (NautilusWindow *window) | |
#define ACCELS(...) ((const char *[]) { __VA_ARGS__, NULL }) | |
app = g_application_get_default (); | |
- nautilus_application_set_accelerator (app, "win.new-tab", "<control>t"); | |
- nautilus_application_set_accelerator (app, "win.close-current-view", "<control>w"); | |
+ nautilus_application_set_accelerator (app, "win.new-tab", "<super>t"); | |
+ nautilus_application_set_accelerator (app, "win.close-current-view", "<super>w"); | |
- nautilus_application_set_accelerator (app, "win.undo", "<control>z"); | |
- nautilus_application_set_accelerator (app, "win.redo", "<shift><control>z"); | |
+ nautilus_application_set_accelerator (app, "win.undo", "<super>z"); | |
+ nautilus_application_set_accelerator (app, "win.redo", "<shift><super>z"); | |
/* Only accessible by shorcuts */ | |
- nautilus_application_set_accelerator (app, "win.tab-move-left", "<shift><control>Page_Up"); | |
- nautilus_application_set_accelerator (app, "win.tab-move-right", "<shift><control>Page_Down"); | |
+ nautilus_application_set_accelerator (app, "win.tab-move-left", "<control>Page_Up"); | |
+ nautilus_application_set_accelerator (app, "win.tab-move-right", "<control>Page_Down"); | |
nautilus_application_set_accelerator (app, "win.current-location-menu", "F10"); | |
- nautilus_application_set_accelerator (app, "win.restore-tab", "<shift><control>t"); | |
+ nautilus_application_set_accelerator (app, "win.restore-tab", "<shift><super>t"); | |
nautilus_application_set_accelerator (app, "win.toggle-sidebar", "F9"); | |
/* Alt+N for the first 9 tabs */ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment