kovidgoyal/kitty · info · ValueError
Invalid panel options specified: {e}
Error message
Invalid panel options specified: {e} What it means
The box-drawing renderer encountered a Unicode codepoint in the U+2500 block family that has no case in its drawing table, so it renders the cell as blank and logs the codepoint. Note this table also handles some legacy/DOS glyphs via C()/S() macros; unknown ones degrade to blank.
Source
Thrown at kittens/panel/main.py:137
'focus_policy': ('focus_policy',),
'exclusive_zone': ('requested_exclusive_zone',),
'override_exclusive_zone': ('override_exclusive_zone',),
'hide_on_focus_loss': ('hide_on_focus_loss',),
}
)
def incrementally_update_layer_shell_config(existing: dict[str, Any], cli_options: Iterable[str]) -> LayerShellConfig:
seen_options: dict[str, Any] = {}
cli_options = [('' if x.startswith('--') else '--') + x for x in cli_options]
try:
try:
opts, _ = parse_panel_args(cli_options, track_seen_options=seen_options)
except SystemExit as e:
raise ValueError(str(e))
lsc = layer_shell_config(opts)
except Exception as e:
raise ValueError(f'Invalid panel options specified: {e}')
lsc_cli_map = cli_option_to_lsc_configs_map()
for option in seen_options:
for config in lsc_cli_map.get(option, ()):
existing[config] = getattr(lsc, config)
if seen_options.get('edge') == 'background':
existing['type'] = GLFW_LAYER_SHELL_BACKGROUND
if existing['hide_on_focus_loss']:
existing['focus_policy'] = GLFW_FOCUS_ON_DEMAND
return LayerShellConfig(**existing)
mtime_map: dict[str, float] = {}
def have_config_files_been_updated(config_files: Iterable[str]) -> bool:
ans = False
for cf in config_files:
try:View on GitHub (pinned to 6d5d0c4406)
Solutions
- Update kitty — new Unicode additions (legacy computing symbols) get table entries over time
- Check the exact codepoint from the log against Unicode charts to confirm it's a genuine box/legacy glyph
- Report the codepoint upstream as a missing box-drawing case
Defensive patterns
Strategy: fallback
Prevention
- Keep kitty updated for new Unicode box-drawing/legacy glyph coverage
- Note the codepoint from the log to identify the missing glyph
- Report missing glyphs upstream rather than patching the table locally
When it happens
Trigger: Displaying an unusual box-drawing, legacy computing, or terminal glyph character that kitty's decorations.c table doesn't cover (or that a patch/added case didn't handle), e.g. rarely-used U+1FB00-series or exotic block glyphs.
Common situations: Running TUI apps that emit obscure line/box or legacy symbols; fonts with custom glyph mappings; newer Unicode than kitty's table supports.
Related errors
- {x} is not a unicode codepoint of the form U+number
- Invalid range: {a:x} - {b:x}
- %d out of %d tests failed.
- This must be run as kitten ask
- This should be run as kitten broadcast
AI-assisted analysis of kovidgoyal/kitty@6d5d0c4406 (2026-08-27).
Data as JSON: /api/errors/82f99332533047f5.
Report an issue: GitHub.