X Window System Kern-Protokoll

Das X Window System Kern-Protokoll ist das Basisprotokoll des X Window System, das ein System zur Verwaltung von Windows-Bitmap verwendet werden, um graphische Benutzerschnittstellen in Unix-Systemen zu erstellen angezeigt wird, und anderen Unix-ähnlichen Betriebssystemen. Das X-Window-System basiert auf einem Client-Server-Modell: ein einzelner Server steuert die Hardware diinput / Ausgang, wie Bildschirm, Tastatur und Maus; jede Anwendung fungiert als Client, die Interaktion mit dem Benutzer und mit anderen Clients über den Server. Diese Wechselwirkung wird durch die X-Window-System Kern Protokoll geregelt. Es gibt andere Protokolle auf dem X-Window-System wird auf der Oberseite des X-Window-System Kernprotokoll entweder als getrennte Protokolle aufgebaut.

Im X Window System Kern-Protokoll gesendet werden können nur vier Arten von Paketen, asynchron, über das Netzwerk: Anfragen, Antworten, Ereignisse und Fehler. Anfragen von einem Client zu einem Server geschickt, um Sie zu bitten, einige Operationen durchführen und zurück die darin enthaltenen Daten. Antworten werden durch den Server gesendet werden, um solche Daten zu liefern. Ereignisse werden durch den Server gesendet, um Clients des Benutzers oder andere Ereignisse, die daran interessiert sind zu informieren. Fehler-Pakete vom Server gesendet, um einen Client von Fehlern bei der Bearbeitung seiner Anträge aufgetreten informieren. Anfragen können Antworten, Ereignisse und Fehler zu erzeugen; anders als das, das Protokoll nicht die spezifische Reihenfolge, in der Pakete über das Netzwerk gesendet zu regulieren. Es gibt einige Erweiterungen des Kernprotokoll, jede mit ihren eigenen Anfragen, Antworten, Ereignisse und Fehler.

Das X Window System wurde am MIT im Jahr 1984. Seine Designer Bob Scheifler und Jim Gettys siedelt als ersten Grundsätze, der seine Kernprotokoll war, entwickelte "erstellen Mechanismen und Strategien." Als Ergebnis liefert die Haupt-Decke-Protokoll nicht die Interaktion zwischen Kunden und zwischen Kunden und Benutzer angeben. Diese Wechselwirkungen sind Gegenstand getrennten spezifischen wie die spezifischen ICCCM und freedesktop.org und werden typischerweise automatisch durch die Verwendung eines gegebenen Satzes von Widgets definiert.

Anzeigen

Kommunikation zwischen Servern und Clients wird durch den Austausch von Paketen über einen Kanal durchgeführt wird. Die Verbindung vom Client eingerichtet. Der Client sendet auch das erste Paket, enthält die Byte-Reihenfolge verwendet werden müssen und Informationen über die Version des Protokolls und die Art der Authentifizierung, die der Client erwartet, die der Server verwendet. Der Server antwortet mit einem Paket, das die Annahme oder Ablehnung der Verbindung bestimmt, oder mit der Bitte um weitere Authentifizierung. Ob die Verbindung akzeptiert wird, enthält die Akzeptanz von Paketdaten für den Kunden in der nächsten Interaktion mit dem Server zu verwenden.

Sobald die Verbindung hergestellt ist, kann sie ausgetauscht werden vier Arten von Paket zwischen Client und Server in dem Kanal:

  • Anfrage: Der Client fordert Daten vom Server oder fordert Sie auf, eine Aktion auszuführen.
  • Antwort: Der Server antwortet auf die Anfrage. Nicht alle Anfragen zu generieren eine Antwort.
  • Ereignis: Der Server sendet ein Ereignis an den Client, wie Eingaben von Maus oder Tastatur oder einem Fenster, das sich bewegt, verändert oder ausgesetzt wurde.
  • Fehler: Der Server sendet ein Fehlerpaket, wenn ein Antrag ungültig ist. Da die Anfragen in der Warteschlange befinden, können durch die Anforderung generiert Fehlerpakete nicht sofort gesendet werden.

Die Anforderungs- und Antwortpakete mit variabler Länge, während Fehler- und Ereignispakete haben eine feste Länge von 32 Byte.

Die Anforderungspakete werden fortlaufend nummeriert, wie sie von dem Server empfangen werden: die erste Anforderung von einem Client wird mit 1, die zweite 2, und so weiter. Die 16 am wenigsten signifikanten Bits der Sequenznummer eines Antrag ist in Antwortpakete und Fehler durch die Anfrage erzeugt enthalten sein. Auch sie in den Paketen der Veranstaltung enthalten, um die Sequenznummer der Anfrage, die der Server verarbeitet gerade oder hat gerade Verarbeitung anzuzeigen.

Windows-

Was in der Regel in anderen grafischen Benutzerschnittstellen wird ein Fenster aufgerufen, ist es ein Top-Level-Fenster, in dem X Window System. Der Begriff Fenster wird auch für Fenster, die innerhalb eines anderen Fensters sind, das heißt unter den Fenstern eines Elternfensters verwendet. Die grafischen Elemente wie Buttons, Menüs, Icons, etc .. Sie sind alle mit Fenstern.

Ein Client kann die Erstellung eines Fensters anzufordern. Genauer gesagt kann es die Erzeugung einer Unterfenster eines existierenden Fenster anfordern. Windows erstellt von Kunden werden in einer Baumstruktur. Die Wurzel dieses Baumes ist die Wurzel-Fenster, das ein spezielles Fenster automatisch vom Serverstart erstellt wird. Alle anderen Fenster direkt oder indirekt unter dem Fenster des Wurzelfensters. Optisch ist das Root-Fenster ist so breit wie dem gesamten Bildschirm, und hinter allen anderen Fenstern.

