From 32d73cfaf0e537f4373fe522441673a622d976e0 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Thu, 8 Dec 2016 12:23:12 +0530 Subject: [PATCH] Shortcuts for moving windows --- README.asciidoc | 4 ++++ kitty/kitty.conf | 4 +++- kitty/tabs.py | 14 ++++++++++++++ 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/README.asciidoc b/README.asciidoc index 052207b95..734b7517a 100644 --- a/README.asciidoc +++ b/README.asciidoc @@ -9,6 +9,8 @@ :sc_fifth_window: pass:quotes[`ctrl+shift+5`] :sc_first_window: pass:quotes[`ctrl+shift+1`] :sc_fourth_window: pass:quotes[`ctrl+shift+4`] +:sc_move_window_backward: pass:quotes[`ctrl+shift+b`] +:sc_move_window_forward: pass:quotes[`ctrl+shift+f`] :sc_new_tab: pass:quotes[`ctrl+shift+t`] :sc_new_window: pass:quotes[`ctrl+shift+enter`] :sc_next_layout: pass:quotes[`ctrl+shift+l`] @@ -153,6 +155,8 @@ windows are: |Close window | {sc_close_window} |Next window | {sc_next_window} |Previous window | {sc_previous_window} +|Move window forward | {sc_move_window_forward} +|Move window backward | {sc_move_window_backward} |Focus specific window (windows are counted clockwise from the top left corner) | {sc_first_window}, {sc_second_window} ... {sc_tenth_window} |=== diff --git a/kitty/kitty.conf b/kitty/kitty.conf index aff87bcc8..551f0c5be 100644 --- a/kitty/kitty.conf +++ b/kitty/kitty.conf @@ -140,9 +140,11 @@ map ctrl+shift+end scroll_end # Window management map ctrl+shift+enter new_window +map ctrl+shift+w close_window map ctrl+shift+] next_window map ctrl+shift+[ previous_window -map ctrl+shift+w close_window +map ctrl+shift+f move_window_forward +map ctrl+shift+b move_window_backward map ctrl+shift+1 first_window map ctrl+shift+2 second_window map ctrl+shift+3 third_window diff --git a/kitty/tabs.py b/kitty/tabs.py index 640d26cc6..8a83cc1ad 100644 --- a/kitty/tabs.py +++ b/kitty/tabs.py @@ -143,6 +143,20 @@ class Tab: def previous_window(self): self._next_window(-1) + def move_window(self, delta=1): + if len(self.windows) > 1: + idx = self.active_window_idx + nidx = (idx + len(self.windows) + delta) % len(self.windows) + self.windows[nidx], self.windows[idx] = self.windows[idx], self.windows[nidx] + self.active_window_idx = nidx + self.relayout() + + def move_window_forward(self): + self.move_window() + + def move_window_backward(self): + self.move_window(-1) + def __iter__(self): yield from iter(self.windows)