mirror of
https://github.com/kovidgoyal/kitty
synced 2026-06-08 14:18:26 +02:00
Code to serialize state
This commit is contained in:
@@ -7,8 +7,8 @@ from collections import deque
|
|||||||
from contextlib import suppress
|
from contextlib import suppress
|
||||||
from functools import partial
|
from functools import partial
|
||||||
from typing import (
|
from typing import (
|
||||||
Deque, Dict, Generator, Iterator, List, NamedTuple,
|
Any, Deque, Dict, Generator, Iterator, List, NamedTuple, Optional, Pattern,
|
||||||
Optional, Pattern, Sequence, Tuple, cast
|
Sequence, Tuple, cast
|
||||||
)
|
)
|
||||||
|
|
||||||
from .borders import Borders
|
from .borders import Borders
|
||||||
@@ -25,9 +25,9 @@ from .layout import (
|
|||||||
)
|
)
|
||||||
from .options_stub import Options
|
from .options_stub import Options
|
||||||
from .tab_bar import TabBar, TabBarData
|
from .tab_bar import TabBar, TabBarData
|
||||||
|
from .typing import SessionTab, SessionType, TypedDict
|
||||||
from .utils import log_error, resolved_shell
|
from .utils import log_error, resolved_shell
|
||||||
from .window import Window, WindowDict, Watchers
|
from .window import Watchers, Window, WindowDict
|
||||||
from .typing import TypedDict, SessionTab, SessionType
|
|
||||||
|
|
||||||
|
|
||||||
class TabDict(TypedDict):
|
class TabDict(TypedDict):
|
||||||
@@ -157,6 +157,18 @@ class Tab: # {{{
|
|||||||
self.new_window(cmd=cmd)
|
self.new_window(cmd=cmd)
|
||||||
self.set_active_window_idx(session_tab.active_window_idx)
|
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
|
@property
|
||||||
def active_window_idx(self) -> int:
|
def active_window_idx(self) -> int:
|
||||||
return self._active_window_idx
|
return self._active_window_idx
|
||||||
@@ -704,6 +716,14 @@ class TabManager: # {{{
|
|||||||
'active_window_history': list(tab.active_window_history),
|
'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
|
@property
|
||||||
def active_tab(self) -> Optional[Tab]:
|
def active_tab(self) -> Optional[Tab]:
|
||||||
return self.tabs[self.active_tab_idx] if self.tabs else None
|
return self.tabs[self.active_tab_idx] if self.tabs else None
|
||||||
|
|||||||
@@ -254,6 +254,22 @@ class Window:
|
|||||||
foreground_processes=self.child.foreground_processes
|
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
|
@property
|
||||||
def current_colors(self) -> Dict:
|
def current_colors(self) -> Dict:
|
||||||
return self.screen.color_profile.as_dict()
|
return self.screen.color_profile.as_dict()
|
||||||
|
|||||||
Reference in New Issue
Block a user