Es ist nicht immer garantiert, dass der Inhalt eines Fensters in der Zeit bewahrt. Insbesondere kann der Inhalt eines Fensters zerstört werden, wenn ein Fenster bewegt, verändert, von anderen Fenstern verdeckt, und im allgemeinen ganz oder teilweise sichtbar gemacht. Insbesondere wird der Inhalt verloren gehen, wenn der X-Server unterhält eine Hintergrundspeicher den Inhalt des Fensters. Der Client kann die Hintergrundspeicher, die ein Fenster, aufrechterhalten, aber es gibt keine Verpflichtung seitens des Servers zu tun. Daher kann der Client nicht angenommen, dass der Hintergrundspeicher aufrechterhalten wird. Wenn ein sichtbarer Teil eines Fensters hat eine nicht spezifizierte Inhalte, wird ein Ereignis gesendet, um Sie zu benachrichtigen, dass der Inhalt des Fensters muss neu gezeichnet werden.

Jedes Fenster hat eine Reihe von Attributen zugeordnet ist, wie die Geometrie des Fensters, das Hintergrundbild, wenn Sie eine Anfrage an den Zusatzspeicher für sie usw. gemacht haben Das Protokoll enthält Anforderungen vom Client zu inspizieren und ändern Sie die Attribute eines Fensters.

Die Fenster können entweder werden. Die Fenster, die auf dem Bildschirm angezeigt und zum Zeichnen verwendet werden können, sind von dem ersten Typ. Diejenigen der zweiten Art sind nicht auf dem Bildschirm dargestellt; Sie werden nur verwendet, um Eingangs erhalten.

Die dekorativen Rahmen und eine Titelleiste, die in der Regel rund um die Fenster zu sehen ist durch den Fenstermanager erstellt wurde, nicht von der Client, der die Fenster erstellt. Der Fenstermanager übernimmt auch Eingang zu diesen Punkten zu, wie die Größe des Fensters, wenn der Benutzer klickt und schleppt den Fensterrand. Kunden in der Regel arbeiten in dem Fenster, das erstellt wird, unabhängig von den Änderungen durch den Fenster-Manager implementiert. Eine Änderung, die ein Client zu berücksichtigen ist, dass die Re-Parenting-Window-Manager, die fast alle modernen Fenster-Manager sind, ändern Sie die Top-Level-Fenster in Windows, die nicht die Wurzel. Aus der Perspektive des Kern Protokoll ist der Fenstermanager einen Client, wobei kein Unterschied im Vergleich zu anderen Anwendungen.

Die Daten eines Fensters kann durch Ausführen des Programms erreicht werden. Leiten des Subjekts, zeigt das Programm die Struktur unter dem Fenster eines Fensters, zusammen mit ihren Identifikatoren und Daten über die Geometrie.

Pixmap und ziehbar

Ein Pixmap ist ein Bereich des Speichers, der für das Zeichnen verwendet werden können. Im Gegensatz zu Windows, pixmaps werden nicht automatisch auf dem Bildschirm gezeichnet. Jedoch kann der Inhalt einer Pixmap zu einem Fenster oder umgekehrt übertragen werden. Dies ermöglicht die Verwendung von Techniken wie der doppelten Pufferung. Die Mehrzahl von Grafikoperationen, die auf einem Fenster durchgeführt werden kann, kann auch auf einer Pixmap erfolgen.

Die Fenster und pixmaps sind beide genannten drawables, und deren Inhalt auf dem Server gehostet. Ein Client kann weiterhin fordern, dass der Inhalt einer ziehbaren wird vom Server zum Client übertragen werden oder umgekehrt.

Graphikkontexte und Schriftarten

Der Client kann eine Reihe von Grafikoperationen, wie man eine Fläche zu reinigen, zu kopieren Gebiet zum anderen, ziehen Punkte, Linien, Rechtecke und Textfordern. Neben der Reinigung, sind alle anderen Operationen möglich für alle Objekte, die beiden Fenster, die pixmap.

Die Mehrzahl von Anforderungen für Graphikoperationen eine Graphik-Kontext, der eine Struktur, die die Parameter der Graphikoperationen enthält. Ein Grafikkontext enthält eine Vordergrundfarbe, Hintergrundfarbe, Schriftart und andere Parameter-Charts. Wenn eine Operation erfordert Grafiken enthält der Client einen Graphikkontext. Nicht alle Parameter der Grafikkontext sind notwendig für den Betrieb: zum Beispiel, hat die Schriftart keine Wirkung in der eine Linie ziehen.

Der Kern-Protokoll spezifiziert die Verwendung von serverseitigen Schriftart. Diese Schriftarten werden auf einem Dateiserver gespeichert und direkt oder über das lokale Dateisystem oder im Netzwerk über ein anderes Programm namens Font-Server zugreift. Clients können die Liste der Schriftarten auf dem Server verwendet, anzuwenden und kann verlangen, dass eine Schriftart geladen wird oder vom Server entladen. Ein Client kann Informationen über die Schrift und Raum, die eine bestimmte Zeichenfolge einnehmen kann, wenn sie mit einer bestimmten Schriftart gezeichnet fordern.

Der Name der Schriftart sind beliebige Zeichenketten in der X-Window-Kern-Protokoll. Konventionen X logische Schriftartbeschreibung anzugeben, wie die Schrift nach ihren Attributen ernannt. Diese Konventionen auch Eigenschaftswerten, die auf die verfügbaren Schriften zugeordnet werden können, anzugeben.

Das Programm druckt die Liste der Schriftarten auf dem Server gespeichert. Das Programm zeigt die Glyphen und ermöglicht dem Benutzer, den Namen einer Schriftart auswählen, um sie in einem anderen Fenster zu verwenden.

