kovidgoyal/kitty · warning

The option {key} is deprecated. Use macos_show_window_title_

Error message

The option {key} is deprecated. Use macos_show_window_title_in menubar instead.

What it means

macos_show_window_title_in_menubar is deprecated in favor of macos_show_window_title_in; kitty logs once per key (note the memoization writes attribute 'key' rather than the actual key, so the warning may repeat for distinct keys) and translates the boolean into the new option's value.

Source

Thrown at kitty/options/utils.py:1880

            continue
        seen[c] = len(ans)
        ans.append((c, o))
    return tuple(ans[:7])


def deprecated_hide_window_decorations_aliases(key: str, val: str, ans: dict[str, Any]) -> None:
    if not hasattr(deprecated_hide_window_decorations_aliases, key):
        setattr(deprecated_hide_window_decorations_aliases, key, True)
        log_error(f'The option {key} is deprecated. Use hide_window_decorations instead.')
    if to_bool(val):
        if is_macos and key == 'macos_hide_titlebar' or (not is_macos and key == 'x11_hide_window_decorations'):
            ans['hide_window_decorations'] = True


def deprecated_macos_show_window_title_in_menubar_alias(key: str, val: str, ans: dict[str, Any]) -> None:
    if not hasattr(deprecated_macos_show_window_title_in_menubar_alias, key):
        setattr(deprecated_macos_show_window_title_in_menubar_alias, 'key', True)
        log_error(f'The option {key} is deprecated. Use macos_show_window_title_in menubar instead.')
    macos_show_window_title_in = ans.get('macos_show_window_title_in', 'all')
    if to_bool(val):
        if macos_show_window_title_in == 'none':
            macos_show_window_title_in = 'menubar'
        elif macos_show_window_title_in == 'window':
            macos_show_window_title_in = 'all'
    else:
        if macos_show_window_title_in == 'all':
            macos_show_window_title_in = 'window'
        elif macos_show_window_title_in == 'menubar':
            macos_show_window_title_in = 'none'
    ans['macos_show_window_title_in'] = macos_show_window_title_in


def deprecated_send_text(key: str, val: str, ans: dict[str, Any]) -> None:
    parts = val.split(' ')

    def abort(msg: str) -> None:

View on GitHub (pinned to 6d5d0c4406)

Solutions

  1. Replace with macos_show_window_title_in none|window|menubar|all.
  2. Remove the old boolean line.
  3. Verify merged behavior if both old and new options are present.

Example fix

# before
macos_show_window_title_in_menubar yes

# after
macos_show_window_title_in menubar
Defensive patterns

Strategy: fallback

Validate before calling

def uses_deprecated_menubar_title(cfg: str) -> bool:
    return 'macos_show_window_title_in_menubar' in cfg

Type guard

def uses_deprecated_menubar_title(cfg: str) -> bool:
    return 'macos_show_window_title_in_menubar' in cfg

Prevention

When it happens

Trigger: Setting 'macos_show_window_title_in_menubar yes/no' in kitty.conf.

Common situations: Configs predating the menubar/window/all option; combining the old boolean with the new option and getting surprising merged results ('none'->'menubar', 'window'->'all').

Related errors


AI-assisted analysis of kovidgoyal/kitty@6d5d0c4406 (2026-08-27). Data as JSON: /api/errors/3459ef4ca19d6926. Report an issue: GitHub.