kovidgoyal/kitty · warning · SystemExit

This must be run as kitten desktop-ui

Error message

This must be run as kitten desktop-ui

What it means

On macOS, kitty failed to obtain the UNUserNotificationCenter singleton because +currentNotificationCenter threw an NSException (kitty/cocoa_window.m:470). This happens when the app has no bundle information - UNUserNotificationCenter refuses to run for processes without a valid bundle identifier, which kitty works around by creating a fake NSBundle.

Source

Thrown at kittens/desktop_ui/main.py:57

)
opt(
    '+file_chooser_kitty_conf',
    '',
    long_text='Path to config file to use for kitty when drawing the file chooser window. Can be specified multiple times. By default, the'
    ' normal kitty.conf is used. Relative paths are resolved with respect to the kitty config directory.',
)
opt(
    '+file_chooser_kitty_override',
    '',
    long_text='Override individual kitty configuration options, for the file chooser window.'
    ' Can be specified multiple times. Syntax: :italic:`name=value`. For example: :code:`font_size=20`.',
)

egr()


def main(args: list[str]) -> None:
    raise SystemExit('This must be run as kitten desktop-ui')


if __name__ == '__main__':
    main(sys.argv)
elif __name__ == '__conf__':
    sys.options_definition = definition  # type: ignore

View on GitHub (pinned to 6d5d0c4406)

Solutions

  1. Run kitty from its proper kitty.app bundle (or a complete brew cask install).
  2. Update kitty to the latest version - the bundle workaround is periodically fixed for new macOS releases.
  3. Check Notifications in System Settings to confirm kitty is listed; toggling its permission can reset the center.
  4. If notifications are unneeded, ignore - kitty falls back gracefully (center is nil).
Defensive patterns

Strategy: fallback

Prevention

When it happens

Trigger: Calling the notification path (notify cmdline, OSC 99/777 notifications, remote control) on macOS when the bundle-identifier workaround failed - e.g. sandboxed environments, changed kitty bundle layout, or macOS updates tightening the check.

Common situations: kitty installed outside an app bundle, running the kitty binary directly from a build dir, macOS security changes, or notification center daemon issues.

Related errors


AI-assisted analysis of kovidgoyal/kitty@6d5d0c4406 (2026-08-27). Data as JSON: /api/errors/74780cbda302f379. Report an issue: GitHub.