Die Verwendung von serverseitigen Schrift wird nun für den Client-seitigen Schrift veraltet. Diese Schriftarten werden durch den Kunden, nicht der Server für Grafikbibliotheken Xft oder Kairo und Erweiterung XRender gemacht, mit Unterstützung. Kein bestimmtes Datum ist die Schriftart in clientseitigen Kernprotokoll.

Ressourcen und Kennungen

Die Daten für das Fenster, pixmaps, Schriften, etc. Sie werden auf dem Server aufbewahrt. Der Kunde weiß, Kennungen dieser Objekte mit Namen wie bei der Interaktion mit dem Server. Zum Beispiel, wenn ein Kunde die Schaffung eines Fensters, den Server erfordert, um ein Fenster mit einer bestimmten Kennung erstellen. Die Kennung kann später von dem Client an den Anforderungen verwendet werden, beispielsweise, dass ein String in das Fenster gezogen wird. Folgende Objekte sind dafür bekannt, in der Server-Client über den numerischen Kennzahlen befinden:

Diese Objekte sind aufgerufen Ressourcen. Wenn ein Client die Erstellung einer solchen Ressource, legt auch eine Kennung für sie. Zum Beispiel, um ein neues Fenster zu erzeugen, legt der Kunde sowohl die Attribute des Fensters ist die Kennung, die mit dem Fenster verbunden.

Die Kennungen sind ganze Zahlen von 32-Bit mit den 3 höchstwertigen Bits gleich 0. Jeder Kunde hat seinen eigenen Satz von Kennungen, die verwendet werden können, um neue Ressourcen zu schaffen. Dieser Satz wird von dem Server mit zwei ganzen Zahlen im Paket enthalten Akzeptanz angegeben. Clients wählen Sie die Kennungen, die in diesem zusammen, um keine überlappenden zwei Objekten zwischen Fenstern, pixmaps, Schriftarten, Farbtabellen und Grafikkontext haben möglicherweise nicht die gleiche Kennung haben.

Sobald eine Ressource erzeugt worden ist, wird ihre Kennung von dem Client verwendet, um die Ausführung von Operationen an sie an den Server anzufordern. Einige Operationen, die Termine Ressourcen; andere erfordern vom Server gespeicherten Daten Ressourcen.

Die Kennungen auch im Server einzigartige, nicht nur in dem Client; zum Beispiel können zwei Fenster nicht dieselbe Kennung, selbst wenn zwei unterschiedliche Clients erstellt. Ein Client kann jede bekannte Objektkennung zuzugreifen. Insbesondere kann er auch die angelegt von einem anderen Client-Ressourcen zuzugreifen, auch wenn ihre Kennungen außerhalb der Reihe von Kennungen, die sie erzeugen kann.

Als Folge davon können zwei Clients mit dem gleichen Server verbunden elbe Kennung zu verwenden, um auf dieselbe Ressource beziehen. Zum Beispiel, wenn ein Client ein Fenster-ID und gibt diese Zahl an eine andere Anwendung, hat diese andere Anwendung die Fähigkeit, in dem gleichen Fenster genau arbeiten. Quest'possibilità wird beispielsweise durch das X-Window-Version von Ghostviwe ausgenutzt: Dieses Programm erzeugt ein Unterfenster, spart seine Kennung in einer Umgebungsvariablen und rief Ghostscript; Dieses Programm stützt sich der Inhalt des Postscript-Dateien in diesem Fenster angezeigt werden soll.

Ressourcen werden in der Regel zerstört, wenn der Client, die sie geschaffen schließt die Verbindung mit dem Server. Doch bevor die Verbindung geschlossen wird, kann ein Client den Server bitten, nicht um sie zu zerstören.

Geschehen

Events sind Pakete von dem Server an den Client gesendet, dass etwas der Kunde interessiert zu wissen, es passiert sein kann, zu kommunizieren. Zum Beispiel wird ein Ereignis gesendet, wenn der Benutzer eine Taste drückt oder einen Klick auf eine Maustaste. Die Ereignisse werden nicht nur für die Eingabe verwendet wird; zum Beispiel werden Ereignisse gesendet, um die Erstellung eines neuen Teilfensters einer gegebenen Fensters anzuzeigen.

Jedes Ereignis wird zu dem Fenster zusammen. Wenn beispielsweise der Benutzer, wenn der Zeiger in einem Fenster klickt, wird das Ereignis für diesen Dialog enthält das Ereignispaket die Kennung in diesem Fenster.

Ein Client kann den Server anzufordern, um ein Ereignis zu einem anderen Client zu senden; dies wird für die Kommunikation zwischen Clients verwendet wird. Ein solches Ereignis wird generiert, wenn beispielsweise ein Client den Text, der gerade ausgewählt ist: Dieses Ereignis wird an den Client, die in diesem Zeitfenster, das die Auswahl hält läuft gesendet.

Das Ereignis wird gesendet, wenn eine Fläche von einem Fenster nicht sichtbar von der Inhalt sichtbar wird. Der Inhalt des Fensters kann sich unter Umständen zerstört werden, beispielsweise wenn das Fenster abgedeckt ist, und der Server ist die Aufrechterhaltung Zusatzspeicher. Der Server generiert ein Ereignis, um den Client, dass ein Teil des Fensters muss so ausgelegt sein zu benachrichtigen.

Die Mehrheit der Arten von Ereignissen werden nur gesendet, wenn der Kunde zeigte Interesse an ihnen zuvor. Dies ist, weil der Client interessiert nur bestimmte Arten von Ereignissen sein kann. Zum Beispiel ein Client interessiert Ereignisse an die Tastatur jedoch nicht beschränkt auf diejenigen, bezogen auf die Maus von Belang sein können. Einige Arten von Veranstaltungen sind immer noch die Kunden, auch wenn sie nicht ausdrücklich angeforderten gesendet.

