diff options
author | William Carroll <wpcarro@gmail.com> | 2018-10-06T21·12-0400 |
---|---|---|
committer | William Carroll <wpcarro@gmail.com> | 2018-10-06T21·12-0400 |
commit | e6c5065b5bcb1a52196eb3c3892b91c1b3da98fd (patch) | |
tree | 178346c4160c97ca6026ff08688594ecd789fc59 /configs/linux/misc/.config/i3/i3-navigate-emacs | |
parent | 0c012554b9e81dde34621d7f37e54f2ecce685a6 (diff) |
Integrate i3 and Emacs
Super shared KBDs between i3wm and Emacs for: - focusing windows (i.e. M-{h,j,k,l}) - deleting windows (i.e. M-q) More support may be needed, but this is good DWIM behavior for now.
Diffstat (limited to 'configs/linux/misc/.config/i3/i3-navigate-emacs')
-rwxr-xr-x | configs/linux/misc/.config/i3/i3-navigate-emacs | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/configs/linux/misc/.config/i3/i3-navigate-emacs b/configs/linux/misc/.config/i3/i3-navigate-emacs new file mode 100755 index 000000000000..f973c6667f74 --- /dev/null +++ b/configs/linux/misc/.config/i3/i3-navigate-emacs @@ -0,0 +1,41 @@ +#!/usr/bin/env bash + +# Heavily inspired by this blog post: +# https://bl.ocks.org/mijoharas/b9d09daed9654ca8d0d081015209ecd0 + +get_focused_window() { + i3-msg -t get_tree | jq -r ".. | select(.focused? == true).window_properties.class" +} + +perform_close() { + if [ "$(get_focused_window)" = "Emacs" ]; then + emacsclient -e "(delete-window)" + else + i3-msg kill + fi +} + +perform_move() { + if [ "$(get_focused_window)" = "Emacs" ]; then + emacsclient -e "(evil-window-$1 1)" + result=$? + if [ $result -ne 0 ]; then + i3-msg focus "$1" + fi + else + i3-msg focus "$1" + fi +} + +case "$1" in + left) ;& + right) ;& + up) ;& + down) + perform_move "$1" + ;; + quit) + perform_close + ;; + *) echo "command not found" ;; +esac |