Add window groups to kitty @ ls output

Fixes #6655
This commit is contained in:
Kovid Goyal 2023-09-26 18:41:52 +05:30
parent bda9155be1
commit ef7d4934d2
No known key found for this signature in database
GPG key ID: 06BC317B515ACE7C
2 changed files with 11 additions and 0 deletions

View file

@ -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 @@ def list_windows(self, self_window: Optional[Window] = None, window_filter: Opti
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 @@ def list_tabs(
'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),
}

View file

@ -91,6 +91,12 @@ def serialize_state(self) -> Dict[str, Any]:
'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