diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/core/keybindings.c | 37 | ||||
-rw-r--r-- | src/include/all-keybindings.h | 2 |
2 files changed, 39 insertions, 0 deletions
diff --git a/src/core/keybindings.c b/src/core/keybindings.c index 73966a80..9e602a91 100644 --- a/src/core/keybindings.c +++ b/src/core/keybindings.c @@ -3421,3 +3421,40 @@ meta_set_keybindings_disabled (gboolean setting) meta_topic (META_DEBUG_KEYBINDINGS, "Keybindings %s\n", all_bindings_disabled ? "disabled" : "enabled"); } + +static void +handle_run_terminal (MetaDisplay *display, + MetaScreen *screen, + MetaWindow *window, + XEvent *event, + MetaKeyBinding *binding) +{ + const char *command; + GError *err; + + command = meta_prefs_get_terminal_command (); + + if (command == NULL) + { + char *s; + + meta_topic (META_DEBUG_KEYBINDINGS, + "No terminal command to run in response to " + "keybinding press\n"); + + s = g_strdup_printf (_("No terminal command has been defined.\n")); + error_on_command (-1, NULL, s, screen->screen_name, event->xkey.time); + g_free (s); + + return; + } + + err = NULL; + if (!meta_spawn_command_line_async_on_screen (command, screen, &err)) + { + error_on_command (-1, command, err->message, screen->screen_name, + event->xkey.time); + + g_error_free (err); + } +} diff --git a/src/include/all-keybindings.h b/src/include/all-keybindings.h index 5773a810..a14777e9 100644 --- a/src/include/all-keybindings.h +++ b/src/include/all-keybindings.h @@ -186,6 +186,8 @@ keybind (run-command-32, handle_run_command, 31, 0) keybind (run-command-screenshot, handle_run_command, 32, 0) keybind (run-command-window-screenshot, handle_run_command, 33, 0) +keybind (run-command-terminal, handle_run_terminal, 0, 0) + /* No description because this is undocumented */ keybind (set-spew-mark, handle_set_spew_mark, 0, 0) |