用途:用于对 GTK 4/libadwaita 应用(新建或已有)做任何改动,触发依据是仓库本身而非请求措辞。核心原则是先打好基础再做 UI,因为应用生命周期、线程模型和资源管理是多数 GTK 应用出问题的地方。UI 控件选择、布局与 HIG 合规由 designing-gnome-ui 技能负责。
主要能力:先按语言分支处理——Vala(.vala 源码或 project() 含 vala)、Python(.py 加 gi 导入)、Rust(Cargo.toml 含 gtk4 依赖或 .rs 源码),新项目按用户指定语言;写代码前先打开对应分支文件。分支文件覆盖样板代码、所有权、信号、属性、列表模型/ListView、异步与线程、模板、构建与验证等。若项目纯代码构建控件树(无 .ui 或 .blp),则跳过模板/Blueprint/GResource 内容。
使用方式:语言无关规则包括应用 ID 采用反向域名且与 desktop 文件一致;生命周期信号 startup(动作、CSS、GSettings)、activate(创建/呈现窗口)、shutdown(保存状态)、open(文件参数),覆盖 startup 时须先链式调用父实现;GTK 单线程,工作线程只能通过主循环 idle 回调回传结果,优先用 Gio 异步 I/O;动作在 startup 注册 app.name、窗口构造时注册 win.name 并绑定加速键;偏好用 GSettings 绑定属性。调试命令如 GTK_DEBUG=interactive myapp、G_MESSAGES_DEBUG=all myapp、G_DEBUG=fatal-criticals myapp、GSETTINGS_BACKEND=memory myapp。
适用场景与限制:适用于现有 GTK 应用的功能或行为修复、启动崩溃、UI 冻结、信号不触发或内存泄漏、新应用样板、Flatpak 打包等。Wayland 下客户端不能自行定位窗口、读回位置、置顶、抓取全局快捷键或从 dock 隐藏,需配套 GNOME Shell 扩展;X11/Broadway 后端在 GTK 4 已弃用。子代理不会继承该技能,委派时须在提示中要求其先调用本技能。具体代码与更多细节见各参考文件,资料未提供完整代码示例。