{"record":{"id":"49e911b46be2d2d9","repo":"kovidgoyal/kitty","slug":"the-os-window-os-window-id-has-no-panel-configur","errorCode":null,"errorMessage":"The OS Window {os_window_id} has no panel configuration","messagePattern":"The OS Window (.+?) has no panel configuration","errorType":"exception","errorClass":"RemoteControlErrorWithoutTraceback","httpStatus":null,"severity":"error","filePath":"kitty/rc/resize_os_window.py","lineNumber":134,"sourceCode":"        if windows:\n            ac = payload_get('action')\n            for os_window_id in {w.os_window_id for w in windows if w}:\n                metrics = get_os_window_size(os_window_id)\n                if metrics is None:\n                    raise RemoteControlErrorWithoutTraceback(f'The OS Window {os_window_id} does not exist')\n                panels = payload_get('os_panel')\n                is_panel = metrics['is_layer_shell']\n                if ac == 'os-panel':\n                    if not is_panel:\n                        raise RemoteControlErrorWithoutTraceback(\n                            f'The OS Window {os_window_id} is not a panel you should not use the --action=resize option to resize it'\n                        )\n                    if not panels:\n                        raise RemoteControlErrorWithoutTraceback('Must specify at least one panel setting')\n                    if payload_get('incremental'):\n                        existing = layer_shell_config_for_os_window(os_window_id)\n                        if existing is None:\n                            raise RemoteControlErrorWithoutTraceback(f'The OS Window {os_window_id} has no panel configuration')\n                        from kittens.panel.main import incrementally_update_layer_shell_config\n\n                        try:\n                            lsc = incrementally_update_layer_shell_config(existing, panels)\n                        except Exception as e:\n                            raise RemoteControlErrorWithoutTraceback(str(e))\n                    else:\n                        from kitty.launch import layer_shell_config_from_panel_opts\n\n                        try:\n                            lsc = layer_shell_config_from_panel_opts(panels)\n                        except Exception as e:\n                            raise RemoteControlErrorWithoutTraceback(f'Invalid panel options specified: {e}')\n                    if not set_layer_shell_config(os_window_id, lsc):\n                        raise RemoteControlErrorWithoutTraceback(f'Failed to change panel configuration for OS Window {os_window_id}')\n                elif ac == 'toggle-visibility':\n                    toggle_os_window_visibility(os_window_id)\n                elif ac == 'hide':","sourceCodeStart":116,"sourceCodeEnd":152,"githubUrl":"https://github.com/kovidgoyal/kitty/blob/6d5d0c440603ad9bdf6dcd599f73f6dde21acb44/kitty/rc/resize_os_window.py#L116-L152","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","solutions":["Do a non-incremental os-panel operation first to establish a full panel configuration","Recreate the panel via kitten @ launch --type=panel ...","Upgrade kitty so panel creation consistently records layer-shell config"],"exampleFix":"# before\nkitten @ resize-os-window --action=os-panel --incremental --os-panel-size=+10\n# after (seed a config first, then increment)\nkitten @ resize-os-window --action=os-panel --os-panel-size=40\nkitten @ resize-os-window --action=os-panel --incremental --os-panel-size=+10","handlingStrategy":"validation","validationCode":"incremental = {'size': '+10'}\nexisting = query_window_metrics(os_window_id)  # or track configs you applied\nif not existing_panel_config:\n    send_non_incremental_first()  # seeds config\nelse:\n    send_incremental(incremental)","typeGuard":null,"tryCatchPattern":"try:\n    send_incremental_panel_resize(win)\nexcept RCError as e:\n    if 'has no panel configuration' in str(e):\n        send_full_panel_config(win); send_incremental_panel_resize(win)","preventionTips":["Seed a full os-panel config right after creating a panel","Keep a client-side record of which windows have panel configs"],"tags":["kitty","remote-control","os-panel","layer-shell","incremental"],"backgroundTag":"missing-configuration","analyzedSha":"6d5d0c440603ad9bdf6dcd599f73f6dde21acb44","analyzedAt":"2026-08-27T14:20:20.142Z","schemaVersion":2},"datasetVersion":"2026-08-27T19:17:21.184Z"}