{"record":{"id":"4dde9f6927aae5ef","repo":"kovidgoyal/kitty","slug":"unknown-or-disabled-layout-layout-name","errorCode":null,"errorMessage":"Unknown or disabled layout: {layout_name}","messagePattern":"Unknown or disabled layout: (.+?)","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"kitty/tabs.py","lineNumber":645,"sourceCode":"                    matched_layout = candidate\n                    break\n                if candidate.startswith(layout_name):\n                    prefix_matches.append(candidate)\n                matches.append(x)\n\n        if not matched_layout:\n            if len(prefix_matches) == 1:\n                matched_layout = prefix_matches[0]\n            elif len(matches) == 1:\n                matched_layout = matches[0]\n        if matched_layout:\n            self._set_current_layout(matched_layout)\n            self.relayout()\n        else:\n            if len(matches) == 0:\n                if raise_exception:\n                    raise ValueError(layout_name)\n                log_error(f'Unknown or disabled layout: {layout_name}')\n            elif len(matches) != 1:\n                if raise_exception:\n                    raise ValueError(layout_name)\n                log_error(f'Multiple layouts match: {layout_name}')\n\n    @ac(\n        'lay',\n        \"\"\"\n        Toggle the named layout\n\n        Switches to the named layout if another layout is current, otherwise\n        switches to the last used layout. Useful to \"zoom\" a window temporarily\n        by switching to the stack layout. See also :opt:`scrollback_fill_enlarged_window`\n        if you would like content from the scrollback buffer to scroll down into the\n        zoomed window. For example::\n\n            map f1 toggle_layout stack\n        \"\"\",","sourceCodeStart":627,"sourceCodeEnd":663,"githubUrl":"https://github.com/kovidgoyal/kitty/blob/6d5d0c440603ad9bdf6dcd599f73f6dde21acb44/kitty/tabs.py#L627-L663","documentation":"goto_layout was asked (non-exception mode) to switch to a layout name that matches zero enabled layouts — either unknown or currently disabled via enabled_layouts. kitty logs and keeps the current layout.","triggerScenarios":"goto_layout(name, raise_exception=False) finds no match among enabled layouts — e.g. remote-control 'kitten @kitten goto-layout' or 'layout' map action with a typo'd/disabled name.","commonSituations":"Typo in layout name in a map binding, or the layout exists but was removed from enabled_layouts in kitty.conf.","solutions":["Check the exact name against: kitten @get-enabled-layouts / kitty --debug-config","Add the layout to enabled_layouts (e.g. enabled_layouts grid,vertical,fat)","Fix typos: valid names include tall, stack, grid, horizontal, vertical, fat, splits, etc."],"exampleFix":"# before\nmap f1 goto_layout talll\nenabled_layouts stack\n\n# after\nmap f1 goto_layout tall\nenabled_layouts tall,stack","handlingStrategy":"validation","validationCode":"enabled = {'tall', 'stack', 'grid', 'splits'}  # from kitten @get-enabled-layouts\nassert name in enabled, f'layout {name} not enabled/known'","typeGuard":"def is_enabled_layout(name: str, enabled: set[str]) -> bool:\n    return name in enabled","tryCatchPattern":null,"preventionTips":["Spell out full layout names in map bindings","Keep enabled_layouts in kitty.conf in sync with the layouts your maps reference"],"tags":["kitty","layouts","config"],"backgroundTag":"invalid-layout-name","analyzedSha":"6d5d0c440603ad9bdf6dcd599f73f6dde21acb44","analyzedAt":"2026-08-27T14:20:20.142Z","schemaVersion":2},"datasetVersion":"2026-08-27T19:17:21.184Z"}