Clients festlegen, welche Arten von Events, die Sie, indem Sie ein Attribut eines Fensters gesendet werden soll. Zum Beispiel, um sicherzustellen, dass, um ein Fenster neu zu zeichnen, wenn sein Gehalt zerstört worden ist, muss ein Client-Ereignisse, die ihn zu informieren, dass das Fenster muss wieder neu gezeichnet werden empfangen. Allerdings wird der Client gesendet werden Ereignisse nur dann, wenn er zuvor sein Interesse an diesen Veranstaltungen gemacht, und dies geschehen ist geeignetes Einstellen des Attributs der Maskenfenster Veranstaltungen.

Kunden können verschiedene Ereignisse im selben Fenster erforderlich. Sie können auch Masken von verschiedenen Veranstaltungen setzen im gleichen Fenster. Zum Beispiel kann ein Client nur Tastatur-Ereignisse in einem Fenster anzufordern, während ein anderer Kunde kann nur Mausereignisse im selben Fenster zu beantragen. Dies ist möglich, da der Server, für jedes Fenster, einen separaten Ereignismaske für jeden Kunden unterhält sie. Es gibt jedoch einige Arten von Ereignissen, die nur von einem Client zu einem Zeitpunkt für jedes Fenster gewählt werden kann. Insbesondere enthalten diese Ereignisse das Klicken der Maustasten und einige Änderungen in der Verwaltung der Fenster.

Das Programm zeigt die Ereignisse relativ zu einem Fenster. Insbesondere alle möglichen Ereignisse für die Fensterkennung und druckt es erfordert.

Beispiel

Das folgende ist ein mögliches Beispiel der Wechselwirkung zwischen einem Server und einem Programm, das ein Fenster erstellt mit einem schwarzen Kasten innen und erscheint an der Knopfdruck. In diesem Beispiel hat der Server keine Antwort senden, da die Client-Anforderung nicht Antworten zu erzeugen, kann jedoch zu Fehlern.

  • Der Client öffnet eine Verbindung zu dem Server und senden Sie das erste Paket die Angabe der Byte-Reihenfolge zu bedienen.
  • Der Server akzeptiert die Verbindung, indem Sie eine entsprechende Paket, das andere indormazioni Typkennung des Root-Fenster und Kennungen enthält, wie beispielsweise dem Kunden erstellen können.
  • Die Client-Anforderungen an einen Grafikkontext mit dem Standard-Kennung erstellen.
  • Der Client fragt den Server, um eine Top-Level-Fenster mit Kennung, Größe 200x200 erstellen. Position usw.
  • Der Client fordert eine Änderung der Attribute des Fensters, unter Angabe der Zinsen, um die Ereignisse zu empfangen und
  • Fordert der Client, dass das Fenster abgebildet wird.
  • Wenn das Fenster sichtbar gemacht und sein Inhalt sollte gezogen werden, sendet der Server dem Client ein Ereignis.
  • Als Reaktion auf dieses Ereignis, das Client erfordert, dass Sie durch das Senden einer Anfrage mit Kennung und Fenstergrafiken Kontext entwickelt eine Box.

Wenn das Fenster von einem anderen Fenster überdeckt und wieder entdeckt wurde, vorausgesetzt, dass der Hintergrundspeicher nicht beibehalten wird, dann gilt:

  • Der Server sendet ein anderes Ereignis, das Client, der das Fenster neu gezeichnet werden muss erzählen.
  • Der Auftraggeber erstellt die Fenster durch das Senden einer Anfrage.

Wenn eine Taste gedrückt wird:

  • Der Server sendet ein Ereignis an den Client als Benachrichtigung, dass der Benutzer eine Taste gedrückt wird.
  • Der Client antwortet entsprechend.

Farben

Auf Protokollebene wird eine Farbe durch eine vorzeichenlose 32-Bit-Wert, auch Pixel genannt vertreten. Die folgenden Elemente beeinflussen die Farbdarstellung:

  • die Farbtiefe
  • die Farbkarte, die eine Tabelle, die die Intensitätswerte enthält,
  • der visuelle Typ. dass gibt an, wie die Tabelle wird verwendet, um Farben repräsentieren

In einem Code so einfach wie möglich, ist die Farbtabelle eine Tabelle mit einer Dreifach-RGB in jeder Zeile. Ein pixelvalue stellt den Farbgehalt nell'-ten Zeile der Tabelle. Wenn der Client die Einträge in der Farbtabelle ändern, wird diese Darstellung durch visuelle Klasse identifiziert. Die Visual-Klasse ist ähnlich, aber der Client kann die Einträge in der Farbtabelle nicht ändern.

Es gibt eine Gesamtzahl von 6 möglichen visuellen Klasse, von denen jeder identifiziert, eine andere Weise, eine pixelvalue mit einer dreifachen RGB darzustellen. und zwei. und zwei die von der ersten durch die Tatsache unterscheiden, dass sie nur Grautöne eingesetzt werden.

Die beiden visuellen Klasse, die von früheren unterscheiden bleiben, weil die Auslagerung pixelvalue in drei Teile und verwenden drei separate Tabellen die Intensität von Rot, Grün und Blau. In Übereinstimmung mit dieser Farbwiedergabe wird ein pixelvalue zu einem Dreifach RGB wie folgt umgerechnet.

  • die pixelvalue wird als Bitfolge gesehen
  • die Sequenz ist in drei Teile zerlegt
  • jeder dieser drei Bit-Sequenzen als Ganzes gesehen, und als ein Index verwendet, um einen Wert in jeder dieser drei separate Tabellen finden

