kovidgoyal/kitty · info · SystemExit

Must be run as kitten pager

Error message

Must be run as kitten pager

What it means

The binary search for parameter t on a cubic bezier curve (used for window resize animation easing) failed to converge to within 0.1 of the target x within 1e-6 increment. It falls back to the last start_t, which only slightly mis-times the animation — a numerical robustness issue, not a crash.

Source

Thrown at kittens/pager/main.py:30

choices=pager,scrollback
The role the pager is used for. The default is a standard less like pager.


--follow
type=bool-set
Follow changes in the specified file, automatically scrolling if currently on the last line.
""".format

help_text = """\
Display text in a pager with various features such as searching, copy/paste, etc.
Text can some from the specified file or from STDIN. If no filename is specified
and STDIN is not a TTY, it is used.
"""
usage = '[filename]'


def main(args: list[str]) -> None:
    raise SystemExit('Must be run as kitten pager')


if __name__ == '__main__':
    main(sys.argv)
elif __name__ == '__doc__':
    cd = sys.cli_docs  # type: ignore
    cd['usage'] = usage
    cd['options'] = OPTIONS
    cd['help_text'] = help_text
    cd['short_desc'] = 'Pretty, side-by-side diffing of files and images'
    cd['args_completion'] = CompletionSpec.from_string('type:file mime:text/* group:"Text files"')

View on GitHub (pinned to 6d5d0c4406)

Solutions

  1. If customizing resize easing, use a monotonic cubic bezier (x control points non-decreasing, like standard CSS easing)
  2. Disable the resize animation if the log is noisy
  3. Report the specific curve parameters upstream so convergence can be improved

Example fix

# before: non-monotonic control points
resize_easing = cubic-bezier(0.4, -0.2, 0.6, 1.2)
# after: monotonic in x
resize_easing = cubic-bezier(0.4, 0, 0.2, 1)
Defensive patterns

Strategy: fallback

Prevention

When it happens

Trigger: Evaluating get_bezier_limits / the resize-animation bezier whose control points make x non-monotonic or flat, so halving the increment never brackets x; degenerate custom animation curves.

Common situations: Only relevant when kitty's window resize animation is enabled and a pathological/eased curve is used; most users never see it.

Related errors


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