X, Xorg und D-Bus: Was ist der Unterschied?

35

Während ich lerne, bestimmte Dinge in der GUI-Programmierung zu tun (z. B. den Platz auf dem Bildschirm für eine Anwendung zu reservieren), muss ich mehr über den Window Manager lernen, normalerweise X11 unter Linux (ich bin nicht sicher, ob es überhaupt Distributionen gibt) , die etwas anderes als X11 verwenden, obwohl ich von Wayland gehört habe , das noch in keinem implementiert ist.)

Ich bin ziemlich neu in der Programmierung und ungeduldig; Also tauche ich einfach ein. Jetzt lese ich das ICCCM mit der Hoffnung, mehr zu lernen. Dieses Dokument zielt jedoch auf eine Öffentlichkeit ab, die (viel) mehr weiß als ich. Also bin ich auf einige Informationen gestoßen, und ich würde mich über Klarstellungen freuen.

Abschnitt 2 der ICCCM-Zitate:

Beachten Sie, dass alle Daten, die zwischen einem Eigentümer und einem Anforderer übertragen werden, normalerweise über den Server in einer X Version 11-Umgebung übertragen werden müssen. Ein Client kann nicht davon ausgehen, dass ein anderer Client dieselben Dateien öffnen oder sogar direkt kommunizieren kann. Der andere Client kommuniziert möglicherweise über einen völlig anderen Netzwerkmechanismus mit dem Server (z. B. kann ein Client DECnet und der andere TCP / IP-Client sein). Daher ist die Weitergabe indirekter Verweise auf Daten (wie Dateinamen, Hostnamen und Portnummern usw.) nur zulässig, wenn beide Clients ausdrücklich zustimmen.

Soweit ich weiß, basiert X Window Manager auf X Server (danke Wikipedia). Im obigen Zitat heißt es: Der Client kann über DECnet oder TCP / IP mit dem Server kommunizieren. Bisher dachte ich, dass "Server" eine Redewendung war, jetzt bezweifle ich: Ist X-Server ein Server wie in einem "Webserver"? Wie soll ich seine Funktion / Definition verstehen?

Dann gibt es oft Verweise auf X11, Xorg, X Server und / oder X Window Manager. Es wird verwirrend: Ist X11 ein Bundle mit Xorg und X Window Manager? Wenn ja, gibt es sonst noch etwas in diesem X11-Bundle?

X benötigt auch Maus oder Tastatur oder irgendeine andere Art von Eingabe: Gehört dieser Teil auch zu den Funktionen von X Server? Kümmert sich X Window Manager ausschließlich um die Anzeige?

Schließlich erwähnt das obige Zitat auch, dass Kunden miteinander kommunizieren oder nicht: Dies erinnerte mich an D-Bus, den ich ein wenig zu Lernzwecken verwendet habe. Mit D-Bus können Sie auch Fensterereignisse auslösen. Das bringt mich ein bisschen durcheinander, wie Programme miteinander kommunizieren sollen: * Welcher Unterschied besteht zwischen Programmen, die über X Server oder über D-Bus interagieren? *

Es ist eine Schande, dass diese Informationen irgendwie undeutlich bleiben, es erschwert das Lernen, aber hoffentlich können Sie etwas Licht in diese Sache bringen :) Danke.

Benjamin
quelle

Antworten:

61

