Skip to content

Commit

Permalink
refactor(layout): use 'expose_command' decorator for layout exposed c…
Browse files Browse the repository at this point in the history
…ommands
  • Loading branch information
aravinda0 committed Dec 18, 2023
1 parent 6b52e8b commit 555d9cd
Showing 1 changed file with 48 additions and 34 deletions.
82 changes: 48 additions & 34 deletions src/qtile_bonsai/layout.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
from typing import Callable, ClassVar

from libqtile.backend.base.window import Window
from libqtile.command.base import expose_command
from libqtile.config import ScreenRect
from libqtile.layout.base import Layout
from libqtile.log_utils import logger
Expand Down Expand Up @@ -282,17 +283,8 @@ def finalize(self):
self._persist_tree_state()
self._tree.finalize()

def cmd_next(self):
next_window = self.focus_next(self.focused_window)
if next_window is not None:
self._request_focus(self._windows_to_panes[next_window])

def cmd_previous(self):
prev_window = self.focus_previous(self.focused_window)
if prev_window is not None:
self._request_focus(self._windows_to_panes[prev_window])

def cmd_spawn_split(
@expose_command
def spawn_split(
self,
program: str,
axis: Axis,
Expand All @@ -314,7 +306,8 @@ def _handle_next_window():

self._spawn_program(program, auto_cwd_for_terminals)

def cmd_spawn_tab(
@expose_command
def spawn_tab(
self,
program: str,
*,
Expand Down Expand Up @@ -346,79 +339,90 @@ def _handle_next_window():

self._spawn_program(program, auto_cwd_for_terminals)

def cmd_left(self, *, wrap: bool = True):
@expose_command
def left(self, *, wrap: bool = True):
if self._tree.is_empty:
return

next_pane = self._tree.left(self.focused_pane, wrap=wrap)
self._request_focus(next_pane)

def cmd_right(self, *, wrap: bool = True):
@expose_command
def right(self, *, wrap: bool = True):
if self._tree.is_empty:
return

next_pane = self._tree.right(self.focused_pane, wrap=wrap)
self._request_focus(next_pane)

def cmd_up(self, *, wrap: bool = True):
@expose_command
def up(self, *, wrap: bool = True):
if self._tree.is_empty:
return

next_pane = self._tree.up(self.focused_pane, wrap=wrap)
self._request_focus(next_pane)

def cmd_down(self, *, wrap: bool = True):
@expose_command
def down(self, *, wrap: bool = True):
if self._tree.is_empty:
return

next_pane = self._tree.down(self.focused_pane, wrap=wrap)
self._request_focus(next_pane)

def cmd_next_tab(self, *, wrap: bool = True):
@expose_command
def next_tab(self, *, wrap: bool = True):
if self._tree.is_empty:
return

next_pane = self._tree.next_tab(self.focused_pane, wrap=wrap)
if next_pane is not None:
self._request_focus(next_pane)

def cmd_prev_tab(self, *, wrap: bool = True):
@expose_command
def prev_tab(self, *, wrap: bool = True):
if self._tree.is_empty:
return

next_pane = self._tree.prev_tab(self.focused_pane, wrap=wrap)
if next_pane is not None:
self._request_focus(next_pane)

def cmd_resize_left(self, amount: int = 10):
@expose_command
def resize_left(self, amount: int = 10):
if self._tree.is_empty:
return

self._tree.resize(self.focused_pane, Axis.x, -amount)
self._request_relayout()

def cmd_resize_right(self, amount: int = 10):
@expose_command
def resize_right(self, amount: int = 10):
if self._tree.is_empty:
return

self._tree.resize(self.focused_pane, Axis.x, amount)
self._request_relayout()

def cmd_resize_up(self, amount: int = 10):
@expose_command
def resize_up(self, amount: int = 10):
if self._tree.is_empty:
return

self._tree.resize(self.focused_pane, Axis.y, -amount)
self._request_relayout()

def cmd_resize_down(self, amount: int = 10):
@expose_command
def resize_down(self, amount: int = 10):
if self._tree.is_empty:
return

self._tree.resize(self.focused_pane, Axis.y, amount)
self._request_relayout()

def cmd_swap_up(self, *, wrap: bool = False):
@expose_command
def swap_up(self, *, wrap: bool = False):
if self._tree.is_empty:
return

Expand All @@ -429,7 +433,8 @@ def cmd_swap_up(self, *, wrap: bool = False):
self._tree.swap(self.focused_pane, other_pane)
self._request_relayout()

def cmd_swap_down(self, *, wrap: bool = False):
@expose_command
def swap_down(self, *, wrap: bool = False):
if self._tree.is_empty:
return

Expand All @@ -440,7 +445,8 @@ def cmd_swap_down(self, *, wrap: bool = False):
self._tree.swap(self.focused_pane, other_pane)
self._request_relayout()

def cmd_swap_left(self, *, wrap: bool = False):
@expose_command
def swap_left(self, *, wrap: bool = False):
if self._tree.is_empty:
return

Expand All @@ -451,7 +457,8 @@ def cmd_swap_left(self, *, wrap: bool = False):
self._tree.swap(self.focused_pane, other_pane)
self._request_relayout()

def cmd_swap_right(self, *, wrap: bool = False):
@expose_command
def swap_right(self, *, wrap: bool = False):
if self._tree.is_empty:
return

Expand All @@ -462,7 +469,8 @@ def cmd_swap_right(self, *, wrap: bool = False):
self._tree.swap(self.focused_pane, other_pane)
self._request_relayout()

def cmd_swap_prev_tab(self, *, wrap: bool = True):
@expose_command
def swap_prev_tab(self, *, wrap: bool = True):
if self._tree.is_empty:
return

Expand All @@ -473,7 +481,8 @@ def cmd_swap_prev_tab(self, *, wrap: bool = True):
self._tree.swap_tabs(current_tab, other_tab)
self._request_relayout()

def cmd_swap_next_tab(self, *, wrap: bool = True):
@expose_command
def swap_next_tab(self, *, wrap: bool = True):
if self._tree.is_empty:
return

Expand All @@ -484,15 +493,17 @@ def cmd_swap_next_tab(self, *, wrap: bool = True):
self._tree.swap_tabs(current_tab, other_tab)
self._request_relayout()

def cmd_rename_tab(self, widget: str = "prompt"):
@expose_command
def rename_tab(self, widget: str = "prompt"):
prompt_widget = self.group.qtile.widgets_map.get(widget)
if prompt_widget is None:
logger.error(f"The '{widget}' widget was not found")
return

prompt_widget.start_input("Rename tab: ", self._handle_rename_tab)

def cmd_normalize(self, *, recurse: bool = True):
@expose_command
def normalize(self, *, recurse: bool = True):
"""Starting from the focused pane's container, will make all panes in the
container of equal size.
Expand All @@ -505,7 +516,8 @@ def cmd_normalize(self, *, recurse: bool = True):
self._tree.normalize(sc, recurse=recurse)
self._request_relayout()

def cmd_normalize_tab(self, *, recurse: bool = True):
@expose_command
def normalize_tab(self, *, recurse: bool = True):
"""Starting from the focused pane's tab, will make all panes in the
tab of equal size.
Expand All @@ -518,15 +530,17 @@ def cmd_normalize_tab(self, *, recurse: bool = True):
self._tree.normalize(tab, recurse=recurse)
self._request_relayout()

def cmd_normalize_all(self):
@expose_command
def normalize_all(self):
"""Makes all windows under all tabs be of equal size."""
if self._tree.is_empty:
return

self._tree.normalize(self._tree.root, recurse=True)
self._request_relayout()

def cmd_info(self):
@expose_command
def info(self):
return {
"name": "bonsai",
"tree": str(self._tree),
Expand Down Expand Up @@ -601,7 +615,7 @@ def _spawn_program(self, program: str, auto_cwd_for_terminals: bool):
program, self.focused_window.get_pid()
)

self.group.qtile.cmd_spawn(program)
self.group.qtile.spawn(program)

def _persist_tree_state(self):
if self._tree.is_empty:
Expand Down

0 comments on commit 555d9cd

Please sign in to comment.