diff options
| author | Maxime Coste <frrrwww@gmail.com> | 2016-07-28 09:17:18 +0100 |
|---|---|---|
| committer | Maxime Coste <frrrwww@gmail.com> | 2016-07-28 09:17:18 +0100 |
| commit | b80dbf93229fca35230c2bb014d5ea36ba7a8dd9 (patch) | |
| tree | 34fa9430413739d8baf1887b2d80dbf63cd7bd27 /rc/base | |
| parent | 213888da749cf27e601063471f0d0bdb74e23249 (diff) | |
Move x11.kak and tmux.kak to rc/base from rc/core
Diffstat (limited to 'rc/base')
| -rw-r--r-- | rc/base/tmux.kak | 53 | ||||
| -rw-r--r-- | rc/base/x11.kak | 46 |
2 files changed, 99 insertions, 0 deletions
diff --git a/rc/base/tmux.kak b/rc/base/tmux.kak new file mode 100644 index 00000000..70c5115e --- /dev/null +++ b/rc/base/tmux.kak @@ -0,0 +1,53 @@ +# http://tmux.github.io/ +# ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ + +## The default behaviour for the `new` command is to open an horizontal pane in a tmux session +hook global KakBegin .* %{ + %sh{ + if [ -n "$TMUX" ]; then + echo " + alias global focus tmux-focus + alias global new tmux-new-horizontal + " + fi + } +} + +## Temporarily override the default client creation command +def -hidden -params 1.. tmux-new-impl %{ + %sh{ + tmux=${kak_client_env_TMUX:-$TMUX} + if [ -z "$tmux" ]; then + echo "echo -color Error 'This command is only available in a tmux session'" + exit + fi + tmux_args="$1" + shift + if [ $# -ne 0 ]; then kakoune_params="-e '$@'"; fi + TMUX=$tmux tmux $tmux_args "kak -c ${kak_session} ${kakoune_params}" < /dev/null > /dev/null 2>&1 & + } +} + +def tmux-new-vertical -params .. -command-completion -docstring "Create a new vertical pane in tmux" %{ + tmux-new-impl 'split-window -v' %arg{@} +} + +def tmux-new-horizontal -params .. -command-completion -docstring "Create a new horizontal pane in tmux" %{ + tmux-new-impl 'split-window -h' %arg{@} +} + +def tmux-new-window -params .. -command-completion -docstring "Create a new window in tmux" %{ + tmux-new-impl 'new-window' %arg{@} +} + +def -docstring "focus given client" \ + -params 0..1 -client-completion \ + tmux-focus %{ %sh{ + if [ $# -gt 1 ]; then + echo "echo -color Error 'too many arguments, use focus [client]'" + elif [ $# -eq 1 ]; then + printf %s\\n "eval -client '$1' focus" + elif [ -n "${kak_client_env_TMUX}" ]; then + TMUX="${kak_client_env_TMUX}" tmux select-pane -t "${kak_client_env_TMUX_PANE}" > /dev/null + fi +} } diff --git a/rc/base/x11.kak b/rc/base/x11.kak new file mode 100644 index 00000000..bf932298 --- /dev/null +++ b/rc/base/x11.kak @@ -0,0 +1,46 @@ +# termcmd should be set such as the next argument is the whole +# command line to execute +decl str termcmd %sh{ + for termcmd in 'termite -e ' \ + 'urxvt -e sh -c' \ + 'rxvt -e sh -c' \ + 'xterm -e sh -c' \ + 'roxterm -e sh -c' \ + 'mintty -e sh -c' \ + 'sakura -e ' \ + 'gnome-terminal -e ' \ + 'xfce4-terminal -e ' ; do + terminal=${termcmd%% *} + if which $terminal > /dev/null 2>&1; then + printf %s\\n "'$termcmd'" + exit + fi + done +} + +def -docstring 'create a new kak client for current session' \ + -params .. \ + -command-completion \ + x11-new %{ %sh{ + if [ -z "${kak_opt_termcmd}" ]; then + echo "echo -color Error 'termcmd option is not set'" + exit + fi + if [ $# -ne 0 ]; then kakoune_params="-e '$@'"; fi + setsid ${kak_opt_termcmd} "kak -c ${kak_session} ${kakoune_params}" < /dev/null > /dev/null 2>&1 & +}} + +def -docstring 'focus given client\'s window' \ + -params 0..1 -client-completion \ + x11-focus %{ %sh{ + if [ $# -gt 1 ]; then + echo "echo -color Error 'too many arguments, use focus [client]'" + elif [ $# -eq 1 ]; then + printf %s\\n "eval -client '$1' focus" + else + xdotool windowactivate $kak_client_env_WINDOWID > /dev/null + fi +} } + +alias global focus x11-focus +alias global new x11-new |
