xlsatoms
Mer info
- Skapad av
- Jim Fulton, MIT X Consortium
- År
- Typ
- Verktyg för X11
- Licens
- MIT
- Källkod
- gitlab.freedesktop.org
Listar varje atom X-servern känner till, från den fördefinierade PRIMARY med nummer 1 till de tusentals namn dagens klienter internerat — och som servern aldrig glömmer.
Atomer är X-protokollets sätt att slippa skicka strängar: ett namn internas en gång med InternAtom och får ett 32-bitars nummer som sedan används i egenskaper, markeringar och ClientMessage. Jim Fultons xlsatoms från 1989 går igenom tabellen med GetAtomName från nummer 1 och uppåt tills servern svarar med ett fel, och skriver nummer och namn. De första 68 är fasta i protokollet och likadana på varje server — PRIMARY är 1, ATOM är 4, WM_COMMAND 34, WM_CLIENT_MACHINE 36 och WM_TRANSIENT_FOR 68 — så att klienter slipper fråga efter dem; därefter kommer allt som någon klient skapat sedan servern startade, i den ordning det hände. -range 60-70 plockar ett intervall, -name _NET_WM_PID gör ett uppslag från skalet och svarar med fel om atomen inte finns, och -format styr utskriften med printf-syntax.
Listan är en arkeologisk lagerföljd. Kärnprotokollet har ingen begäran för att ta bort en atom, så varje namn lever tills servern startas om, oavsett om klienten som skapade det försvann för veckor sedan. På ett vanligt skrivbord blir det efter någon veckas drift ett par tusen rader där GDK_- och _NET_-namnen brukar vara de största grupperna, och man ser i dem vilka verktygslådor, fönsterhanterare och tillägg som varit förbi. Det gör xlsatoms till verktyget för att hitta atomläckor: ett program som internar ett nytt, unikt namn per fönster eller tooltip fyller serverns tabell tills någon undrar varför X tar minne, och xlsatoms | wc -l före och efter avslöjar det på en minut.