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

我听到有人说GTK+,但GTK+是跨平台的。怎么可能是本土的呢?


当前回答

XWindows可能是最接近所谓的“原生”:)

其他回答

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

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

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

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

As of 2013, a new window system called Wayland is starting to become usable, and many distributions have said they will at some point migrate to it, though there is still no clear schedule. This system is based on OpenGL/ES API, which means that in the future OpenGL will be the "native GUI API" in Linux. Work is being done to port GTK+ and QT to Wayland, so that current popular applications and desktop systems would need minimal changes. The applications that cannot be ported will be supported through an X11 server, much like OS X supports X11 apps through Xquartz. The GTK+ port is expected to be finished within a year, while Qt 5 already has complete Wayland support.

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

linux中最接近Win32的是libc,正如你所提到的,不仅是UI,还有事件和“其他操作系统的东西”

Wayland也值得一提,因为它通常被称为“未来的X11杀手”。

还要注意,Android和其他一些移动操作系统不包括X11,尽管它们有Linux内核,所以从这个意义上说,X11并不是所有Linux系统的本机。

跨平台与本土化没有任何关系。Cocoa也通过GNUStep移植到其他平台,但它仍然是OS X / macOS的原生版本。

Linux是一个内核,不是一个完整的操作系统。有不同的窗口系统和gui运行在Linux上提供窗口。通常X11是Linux发行版使用的窗口系统。

XWindows可能是最接近所谓的“原生”:)