{"record":{"id":"5de96f88c5294d35","repo":"kovidgoyal/kitty","slug":"the-value-val-is-not-a-valid-choice-for-tab-powe","errorCode":null,"errorMessage":"The value {val} is not a valid choice for tab_powerline_style","messagePattern":"The value (.+?) is not a valid choice for tab_powerline_style","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"kitty/options/parse.py","lineNumber":1420,"sourceCode":"\n    def tab_bar_show_new_tab_button(self, val: str, ans: dict[str, typing.Any]) -> None:\n        ans['tab_bar_show_new_tab_button'] = to_bool(val)\n\n    def tab_bar_style(self, val: str, ans: dict[str, typing.Any]) -> None:\n        val = val.lower()\n        if val not in self.choices_for_tab_bar_style:\n            raise ValueError(f\"The value {val} is not a valid choice for tab_bar_style\")\n        ans[\"tab_bar_style\"] = val\n\n    choices_for_tab_bar_style = frozenset(('fade', 'hidden', 'powerline', 'separator', 'slant', 'custom'))\n\n    def tab_fade(self, val: str, ans: dict[str, typing.Any]) -> None:\n        ans['tab_fade'] = tab_fade(val)\n\n    def tab_powerline_style(self, val: str, ans: dict[str, typing.Any]) -> None:\n        val = val.lower()\n        if val not in self.choices_for_tab_powerline_style:\n            raise ValueError(f\"The value {val} is not a valid choice for tab_powerline_style\")\n        ans[\"tab_powerline_style\"] = val\n\n    choices_for_tab_powerline_style = frozenset(('angled', 'round', 'slanted'))\n\n    def tab_separator(self, val: str, ans: dict[str, typing.Any]) -> None:\n        ans['tab_separator'] = tab_separator(val)\n\n    def tab_switch_strategy(self, val: str, ans: dict[str, typing.Any]) -> None:\n        val = val.lower()\n        if val not in self.choices_for_tab_switch_strategy:\n            raise ValueError(f\"The value {val} is not a valid choice for tab_switch_strategy\")\n        ans[\"tab_switch_strategy\"] = val\n\n    choices_for_tab_switch_strategy = frozenset(('last', 'left', 'previous', 'right'))\n\n    def tab_title_max_length(self, val: str, ans: dict[str, typing.Any]) -> None:\n        ans['tab_title_max_length'] = positive_int(val)\n","sourceCodeStart":1402,"sourceCodeEnd":1438,"githubUrl":"https://github.com/kovidgoyal/kitty/blob/6d5d0c440603ad9bdf6dcd599f73f6dde21acb44/kitty/options/parse.py#L1402-L1438","documentation":"tab_powerline_style chooses the shape of powerline tab separators and accepts only angled, round, slanted. The parser lowercases and validates; other values abort parsing with this ValueError.","triggerScenarios":"Setting `tab_powerline_style flat`, `circle`, or a typo like `angel` in kitty.conf while using tab_bar_style powerline.","commonSituations":"Confusing separator shape names with font powerline glyph names; copy-paste errors from dotfiles; values valid in other terminals (e.g. 'round' vs 'rounded') — note it is 'round', not 'rounded'.","solutions":["Use one of: angled, round, slanted","Note it is 'round' not 'rounded' and 'slanted' not 'slant' (unlike tab_bar_style)","Fix typos introduced by hand-editing"],"exampleFix":"# before\ntab_powerline_style rounded\n# after\ntab_powerline_style round","handlingStrategy":"validation","validationCode":"value = value.lower()\nif value not in ('angled','round','slanted'):\n    raise SystemExit(f'bad tab_powerline_style: {value}')","typeGuard":"def is_tab_powerline_style(v: str) -> bool:\n    return v.lower() in ('angled','round','slanted')","tryCatchPattern":null,"preventionTips":["It's 'round' not 'rounded'; 'slanted' not 'slant'","Keep tab_bar_style and tab_powerline_style keywords straight"],"tags":["kitty","config","validation","tab-bar","powerline"],"backgroundTag":"config-invalid-choice","analyzedSha":"6d5d0c440603ad9bdf6dcd599f73f6dde21acb44","analyzedAt":"2026-08-27T14:20:20.142Z","schemaVersion":2},"datasetVersion":"2026-08-27T19:17:21.184Z"}