用途:为 GNOME 应用(新建或已有)的每一次用户可见改动提供设计规范,核心原则是“没有设计决策就不写 UI 代码”,先选模式再实现。配套技能 developing-gtk-apps 负责应用架构(生命周期、线程、GSettings、actions、列表模型/工厂、打包);本技能代码片段为 Python(PyGObject),Vala/Rust 语法见该技能的对应分支。子代理不会自行加载技能,需在提示中要求其调用 designing-gnome-ui。
主要能力:给出 libadwaita 1.9 / GTK 4.22 的当前 API 对照(如 AdwPreferencesDialog、AdwAlertDialog、AdwAboutDialog、AdwShortcutsDialog、GtkFileDialog、GtkColorDialog、AdwSpinner、AdwToggleGroup、AdwBottomSheet、AdwWrapBox、AdwButtonRow、AdwSidebar 等),并说明 *Window 到 *Dialog 的迁移原因(AdwDialog 自适应呈现,用 present(parent) 附加)。提供容器选择(窗口、设置、列表、模态、主操作、破坏性操作)、导航选择(视图切换、侧栏、层级、覆盖面板、AdwBreakpoint 自适应)、控件默认值、列表控件选择、图标命名、平台限制处理、反馈选择(Toast→Banner→Dialog 升级)、排版与配色(样式类与 CSS 变量)以及完成标准。
使用方式:按“先验证再断言”原则,用已安装的 introspection 数据确认控件与版本,例如解析 /usr/share/gir-1.0/Adw-1.gir 与 Gtk-4.0.gir 的 version 与 deprecated-version 属性;用 gresource extract 检查样式表确认 CSS 类;用 find /usr/share/icons/Adwaita -name 'NAME-symbolic.svg' 确认图标,必要时用 gtk4-icon-browser。完成前必须实际渲染窗口并逐行核对(窗口控件可见、快捷键对话框显示加速键、侧栏初始状态、内容填充、无硬编码颜色、图标按钮有 tooltip、每个操作只有一个可见入口等)。
适用场景:GNOME/GTK 应用的界面设计、控件与导航选型、HIG 合规检查、API 迁移与弃用替换、自适应布局、反馈与错误呈现。限制:不负责应用架构与打包;Qt/PySide6 无维护中的 Adwaita 主题,需用 QSS 并复用本技能的模式与排版决策;部分能力(窗口定位、置顶、隐藏于 dock、全局快捷键)在 GNOME Wayland 下需配套 shell 扩展,缺失时应将控件置为不可用并加说明性 tooltip,而非静默失效。更多细节见 gnome-hig-reference.md 与 gnome-advanced-patterns.md。