Skip to content

Commit

Permalink
Merge pull request #206 from mochouaaaaa/master
Browse files Browse the repository at this point in the history
feat(mux): Support splitting Kitty multiplexer panes
  • Loading branch information
mrjones2014 authored Jun 4, 2024
2 parents 1064164 + cc419eb commit 54cbdb8
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 4 deletions.
1 change: 1 addition & 0 deletions kitty/install-kittens.bash
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,4 @@ PREFIX="${XDG_CONFIG_HOME:-$HOME/.config}"
KITTY_CONFIG_PATH="$PREFIX/kitty"
cp -f ./kitty/neighboring_window.py "$KITTY_CONFIG_PATH/"
cp -f ./kitty/relative_resize.py "$KITTY_CONFIG_PATH/"
cp -f ./kitty/split_window.py "$KITTY_CONFIG_PATH/"
26 changes: 26 additions & 0 deletions kitty/split_window.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
from kittens.tui.handler import result_handler


def main(args):
pass


def split_window(boss, direction):
if direction == 'up' or direction == 'down':
boss.launch('--cwd=current', '--location=hsplit')
else:
boss.launch('--cwd=current', '--location=vsplit')

if direction == 'up' or direction == 'left':
boss.active_tab.move_window(direction)


@result_handler(no_ui=True)
def handle_result(args, result, target_window_id, boss):
window = boss.window_id_map.get(target_window_id)

if window is None:
return

direction = args[1]
split_window(boss, direction)
12 changes: 8 additions & 4 deletions lua/smart-splits/mux/kitty.lua
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
local lazy = require('smart-splits.lazy')
local log = lazy.require_on_exported_call('smart-splits.log') --[[@as SmartSplitsLogger]]
local utils = lazy.require_on_exported_call('smart-splits.utils')
local Direction = require('smart-splits.types').Direction

Expand Down Expand Up @@ -105,9 +104,14 @@ function M.on_exit()
io.stdout:write('\x1b]1337;SetUserVar=IS_NVIM\007')
end

function M.split_pane(_, _)
log.warn('Sorry, Kitty does not support creation of arbitrary split panes.')
return false
function M.split_pane(direction, _)
if not M.is_in_session() then
return false
end

local ok, _ = pcall(kitty_exec, { 'kitten', 'split_window.py', direction })

return ok
end

return M

0 comments on commit 54cbdb8

Please sign in to comment.