it-swarm.com.de

Was ist die native GUI-API von Linux?

Ich hoffe, das kommt nicht als dumme Frage vor, aber ich habe mich immer gefragt. Sowohl Windows (Win32-API) als auch OS X (Cocoa) verfügen über eigene APIs für die Verarbeitung von Fenstern, Ereignissen und anderen Betriebssystemen. Ich habe nie wirklich eine klare Antwort auf das Äquivalent von Linux erhalten.

Ich habe gehört, dass einige Leute sagen, GTK +, aber GTK + ist plattformübergreifend. Wie kann es native sein?

411
DavidColson

Unter Linux ist die grafische Benutzeroberfläche nicht Teil des Betriebssystems. Die auf den meisten Linux-Desktops zu findende grafische Benutzeroberfläche wird von der Software X Window System bereitgestellt, die eine geräteunabhängige Vorgehensweise für den Umgang mit Bildschirmen, Tastaturen und Zeigergeräten definiert.

X Window definiert ein Netzwerkprotokoll für die Kommunikation. Jedes Programm, das dieses Protokoll "sprechen" kann, kann es verwenden. Es gibt eine C-Bibliothek namens Xlib , die die Verwendung dieses Protokolls vereinfacht. Xlib ist also eine Art der nativen GUI-API. Xlib ist nicht die einzige Möglichkeit, auf einen X Window-Server zuzugreifen. es gibt auch XCB .

Toolkit-Bibliotheken wie GTK + (verwendet von GNOME ) und Qt (verwendet von KDE ), die auf Xlib, werden verwendet, weil sie einfacher zu programmieren sind. Sie bieten zum Beispiel ein einheitliches Erscheinungsbild für alle Anwendungen, erleichtern die Verwendung von Drag & Drop, stellen Standardkomponenten für eine moderne Desktop-Umgebung usw. bereit.

Wie X intern auf den Bildschirm gezeichnet wird, hängt von der Implementierung ab. X.org hat einen geräteunabhängigen Teil und einen geräteabhängigen Teil. Ersteres verwaltet Bildschirmressourcen wie Fenster, während letzteres mit dem Grafikkartentreiber, normalerweise einem Kernelmodul, kommuniziert. Die Kommunikation kann über direkter Speicherzugriff oder über Systemaufrufe zum Kernel erfolgen. Der Treiber übersetzt die Befehle in eine Form, die von der Hardware auf der Karte verstanden wird.

Ab 2013 wird ein neues Fenstersystem mit der Bezeichnung Wayland einsetzbar, und viele Distributionen geben an, dass sie irgendwann dorthin migrieren werden, obwohl es noch keinen klaren Zeitplan gibt. Dieses System basiert auf der OpenGL/ES-API, was bedeutet, dass OpenGL zukünftig die "native GUI-API" in Linux sein wird. Es wird daran gearbeitet, GTK + und QT nach Wayland zu portieren, so dass derzeit gängige Anwendungen und Desktopsysteme nur minimale Änderungen erfordern. Anwendungen, die nicht portiert werden können, werden von einem X11-Server unterstützt, ähnlich wie OS X X11-Apps über Xquartz unterstützt. Der GTK + -Port ist wird voraussichtlich innerhalb eines Jahres fertiggestellt , während Qt 5 bereits vollständige Wayland-Unterstützung bietet.

Um die Sache noch komplizierter zu machen, hat Ubuntu angekündigt, ein neues System namens Mir zu entwickeln, das auf Probleme mit Wayland zurückzuführen ist. Dieses Fenstersystem basiert ebenfalls auf der OpenGL/ES-API.

570
Joni

Linux ist ein Kernel, kein vollständiges Betriebssystem. Es gibt verschiedene Windowing-Systeme und Gui's, die auf Linux laufen, um Windowing zu ermöglichen. Typischerweise ist X11 das von Linux-Distributionen verwendete Fenstersystem.

83
Chris Thompson

Wayland ist auch erwähnenswert, da es meist als "zukünftiger X11-Killer" bezeichnet wird.

Beachten Sie auch, dass Android und einige andere mobile Betriebssysteme X11 nicht enthalten, obwohl sie einen Linux-Kernel haben. In diesem Sinne ist X11 nicht in allen Linux-Systemen enthalten.