Dieser Mechanismus erfordert, daß die Farbtabelle setzt sich aus drei getrennten Tabellen, eine für jede Primärfarbe zusammen. Das Ergebnis der Umwandlung ist noch eine dreifache von Intensitätswerten. Die Visual-Klasse, die diese Darstellung verwendet werden und die unterscheiden sich in der Vermietung oder nicht, die Farbtabelle des Benutzers zu ändern.

Diese sechs Mechanismen zur Darstellung von Farben mit pixelvalue benötigen jeder, um einige zusätzliche Parameter zu arbeiten. Diese Parameter werden in einer visuellen Art, die eine visuelle Klasse und andere Parameter des rapparesentazione von Farben enthält, gesammelt. Jeder Server verfügt über einen festen Satz von visuellen Typ, die jeweils mit einer numerischen Kennung zugeordnet ist. Diese Kennungen sind unsigned 32-Bit, aber nicht unbedingt von den Ressourcen-Identifikatoren oder Atome.

Wenn die Verbindung von einem Client akzeptiert wird, die Akzeptanz-Paket vom Server gesendet wird, enthält eine Sequenz von Blöcken, wobei jeder Information enthält auf einem einzigen Bildschirm. Für jeden Bildschirm enthält die relevanten Block eine Liste der anderen Blöcke, von denen jeder zu einem bestimmten Farbtiefe von der Anzeige unterstützt. Für jede Tiefe, diese Liste enthält eine Liste der visuelle Typ. Als Folge davon wird jeder Schirm mit einer Reihe von möglichen Tiefe verbunden sind, und jede Tiefe jeder Schirm mit einer Reihe eine Anzahl von möglichen visuellen Typen zugeordnet. Ein Datum visuelle Art können für mehr als einen Bildschirm und für verschiedene Tiefen verwendet werden.

Für jede Sichttyp enthält die Annahmepaket beide Kennungen, die die damit verbundenen Inhalte aktuellen Parameter Der Client speichert diese Informationen, da es zu einem späteren Zeitpunkt nicht anfordern können. Darüber hinaus können Kunden nicht ändern oder neue visuelle Art. Die Anträge auf die Schaffung eines neuen Fenster gehören die Tiefe und die Kennung des visuellen Typs zu verwenden, um die Farben der Fenster selbst zu vertreten.

Farbtabellen sind unabhängig von der Tatsache verwendet, dass die Hardware, die den Bildschirm mit einer Palette, die eine Platine, die auch verwendet werden, um Farben repräsentieren wird, ist kontrolliert. Die Server verwenden Farbtabelle, auch wenn die Hardware nicht mit einer Palette. Wann immer die Hardware verwendet, die eine Palette, kann es nur eine begrenzte colormap installiert werden. Insbesondere wird eine Farbtabelle installiert, wenn die Hardware können Farben entsprechend sie anzuzeigen. Ein Client kann den Server richidere um eine Farbtabelle zu installieren. Jedoch kann diese Entfernung der anderen Farbtabelle enthalten: die Wirkung ist, dass die Fenster, die eine Farbtabelle entfernt werden, nicht mit den richtigen Farben angezeigt wird, eine Wirkung als blitzende Farbe oder Farbfilm bekannt ist. Dieses Problem kann unter Verwendung von Standard-Farbtabelle Farbtabelle lösen sind eine vorhersagbare Beziehung zwischen pixelvalue und Farben. Dank dieser Eigenschaft können Farbtabellen-Standard von verschiedenen Anwendungen verwendet werden.

Erstellen von Farben wird durch den Vertrag ICCCM geregelt. Farbabbildungstabellen-Standards werden von ICCCM und spezifische Xlib geregelt.

Ein Teil des Systems, von dem X Farbe ist die X-Farbverwaltungssystem. Dies wurde mit X11R6 Release 5 im Jahr 1991. Das System besteht aus mehreren zusätzlichen Funktionen in xlib, die in der Reihe von Funktionen befindet XCMS eingeführt *. Dieses System definiert geräteunabhängigen Farbschemata, die in geräteabhängige RGB-Systeme überführt werden können. Das System besteht aus Funktionen xlib XCMS * und, wie in der Farbcharakterisierungs Übereinkommens der X-Gerät beschreiben, wie die verschiedenen Systeme der Farbe geräteunabhängigen Farbsysteme RGB geräteabhängig zu konvertieren. Dieses System unterstützt CIE XYZ, xyY, L * u * ve L * a * b-Farbsysteme sowie die TekHVC.,

Atomen

Atome sind 32-Bit-Ganzzahlen, Zeichenfolgen darstellen. Die Designer des Protokolls eingeführt, die Atome in Strings mit einer festen Größe und kurz darstellen: während ein String kann beliebig lang sein, ist ein Atom immer eine volle 32-Bit. Die geringe Größe eines Atoms wurden in der Art der Pakete, die tendenziell oft mit den gleichen Zeichenfolgen gesendet werden müssen ausgenutzt; wodurch eine effizientere Nutzung des Netzwerkes. Die feste Größe eines Atoms wurde durch die Angabe einer festen Größe für jedes Ereignis in 32 Bytes feste Größe Pakete Stoffatome enthalten, aber nicht ausgenutzt possno Zeichenfolgen enthalten.

Nämlich die Atome sind Kennungen von Strings in dem Server gespeichert. Sie sind ähnlich wie Ressourcen indetificatori unterscheiden sich aber von diesen zwei Gründen. Wenn ein Client die Schaffung eines neuen Atom, sendet der Server nur die Zeichenfolge zu speichern, nicht seine Kennung; Diese Kennung wird von dem Server ausgewählt und als eine Antwort an den Client zurückgegeben. Der zweite Hauptunterschied zwischen den Ressourcen und Atomen ist, dass die Atome nicht mit dem Client verbunden ist. Einmal erstellt, überlebt ein Atom, bis der Server heruntergefahren oder neu gestartet wird.

