5. 客户端应用程序

让我们暂时关注客户端程序。 想象一下,如果您想完全从头开始编写客户端程序,仅使用 X 提供的功能。 您很快就会发现 Xlib 非常简陋,并且在屏幕上放置按钮、文本或用户友好的控件(滚动条、单选框)等操作非常复杂。

幸运的是,其他人费心编程了这些控件,并以可用的形式(库)提供给我们。 这些控件通常被称为“widgets”(小部件),当然,库是“widget library”(小部件库)。 这样我就只需使用一些参数从这个库中调用一个函数,就可以在屏幕上显示一个按钮。 小部件的示例包括菜单、按钮、单选按钮、滚动条和画布。

“canvas”(画布)是一种有趣的小部件,因为它基本上是客户端中的一个子区域,我可以在其中绘制内容。 可以理解的是,由于我不应该直接使用 Xlib,因为这会干扰小部件库,因此该库本身提供了一种在画布小部件内绘制任意图形的方法。

由于小部件库是实际在屏幕上绘制元素以及将用户操作解释为输入的库,因此所使用的库在很大程度上负责每个客户端的外观和行为。 从开发人员的角度来看,小部件库也具有特定的 API(函数集),这可能决定我想使用哪个小部件库。