对开发者、系统管理员和发行版的新特性

GNOME 3.10 引入了很多 GNOME 技术方面的新特性和增强。

Wayland

GNOME 3.10 可以使用 Wayland 运行 GNOME 会话和 GNOME 应用了。该支持是试验性的,仅供测试。运行在 Wayland 上的 gnome-shell 或其他应用可能不稳定甚至崩溃。

要运行 Wayland 下的 gnome-shell,在终端中执行以下命令:

gnome-session --session=gnome-wayland

可以指定 GDK_BACKEND 来让某个应用单独运行在 Wayland 上。运行以下命令,将 application-name 替换为应用程序执行文件的名字:

GDK_BACKEND=wayland application-name

如果某个应用程序无法运行在 Wayland 上,它会尝试退回到 X11。

更多关于 Wayland 上的 GNOME 的细节,请参阅 GNOME Wayland wiki 页面。

新的 GTK+ 部件

GTK+ 3.10 引入了一组新的界面部件。它们提供了新的能力,如添加过渡动画和增加灵活性。某些情况下,它们提供了比现有部件更好用的操作。创建的新部件与最新的 GNOME 3 应用程序设计保持一致。

  • GtkStack:一个窗口,它一次显示一个子对象。页面过渡可以带滑动或淡出效果。

  • GtkStackSwitcher:一组链接的按钮,可用于控制显示堆叠中的哪个子对象。设计与 GtkStack 合用。

  • GtkRevealer:一个窗口,从不可见到可见的过渡显示其子对象。

  • GtkListBox:一个竖直容器。行可以动态排序和过滤,可以使用光标或键盘导航。GtkListBoxGtkTreeView 的备选。行可以包含控件和复杂的布局。

  • GtkHeaderBar:位于窗口顶部的水平容器。 GtkHeaderBars 扮演窗口标题栏和工具栏的角色。HeaderBar 中的内容可以放在开头或末尾,或居中。

  • GtkSearchBar:一个用于包含搜索控件的容器。GtkSearchBars 通常位于 GtkHeaderBar 之下,可以按需隐藏或显示。

复合部件模板

复合部件模板是 GTK+ 3.10 中的新特性。它允许使用 XML 定义复合部件,而无需手动创建。GTK+ 已经利用它定义了自己的复合部件,如 GtkVolumeButtonGtkFileChooserDefault。应用程序作者同样可以用它创建自己的,通过直接使用 XML 或 Glade 界面创建器。

Tristan Van Berkom 写了一篇 关于此特性的详尽博文,里面有向导和示例,您可以试试。

GTK+ 中的基线对齐

GTK+ 3.10 引入了文本的基线对齐。这允许文本标签相对容器正确地竖直对齐,这也保证了文本对齐的一致性。

很多常见部件都可以使用基线对齐。想使用它的开发者,请将文本部件的竖直对齐设置为GTK_ALIGNMENT_BASELINE(在使用助手函数如new_from_label()时这是自动完成的)。

GLib

GApplication 在 GNOME 3.10 中获得了几个新特性:

  • 添加了支持 org.freedesktop.Application 的接口(由2013年4月的 freedesktop.org 峰会规定)。这提供了启动应用程序的标准方法。它也可以使用某个应用打开文件,或激活某个命名的操作。更多信息见Freedesktop 规范

  • .desktop 文件可以指定应用程序是否通过 D-Bus 激活启动。操作详情请参阅此 wiki 页面。

  • .desktop 文件中操作的支持添加到了GDesktopAppInfo,使用 g_desktop_app_info_list_actions()g_desktop_app_info_launch_action()。Freedesktop 规范也 对此有详细介绍

  • GApplication 现在允许应用程序向桌面 shell 发送自己的忙碌状态信号,比如长时间运行的操作或加载状态。

GLib 在 3.10 中有一些其他改进:

  • 测试现在可以生成 TAP 输出,这使与其他测试工具集成更加容易。要以这种方式运行测试,在命令行中指定 --tap

  • 现在对安装的测试(installed tests)有了部分支持。

  • GPropertyAction 是一种新型的 GAction,代表了某个对象的一种属性,并允许在激活时改变它的值。这使将属性与 GMenus 集成非常容易。

地理位置

GNOME 3.10 中的新地理位置功能允许应用程序访问位置信息来识别当前系统的位置。为此,引入了两个新组件:

  • geocode-glib:用于(反)地理解码的新库。通过它可以根据搜索项或坐标查找信息。它依赖于 OpenStreetMap 的 Nominatim 服务。

  • GeoClue2:一个重写的 GeoClue 实现,注重简单和安全。通过它可以识别当前位置。