Die Atome sind Kennungen und sind daher einzigartig. Jedoch kann ein Identifizierer Atom und eine Ressource übereinstimmen. Der String mit einem Atom assoziiert wird als das Atom Namen. Der Name eines Atoms kann nicht nach der Erstellung geändert werden und zwei Atome kann nicht den gleichen Namen haben. Eine Folge davon ist der Name eines Atoms comunenmente verwendet, um das gleiche Atom angeben: "das Atom" bedeutet gerade "dem Atom, an der die Saite verbunden mit" oder "das Atom mit dem Namen". Ein Client kann die Schaffung eines neuen Atom, sondern auch die Kennung eines Atoms einer angegebenen Zeichenfolge anfordern. Einige Atome sind "default".

Die Atome werden für eine Vielzahl von Zwecken, um die Kommunikation zwischen mehreren Clients mit dem gleichen Server verbunden meisten verwandte verwendet. Insbesondere werden sie bei der Assoziierung der Eigenschaften von Fenstern, wie oben beschrieben eingesetzt werden.

Die Liste aller Atome, die sich auf einem Server können mit dem Programm ausgedruckt werden. Insbesondere druckt dieses Programm jedes Atom mit seinem Namen.

Eigenschaft

Jedes Fenster hat einen vordefinierten Satz von Attributen und eine Reihe von Eigenschaften, die alle an den Server, um Clients über entsprechende Anfragen gespeichert und zugänglich. Attribute sind Daten über den Fenstern, wie ihre Größe, Position, Hintergrundfarbe usw. Die Eigenschaften sind beliebige Datenstücke mit dem Fenster verbunden. Anstelle von Attributen, die Eigenschaften haben keine Bedeutung auf der Ebene des X-Window-Kernprotokoll. Ein Client kann beliebige Daten in einer Eigenschaft von einem Fenster zu speichern. Die Eigenschaften sind in den meisten Fällen für eine Kommunikation vom Client an den Client verwendet wird.

Eine Eigenschaft wird durch einen Namen, einen Typ und einen Wert aus. Eine Eigenschaft ist ähnlich wie eine Variable in einer imperativen Sprache, in dem der Antrag kann eine neue Eigenschaft mit einem bestimmten Namen und eine bestimmte Art erstellen und speichern Wert. Eigenschaften werden, um Fenster verbunden: zwei Eigenschaften mit dem gleichen Namen, mit verschiedenen Arten und Werte können in zwei verschiedenen Fenstern vorhanden sind.

Der Name, Typ und Wert einer Immobilie sind Zeichenfolgen, genauer gesagt, sind Atome oder Strighe gespeichert, um dem Server und dem Client über accessibli Kennungen. Eine Client-Anwendung kann eine bestimmte Eigenschaft unter Verwendung der Kennung des Atoms, der den Namen der Eigenschaft zuzugreifen.

Die Eigenschaften sind in erster Linie für die Kommunikation zwischen dem Client verwendet wird. Zum Beispiel wird die Eigenschaft Anruf verwendet, um den Namen für das Fenster zu retten; Window-Manager in der Regel lesen Sie diese Eigenschaft und zeigt den Namen des Fensters in der Titelleiste.

Einige Arten von Inter-Client-Anwendung Eigenschaften des Root-Fenster. Zum Beispiel, in Übereinstimmung mit der bestimmten Freedesktop-Fenstermanager, Fenstermanager sollte die Kennung des aktuell aktiven Fensters in der Eigenschaft Name des Root-Fenster zu speichern. X-Ressourcen, die die Parameter der Programme sind auch im Root-Fenster Eigenschaften gespeichert enthalten; Auf diese Weise können alle Clients darauf zugreifen, auch wenn auf verschiedenen Computern ausgeführt.

Das Programm druckt die Eigenschaften eines bestimmten Fensters; Drucken Sie den Namen, den Typ und den Wert jeder Eigenschaft des Root-Fenster.

Zuordnungen

In der X-Window-System, ist jede Taste mit einer Zahl im Bereich 8-255 genannt Keycode zugeordnet. Es kennzeichnet einen Schlüsselcode eines Schlüssels, nicht ein bestimmtes Zeichen oder Wort bei denen, die in der Schaltfläche dargestellt werden konnte. Jedes dieser Zeichen oder Terme ist, sondern durch einen keysym identifiziert. Während ein Schlüsselcode hängt nurdurch die Taste nur gedrückt werden, ein keysym abhängen kann, zum Beispiel durch Druck oder weniger der Shift-Taste oder einem anderen Modifizierungsmittel.

Wenn eine Taste gedrückt oder losgelassen wird, sendet der Server die Ereignistyp oder den entsprechenden Client. Dieses Ereignis enthält:

  • der Tastencode der gedrückten Taste
  • der aktuelle Status der Modifikatoren und Maustaste

Der Server sendet dann eine Tastencode und den Modifikator Zustand, ohne zu versuchen, sie in einem bestimmten Zeichen zu übersetzen. Es ist die Verantwortung des Kunden, um diese Umwandlung vorzunehmen. Zum Beispiel kann ein Client ein Ereignis, das besagt, dass eine bestimmte Taste gedrückt wird, während die Shift-Modifier gedrückt wurde empfangen. Wenn dieser Schlüssel normalerweise das Zeichen "a", die Client-Mitarbeiter dieses Ereignis auf das Zeichen "A" zu generieren.

Beim Übersetzen des Schlüsselcodes in keysym wird durch den Kunden wird die Tabelle, die die Verbände stellt auf dem Server verwaltet. Speichern Sie diese Tabelle in einem zentralen Ort, so dass es für alle Clients. Die typischen Kunden benötigen nur diese Zuordnung und es verwenden, um den Schlüsselcode und Modifikatoren eines Ereignisses auf eine Schaltfläche in einem keysym Zusammenhang zu decodieren. Jedoch können Kunden auch diese Zuordnung ändern nach Belieben.