Sie stellen hier fünf Fragen und stellen vielleicht besser fünf Fragen.

  1. X ist ein Server und kann mit einem "Webserver" verglichen werden, da er auf eingehende Verbindungen wartet, die ein bestimmtes Protokoll (das X-Protokoll) sprechen, und Antworten ausgibt. Die Verbindungen stammen von X-Clients, die sich auf dem lokalen Host oder auf einem Remotehost befinden können, auf den über ein Netzwerk zugegriffen wird.

  2. X11 ist eine "Hauptversion" des X-Protokolls, das sich seit seiner Einführung weiterentwickelt hat. X11 ist das neueste und am häufigsten verwendete Protokoll. (Xorg ist eine Implementierung eines X-Servers, von X-Bibliotheken und einer Sammlung von Clients, die alle X11 unterstützen. Es gibt auch andere Implementierungen: das weitgehend nicht mehr verfügbare XFree86; kommerzielle wie Hummingbird Exceed; Forks wie XQuartz, die unter Mac OS X ausgeführt werden )

  3. Ein "Fenstermanager" ist ein X-Client, der Fenster verwaltet. Es ist in der Regel dafür verantwortlich, Fenster mit Abschrägungen / Rändern, Schlagschatten, einer Menüleiste mit Schaltflächen usw. zu dekorieren und die Logik der Fensterplatzierung zu handhaben. Unterstützt das Ziehen, Ändern der Größe oder Neuanordnen von Fenstern usw.

  4. X erfordert Eingaben, und es hat die gemeinsame Verantwortung, diese mit dem Kernel zu verwalten. In der Vergangenheit hat X selbst viel Hardware-Management durchgeführt. In der heutigen Zeit wird X auf der Linux-Plattform allmählich "kleiner" und delegiert diese Verantwortung an den Linux-Kernel. Die Vorteile davon sind: kleinere X-Codebasis; weniger "gekreuzte Drähte", wobei der Kernel und X beide versuchen, dasselbe Zeug zu verwalten. (Ein Beispiel hierfür ist die Linux-Ereignisschnittstelle, in der Ereignisse von Mäusen usw. vom Kernel und seinen Treibern interpretiert und in die Standardschnittstelle unter übersetzt werden /dev/input/event*, die vom X-Server verwendet wird.) Beachten Sie, dass X auf anderen Plattformen (BSD, Solaris) immer noch ziemlich monolithisch ist.

  5. Es gibt viele Möglichkeiten, wie Prozesse miteinander kommunizieren können. Ich glaube, X-Clients können über das X-Protokoll interagieren (zum Beispiel müssen herkömmliche X-Fenstermanager wissen, wann andere Clients Fenster zeichnen, um sie zu dekorieren, und Pager müssen wissen, wann sich die Größe oder Position eines Fensters ändert, um reflektieren Sie das im Pager). D-Bus ist eine moderne IPC-Technologie (Inter-Process Communication), die entwickelt wurde, um die Mängel anderer Methoden zu beheben. Es ist nicht X-spezifisch.

jmtd
quelle
Nett, danke! Das ist sehr hilfreich. Zu den 5 Fragen: Ich weiß nicht, was das Protokoll in diesem Fall ist, aber wenn ein Administrator möchte, dass ich sie aufteile, werde ich davon erfahren. Ich persönlich möchte das gerne in einem Dokument haben und sehe die 5 Fragen als Unterfragen zu den Titeln. Danke noch einmal.
Benjamin
Wenn Sie keine Protokolle hüpfen, ist das X Window System so konzipiert, dass Anwendungen ("Clients") nicht auf demselben Host ausgeführt werden müssen. Sie können sich also auf einem anderen Computer anmelden, dort ein Programm ausführen und das Fenster wird auf Ihrem Bildschirm geöffnet wie eine lokale Anwendung. Wenn ein anderes Programm nach Ihrer Prozess-ID fragt, damit ich direkt mit Ihnen sprechen kann, gibt es keine Möglichkeit, diese Frage richtig zu beantworten.
Simon Richter
Möglicherweise möchten Sie nicht , dass die Ressource durch den X - Server freigegeben ist das Display , bestehend aus einem oder mehreren Monitoren und zwei oder mehr Eingabegeräte (Tastatur, Maus)
Hildred
Auf jeden Fall hilfreich alle 5 Fragen zusammen. Vielen Dank.
Harvey
@hildred Im Falle eines Touchscreens in der Kiosk-Konfiguration können Sie nur ein Eingabegerät haben.
Shadur