{"record":{"id":"5e04d017871cbcd2","repo":"kovidgoyal/kitty","slug":"creating-desktop-panels-is-not-supported-on-this-p","errorCode":null,"errorMessage":"Creating desktop panels is not supported on this platform","messagePattern":"Creating desktop panels is not supported on this platform","errorType":"exception","errorClass":"RuntimeError","httpStatus":null,"severity":"error","filePath":"kitty/boss.py","lineNumber":525,"sourceCode":"                    pre_show_callback,\n                    wtitle or appname,\n                    wname,\n                    wclass,\n                    wstate,\n                    disallow_override_title=bool(wtitle),\n                    x=x,\n                    y=y,\n                )\n        else:\n            wname = self.args.name or self.args.cls or appname\n            wclass = self.args.cls or appname\n        tm = TabManager(os_window_id, self.args, wclass, wname, startup_session)\n        self.os_window_map[os_window_id] = tm\n        return os_window_id\n\n    def add_os_panel(self, cfg: LayerShellConfig, wclass: str | None = appname, wname: str | None = appname) -> int:\n        if not is_layer_shell_supported():\n            raise RuntimeError('Creating desktop panels is not supported on this platform')\n        wclass = wclass or appname\n        wname = wname or appname\n        size_data = get_os_window_sizing_data(get_options(), None)\n        os_window_id = create_os_window(initial_window_size_func(size_data, {}), lambda *a: None, appname, wname, wclass, None, layer_shell_config=cfg)\n        tm = TabManager(os_window_id, self.args, wclass, wname, None)\n        self.os_window_map[os_window_id] = tm\n        return os_window_id\n\n    def list_os_windows(\n        self, self_window: Window | None = None, tab_filter: Callable[[Tab], bool] | None = None, window_filter: Callable[[Window], bool] | None = None\n    ) -> Iterator[OSWindowDict]:\n        with cached_process_data():\n            active_tab_manager = self.active_tab_manager\n            focused_wid = current_focused_os_window_id()\n            last_focused = last_focused_os_window_id()\n            for os_window_id, tm in self.os_window_map.items():\n                tabs = list(tm.list_tabs(self_window, tab_filter, window_filter))\n                if tabs:","sourceCodeStart":507,"sourceCodeEnd":543,"githubUrl":"https://github.com/kovidgoyal/kitty/blob/6d5d0c440603ad9bdf6dcd599f73f6dde21acb44/kitty/boss.py#L507-L543","documentation":"Boss.add_os_panel raises RuntimeError when creating a layer-shell desktop panel (dock/panel window) is requested but the platform lacks Wayland layer-shell support. Panels are only implementable via the wlr-layer-shell protocol on Wayland.","triggerScenarios":"Calling add_os_panel(cfg, ...) on X11, macOS, or a compositor without layer-shell support (is_layer_shell_supported() returns False); triggered via remote control/single-instance commands that create panels.","commonSituations":"Running a config, session, or script that defines OS panels while kitty runs on X11 or macOS; or on a Wayland compositor that does not implement layer-shell.","solutions":["Switch to a Wayland session with a layer-shell compositor (sway, most wlroots compositors)","Remove/disable the panel configuration on unsupported platforms","Guard calls with is_layer_shell_supported() before add_os_panel"],"exampleFix":"# before\nboss.add_os_panel(cfg)\n# after\nfrom kitty.boss import is_layer_shell_supported\nif is_layer_shell_supported():\n    boss.add_os_panel(cfg)","handlingStrategy":"type-guard","validationCode":"from kitty.boss import is_layer_shell_supported\nif is_layer_shell_supported():\n    boss.add_os_panel(cfg)","typeGuard":"def can_add_panel() -> bool:\n    from kitty.boss import is_layer_shell_supported\n    return is_layer_shell_supported()","tryCatchPattern":"try:\n    boss.add_os_panel(cfg)\nexcept RuntimeError as e:\n    if 'not supported on this platform' in str(e):\n        skip_panels = True\n    else:\n        raise","preventionTips":["Check is_layer_shell_supported() before panel setup","Only ship panel configs on Wayland layer-shell sessions"],"tags":["kitty","wayland","layer-shell","platform-support","panel"],"backgroundTag":"unsupported-platform-feature","analyzedSha":"6d5d0c440603ad9bdf6dcd599f73f6dde21acb44","analyzedAt":"2026-08-27T14:20:20.142Z","schemaVersion":2},"datasetVersion":"2026-08-27T19:17:21.184Z"}