Identyfikator zasobu (XID)
29-bitowa liczba identyfikująca każde okno, pixmapę, czcionkę i kursor w serwerze X — wybierana przez samego klienta, tak aby okno dało się utworzyć bez czekania na odpowiedź.
Wszystko, co klient posiada wewnątrz serwera X — okna, pixmapy, konteksty graficzne, czcionki, kursory, mapy kolorów — jest adresowane identyfikatorem zasobu, 32-bitowym polem w protokole, którego trzy najwyższe bity są zawsze zerowe. Nietypowe jest to, kto je przydziela. Przy nawiązywaniu połączenia klient dostaje resource_id_base i resource_id_mask, a potem sam alokuje swoje identyfikatory, zliczając w górę w obrębie maski. XCreateWindow może więc od razu zwrócić ID, podczas gdy samo żądanie czeka jeszcze w buforze wyjściowym, a kolejne wywołanie może użyć okna, zanim serwer w ogóle je zobaczy. W sieciach z lat 80. oszczędzało to jeden round trip na każdy tworzony obiekt. Kosztem jest to, że liczba ID na klienta jest skończona, zwykle 221, a X.Org przez długi czas miał limit 256 jednoczesnych klientów właśnie z tego powodu. Gdy klientowi się skończą, Xlib prosi serwer o wolne zakresy przez rozszerzenie XC-MISC z X11R6.
Identyfikatory pojawiają się wszędzie przy debugowaniu. xwininfo wypisuje „Window id: 0x3400005”, gdzie wysokie bity zdradzają, który klient jest właścicielem okna; xprop -id, xkill -id i xdotool przyjmują je jako argumenty, a xrestop pokazuje, którzy klienci gromadzą najwięcej zasobów. Kody błędów BadWindow, BadDrawable i BadPixmap oznaczają, że ID nie wskazuje tego, czego serwer oczekiwał, a BadIDChoice — że klient wybrał już używany. Zasoby znikają po zamknięciu połączenia, chyba że klient zażądał RetainPermanent — dzięki czemu xsetroot może się zakończyć i zostawić tapetę.