diff options
| author | Maxime Coste <mawww@kakoune.org> | 2021-03-23 21:50:27 +1100 |
|---|---|---|
| committer | Maxime Coste <mawww@kakoune.org> | 2021-03-23 21:50:27 +1100 |
| commit | c507863a00289fe4b210ecc4fef5554de4c87bf4 (patch) | |
| tree | 50de32a3599e06859ddcc968eb760d342e3a93f2 | |
| parent | d8fbe3105d19d1d3ced589d268cd41498d941fd3 (diff) | |
| parent | feab20260a83c06416b58dc71d88518333ce5929 (diff) | |
Merge remote-tracking branch 'Eluminae/wayland'
| -rw-r--r-- | rc/windowing/detection.kak | 2 | ||||
| -rw-r--r-- | rc/windowing/wayland.kak | 56 |
2 files changed, 57 insertions, 1 deletions
diff --git a/rc/windowing/detection.kak b/rc/windowing/detection.kak index 89901364..b9e474ea 100644 --- a/rc/windowing/detection.kak +++ b/rc/windowing/detection.kak @@ -23,7 +23,7 @@ declare-option -docstring \ "Ordered list of windowing modules to try and load. An empty list disables both automatic module loading and environment detection, enabling complete manual control of the module loading." \ -str-list windowing_modules 'tmux' 'screen' 'kitty' 'iterm' 'x11' +str-list windowing_modules 'tmux' 'screen' 'kitty' 'iterm' 'x11' 'wayland' hook -group windowing global KakBegin .* %{ diff --git a/rc/windowing/wayland.kak b/rc/windowing/wayland.kak new file mode 100644 index 00000000..9a720a8e --- /dev/null +++ b/rc/windowing/wayland.kak @@ -0,0 +1,56 @@ +# wayland + +provide-module wayland %{ + +# ensure that we're running in the right environment +evaluate-commands %sh{ + [ -z "${kak_opt_windowing_modules}" ] || [ -n "$WAYLAND_DISPLAY" ] || echo 'fail WAYLAND_DISPLAY is not set' +} + +# termcmd should be set such as the next argument is the whole +# command line to execute +declare-option -docstring %{shell command run to spawn a new terminal +A shell command is appended to the one set in this option at runtime} \ + str termcmd %sh{ + for termcmd in 'alacritty -e sh -c' \ + 'kitty sh -c' \ + 'termite -e ' \ + 'wterm -e sh -c' \ + 'gnome-terminal -e ' \ + 'xfce4-terminal -e ' \ + 'konsole -e '; do + terminal=${termcmd%% *} + if command -v $terminal >/dev/null 2>&1; then + printf %s\\n "$termcmd" + exit + fi + done +} + +define-command wayland-terminal -params 1.. -shell-completion -docstring ' +wayland-terminal <program> [<arguments>]: create a new terminal as an wayland window +The program passed as argument will be executed in the new terminal' \ +%{ + evaluate-commands -save-regs 'a' %{ + set-register a %arg{@} + evaluate-commands %sh{ + if [ -z "${kak_opt_termcmd}" ]; then + echo "fail 'termcmd option is not set'" + exit + fi + setsid ${kak_opt_termcmd} "$kak_quoted_reg_a" < /dev/null > /dev/null 2>&1 & + } + } +} + +define-command wayland-focus -params ..1 -client-completion -docstring ' +wayland-focus [<kakoune_client>]: focus a given client''s window +If no client is passed, then the current client is used' \ +%{ + fail There is no way to focus another window on Wayland +} + +alias global focus wayland-focus +alias global terminal wayland-terminal + +} |
