Shortcuts for moving windows

This commit is contained in:
Kovid Goyal 2016-12-08 12:23:12 +05:30
parent b61d77f868
commit 32d73cfaf0
3 changed files with 21 additions and 1 deletions

View file

@ -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}
|===

View file

@ -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

View file

@ -143,6 +143,20 @@ def next_window(self):
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)