mirror of
https://github.com/kovidgoyal/kitty
synced 2026-06-06 09:15:57 +02:00
Code to serialize state
This commit is contained in:
@@ -7,8 +7,8 @@ from collections import deque
|
||||
from contextlib import suppress
|
||||
from functools import partial
|
||||
from typing import (
|
||||
Deque, Dict, Generator, Iterator, List, NamedTuple,
|
||||
Optional, Pattern, Sequence, Tuple, cast
|
||||
Any, Deque, Dict, Generator, Iterator, List, NamedTuple, Optional, Pattern,
|
||||
Sequence, Tuple, cast
|
||||
)
|
||||
|
||||
from .borders import Borders
|
||||
@@ -25,9 +25,9 @@ from .layout import (
|
||||
)
|
||||
from .options_stub import Options
|
||||
from .tab_bar import TabBar, TabBarData
|
||||
from .typing import SessionTab, SessionType, TypedDict
|
||||
from .utils import log_error, resolved_shell
|
||||
from .window import Window, WindowDict, Watchers
|
||||
from .typing import TypedDict, SessionTab, SessionType
|
||||
from .window import Watchers, Window, WindowDict
|
||||
|
||||
|
||||
class TabDict(TypedDict):
|
||||
@@ -157,6 +157,18 @@ class Tab: # {{{
|
||||
self.new_window(cmd=cmd)
|
||||
self.set_active_window_idx(session_tab.active_window_idx)
|
||||
|
||||
def serialize_state(self) -> Dict[str, Any]:
|
||||
return {
|
||||
'version': 1,
|
||||
'id': self.id,
|
||||
'active_window_idx': self.active_window_idx,
|
||||
'windows': [w.serialize_state() for w in self],
|
||||
'current_layout': self._current_layout_name,
|
||||
'last_used_layout': self._last_used_layout,
|
||||
'active_window_history': list(self.active_window_history),
|
||||
'name': self.name,
|
||||
}
|
||||
|
||||
@property
|
||||
def active_window_idx(self) -> int:
|
||||
return self._active_window_idx
|
||||
@@ -704,6 +716,14 @@ class TabManager: # {{{
|
||||
'active_window_history': list(tab.active_window_history),
|
||||
}
|
||||
|
||||
def serialize_state(self) -> Dict[str, Any]:
|
||||
return {
|
||||
'version': 1,
|
||||
'id': self.os_window_id,
|
||||
'tabs': [tab.serialize_state() for tab in self],
|
||||
'active_tab_idx': self.active_tab_idx,
|
||||
}
|
||||
|
||||
@property
|
||||
def active_tab(self) -> Optional[Tab]:
|
||||
return self.tabs[self.active_tab_idx] if self.tabs else None
|
||||
|
||||
@@ -254,6 +254,22 @@ class Window:
|
||||
foreground_processes=self.child.foreground_processes
|
||||
)
|
||||
|
||||
def serialize_state(self) -> Dict[str, Any]:
|
||||
return {
|
||||
'version': 1,
|
||||
'id': self.id,
|
||||
'child_title': self.child_title,
|
||||
'override_title': self.override_title,
|
||||
'default_title': self.default_title,
|
||||
'title_stack': list(self.title_stack),
|
||||
'allow_remote_control': self.allow_remote_control,
|
||||
'overlay_window_id': self.overlay_window_id,
|
||||
'overlay_for': self.overlay_for,
|
||||
'cwd': self.child.current_cwd or self.child.cwd,
|
||||
'env': self.child.environ,
|
||||
'cmdline': self.child.cmdline,
|
||||
}
|
||||
|
||||
@property
|
||||
def current_colors(self) -> Dict:
|
||||
return self.screen.color_profile.as_dict()
|
||||
|
||||
Reference in New Issue
Block a user