{"record":{"id":"094ebe55df1f8fd4","repo":"kovidgoyal/kitty","slug":"this-must-be-run-as-kitten-choose-files","errorCode":null,"errorMessage":"This must be run as kitten choose-files","messagePattern":"This must be run as kitten choose-files","errorType":"console","errorClass":"SystemExit","httpStatus":null,"severity":"warning","filePath":"kittens/choose_files/main.py","lineNumber":237,"sourceCode":"map('Change to root directory', 'cd_root ctrl+/ cd /')\nmap('Change to home directory', 'cd_home ctrl+~ cd ~')\nmap('Change to home directory', 'cd_home ctrl+` cd ~')\nmap('Change to home directory', 'cd_home ctrl+shift+` cd ~')\nmap('Change to temp directory', 'cd_tmp --allow-fallback=shifted,ascii ctrl+t cd /tmp')\n\nmap('Next filter', 'next_filter --allow-fallback=shifted,ascii ctrl+f 1')\nmap('Previous filter', 'prev_filter --allow-fallback=shifted,ascii alt+f -1')\n\nmap('Toggle showing dotfiles', 'toggle_dotfiles --allow-fallback=shifted,ascii alt+h toggle dotfiles')\nmap('Toggle showing ignored files', 'toggle_ignorefiles --allow-fallback=shifted,ascii alt+i toggle ignorefiles')\nmap('Toggle sorting by dates', 'toggle_sort_by_dates --allow-fallback=shifted,ascii alt+d toggle sort_by_dates')\nmap('Toggle showing preview', 'toggle_preview --allow-fallback=shifted,ascii alt+p toggle preview')\n\negr()  # }}}\n\n\ndef main(args: list[str]) -> None:\n    raise SystemExit('This must be run as kitten choose-files')\n\n\ndef relative_path_if_possible(path: str, base: str) -> str:\n    if not base or not path:\n        return path\n    from contextlib import suppress\n    from pathlib import Path\n\n    b = Path(base)\n    q = Path(path)\n    with suppress(ValueError):\n        return str(q.relative_to(b))\n    return path\n\n\ndef format_selection_for_paste(paths: list[str], cwd: str | None, at_prompt: bool) -> str:\n    items = []\n    for path in paths:","sourceCodeStart":219,"sourceCodeEnd":255,"githubUrl":"https://github.com/kovidgoyal/kitty/blob/6d5d0c440603ad9bdf6dcd599f73f6dde21acb44/kittens/choose_files/main.py#L219-L255","documentation":"While dynamically loading libsystemd via dlsym in kitty's systemd integration (kitty/systemd.c LOAD_FUNC macro), a symbol such as sd_bus_default_user could not be resolved. kitty loads systemd functions at runtime so it can run on systems without systemd; failure means the installed libsystemd is missing expected symbols.","triggerScenarios":"kitty startup on Linux with dbus/desktop notification integration enabled; dlopen succeeded for a libsystemd shared object but dlsym returned NULL for one of the sd_* functions (sd_bus_default_user, sd_bus_call, sd_pid_get_user_slice, etc.) and dlerror() reported the missing symbol.","commonSituations":"Very old or stub libsystemd (e.g. musl/Alpine compatibility packages, chroots, Flatpak/sandbox runtimes shipping a partial libsystemd), or a systemd version older than the functions kitty uses (sd_pid_get_user_slice needs systemd >= 230).","solutions":["Update systemd/libsystemd to a current version (>= 230).","On Alpine/musl, install the real apsd/dbus-broker-providing package or accept that systemd integration is disabled (the log is harmless).","If in a container/Flatpak, ensure the runtime ships a complete libsystemd.","Ignore the message if you don't use kitty's systemd notification integration - kitty continues without it."],"exampleFix":null,"handlingStrategy":"fallback","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":["Keep libsystemd reasonably current on Linux desktop systems.","In containers/musl dists, expect and tolerate this log; systemd features are optional."],"tags":["kitty","systemd","dlsym","dlopen","linux"],"backgroundTag":"dynamic-symbol-load-failed","analyzedSha":"6d5d0c440603ad9bdf6dcd599f73f6dde21acb44","analyzedAt":"2026-08-27T14:20:20.142Z","schemaVersion":2},"datasetVersion":"2026-08-27T19:17:21.184Z"}