kovidgoyal/kitty · warning · RemoteControlErrorWithoutTraceback

The OS Window {os_window_id} is a desktop panel that cannot

Error message

The OS Window {os_window_id} is a desktop panel that cannot be made fullscreen

What it means

Raised when toggle-fullscreen is requested for a desktop panel and toggle_fullscreen(os_window_id) returns falsy. Panels are layer-shell surfaces anchored to screen edges; making them fullscreen is not a supported state, so kitty refuses the operation.

Source

Thrown at kitty/rc/resize_os_window.py:158

                            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':
                    toggle_os_window_visibility(os_window_id, False)
                elif ac == 'show':
                    toggle_os_window_visibility(os_window_id, True)
                elif ac == 'toggle-fullscreen':
                    if not toggle_fullscreen(os_window_id):
                        raise RemoteControlErrorWithoutTraceback(f'The OS Window {os_window_id} is a desktop panel that cannot be made fullscreen')
                elif is_panel:
                    raise RemoteControlErrorWithoutTraceback(
                        f'The OS Window {os_window_id} is a desktop panel, no actions other than resizing are supported for it'
                    )
                elif ac == 'resize':
                    boss.resize_os_window(
                        os_window_id,
                        width=payload_get('width'),
                        height=payload_get('height'),
                        unit=payload_get('unit'),
                        incremental=payload_get('incremental'),
                        metrics=metrics,
                    )
                elif ac == 'toggle-maximized':
                    boss.toggle_maximized(os_window_id)
        return None

View on GitHub (pinned to 6d5d0c4406)

Solutions

  1. Exclude panel windows from fullscreen actions — check is_layer_shell before calling
  2. Scope the match to the regular terminal window (title, app id, or the non-panel window id)
  3. If fullscreen coverage from a panel edge is wanted, resize the panel edge/size instead

Example fix

# before
for id in $(kitten @ ls --json | jq '.[].id'); do kitten @ resize-os-window --match id:$id --action=toggle-fullscreen; done
# after (skip layer-shell panels)
kitten @ ls | grep -v 'panel' | ... # only toggle non-panel windows
Defensive patterns

Strategy: type-guard

Validate before calling

metrics = get_window_metrics(os_window_id)
if metrics['is_layer_shell']:
    skip_fullscreen_action(os_window_id)

Type guard

def is_panel(w: dict) -> bool:
    return bool(w.get('is_layer_shell'))

Prevention

When it happens

Trigger: kitten @ resize-os-window --action=toggle-fullscreen --match <panel-window> where the matched window is a layer-shell panel.

Common situations: Generic window-management scripts applying toggle-fullscreen to every window id; matchers that unintentionally select the panel window; hotkeys that assume a single window type.

Understand the failure class

Background: UnsupportedOperationException and "is not supported" errors: when a library deliberately refuses a call — this error's family across 30 libraries.

Related errors


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