From ef7d4934d2df29b2cdf297e9b7a5aa00db9d1a32 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Tue, 26 Sep 2023 18:41:52 +0530 Subject: [PATCH] Add window groups to kitty @ ls output Fixes #6655 --- kitty/tabs.py | 5 +++++ kitty/window_list.py | 6 ++++++ 2 files changed, 11 insertions(+) diff --git a/kitty/tabs.py b/kitty/tabs.py index 5f5f274bb..fbf7ae853 100644 --- a/kitty/tabs.py +++ b/kitty/tabs.py @@ -81,6 +81,7 @@ class TabDict(TypedDict): layout_opts: Dict[str, Any] enabled_layouts: List[str] windows: List[WindowDict] + groups: List[Dict[str, Any]] active_window_history: List[int] @@ -781,6 +782,9 @@ class Tab: # {{{ is_focused=w.os_window_id == current_focused_os_window_id() and w is active_window, is_self=w is self_window) + def list_groups(self) -> List[Dict[str, Any]]: + return [g.as_simple_dict() for g in self.windows.groups] + def matches_query(self, field: str, query: str, active_tab_manager: Optional['TabManager'] = None) -> bool: if field == 'title': return re.search(query, self.effective_title) is not None @@ -1036,6 +1040,7 @@ class TabManager: # {{{ 'layout_opts': tab.current_layout.layout_opts.serialized(), 'enabled_layouts': tab.enabled_layouts, 'windows': windows, + 'groups': tab.list_groups(), 'active_window_history': list(tab.windows.active_window_history), } diff --git a/kitty/window_list.py b/kitty/window_list.py index 1eacd7f49..1ca4cb9e7 100644 --- a/kitty/window_list.py +++ b/kitty/window_list.py @@ -91,6 +91,12 @@ class WindowGroup: 'windows': [w.serialize_state() for w in self.windows] } + def as_simple_dict(self) -> Dict[str, Any]: + return { + 'id': self.id, + 'windows': [w.id for w in self.windows], + } + def decoration(self, which: EdgeLiteral, border_mult: int = 1, is_single_window: bool = False) -> int: if not self.windows: return 0