桌面集成

要求与规范 涵盖了Linux桌面集成的必要方面。这个页面提供了更多可选的桌面集成特性的信息。它也提供了一个指南,便于开发者让程序的用户界面兼容多数Linux桌面和发行版。

这些信息主要是为刚接触Linux的开发者准备的。不过它也适用于那些希望把特定应用推广到更多Linux发行版的开发者。

开发适用于Linux生态的应用可能是一项挑战性的任务,但现有的标准和指南会帮助开发者更方便地适配大多数Linux环境。

检测区域设置

应用程序的工具集(如Electron、GTK和Qt)默认提供了检测区域的功能。除此此外,你也可以使用 setlocale

门户

门户是用于安全访问沙箱外资源的框架。沙箱内程序可以使用的特性包括:

  • 检测网络状态
  • 使用文件选择器来打开文件
  • 打开URI
  • 阻止设备关机、休眠或进入待机状态
  • 打印
  • 发送邮件
  • 显示通知
  • 截取屏幕或录屏

GTK和Qt等工具集默认提供了对门户的支持。如果您使用的不是这类工具集,也可以直接使用门户的API来实现上述功能。请参考 portals API documentation 以获取更多信息。

通知

A number of toolkits and frameworks provide transparent support for Linux desktop notificatoions. This includes Electron, GTK, KDE and QML.

状态图标

状态图标对应于Windows系统中的系统托盘/任务栏图标,或者Mac系统中的菜单栏图标。大多数Linux发行版通过libappindicator提供对状态图标的支持。

部分Linux发行版不显示状态图标;不过您仍然可以设置一个图标,以便它可以在其他发行版中显示出来。出于对兼容性的考虑,建议您只把状态图标作为应用交互逻辑的补充,而不是用于实现特定功能或显示特定信息的唯一入口(包括“最小化到托盘”这一功能)。

窗口控制

窗口控件是关闭、最大化、最小化窗口的按钮。这些在不同的Linux桌面是不同的,特别是在要显示哪些控件方面。应用程序是否试图遵循这些变化取决于它们的判断力。提供与特定桌面环境所使用的完全相同的控件不应该被视为硬性要求。

从用户体验的角度来看,确保窗口控件出现在窗口的同一侧与其他桌面是很重要的。在Linux上,这是窗口的右侧(就像Windows一样)。

如果应用程序不想绘制自己的窗口控件,则可以依赖Linux上系统提供的标题栏。

窗口美化

如果您的应用程序使用深色视觉样式以及系统提供的窗口装饰,那么应该使用 GTK_THEME_VARIANT=dark 这个X11窗口属性,以确保窗口装饰与应用程序窗口的其余部分匹配。通过运行:

xprop -f _GTK_THEME_VARIANT 8u -set _GTK_THEME_VARIANT dark

已废弃的选项

以下桌面集成选项不再使用,可以安全地忽略:

  • 应用程序菜单——这些是特定于GNOME桌面的。然而,它们可能会在未来逐步淘汰。
  • 全局菜单栏——这是一个类似于Mac菜单栏的功能,它是Ubuntu Unity桌面的一部分。这个已经退休了。所有Linux桌面和发行版都希望在应用程序窗口中显示菜单栏(而不是像Mac那样依赖全局菜单栏)。