Der X-Server arbeitet mit höchstens acht Modifikatoren. Jedoch kann jede Modifizierungs mit mehr als einer Taste zugeordnet werden. Dies ist notwendig, weil viele Tastaturen haben Schlüssel für die gleichen Modifikatoren dupliziert. Zum Beispiel sind viele Tastaturen haben zwei Tasten "Shift". Diese Tasten erzeugen zwei verschiedene Schlüsselcode, wenn sie gedrückt, aber der X-Server ordnet sie beide auf den Modifikator "Shift".

Für jede der acht Modifikatoren, der X-Server führt eine Liste der Schlüsselcode, die er als Modifikatoren können. Zum Beispiel, wenn die Liste der ersten Modifizierungsmittel des Schlüsselcodes, die Taste, die den Schlüsselcode macht wird als Zusatztaste "type shift" vom X-Server

Die Liste, die Modifikatoren Karten wird durch den X-Server gehalten wird, sondern kann von jedem Client geändert werden. Zum Beispiel kann eine Client-Anforderung, dass die "F1" wird in die Liste der Parameter wie "Shift" zugegeben. Von hier an, verhält sich diese Taste als eine andere Art Modifikator Umschalttaste. Allerdings ist der Schlüsselcode entsprechend F1 noch erzeugt wird, wenn die Taste gedrückt wird. Als Ergebnis F1 Arbeit wie zuvor, aber auch arbeitet als die Shift-Taste.

Der X-Server verwaltet und verwendet eine Zuordnungsmodifizierungsmittel für Maustasten. Allerdings können die Tasten nur ausgetauscht werden. Das ist bequemer, die rechts und links für Linkshänder-Benutzern austauschen.

Das Programm zeigt und Veränderungs Mappings Tasten, Modifier und Maustasten.

Grabs

Ein Grab ist ein Zustand, in dem alle Ereignisse der Maus oder Tastatur an einen einzelnen Client gesendet. Ein Client kann die Erfassung von fordern Maus, Tastatur, oder beide, wenn der Antrag durch den Server zugelassen, alle Ereignisse der Maus / Tastatur an den Client, der die Festnahme beantragt, bis die Verriegelung gelöst wird gesendet. Andere Clients nicht diese Events zu erhalten.

Wenn erfordert einen Greifer, schnappen Sie eine Client legt ein Fenster: alle Ereignisse an den Client gesendet, als ob sie an den Haltefenster verwandt waren. Allerdings sind andere Clients nicht Empfangen von Ereignissen auch wenn Sie den grub-Fenster ausgewählt haben. Es gibt zwei Arten von Fängen:

Ein Ersuchen um Festnahme kann einen Antrag auf das Einfrieren der Tastatur oder Zeiger enthalten. Der Unterschied zwischen Fang und Einfrieren ist, dass das Capture-verändert den Empfänger der Ereignisse, während Einfrieren stoppt ihre Lieferung. Wenn ein Gerät eingefroren ist, um die erzeugt werden in einer Warteschlange gespeichert Veranstaltungen in der Regel, wenn Sie das Einfrieren geliefert werden.

Für Zeiger Veranstaltungen, gibt es einen zusätzlichen Parameter, der die Lieferung von Ereignissen beeinflusst: ein Ereignis-Maske, die angibt, welche Arten von Veranstaltungen geliefert werden sollen und welche verworfen werden sollte.

Der Antrag enthält eine Capture-Feld, um festzulegen, was mit den Ereignissen, die an den Client hält den Fang geschickt werden würde, aber noch nicht fest den Fang. Insbesondere kann der Kunde verlangen, diese werden in der Regel in Übereinstimmung mit dem Erfassungs gesendet. Diese beiden Bedingungen sind nicht dasselbe, wie es scheint. So würde beispielsweise ein Client normalerweise Tastaturereignisse empfangen im ersten Fenster können Sie die Tastatur erfordern wird durch ein zweites Fenster eingefangen. Die Ereignisse werden in der Regel zum ersten Fenster gesendet wird, kann oder kann nicht mit dem Erfassungsfenster nach dem Parameter bei der Verhaftsersuchens weitergeleitet.

Ein Client kann auch verlangen, die Gefangennahme eines gesamten Servers. In diesem Fall wird keine Anfrage vom Server verarbeitet werden, außer von dem Client, das die Aufzeichnung angefordert.

Andere

In Kern-Protokoll gibt es noch andere Arten von Veranstaltungen und Anfragen. Eine erste Art von Anfragen an die Beziehung der Verwandtschaft zwischen den Fenstern bezogen werden: ein Client kann verlangen, den Vater eines Fensters zu verändern oder Informationen über das Verhältnis der Fenster anzufordern. Andere Anforderungen an die Auswahl der in jedem Fall wird zum größten Teil von anderen Protokollen bestimmt bezogen. Weitere Anforderungen sind der Fokus und die Form des Mauszeigers. Ein Client kann verlangen, dass der Eigentümer einer Ressource, getötet zu werden, was die Beendigung der Verbindung mit dem Server verursacht. Schließlich kann eine Client-Anforderung, eine Anforderung an den Server Keine-Operation zu senden.

Erweiterungen

Das X-Window-Kernprotokoll wurde entwickelt, erweiterbar sein. Es gibt einen Mechanismus, um die verfügbaren Erweiterungen abgefragt werden und wie sie Ereignisse, Erweiterungen, Fehlerpakete Erweiterung vorgenommen werden.

