{"record":{"id":"3b53b81ea89f2905","repo":"kovidgoyal/kitty","slug":"must-specify-at-least-one-panel-setting","errorCode":null,"errorMessage":"Must specify at least one panel setting","messagePattern":"Must specify at least one panel setting","errorType":"exception","errorClass":"RemoteControlErrorWithoutTraceback","httpStatus":null,"severity":"error","filePath":"kitty/rc/resize_os_window.py","lineNumber":130,"sourceCode":"            toggle_os_window_visibility,\n        )\n\n        windows = self.windows_for_match_payload(boss, window, payload_get)\n        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):","sourceCodeStart":112,"sourceCodeEnd":148,"githubUrl":"https://github.com/kovidgoyal/kitty/blob/6d5d0c440603ad9bdf6dcd599f73f6dde21acb44/kitty/rc/resize_os_window.py#L112-L148","documentation":"Raised when the os-panel action is dispatched with no panel settings in the payload. kitty requires at least one panel option (e.g. edge, size, margins) to build or update a layer-shell configuration; an empty 'os_panel' payload leaves nothing to apply.","triggerScenarios":"kitten @ resize-os-window --action=os-panel with no --os-panel-* options supplied, or an RPC payload where the os_panel dict is empty/None.","commonSituations":"Automation that builds panel options conditionally and ends up passing none; typo'd option names so the CLI parser never populates os_panel; invoking the raw remote-control command dict without the os_panel key.","solutions":["Add at least one panel option, e.g. --os-panel-edge, --os-panel-size, --os-panel-margin, or --os-panel-exclusive","If scripting, assert the options dict is non-empty before sending the command","Check option spelling against kitten @ resize-os-window --help for the panel sub-options"],"exampleFix":"# before\nkitten @ resize-os-window --action=os-panel\n# after\nkitten @ resize-os-window --action=os-panel --os-panel-size=48","handlingStrategy":"validation","validationCode":"panels = {'edge': 'top', 'size': 40}\nassert panels, 'at least one os_panel option required'\nsend({'cmd': 'resize_os_window', 'action': 'os-panel', 'os_panel': panels})","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Build option dicts once and assert non-empty","Use CLI flags rather than raw payloads so the parser complains at the client side"],"tags":["kitty","remote-control","os-panel","missing-argument"],"backgroundTag":"missing-required-parameter","analyzedSha":"6d5d0c440603ad9bdf6dcd599f73f6dde21acb44","analyzedAt":"2026-08-27T14:20:20.142Z","schemaVersion":2},"datasetVersion":"2026-08-27T19:17:21.184Z"}