Make CLI Only kittens run in overlay windows when run via the kitten
action mapping by default.
This commit is contained in:
Kovid Goyal
2024-07-05 13:14:48 +05:30
parent d8dc237af7
commit 24f01136c7
3 changed files with 32 additions and 22 deletions

View File

@@ -7,10 +7,11 @@ import os
import sys
from contextlib import contextmanager
from functools import partial
from typing import TYPE_CHECKING, Any, Dict, FrozenSet, Generator, List, Optional, cast
from typing import TYPE_CHECKING, Any, Callable, Dict, FrozenSet, Generator, List, NamedTuple, Optional, cast
from kitty.constants import list_kitty_resources
from kitty.types import run_once
from kitty.typing import BossType, WindowType
from kitty.utils import resolve_abs_or_config_path
aliases = {'url_hints': 'hints'}
@@ -72,16 +73,27 @@ def import_kitten_main_module(config_dir: str, kitten: str) -> Dict[str, Any]:
}
def create_kitten_handler(kitten: str, orig_args: List[str]) -> Any:
class KittenMetadata(NamedTuple):
handle_result: Callable[[Any, int, BossType], None] = lambda *a: None
type_of_input: Optional[str] = None
no_ui: bool = False
has_ready_notification: bool = False
open_url_handler: Optional[Callable[[BossType, WindowType, str, int, str], bool]] = None
def create_kitten_handler(kitten: str, orig_args: List[str]) -> KittenMetadata:
from kitty.constants import config_dir
kitten = resolved_kitten(kitten)
m = import_kitten_main_module(config_dir, kitten)
ans = partial(m['end'], [kitten] + orig_args)
setattr(ans, 'type_of_input', getattr(m['end'], 'type_of_input', None))
setattr(ans, 'no_ui', getattr(m['end'], 'no_ui', False))
setattr(ans, 'has_ready_notification', getattr(m['end'], 'has_ready_notification', False))
setattr(ans, 'open_url_handler', getattr(m['end'], 'open_url_handler', None))
return ans
handle_result = m['end']
return KittenMetadata(
handle_result=partial(handle_result, [kitten] + orig_args),
type_of_input=getattr(handle_result, 'type_of_input', None),
no_ui=getattr(handle_result, 'no_ui', False),
has_ready_notification=getattr(handle_result, 'has_ready_notification', False),
open_url_handler=getattr(handle_result, 'open_url_handler', None))
def set_debug(kitten: str) -> None: