当前位置: 首页 > 知识库问答 >
问题:

Linux的原生GUI API是什么?

李康安
2023-03-14

Windows(Win32 API)和OS X(Cocoa)都有自己的API来处理Windows、事件和其他OS东西。对于Linux的等价物是什么,我从来没有真正得到一个明确的答案?

我听过一些人说GTK+,但是GTK+是跨平台的。怎么可能是原生的?

共有1个答案

司马祖鹤
2023-03-14

在Linux中,图形用户界面不是操作系统的一部分。大多数Linux桌面上的图形用户界面是由称为X Window System的软件提供的,该软件定义了一种与设备无关的方式来处理屏幕、键盘和指针设备。

X窗口为通信定义了一个网络协议,任何知道如何“讲”这个协议的程序都可以使用它。有一个叫做Xlib的C库,它使使用这个协议变得更容易,所以Xlib是一种原生GUI API。Xlib不是访问X Window服务器的唯一方式;还有XCB。

使用工具包库,如GTK+(GNOME使用)和Qt(KDE使用),构建在Xlib之上,因为它们更容易编程。例如,它们为应用程序提供了一致的外观和感觉,使拖放操作更容易使用,为现代桌面环境提供了标准组件,等等。

X如何在屏幕上进行内部绘制取决于实现。X.org有一个独立于设备的部分和一个依赖于设备的部分。前者管理窗口等屏幕资源,后者与显卡驱动程序通信,通常是内核模块。通信可以通过直接内存访问或通过系统调用内核进行。驱动程序将命令转换成卡上硬件能够理解的形式。

截至2013年,一个名为Wayland的新窗口系统开始变得可用,许多发行版表示,他们将在某个时候迁移到它,尽管目前还没有明确的时间表。本系统基于OpenGL/ES API,这意味着未来OpenGL将成为Linux中的“原生GUI API”。目前正在努力将GTK+和QT移植到Wayland,以便当前流行的应用程序和桌面系统需要最少的更改。不能移植的应用程序将通过X11服务器支持,就像OS X通过XQuartz支持X11应用程序一样。GTK+端口预计将在一年内完成,而QT5已经有了完整的Wayland支持。

更复杂的是,Ubuntu宣布他们正在开发一个名为Mir的新系统,因为他们认为Wayland存在问题。该窗口系统也是基于OpenGL/ES API的。

 类似资料:
  • 主要内容:什么是云原生,云原生的4大组件,如何云原生什么是云原生 技术的变革,一定是思想先行,云原生是一种构建和运行应用程序的方法,是一套技术体系和方法论。云原生(CloudNative)是一个组合词,Cloud+Native。Cloud表示应用程序位于云中,而不是传统的数据中心;Native表示应用程序从设计之初即考虑到云的环境,原生为云而设计,在云上以最佳姿势运行,充分利用和发挥云平台的弹性+分布式优势。Pivotal公司的Matt Stine

  • 问题内容: Java中的原生关键字是什么? 问题答案: 述关键字被应用于方法,以指示该方法是在本机代码使用JNI(Java本地接口)来实现。

  • flutter是通过什么原理和原生进行交互的?

  • 我听说像Facebook的最新更新将在博览会上可用,当我们实现Facebook登录并获得好友列表时需要时间。如果有人列出所有的利弊,那就太好了。

  • 本文向大家介绍Linux中的GRUB是什么?,包括了Linux中的GRUB是什么?的使用技巧和注意事项,需要的朋友参考一下 GRUB(大统一引导加载程序)是可从GNU项目获得的引导加载程序。引导加载程序非常重要,因为没有它就无法启动操作系统。这是第一个在打开程序时启动的程序。引导程序将控制权转移到操作系统内核。 GRUB功能 GRUB是许多Linux发行版的默认引导程序。这是因为它比许多先前版本的