kovidgoyal/kitty · error · RemoteControlErrorWithoutTraceback

The OS Window {os_window_id} has no panel configuration

Error message

The OS Window {os_window_id} has no panel configuration

What it means

Raised when --incremental panel resizing is requested but the target window has no existing layer-shell configuration. Incremental updates need a baseline panel config (from layer_shell_config_for_os_window) to modify; without one there is nothing to increment against.

Source

Thrown at kitty/rc/resize_os_window.py:134

        if windows:
            ac = payload_get('action')
            for os_window_id in {w.os_window_id for w in windows if w}:
                metrics = get_os_window_size(os_window_id)
                if metrics is None:
                    raise RemoteControlErrorWithoutTraceback(f'The OS Window {os_window_id} does not exist')
                panels = payload_get('os_panel')
                is_panel = metrics['is_layer_shell']
                if ac == 'os-panel':
                    if not is_panel:
                        raise RemoteControlErrorWithoutTraceback(
                            f'The OS Window {os_window_id} is not a panel you should not use the --action=resize option to resize it'
                        )
                    if not panels:
                        raise RemoteControlErrorWithoutTraceback('Must specify at least one panel setting')
                    if payload_get('incremental'):
                        existing = layer_shell_config_for_os_window(os_window_id)
                        if existing is None:
                            raise RemoteControlErrorWithoutTraceback(f'The OS Window {os_window_id} has no panel configuration')
                        from kittens.panel.main import incrementally_update_layer_shell_config

                        try:
                            lsc = incrementally_update_layer_shell_config(existing, panels)
                        except Exception as e:
                            raise RemoteControlErrorWithoutTraceback(str(e))
                    else:
                        from kitty.launch import layer_shell_config_from_panel_opts

                        try:
                            lsc = layer_shell_config_from_panel_opts(panels)
                        except Exception as e:
                            raise RemoteControlErrorWithoutTraceback(f'Invalid panel options specified: {e}')
                    if not set_layer_shell_config(os_window_id, lsc):
                        raise RemoteControlErrorWithoutTraceback(f'Failed to change panel configuration for OS Window {os_window_id}')
                elif ac == 'toggle-visibility':
                    toggle_os_window_visibility(os_window_id)
                elif ac == 'hide':

View on GitHub (pinned to 6d5d0c4406)

Solutions

  1. Do a non-incremental os-panel operation first to establish a full panel configuration
  2. Recreate the panel via kitten @ launch --type=panel ...
  3. Upgrade kitty so panel creation consistently records layer-shell config

Example fix

# before
kitten @ resize-os-window --action=os-panel --incremental --os-panel-size=+10
# after (seed a config first, then increment)
kitten @ resize-os-window --action=os-panel --os-panel-size=40
kitten @ resize-os-window --action=os-panel --incremental --os-panel-size=+10
Defensive patterns

Strategy: validation

Validate before calling

incremental = {'size': '+10'}
existing = query_window_metrics(os_window_id)  # or track configs you applied
if not existing_panel_config:
    send_non_incremental_first()  # seeds config
else:
    send_incremental(incremental)

Try / catch

try:
    send_incremental_panel_resize(win)
except RCError as e:
    if 'has no panel configuration' in str(e):
        send_full_panel_config(win); send_incremental_panel_resize(win)

Prevention

When it happens

Trigger: Calling resize-os-window --action=os-panel with the incremental flag on a window that is a layer-shell surface but whose stored panel configuration is missing/None.

Common situations: Panels created by an older kitty version that did not persist layer-shell config; state lost after kitty restart or config reload; targeting a layer-shell window that was not created through the panel launch path.

Related errors


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