跳转到内容

Gtk-CRITICAL: gtk_widget_get_scale_factor 失败 - cc-switch

Quick fix

在 Linux 或 WSL2 中运行 cc-switch 遇到 GTK 断言失败时,请修改 settings.json 关闭静默启动,或清理残留配置重装。

报错原文
(cc-switch:643): Gtk-CRITICAL **: 22:56:19.052: gtk_widget_get_scale_factor: assertion 'GTK_IS_WIDGET (widget)' failed

该错误通常出现在 Linux 或 WSL2 环境下运行 cc-switch GUI 时。由于 WSL2 的显示服务器与 GTK/WebKit 的窗口缩放存在兼容性问题,导致在窗口未完全初始化(例如静默启动时)查询缩放因子触发断言失败。这会引发界面冻结、窗口按钮失效、无法显示主界面或 WebKit 内部错误。社区反馈的解决方案存在差异:部分用户通过关闭静默启动解决,而另一些用户在已关闭静默启动的情况下依然报错,最终通过彻底清理残留配置重装或改用 CLI 解决。

  1. 编辑 cc-switch 的配置文件,确保关闭静默启动模式。

    // ~/.cc-switch/settings.json (root 用户为 /root/.cc-switch/settings.json)
    {
    "silentStartup": false
    }
  2. 如果修改配置后依然报错,请彻底卸载 cc-switch,清理所有残留配置文件后重新安装。

  3. 若 GUI 界面持续崩溃无法使用,建议暂时改用命令行版本 cc-switch-cli 进行代理和模型管理。

Toolcc-switch
Version3.14.0 - 3.16.4
PlatformsLinux
为什么非最大化时关闭按钮失效?
这是 WSL2 下 GTK 窗口管理的已知兼容性问题,尝试最大化窗口后再点击,或通过修改配置、清理重装的方法解决。
我是 root 用户,配置文件路径在哪里?
root 用户的配置文件路径为 /root/.cc-switch/settings.json,请确保将其中的 "silentStartup" 设置为 false。
添加 Codex OAuth 认证时遇到 WebKit 内部错误怎么办?
这同样是由于 WSL2 环境下 WebKitGTK 渲染异常导致的。请先尝试关闭静默启动并清理重装,若仍无法弹出认证窗口,建议暂时使用 cc-switch-cli 配置。

这是一个非官方社区 wiki,与 cc-switch 作者及项目本身无隶属关系。内容整理自项目公开的 GitHub issues。本站不分发任何软件。