{"record":{"id":"f10d0e1c535f579f","repo":"kovidgoyal/kitty","slug":"this-should-be-run-as-kitten-unicode-input","errorCode":null,"errorMessage":"This should be run as kitten unicode_input","messagePattern":"This should be run as kitten unicode_input","errorType":"console","errorClass":"SystemExit","httpStatus":null,"severity":"warning","filePath":"kittens/unicode_input/main.py","lineNumber":38,"sourceCode":"--tab\ntype=choices\ndefault=previous\nchoices=previous,code,name,emoticons,favorites\nThe initial tab to display. Defaults to using the tab from the previous kitten invocation.\n\n\n\"\"\".format\n\n\n@result_handler(has_ready_notification=True)\ndef handle_result(args: list[str], current_char: str, target_window_id: int, boss: BossType) -> None:\n    w = boss.window_id_map.get(target_window_id)\n    if w is not None:\n        w.paste_text(current_char)\n\n\ndef main(args: list[str]) -> str | None:\n    raise SystemExit('This should be run as kitten unicode_input')\n\n\nif __name__ == '__main__':\n    main([])\nelif __name__ == '__doc__':\n    import sys\n\n    cd = sys.cli_docs  # type: ignore\n    cd['usage'] = usage\n    cd['options'] = OPTIONS\n    cd['help_text'] = help_text\n    cd['short_desc'] = 'Browse and select unicode characters by name'\n","sourceCodeStart":20,"sourceCodeEnd":51,"githubUrl":"https://github.com/kovidgoyal/kitty/blob/6d5d0c440603ad9bdf6dcd599f73f6dde21acb44/kittens/unicode_input/main.py#L20-L51","documentation":"unicode_input/main.py's main() unconditionally raises SystemExit('This should be run as kitten unicode_input') because the kitten is designed to be launched only via the kitten launcher, which imports and drives its remote-control entry points instead of executing the module directly.","triggerScenarios":"Running the module directly: python -m kittens.unicode_input.main or python kittens/unicode_input/main.py, or calling main(args) from a script.","commonSituations":"Developers experimenting with kitty kitten source files outside the kitten runtime, or copy-pasting launch commands that bypass `kitten unicode_input`.","solutions":["Launch it correctly: kitten unicode_input","If scripting, use kitty remote control commands instead of calling main() directly"],"exampleFix":"# before\npython -m kittens.unicode_input.main\n# after\nkitten unicode_input","handlingStrategy":"validation","validationCode":"import sys\nif __name__ == '__main__' and sys.argv[0].endswith('main.py'):\n    print('run via: kitten unicode_input')\n    sys.exit(1)","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Always launch kittens with the kitten command","Never execute kitten module files directly"],"tags":["kitty","kitten","usage","unicode-input"],"backgroundTag":"incorrect-cli-invocation","analyzedSha":"6d5d0c440603ad9bdf6dcd599f73f6dde21acb44","analyzedAt":"2026-08-27T14:20:20.142Z","schemaVersion":2},"datasetVersion":"2026-08-27T19:17:21.184Z"}