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
- If customizing resize easing, use a monotonic cubic bezier (x control points non-decreasing, like standard CSS easing)
- Disable the resize animation if the log is noisy
- 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
- Use monotonic cubic-bezier curves for resize easing (x control points non-decreasing)
- Disable resize animation if logs are noisy
- Test custom easing curves before adopting them
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
- cubic-bezier easing function must have four points
- Must specify at least two points for the linear easing funct
- Linear easing curve must have strictly increasing points: {p
- {r} has too many points for a linear easing curve parameter
- {jt} is not a valid jump type for a linear easing function
AI-assisted analysis of kovidgoyal/kitty@6d5d0c4406 (2026-08-27).
Data as JSON: /api/errors/d13f050240b14b0a.
Report an issue: GitHub.