From ba400c66f31330dedaa5e4632b69f9b36e80a239 Mon Sep 17 00:00:00 2001 From: Juan Campa Date: Mon, 10 Sep 2018 21:45:07 -0700 Subject: [PATCH 1/2] Sending escape instead of Escape which doesn't seem to work here Ubuntu 18.04 --- i3-vim-focus/src/main.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/i3-vim-focus/src/main.rs b/i3-vim-focus/src/main.rs index 1da1274..975b320 100644 --- a/i3-vim-focus/src/main.rs +++ b/i3-vim-focus/src/main.rs @@ -111,8 +111,8 @@ fn xdo_i3_calls(name: &str, direction: Direction, move_window: bool) -> Result format!("Escape+g+m+{}", direction.to_vim_direction()), - false => format!("Escape+g+w+{}", direction.to_vim_direction()), + true => format!("escape+g+m+{}", direction.to_vim_direction()), + false => format!("escape+g+w+{}", direction.to_vim_direction()), }; let mods = xdo.get_active_modifiers()?; window.clear_active_modifiers(&mods)?; From f00ede5ed4b0f3be6f1e130a7eec362edf53d21b Mon Sep 17 00:00:00 2001 From: Juan Campa Date: Fri, 14 Dec 2018 15:47:26 -0500 Subject: [PATCH 2/2] Adding C version --- i3-vim-focus/i3-vim-focus-c | Bin 0 -> 17160 bytes i3-vim-focus/main.c | 63 ++++++++++++++++++++++++++++++++++++ 2 files changed, 63 insertions(+) create mode 100755 i3-vim-focus/i3-vim-focus-c create mode 100644 i3-vim-focus/main.c diff --git a/i3-vim-focus/i3-vim-focus-c b/i3-vim-focus/i3-vim-focus-c new file mode 100755 index 0000000000000000000000000000000000000000..46925e5de7d991de3da6f55896d98cfef5152070 GIT binary patch literal 17160 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 + +#include +#include + +#include + +#include +#include + +int main(int argc, char *argv[]) { + + char cmd[20]; + + unsigned char *name; + int name_len; + int name_type; + Window window_ret; + + i3ipcConnection *conn; + gchar *reply; + + if(argc < 2){ + printf("Missing argument\n"); + return 1; + } + + xdo_t *xdo = xdo_new(NULL); + xdo_get_active_window(xdo, &window_ret); + xdo_get_window_name(xdo, window_ret, &name, &name_len, &name_type); + + if(strstr(name, "VIM")) + { + strcpy(cmd, "Escape+g+w+"); + + + strcat(cmd, (argv[1][0] == 'l')? "h" : + (argv[1][0] == 'd')? "j" : + (argv[1][0] == 'u')? "k" : + "l" ); + + xdo_send_keysequence_window(xdo, window_ret, cmd, 0); + } + else + { + conn = i3ipc_connection_new(NULL, NULL); + strcpy(cmd, "focus "); + strcat(cmd, argv[1]); + reply = i3ipc_connection_message(conn, I3IPC_MESSAGE_TYPE_COMMAND, cmd, NULL); + g_free(reply); + g_object_unref(conn); + } + + XFree(name); + return 0; +}