diff --git a/kitty/boss.py b/kitty/boss.py index 526a11dcd..58f9d2f5e 100644 --- a/kitty/boss.py +++ b/kitty/boss.py @@ -942,19 +942,25 @@ class Boss: custom_callback=done, action_on_removal=done2) def kitty_shell(self, window_type: str) -> None: - cmd = ['@', kitty_exe(), '@'] + kw: Dict[str, Any] = {} + cmd = [kitty_exe(), '@'] + aw = self.active_window + if aw is not None: + kw['env'] = {'KITTY_SHELL_ACTIVE_WINDOW_ID': str(aw.id)} if window_type == 'tab': - self._new_tab(cmd) + self._new_tab(SpecialWindow(cmd, **kw)) elif window_type == 'os_window': - os_window_id = self._new_os_window(cmd) + os_window_id = self._new_os_window(SpecialWindow(cmd, **kw)) self.os_window_map[os_window_id] elif window_type == 'overlay': - w = self.active_window tab = self.active_tab - if w is not None and tab is not None: - tab.new_special_window(SpecialWindow(cmd, overlay_for=w.id)) + if aw is not None and tab is not None: + kw['overlay_for'] = aw.id + tab.new_special_window(SpecialWindow(cmd, **kw)) else: - self._new_window(cmd) + tab = self.active_tab + if tab is not None: + tab.new_special_window(SpecialWindow(cmd, **kw)) def switch_focus_to(self, window_id: int) -> None: tab = self.active_tab diff --git a/kitty/shell.py b/kitty/shell.py index a3e623bc6..dd6967a5d 100644 --- a/kitty/shell.py +++ b/kitty/shell.py @@ -162,6 +162,9 @@ def real_main(global_opts: RCOptions) -> None: print_help_for_seq.allow_pager = False print('Welcome to the kitty shell!') print('Use {} for assistance or {} to quit'.format(green('help'), green('exit'))) + awid = os.environ.pop('KITTY_SHELL_ACTIVE_WINDOW_ID', None) + if awid is not None: + print('The ID of the previously active window is: {}'.format(awid)) while True: try: