{"record":{"id":"8a527968cee5109e","repo":"kovidgoyal/kitty","slug":"you-are-missing-the-args-0-program-needed-to-ge","errorCode":null,"errorMessage":"You are missing the {args[0]} program needed to generate the kitty logo","messagePattern":"You are missing the (.+?) program needed to generate the kitty logo","errorType":"console","errorClass":"SystemExit","httpStatus":null,"severity":"error","filePath":"logo/make.py","lineNumber":52,"sourceCode":"                }\n            ],\n            'shadow': {'kind': 'neutral', 'opacity': 0.5},\n            'translucency': {'enabled': True, 'value': 0.5},\n        }\n    ],\n    'supported-platforms': {'circles': ['watchOS'], 'squares': 'shared'},\n}\n\n\ndef abspath(x: str) -> str:\n    return os.path.abspath(os.path.join(base, x))\n\n\ndef run(*args: str) -> None:\n    try:\n        subprocess.check_call(args)\n    except OSError:\n        raise SystemExit(f'You are missing the {args[0]} program needed to generate the kitty logo')\n\n\ndef get_svg_viewbox(file_path: str) -> tuple[float, ...]:\n    import xml.etree.ElementTree as ET\n\n    tree = ET.parse(file_path)\n    root = tree.getroot()\n    viewbox = root.get('viewBox')\n    if viewbox:\n        return tuple(float(x) for x in viewbox.split())\n    width = root.get('width')\n    height = root.get('height')\n    return (0.0, 0.0, float(width or 0), float(height or 0))\n\n\ndef create_icon(name: str, svg_path: str, output_path: str) -> str:\n    view_box = get_svg_viewbox(svg_path)\n    sz = view_box[-1]","sourceCodeStart":34,"sourceCodeEnd":70,"githubUrl":"https://github.com/kovidgoyal/kitty/blob/6d5d0c440603ad9bdf6dcd599f73f6dde21acb44/logo/make.py#L34-L70","documentation":"Raised by run() in kitty's logo asset generator when subprocess.check_call fails with OSError, meaning the external program needed to render the kitty logo (e.g. rsvg-convert, inkscape, or similar) is not installed or not found on PATH. It exits with a SystemExit telling you which program is missing. This is a build-time tool, not runtime kitty code.","triggerScenarios":"Running logo/make.py (via create_assets, render, or main) on a machine lacking the required SVG-to-PNG converter; the first argument to run() names the binary that wasn't found.","commonSituations":"Fresh dev machines or CI containers without the SVG toolchain installed; PATH not including the tool's install location; running the asset pipeline on Windows/WSL where the tool name differs.","solutions":["Install the missing program named in the message (e.g. `sudo apt install librsvg2-bin` for rsvg-convert, or inkscape)","Verify with `which <program>` that it is on PATH in the same environment used to run make.py","If you don't need to regenerate assets, use the pre-generated logo files already committed to the repo instead of running the script"],"exampleFix":"# before\npython logo/make.py   # SystemExit: You are missing the rsvg-convert program...\n\n# after\nsudo apt install librsvg2-bin\npython logo/make.py","handlingStrategy":"validation","validationCode":"import shutil\n\ndef can_build_logo(prog: str) -> bool:\n    return shutil.which(prog) is not None","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Install the SVG toolchain (librsvg2-bin / inkscape) before running logo/make.py","Check shutil.which(program) at script start and fail fast with an install hint","In CI, add the required renderer to the image explicitly"],"tags":["kitty","build-tools","subprocess","missing-dependency"],"backgroundTag":"missing-external-program","analyzedSha":"6d5d0c440603ad9bdf6dcd599f73f6dde21acb44","analyzedAt":"2026-08-27T14:20:20.142Z","schemaVersion":2},"datasetVersion":"2026-08-27T19:17:21.184Z"}