Ressourcen-ID (XID)
Die 29-Bit-Zahl, die jedes Fenster, jede Pixmap, jede Schrift und jeden Cursor in einem X-Server identifiziert – vom Client selbst gewählt, damit ein Fenster angelegt werden kann, ohne auf eine Antwort zu warten.
Alles, was ein Client im X-Server besitzt – Fenster, Pixmaps, Grafikkontexte, Schriften, Cursor, Farbtabellen –, wird über eine Ressourcen-ID angesprochen, ein 32-Bit-Feld im Protokoll, dessen oberste drei Bits immer null sind. Ungewöhnlich ist, wer sie vergibt. Beim Verbindungsaufbau erhält der Client eine resource_id_base und eine resource_id_mask und vergibt seine IDs fortan selbst, indem er innerhalb der Maske hochzählt. XCreateWindow kann daher sofort eine ID zurückgeben, während die Anfrage selbst noch im Ausgabepuffer liegt, und der nächste Aufruf kann das Fenster benutzen, bevor der Server es überhaupt gesehen hat. In den Netzen der 1980er sparte das pro erzeugtem Objekt einen Roundtrip. Der Preis: Die IDs pro Client sind endlich, typischerweise 221, und X.Org hatte aus genau diesem Grund lange eine Obergrenze von 256 gleichzeitigen Clients. Gehen einem Client die IDs aus, fragt Xlib den Server über die XC-MISC-Erweiterung aus X11R6 nach freien Bereichen.
Beim Debuggen tauchen die IDs überall auf. xwininfo gibt „Window id: 0x3400005“ aus, wobei die oberen Bits verraten, welchem Client das Fenster gehört; xprop -id, xkill -id und xdotool nehmen sie als Argumente, und xrestop zeigt, welche Clients die meisten Ressourcen horten. Die Fehlercodes BadWindow, BadDrawable und BadPixmap bedeuten, dass eine ID nicht auf das zeigt, was der Server erwartet hat, und BadIDChoice, dass der Client eine bereits vergebene gewählt hat. Ressourcen verschwinden, wenn die Verbindung schließt, es sei denn, der Client hat RetainPermanent verlangt – so kann xsetroot sich beenden und das Hintergrundbild trotzdem zurücklassen.