在 X11 中使用 GTK [src]

UNIX 上,X 后端默认为启用状态,所以在编译时,您无需执行任何特殊操作,且一切都应该“正常运行”。

如需将低级 Xlib 例程混入 GTK 程序,请参阅 GDK 手册中的 X 窗口系统交互

X11 特定环境变量

: 可以使用一些其他环境变量来影响 X11 GDK 后端。

GDK_SYNCHRONIZE

如果设置,GDK 将所有 X 请求同步进行。这是一个有用的调试选项,但会大大降低性能。

GDK_SCALE

必须将其设置为整数,通常为 2。如果设置,GDK 将按指定比例缩放所有窗口。缩放后的输出用于高 DPI 显示屏。通常,GDK 会从显示系统为每个显示器选取一个合适的比例系数。此环境变量允许覆盖该比例系数。

X11 特定 API

有关 X11 特定 API 的内容,请参阅 GDK文档

了解 X11 架构

对于来自 Windows 或 macOS 背景的人员来说,X 窗口系统中的某些方面常常令人感到惊讶。本节将从高层次介绍一些 X 的基本概念。有关更多详细信息,大多数人使用的书籍是 Adrian Nye 所著的《Xlib 编程手册》;本书是 O'Reilly X 窗口系统系列丛书中的第一卷。

如果您正在深入了解低级 X11 详细信息,那么标准是另一个重要资源,特别是 ICCCM 和扩展窗口管理器提示规范。 freedesktop.org 提供了链接到多项相关规范。

GDK 手册介绍了 GTK 程序中使用 Xlib

服务器、客户端、窗口管理器

其他窗口系统通常会将它们的所有功能都放在应用程序本身中。而 X 每次都会涉及到三个不同的程序:X 服务器、应用程序(由于它是 X 服务器的客户端,因此称为客户端)以及一个称为窗口管理器的特殊客户端。

X 服务器负责管理资源、处理绘制请求,以及将诸如键盘和鼠标事件之类的事件分发给感兴趣的应用程序。因此,客户端应用程序可以要求 X 服务器创建窗口、绘制圆或移动窗口。

窗口管理器负责呈现窗口周围的框架或边框;它还负责每个窗口的大小以及窗口最小化、最大化等状态。在 Windows 和 macOS 上,应用程序负责处理此大部分内容。在 X11 上,如果您希望修改窗口状态或更改其框架,则必须使用既定的 约定,请求窗口管理器代表您执行此操作。

GTK 提供了请求窗口管理器执行各种操作的函数;例如,请参阅 gtk_window_minimize()gtk_window_maximize()

请记住,大多数窗口管理器偶尔出于良好用户界面目的而忽略某些请求。