开发者最新消息
GNOME 48 为开发者带来了诸多改进,包括增强的开发者工具、改进的库和更新的语言绑定。请继续阅读以了解最新内容。
要全面了解 GNOME 的开发平台,您还可以访问 GNOME 开发者网站。深入了解并开始构建下一代 GNOME 体验!
Portals 增强功能
GNOME 48 增加了对 桌面 portals 的两项主要增强功能的支持:全局快捷键和 USB portal 的引入。
全局快捷键
借助 GNOME 48,应用程序现在可以注册系统范围内的全局快捷键。这允许应用程序设置键盘快捷键,即使应用程序没有焦点也可以使用。此功能完全受 GNOME 48 支持,并且 API 参考文档 可用。
USB Portal
第二个主要的 portals 增强功能是 USB portal 的引入。这允许应用程序监控和请求访问 USB 设备。这主要适用于需要访问专用 USB 设备(如操纵杆和控制器)的应用程序。对于更通用的设备,已经存在专门的 portals,例如 摄像头 portal。
使用新的 USB portal 提供了一种替代方案,以取代安全性较低的 --device=all 沙箱漏洞。有关更多信息,请参阅 API 参考文档。
USB portal 得益于最新的 Flatpak 1.16 版本,该版本还包括各种值得关注的其他增强功能。详情请参阅 Georges Stavracas 的博客文章。
GTK
GNOME 48 带有 GTK 工具包的新版本,其中包含许多值得注意的增强功能。
- 优化的尺寸分配:对 GTK 的尺寸分配算法进行了重大更改,旨在最大限度地减少代价高昂的二分法操作。虽然这会带来性能优势,但可能会导致某些应用程序的布局发生微妙变化。
- 默认 Portal 使用:GTK 现在默认使用 portals 进行文件选择器操作,无论应用程序是否被沙箱化。这可确保所有用户获得一致且现代的文件选择器体验。GTK 还注册应用程序以改进非沙箱化环境中的 portal API 功能。
- GtkBuilder 增强功能:GtkBuilder 现在支持在属性中定义内联菜单。此外,Pango 文本属性和选项卡数组可以通过文本序列化来指定,从而在 UI 设计中提供更大的灵活性。
Libadwaita
GNOME 48 带有 Libadwaita 1.7。此最新版本为开发 GNOME 应用程序的开发者带来了重要的的新功能。这些包括
- 切换组:一个新的 切换组 小部件提供了一种更方便、更具吸引力的替代方案,用于链接的切换按钮框。这个新的小部件也是一个有用的新的 内联视图切换器 的基础。
- 换行框:AdwWrapBox 是一个新的小部件,可用于标签列表和类似的情况。
- 自适应预览:是一种新的测试功能,允许模拟移动设备。一个 博客文章 包含详细信息。
- 字体访问:新的 API 允许访问系统的 文档 和 等宽 字体,无论是在程序中还是从 CSS 中。
还有一些较小的 API 更改可能感兴趣
AdwNavigationSplitView允许将侧边栏放置在末尾,就像AdwOverlaySplitView一样。AdwToastOverlay有一个新函数可以一次性关闭所有吐司。AdwNavigationView现在具有hhomogeneous和vhomogeneous属性,用于强制所有页面具有相同的宽度,以及visible-page-tag作为获取当前可见页面标签的简写。- 新的三次贝塞尔曲线缓动函数可用:
ADW_EASE、ADW_EASE_IN、ADW_EASE_OUT、ADW_EASE_IN_OUT。 AdwBottomSheet现在具有隐藏底部栏的 API。AdwBanner具有一个新的 API,用于使按钮更加突出。- 样式类
.dim-label已被弃用,转而使用.dimmed。
Sysprof
GNOME 的分析工具在 GNOME 48 中得到了显著更新,并包含许多改进。最显著的变化是
- 改进的采样精度和性能:Sysprof 在其采样精度和整体性能方面得到了显著增强。这些改进转化为更精确、更可靠的分析数据,使开发者能够更轻松地定位性能瓶颈。
- 增强的 DWARF 符号处理:DWARF 符号的处理得到了改进,从而获得更准确、更详细的调用堆栈信息。这有助于更深入地了解应用程序的执行流程,从而有助于识别粒度级别的性能问题。
- 改进的界面和用户体验:Sysprof 的用户界面得到了进一步完善,以提供更直观、更简化的分析体验。这包括视觉改进和工作流程优化,使开发者更容易导航和解释分析数据。
- 扩展的工具支持能力:Sysprof 现在支持更广泛的工具支持能力,允许开发者分析更广泛的应用程序行为。这种扩展增强了 Sysprof 的灵活性,使其成为性能分析的更通用的工具。
此版本还包括许多错误修复和稳定性改进,确保更强大、更可靠的分析体验。如果您以前从未用过 Sysprof,GNOME 的开发者文档包含一个 入门教程。
GJS
自上次 GNOME 主要版本发布以来,GNOME 的 JavaScript 运行时已收到各种改进和修复。这些包括
- GJS 现在支持源映射,使调试工具能够显示原始源代码位置。请注意,如果您使用 TypeScript 等构建工具进行源代码转换,则需要将源映射文件与任何构建的 JavaScript 文件一起发送,才能使其工作。
- GJS 交互式控制台现在是异步的。这允许,例如,创建一个带有按钮的窗口,连接一个信号处理程序,单击该按钮,并且信号处理程序将在单击该按钮时运行。
GObject.Value现在可以透明地创建,无需使用GObject.Value包装器。例如,可以使用new GObject.Value(String, 'a string');创建一个新的 Value。- 设置/获取基本类型属性时的 CPU 和内存使用量已显著降低。
Mutter
Mutter,GNOME 显示管理器,在 GNOME 48 中进行了一些增强功能
- 现在支持 xdg-toplevel-drag-protocol,允许应用程序拥有可以分离和重新连接的窗口部分,同时向用户显示适当的反馈。此功能当前在 Chromium 和 Google Chrome 中用于分离和重新连接浏览器选项卡。
- 现在支持 Wayland 光标形状协议,允许客户端让合成器控制鼠标光标的外观。
- Mutter 现在也可以在没有 GNOME 字体渲染堆栈的情况下构建,使其更灵活和可移植。
其他
GNOME 48 伴随着许多其他较小的开发者增强功能。以下是一些例子
- GLib 的 GVariant 数据类型已得到优化,从而减少了内存使用量。
- GNOME OS 现在使用 systemd-sysupdate,进而允许它支持 SecureBoot。请参阅 Adrien Plazas 的博客文章 以获取更多详细信息。
- Libmanette,GObject 游戏控制器库,现在支持 Steam Deck 控制器。它还有 新的文档。
- Gcr 得到了增强,例如使用
GcrCertificateExtension类,该类允许检查证书扩展。 - Vala 拥有一个 新的文档网站,其中包含大量有用的信息,包括教程和指南。鼓励对新网站的贡献!