summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/core/keybindings.c37
-rw-r--r--src/include/all-keybindings.h2
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)