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
- Exclude panel windows from fullscreen actions — check is_layer_shell before calling
- Scope the match to the regular terminal window (title, app id, or the non-panel window id)
- 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
- Filter panel windows out of generic fullscreen loops
- Branch on window type in automation scripts
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
- The OS Window {os_window_id} is not a panel you should not u
- The OS Window {os_window_id} has no panel configuration
- Failed to change panel configuration for OS Window {os_windo
- The OS Window {os_window_id} is a desktop panel, no actions
- The OS Window {os_window_id} is a panel and cannot be resize
AI-assisted analysis of kovidgoyal/kitty@6d5d0c4406 (2026-08-27).
Data as JSON: /api/errors/284d08789a2b9e44.
Report an issue: GitHub.