Insbesondere kann ein Client Daten auf einer bestimmten Nebenstelle aus der Liste der verfügbaren Erweiterungen zu beantragen. Pakete der Erweiterungen sind ähnlich zu denen des Kernprotokoll. Der Kern-Protokoll legt fest, dass Anträge, Ereignisse und Fehlerpakete eine ganze Zahl, die den Typ enthält. Eine ganze Reihe von ihnen ist für Erweiterungen reserviert.

Berechtigungen

Wenn der Client zunächst eine Verbindung mit dem Server, kann der Server zu replizieren oder die Annahme oder Ablehnung der Verbindung oder die Genehmigung. Der Kern-Protokoll nicht den Authentifizierungsprozess, der auf den Typ der Authentifizierung verwendet wird, hängt zu spezifizieren, mit der Ausnahme, daß muß mit dem Senden oder Annahme oder Zurückweisung durch den Server beenden.

Während der regelmäßigen Interaktion zwischen Client und Server nur Anfragen für die Authentifizierung über die Mittel für den Zugriff auf Host-basierte. Insbesondere kann eine Client-Anforderung, dass dieses Verfahren aktiviert und kann verlangen, Lesen und Ändern der Liste der Clients, die berechtigt sind, zu verbinden. Typische Anwendungen verwenden Sie nicht diese Anforderungen; diese werden von dem Programm verwendet, um den Benutzer oder das Skript Zugriff auf die Zugriffsliste. Die Host-basierte Zugriffsmethode gilt als unsicher.

Xlib und andere Client-Bibliotheken

Die meisten Client-Programme kommunizieren mit dem Server über die Xlib-Bibliothek Client. Insbesondere verwendet die meisten Client-Bibliotheken geben Xaw, Motif, GTK + oder Qt, die wiederum nutzen Xlib für die Interaktion mit dem Server. Die Verwendung von Xlib hat die folgenden Wirkungen:

  • Xlib Client stellt Synchron über Ereignisse und Antworten:
    • Xlib-Funktionen, die Anfragen werden blockiert, bis sie die entsprechenden Antworten zu erhalten, senden, jemanden erwarten sie; mit anderen Worten, kann ein X-Client, der keine Xlib eine Anfrage an den Server zu senden und dann tun, andere Operationen, während es wartet auf die Antwort, aber ein Client mit Xlib Xlib kann nur eine Funktion, die die Anfrage sendet anrufen und auf eine Antwort warten, also die Blockierung der Client während der Wartezeit;
    • während der Server asynchron Ereignisse sendet, speichert Xlib vom Client in eine Warteschlange aufgenommen Veranstaltungen; das Client-Programm zugreifen kann es nur einen expliziten Aufruf von Bibliotheksfunktionen X11; mit anderen Worten, ist der Kunde gezwungen, zu hängen oder stehen in Warte beschäftigt, wenn Sie für ein Ereignis warten.
  • Xlib keine Anfragen an den Server sofort zu senden, sondern speichert sie in einer Warteschlange, die so genannte Ausgabepuffer; Anfragen in dem Ausgangspuffer tatsächlich gesendet wird, wenn:
    • Der Zyklus setzt voraus ausdrücklich an den Aufruf einer Bibliotheksfunktion Typ;
    • Das Programm ruft eine Funktion, die sich in etwas, so dass eine Anfrage von dem Server, Typ beinhaltet;
    • Das Programm fragt nach einem Ereignis in der Ereignis-Queue und den Aufruf blockiert.

Bibliotheken höchstem Niveau Art Xt damit der Client-Rückruffunktionen mit bestimmten Ereignissen verbunden angeben; die Bibliothek, die Sie pflegen, um die Ereignis-Queue, indem Sie die entsprechende Funktion bei Bedarf abgefragt werden; Einige Ereignisse, wie beispielsweise diejenigen, die die Notwendigkeit, ein Fenster anzuzeigen, Neuzeichnen werden intern von Xt verwaltet.

Bibliotheken Low-Level-Typ XCB bieten asynchrone Zugriffsprotokoll, so dass eine bessere Verschweigen Latenz.

Was die Hauptdecken Protokoll des X Window System ist nicht festgelegt

Der Haupt X Window Decke Protokoll regelt nicht die Inter-Client-Kommunikation ist nicht festgelegt, wie die Fenster werden verwendet, um die visuellen Elemente gemeinsam grafische Benutzeroberfläche grafische Benutzeroberfläche Elemente durch die Client-Bibliotheken, die Widgets Toolkit machen definiert zu bilden. Die Inter-Client-Kommunikation wird von anderen Standard-Typ Spezifikationen und ICCCM Freedesktop berücksichtigt.

Die Inter-Client-Kommunikation ist von zentraler Bedeutung in der Auswahl, Schnitt Puffer r in Drag, die von einem Benutzer verwendet werden, um Daten von einem Fenster zum anderen zu übertragen Methoden sind. Da die Fenster können von verschiedenen Programmen gesteuert werden kann, ist ein Protokoll zum Austausch dieser Daten erforderlich. Kommunikation zwischen den Client ist auch für den Fenstermanager, die Programme, die die Anzeige von Fenstern und das "Look-and-Feel" einer allgemeinen GUI zu steuern. Ein weiteres Problem, noch wo der inter-Client-Kommunikation ist ein wenig relevant ist, dass der Session-Manager.

Als ein Benutzer eine Sitzung beginnt, ist eine andere Sache nicht durch den Kern-Protokoll abgedeckt. Üblicherweise wird diese automatisch durch die Display-Manager. Sie können eine Sitzung immer noch manuell starten, indem Sie das Programm xinit oder startx.

  0   0
Vorherige Artikel Tschad
Nächster Artikel Tullio Regge

Kommentare - 0

Keine Kommentare

Fügen Sie einen Kommentar

smile smile smile smile smile smile smile smile
smile smile smile smile smile smile smile smile
smile smile smile smile smile smile smile smile
smile smile smile smile
Zeichen übrig: 3000
captcha