Libadwaita:拆分 GTK 和设计语言

这是一篇关于 GTK(GNU 网络对象模型工具包)及其相关库(如 libadwaita、libhandy 等)的文章,主要内容如下:

  • 介绍:Linux Mint 博客发布的每月新闻 - 2024 年 4 月引发了对 GTK 及其相关内容的讨论,本文将探讨 libadwaita 诞生的原因、GTK 4 和 libadwaita 在支持范围方面的差异、它们与每个桌面环境和桌面操作系统的相关性以及 GTK 4 的现状。
  • GTK 是什么:GTK 是 GNOME 项目的跨平台窗口小部件工具包,提供开发者用于构建应用的交互元素,其最新版本 GTK 4 带来了性能提升,但也移除了一些 GNOME 设计语言的部件,引发了争议。
  • 工具包和设计语言的不必要统一

    • 哲学冲突:GNOME 应用和非 GNOME 应用在设计上存在差异,GNOME 有自己的设计语言和人机界面指南(HIG),导致 GTK 和 GNOME 的设计语言冲突,影响了其跨平台性。
    • 资源的低效分流:工具包和设计语言的不必要统一分散了大量的精力和维护工作,通用部件的实现和改进缓慢,代码库庞大难以维护和修改。
    • libhandy:前身:2017 年创建 libhandy,旨在为 GNOME 应用提供额外的部件,但当时一些问题仍然存在,如大部分 GNOME 部件仍在 GTK 3 中,GTK 4 发布后在 GTK 3 中解决这些问题代价过高,因此决定在 GTK 4 中引入重大变化。
  • libadwaita:继任者

    • 部件移植到 libadwaita:GTK 3 中的一些 GNOME 部件在 GTK 4 中被移除或弃用,并在 libadwaita 中重新实现或转移,同时 libadwaita 引入了一些符合 GNOME HIG 的部件。
    • 支持范围:GTK 4 和 libadwaita 的主要区别在于支持范围,GTK 4 更注重通用部件,而 libadwaita 主要为 GNOME 桌面提供定制部件,主要支持 Linux,GTK 官方支持所有主要操作系统。
  • GTK 4 今天的状态:得益于 GTK 4 中移除了 GNOME 部件,GTK 开发者可以继续致力于通用部件的工作,一些跨平台应用已成功移植到 GTK 4 或正在进行中。
  • GNOME 应用仍然是 GNOME 应用:针对特定平台的应用通常在该平台上运行最佳,GNOME 应用在 libhandy 出现之前就与其他平台的应用有所不同,设计语言是否是工具包的一部分对集成没有影响。
  • 替代平台:除了 libadwaita,还有其他平台库如 Granite(elementary OS)、Libhelium(tauOS)等,以及替代 libhandy 的库如 libxapp(Linux Mint)、libxfce4ui(Xfce)等,它们为各自的平台提供定制部件和样式。
  • 结论:跨平台工具包应主要提供通用部件,第三方可通过平台库扩展工具包,GTK 4 提供通用部件,libadwaita 等平台库为特定平台提供样式和定制部件,libadwaita 专为 GNOME 生态系统设计,GTK 4 应用则可在任何地方运行。
阅读 14
0 条评论