xlsatoms
Daha fazla bilgi
- Yaratıcı
- Jim Fulton, MIT X Consortium
- Yıl
- Tür
- X11 aracı
- Lisans
- MIT
- Kaynak kodu
- gitlab.freedesktop.org
X sunucusunun bildiği tüm atomları listeler: 1 numaralı önceden tanımlı PRIMARY’den, bugünkü istemcilerin internlediği binlerce ada kadar — ve sunucu bunların hiçbirini unutmaz.
Atomlar, X protokolünün dizgi göndermemek için bulduğu yoldur: bir ad InternAtom ile bir kez internlenir, 32 bitlik bir sayı alır ve bu sayı özelliklerde, seçimlerde ve ClientMessage’larda kullanılır. Jim Fulton’ın 1989’daki xlsatoms’u tabloyu 1’den başlayarak GetAtomName ile, sunucu hata verene dek yürür ve numarayı adla birlikte yazdırır. İlk 68’i protokolce sabittir ve her sunucuda aynıdır — PRIMARY 1, ATOM 4, WM_COMMAND 34, WM_CLIENT_MACHINE 36, WM_TRANSIENT_FOR 68 — dolayısıyla istemcilerin sormasına gerek yoktur; sonrası sunucu başladığından beri herhangi bir istemcinin oluşturduğu her şeydir, oluşma sırasıyla. -range 60-70 bir aralık seçer, -name _NET_WM_PID kabuktan arama yapar ve atom yoksa hata bildirir, -format çıktıyı printf sözdizimiyle biçimlendirir.
Liste bir arkeolojik kesittir. Çekirdek protokolde atom silme isteği yoktur; bu yüzden her ad, onu oluşturan istemci haftalar önce gitmiş olsa bile sunucu yeniden başlayana dek yaşar. Sıradan bir masaüstünde yaklaşık bir haftalık çalışma süresi birkaç bin satır verir, en büyük iki grup genellikle GDK_ ve _NET_ adlarıdır; hangi araç takımlarının, pencere yöneticilerinin ve eklentilerin uğradığını buradan okuyabilirsiniz. xlsatoms bu yüzden atom sızıntısı avının aracıdır: her pencere ya da ipucu için benzersiz yeni bir ad internleyen program, biri X’in neden bellek yediğini merak edene dek sunucunun tablosunu doldurur; öncesinde ve sonrasında xlsatoms | wc -l bir dakikada ele verir.