Plattformübergreifend zu sein hat nichts mit Native zu tun. Cocoa wurde auch über GNUStep auf andere Plattformen portiert, ist aber immer noch in OS X/macOS enthalten.

57
none

Streng genommen besteht die API von Linux aus ihren system-Aufrufen. Dies sind alle Kernel-Funktionen, die von einem User-Mode-Programm (Nicht-Kernel-Programm) aufgerufen werden können. Dies ist eine sehr einfache Benutzeroberfläche, mit der Programme Dateien öffnen und lesen können. Unter http://en.wikipedia.org/wiki/System_call finden Sie eine allgemeine Einführung.

Auf einem echten Linux-System wird auch ein ganzer "Stapel" anderer Software ausgeführt, um eine grafische Benutzeroberfläche und andere Funktionen bereitzustellen. Jedes Element dieses Stapels bietet eine eigene API.

22
nibot

Um das bereits Erwähnte zu unterstützen, gibt es in diesem Blog einen sehr guten Überblick über den Linux-Grafik-Stack: http://blog.mecheye.net/2012/06/the-linux-graphics-stack/

Dies erklärt X11/Wayland usw. und wie alles zusammenpasst. Zusätzlich zu dem bereits Erwähnten lohnt es sich, die folgenden APIs hinzuzufügen, die Sie für Grafiken in Linux verwenden können:

Mesa - "Mesa ist viel, aber eines der wichtigsten Dinge, für die es bekannt ist, ist seine OpenGL-Implementierung. Es ist eine Open-Source-Implementierung der OpenGL-API."

Cairo - "cairo ist eine Zeichenbibliothek, die von Anwendungen wie Firefox direkt oder von Bibliotheken wie GTK + zum Zeichnen von Vektorformen verwendet wird."

DRM (Direct Rendering Manager) - Ich verstehe das am wenigsten, aber es sind im Grunde die Kernel-Treiber, mit denen Sie Grafiken direkt in den Framebuffer schreiben können, ohne X zu durchlaufen

19
Matt

Ich nehme an, die Frage ist eher "Was ist die native GUI-API von Linux?".

In den meisten Fällen wird X (aka X11) dafür verwendet: http://en.wikipedia.org/wiki/X_Window_System

Die API-Dokumentation finden Sie hier

9
Mark

XWindows liegt wahrscheinlich am nächsten an dem, was man als 'native' bezeichnen könnte :)

5
Sergey Sirotkin

Das beste an Win32 in Linux wäre die libc, da Sie nicht nur die Benutzeroberfläche, sondern auch Ereignisse und "anderes os stuff" nennen

1
Midhat

Die grafische Benutzeroberfläche ist eine Abstraktion der Fähigkeiten auf hoher Ebene, sodass fast alles vom XOrg-Server bis zu OpenGL plattformübergreifend portiert wird, einschließlich für die Windows-Plattform. Wenn Sie jedoch unter GUI-API * Nix-Grafik-API meinen, bewegen Sie sich möglicherweise in der "Direct Rendering Infrastructure".

0
Chawathe Vipul

Wayland

Wie Sie vielleicht hören, ist wayland heutzutage die Wahl vieler Distros, da das Protokoll einfacher ist als das X.

Toolkits von Wayland

Toolkits oder GUI-Bibliotheken, die wayland schlägt vor sind:

  • QT 5
  • GTK +
  • LSD
  • Unordnung
  • EFL
0
Amir Forsati

Die grafischen Operationen des Linux-Kernels befinden sich in /include/linux/fb.h als struct fb_ops. Letztendlich scheinen Add-Ons wie X11, Wayland oder DRM darauf zu verweisen. Da diese Vorgänge nur für Videokarten, nicht für Vektor- oder Raster-Hardcopy- oder tty-orientierte Endgeräte gelten, ist ihre Nützlichkeit als GUI eingeschränkt. Es ist nur nicht ganz richtig, dass Sie diese Add-Ons benötigen, um eine grafische Ausgabe zu erhalten, wenn Sie nichts dagegen haben, einen Assembler zu verwenden, um Syscall nach Bedarf zu umgehen.

0
M. Ziegast