kovidgoyal/kitty · error · ValueError
{parts[0]} is not a valid edge specification
Error message
{parts[0]} is not a valid edge specification What it means
The left-hand side of name=value must be a known spacing key: margin/padding/border (optionally with -left/-top/-right/-bottom), or cell-width/cell-height. Unknown names raise this error.
Source
Thrown at kitty/rc/set_spacing.py:53
setattr(opts, q, new_edges)
def parse_spacing_settings(args: Iterable[str]) -> dict[str, float | None]:
mapper: dict[str, list[LiteralString]] = {}
for q in ('margin', 'padding'):
mapper[q] = f'{q}-left {q}-top {q}-right {q}-bottom'.split()
mapper[f'{q}-h'] = mapper[f'{q}-horizontal'] = f'{q}-left {q}-right'.split()
mapper[f'{q}-v'] = mapper[f'{q}-vertical'] = f'{q}-top {q}-bottom'.split()
for edge in ('left', 'top', 'right', 'bottom'):
mapper[f'{q}-{edge}'] = [f'{q}-{edge}']
settings: dict[str, float | None] = {}
for spec in args:
parts = spec.split('=', 1)
if len(parts) != 2:
raise ValueError(f'{spec} is not a valid setting')
which = mapper.get(parts[0].lower())
if not which:
raise ValueError(f'{parts[0]} is not a valid edge specification')
if parts[1].lower() == 'default':
val = None
else:
try:
val = float(parts[1])
except Exception:
raise ValueError(f'{parts[1]} is not a number')
for q in which:
settings[q] = val
return settings
class SetSpacing(RemoteCommand):
protocol_spec = __doc__ = """
settings+/dict.spacing: An object mapping margins/paddings using canonical form {'margin-top': 50, 'padding-left': null} etc
match_window/str: Window to change paddings and margins in
match_tab/str: Tab to change paddings and margins in
all/bool: Boolean indicating change paddings and margins everywhere or notView on GitHub (pinned to 6d5d0c4406)
Solutions
- Use valid keys: margin, padding, border (with optional -left/-top/-right/-bottom), cell-width, cell-height
- Check kitty @set-spacing --help for the current list
Example fix
# before kitten @set-spacing margins=10 # after kitten @set-spacing margin=10
Defensive patterns
Strategy: type-guard
Validate before calling
KEYS={'margin','padding','border','cell-width','cell-height'}
# plus f'{k}-{edge}' variants
Type guard
def is_valid_key(k): base=k.rsplit('-',1)[0]; edge=k.rsplit('-',1)[-1]; return k in KEYS or (base in KEYS and edge in {'left','top','right','bottom'}) Prevention
- Pull key names from @set-spacing --help
When it happens
Trigger: Passing 'kitten @set-spacing foo=10' or a misspelled edge like 'margin-leftt=2'.
Common situations: Typos in spacing names, or scripts assuming a spacing key that kitty doesn't support.
Related errors
- {spec} is not a valid setting
- {parts[1]} is not a number
- No colors specified
- Unknown type_of_input: {type_of_input}
- Unknown keys in multicell_command:
AI-assisted analysis of kovidgoyal/kitty@6d5d0c4406 (2026-08-27).
Data as JSON: /api/errors/8d586cdd408079fc.
Report an issue: GitHub.