Skip to content

Commit 3aff579

Browse files
committed
Cleanup previous PR
1 parent c8e4126 commit 3aff579

File tree

3 files changed

+34
-49
lines changed

3 files changed

+34
-49
lines changed

kitty/rc/ls.py

Lines changed: 23 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,12 @@
22
# License: GPLv3 Copyright: 2020, Kovid Goyal <kovid at kovidgoyal.net>
33

44
import json
5-
import os
65
from collections.abc import Callable
7-
from typing import TYPE_CHECKING, Sequence
6+
from typing import TYPE_CHECKING
87

98
from kitty.constants import appname
109

1110
from .base import MATCH_TAB_OPTION, MATCH_WINDOW_OPTION, ArgsType, Boss, PayloadGetType, PayloadType, RCOptions, RemoteCommand, ResponseType, Tab, Window
12-
from ..boss import OSWindowDict
13-
from ..child import ProcessDesc
14-
from ..launch import is_excluded_env_var
1511

1612
if TYPE_CHECKING:
1713
from kitty.cli_stub import LSRCOptions as CLIOptions
@@ -52,7 +48,7 @@ class LS(RemoteCommand):
5248
type=choices
5349
choices=json,session
5450
default=json
55-
Output in json or session format
51+
Output in JSON or kitty session format
5652
''' + '\n\n' + MATCH_WINDOW_OPTION + '\n\n' + MATCH_TAB_OPTION.replace('--match -m', '--match-tab -t', 1)
5753

5854
def message_to_kitty(self, global_opts: RCOptions, opts: 'CLIOptions', args: ArgsType) -> PayloadType:
@@ -61,7 +57,6 @@ def message_to_kitty(self, global_opts: RCOptions, opts: 'CLIOptions', args: Arg
6157
def response_from_kitty(self, boss: Boss, window: Window | None, payload_get: PayloadGetType) -> ResponseType:
6258
tab_filter: Callable[[Tab], bool] | None = None
6359
window_filter: Callable[[Window], bool] | None = None
64-
output_session: bool = False
6560

6661
if payload_get('self'):
6762
def wf(w: Window) -> bool:
@@ -73,31 +68,28 @@ def wf(w: Window) -> bool:
7368
return w.id in window_ids
7469
window_filter = wf
7570
elif payload_get('output_format') == 'session':
76-
output_session = True
77-
78-
if not output_session:
79-
data = list(boss.list_os_windows(window, tab_filter, window_filter))
80-
if not payload_get('all_env_vars'):
81-
all_env_blocks: list[dict[str, str]] = []
82-
common_env_vars: set[tuple[str, str]] = set()
83-
for osw in data:
84-
for tab in osw.get('tabs', ()):
85-
for w in tab.get('windows', ()):
86-
env: dict[str, str] = w.get('env', {})
87-
frozen_env = set(env.items())
88-
if all_env_blocks:
89-
common_env_vars &= frozen_env
90-
else:
91-
common_env_vars = frozen_env
92-
all_env_blocks.append(env)
93-
if common_env_vars and len(all_env_blocks) > 1:
94-
remove_env_vars = {k for k, v in common_env_vars}
95-
for env in all_env_blocks:
96-
for r in remove_env_vars:
97-
env.pop(r, None)
98-
return json.dumps(data, indent=2, sort_keys=True)
99-
else:
10071
return "\n".join(boss.serialize_state_as_session())
10172

73+
data = list(boss.list_os_windows(window, tab_filter, window_filter))
74+
if not payload_get('all_env_vars'):
75+
all_env_blocks: list[dict[str, str]] = []
76+
common_env_vars: set[tuple[str, str]] = set()
77+
for osw in data:
78+
for tab in osw.get('tabs', ()):
79+
for w in tab.get('windows', ()):
80+
env: dict[str, str] = w.get('env', {})
81+
frozen_env = set(env.items())
82+
if all_env_blocks:
83+
common_env_vars &= frozen_env
84+
else:
85+
common_env_vars = frozen_env
86+
all_env_blocks.append(env)
87+
if common_env_vars and len(all_env_blocks) > 1:
88+
remove_env_vars = {k for k, v in common_env_vars}
89+
for env in all_env_blocks:
90+
for r in remove_env_vars:
91+
env.pop(r, None)
92+
return json.dumps(data, indent=2, sort_keys=True)
93+
10294

10395
ls = LS()

kitty/tabs.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -291,12 +291,6 @@ def serialize_state(self) -> dict[str, Any]:
291291

292292
def serialize_state_as_session(self) -> list[str]:
293293
import shlex
294-
self._current_layout_name
295-
ans = [
296-
f'new_tab {self.name}'.rstrip(),
297-
f'layout {self._current_layout_name}',
298-
f'enabled_layouts {",".join(self.enabled_layouts)}'
299-
]
300294
launch_cmds = []
301295
for g in self.windows.iter_groups_in_activation_order():
302296
gw: list[str] = []
@@ -305,8 +299,14 @@ def serialize_state_as_session(self) -> list[str]:
305299
if lc:
306300
gw.append(shlex.join(lc))
307301
launch_cmds.extend(gw)
308-
launch_cmds.append(f'set_layout_state {json.dumps(self.serialize_state()["layout_state"])}\n')
309-
return (ans + launch_cmds) if launch_cmds else []
302+
if launch_cmds:
303+
return [
304+
f'new_tab {self.name}'.rstrip(),
305+
f'layout {self._current_layout_name}',
306+
f'enabled_layouts {",".join(self.enabled_layouts)}'
307+
f'set_layout_state {json.dumps(self.current_layout.serialize(self.windows))}\n'
308+
] + launch_cmds
309+
return []
310310

311311
def active_window_changed(self) -> None:
312312
w = self.active_window

kitty/window.py

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
clear_handled_signals,
3535
config_dir,
3636
kitten_exe,
37+
serialize_user_var_name,
3738
wakeup_io_loop,
3839
)
3940
from .fast_data_types import (
@@ -233,9 +234,6 @@ class WindowDict(TypedDict):
233234
id: int
234235
is_focused: bool
235236
is_active: bool
236-
is_actions_on_close: bool
237-
is_actions_on_focus_change: bool
238-
is_actions_on_removal: bool
239237
title: str
240238
pid: int | None
241239
cwd: str
@@ -824,9 +822,6 @@ def as_dict(self, is_focused: bool = False, is_self: bool = False, is_active: bo
824822
'id': self.id,
825823
'is_focused': is_focused,
826824
'is_active': is_active,
827-
'is_actions_on_close': self in self.actions_on_close,
828-
'is_actions_on_focus_change': self in self.actions_on_focus_change,
829-
'is_actions_on_removal': self in self.actions_on_removal,
830825
'title': self.title,
831826
'pid': self.child.pid,
832827
'cwd': self.child.current_cwd or self.child.cwd,
@@ -1982,10 +1977,8 @@ def as_launch_command(self, is_overlay: bool = False) -> list[str]:
19821977
ans.append('--hold')
19831978
if self.creation_spec.hold_after_ssh:
19841979
ans.append('--hold-after-ssh')
1985-
for k, v in self.user_vars.items():
1986-
ans.append(f'--var={k}={v}')
1987-
if 'kitty_serialize_window_id' not in self.user_vars:
1988-
ans.append(f'--var=kitty_serialize_window_id={self.id}')
1980+
ans.extend(f'--var={k}={v}' for k, v in self.user_vars.items())
1981+
ans.append(f'--var={serialize_user_var_name}={self.id}')
19891982
ans.extend(self.padding.as_launch_args())
19901983
ans.extend(self.margin.as_launch_args('margin'))
19911984
if self.override_title:

0 commit comments

Comments
 (0)