From 53fd9892eb7fe5e4bbf3a9a152b9a23ac794c695 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Tue, 6 May 2025 22:16:28 +0530 Subject: [PATCH] Allow custom kitten names with hyphens in them Apparently there is no way to have config filenames on nixOS/home-manager without hyphens in them. Fixes #8608 --- kittens/runner.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/kittens/runner.py b/kittens/runner.py index 9678f2792..5f53befd8 100644 --- a/kittens/runner.py +++ b/kittens/runner.py @@ -87,8 +87,8 @@ class KittenMetadata(NamedTuple): 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) + kitten = resolved_kitten(kitten) main = m['start'] handle_result = m['end'] return KittenMetadata( @@ -110,12 +110,13 @@ def set_debug(kitten: str) -> None: def launch(args: list[str]) -> None: config_dir, kitten = args[:2] + original_kitten_name = kitten kitten = resolved_kitten(kitten) del args[:2] args = [kitten] + args os.environ['KITTY_CONFIG_DIRECTORY'] = config_dir set_debug(kitten) - m = import_kitten_main_module(config_dir, kitten) + m = import_kitten_main_module(config_dir, original_kitten_name) try: result = m['start'](args) finally: @@ -139,11 +140,14 @@ def run_kitten(kitten: str, run_name: str = '__main__') -> None: if kitten in all_kitten_names(): runpy.run_module(f'kittens.{kitten}.main', run_name=run_name) return + kitten = original_kitten_name # Look for a custom kitten if not kitten.endswith('.py'): kitten += '.py' from kitty.constants import config_dir path = path_to_custom_kitten(config_dir, kitten) + if not os.path.exists(path): + path = path_to_custom_kitten(config_dir, resolved_kitten(kitten)) if not os.path.exists(path): print('Available builtin kittens:', file=sys.stderr) for kitten in all_kitten_names():