diff --git a/kitty/layout/base.py b/kitty/layout/base.py index 585e975e7..adcc3fc85 100644 --- a/kitty/layout/base.py +++ b/kitty/layout/base.py @@ -28,6 +28,9 @@ class LayoutOpts: def __init__(self, data: Dict[str, str]): pass + def serialized(self) -> Dict[str, Any]: + return {} + class LayoutData(NamedTuple): content_pos: int = 0 diff --git a/kitty/layout/splits.py b/kitty/layout/splits.py index b5e0b327d..48541dfe5 100644 --- a/kitty/layout/splits.py +++ b/kitty/layout/splits.py @@ -388,6 +388,9 @@ class SplitsLayoutOpts(LayoutOpts): def __init__(self, data: Dict[str, str]): self.default_axis_is_horizontal = data.get('split_axis', 'horizontal') == 'horizontal' + def serialized(self) -> Dict[str, Any]: + return {'default_axis_is_horizontal': self.default_axis_is_horizontal} + class Splits(Layout): name = 'splits' diff --git a/kitty/layout/tall.py b/kitty/layout/tall.py index b15143d0e..63121c6c9 100644 --- a/kitty/layout/tall.py +++ b/kitty/layout/tall.py @@ -72,6 +72,9 @@ class TallLayoutOpts(LayoutOpts): self.bias = tuple(repeat(b / fs, fs)) + (1.0 - b,) self.mirrored = to_bool(data.get('mirrored', 'false')) + def serialized(self) -> Dict[str, Any]: + return {'full_size': self.full_size, 'bias': self.bias, 'mirrored': self.mirrored} + class Tall(Layout): diff --git a/kitty/tabs.py b/kitty/tabs.py index e18a4a8cc..915313f6c 100644 --- a/kitty/tabs.py +++ b/kitty/tabs.py @@ -38,6 +38,7 @@ class TabDict(TypedDict): title: str layout: str layout_state: Dict[str, Any] + layout_opts: Dict[str, Any] windows: List[WindowDict] active_window_history: List[int] @@ -169,6 +170,8 @@ class Tab: # {{{ 'window_list': self.windows.serialize_state(), 'current_layout': self._current_layout_name, 'last_used_layout': self._last_used_layout, + 'layout_opts': self.current_layout.layout_opts, + 'layout_state': self.current_layout.layout_state, 'name': self.name, } @@ -813,6 +816,7 @@ class TabManager: # {{{ 'title': tab.name or tab.title, 'layout': str(tab.current_layout.name), 'layout_state': tab.current_layout.layout_state(), + 'layout_opts': tab.current_layout.layout_opts.serialized(), 'windows': list(tab.list_windows(active_window, self_window)), 'active_window_history': list(tab.windows.active_window_history), }