{"record":{"id":"d3e06ede290889fa","repo":"kovidgoyal/kitty","slug":"the-value-val-is-not-a-valid-choice-for-progress","errorCode":null,"errorMessage":"The value {val} is not a valid choice for progress_bar","messagePattern":"The value (.+?) is not a valid choice for progress_bar","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"kitty/options/parse.py","lineNumber":1240,"sourceCode":"        ans[\"placement_strategy\"] = val\n\n    choices_for_placement_strategy = frozenset(('top-left', 'top', 'top-right', 'left', 'center', 'right', 'bottom-left', 'bottom', 'bottom-right'))\n\n    def pointer_shape_when_dragging(self, val: str, ans: dict[str, typing.Any]) -> None:\n        ans['pointer_shape_when_dragging'] = pointer_shape_when_dragging(val)\n\n    def pointer_shape_when_grabbed(self, val: str, ans: dict[str, typing.Any]) -> None:\n        val = val.lower()\n        if val not in self.choices_for_pointer_shape_when_grabbed:\n            raise ValueError(f\"The value {val} is not a valid choice for pointer_shape_when_grabbed\")\n        ans[\"pointer_shape_when_grabbed\"] = val\n\n    choices_for_pointer_shape_when_grabbed = choices_for_default_pointer_shape\n\n    def progress_bar(self, val: str, ans: dict[str, typing.Any]) -> None:\n        val = val.lower()\n        if val not in self.choices_for_progress_bar:\n            raise ValueError(f\"The value {val} is not a valid choice for progress_bar\")\n        ans[\"progress_bar\"] = val\n\n    choices_for_progress_bar = frozenset(('left', 'right', 'top', 'bottom', 'hidden'))\n\n    def remap_modifiers(self, val: str, ans: dict[str, typing.Any]) -> None:\n        ans['remap_modifiers'] = remap_modifiers(val)\n\n    def remember_window_position(self, val: str, ans: dict[str, typing.Any]) -> None:\n        ans['remember_window_position'] = to_bool(val)\n\n    def remember_window_size(self, val: str, ans: dict[str, typing.Any]) -> None:\n        ans['remember_window_size'] = to_bool(val)\n\n    def remote_control_password(self, val: str, ans: dict[str, typing.Any]) -> None:\n        for k, v in remote_control_password(val, ans[\"remote_control_password\"]):\n            ans[\"remote_control_password\"][k] = v\n\n    def repaint_delay(self, val: str, ans: dict[str, typing.Any]) -> None:","sourceCodeStart":1222,"sourceCodeEnd":1258,"githubUrl":"https://github.com/kovidgoyal/kitty/blob/6d5d0c440603ad9bdf6dcd599f73f6dde21acb44/kitty/options/parse.py#L1222-L1258","documentation":"kitty's config parser rejects values for the progress_bar option that are not one of the allowed strings: left, right, top, bottom, hidden. The value is lowercased before checking, so only membership in that frozenset matters. It is raised while parsing kitty.conf (or a remote-control option set).","triggerScenarios":"Setting `progress_bar` in kitty.conf or via the remote control `set_option` / kitten CLI to anything outside {'left','right','top','bottom','hidden'}, e.g. `progress_bar none` or `progress_bar Left-Top`.","commonSituations":"Typos, guessing 'none' instead of 'hidden', or copy-pasting configs from older kitty versions/other terminals with different value names.","solutions":["Change the value to one of: left, right, top, bottom, or hidden","Check spelling and remove extra whitespace; the value must be a single word","If copied from another config, re-check the kitty docs for progress_bar"],"exampleFix":"# before\nprogress_bar none\n# after\nprogress_bar hidden","handlingStrategy":"validation","validationCode":"from kitty.options.parse import Parser\nassert 'hidden' in Parser.choices_for_progress_bar  # validate before use\nvalue = value.lower()\nif value not in ('left','right','top','bottom','hidden'):\n    raise SystemExit(f'bad progress_bar: {value}')","typeGuard":"def is_progress_bar(v: str) -> bool:\n    return v.lower() in ('left','right','top','bottom','hidden')","tryCatchPattern":null,"preventionTips":["Keep a single source-of-truth set of valid choices next to config generation","Lint kitty.conf with `kitty --debug-config` before deploying"],"tags":["kitty","config","validation","progress-bar"],"backgroundTag":"config-invalid-choice","analyzedSha":"6d5d0c440603ad9bdf6dcd599f73f6dde21acb44","analyzedAt":"2026-08-27T14:20:20.142Z","schemaVersion":2},"datasetVersion":"2026-08-27T19:17:21.184Z"}