summaryrefslogtreecommitdiff
path: root/rc/base
diff options
context:
space:
mode:
authorMaxime Coste <frrrwww@gmail.com>2016-07-28 09:17:18 +0100
committerMaxime Coste <frrrwww@gmail.com>2016-07-28 09:17:18 +0100
commitb80dbf93229fca35230c2bb014d5ea36ba7a8dd9 (patch)
tree34fa9430413739d8baf1887b2d80dbf63cd7bd27 /rc/base
parent213888da749cf27e601063471f0d0bdb74e23249 (diff)
Move x11.kak and tmux.kak to rc/base from rc/core
Diffstat (limited to 'rc/base')
-rw-r--r--rc/base/tmux.kak53
-rw-r--r--rc/base/x11.kak46
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