billiob pushed a commit to branch master. http://git.enlightenment.org/apps/terminology.git/commit/?id=d293b2531affed91f344d4e36f5e096644c1116b
commit d293b2531affed91f344d4e36f5e096644c1116b Author: Andy Williams <a...@andywilliams.me> Date: Sun Mar 6 13:22:49 2016 +0100 shortcuts: Open new terminals with ctrl+shift+n Summary: Add a new configurable key binding to open a new terminal window Test Plan: Either wipe your terminology configuration or bind the new "Open a new terminal window" option to ctrl+shift+n. Tapping that key combination will then open a new window. Reviewers: billiob Differential Revision: https://phab.enlightenment.org/D3746 --- src/bin/config.c | 17 +++++++++++++++-- src/bin/keyin.c | 22 ++++++++++++++++++++++ 2 files changed, 37 insertions(+), 2 deletions(-) diff --git a/src/bin/config.c b/src/bin/config.c index 4486f58..54ed8ac 100644 --- a/src/bin/config.c +++ b/src/bin/config.c @@ -7,7 +7,7 @@ #include "col.h" #include "utils.h" -#define CONF_VER 7 +#define CONF_VER 8 #define LIM(v, min, max) {if (v >= max) v = max; else if (v <= min) v = min;} @@ -340,6 +340,7 @@ _add_default_keys(Config *config) ADD_KB("v", 1, 0, 1, 0, "paste_clipboard"); ADD_KB("h", 1, 0, 1, 0, "miniview"); ADD_KB("Insert", 1, 0, 1, 0, "paste_clipboard"); + ADD_KB("n", 1, 0, 1, 0, "term_new"); /* Ctrl-Alt- */ ADD_KB("equal", 1, 1, 0, 0, "increase_font_size"); @@ -359,6 +360,15 @@ _add_default_keys(Config *config) ADD_KB("KP_Divide", 0, 0, 1, 0, "copy_clipboard"); } +static void +_add_key(Config *config, const char *name, int ctrl, int alt, int shift, + int win, const char *cb_name) +{ + Config_Keys *kb; + + ADD_KB(name, ctrl, alt, shift, win, cb_name); +} + #undef ADD_KB @@ -556,8 +566,11 @@ config_load(const char *key) case 6: config->changedir_to_current = EINA_TRUE; /*pass through*/ - case CONF_VER: /* 7 */ + case 7: config->version = CONF_VER; + /*pass through*/ + case CONF_VER: /* 8 */ + _add_key(config, "n", 1, 0, 1, 0, "term_new"); break; default: if (config->version < CONF_VER) diff --git a/src/bin/keyin.c b/src/bin/keyin.c index 1aed059..14731b2 100644 --- a/src/bin/keyin.c +++ b/src/bin/keyin.c @@ -366,6 +366,27 @@ cb_term_next(Evas_Object *termio_obj) return EINA_TRUE; } +static Eina_Bool +cb_term_new(Evas_Object *termio_obj) +{ + char path[PATH_MAX], cwd[PATH_MAX], *cmd; + const char *template = "%s -d %s"; + int length; + + eina_file_path_join(path, sizeof(path), elm_app_bin_dir_get(), + "terminology"); + termio_cwd_get(termio_obj, cwd, sizeof(cwd)); + + length = (strlen(path) + strlen(cwd) + strlen(template) - 3); + cmd = malloc(sizeof(char) * length); + snprintf(cmd, length, template, path, cwd); + + ecore_exe_run(cmd, NULL); + free(cmd); + + return EINA_TRUE; +} + #define CB_TAB(N) \ static Eina_Bool \ cb_tab_##N(Evas_Object *termio_obj) \ @@ -604,6 +625,7 @@ static Shortcut_Action _actions[] = {"reset_font_size", gettext_noop("Reset font size"), cb_reset_font_size}, {"group", gettext_noop("Actions"), NULL}, + {"term_new", gettext_noop("Open a new terminal window"), cb_term_new}, {"win_fullscreen", gettext_noop("Toggle Fullscreen of the window"), cb_win_fullscreen}, {"miniview", gettext_noop("Display the history miniview"), cb_miniview}, {"cmd_box", gettext_noop("Display the command box"), cb_cmd_box}, --