xlsatoms
Więcej informacji
- Autor
- Jim Fulton, MIT X Consortium
- Rok
- Typ
- Narzędzie X11
- Licencja
- MIT
- Kod źródłowy
- gitlab.freedesktop.org
Wypisuje każdy atom znany serwerowi X, od predefiniowanego PRIMARY pod numerem 1 po tysiące nazw zarejestrowanych przez dzisiejszych klientów — i których serwer nigdy nie zapomina.
Atomy to sposób protokołu X na to, by nie wysyłać napisów: nazwę rejestruje się raz przez InternAtom i dostaje 32-bitowy numer, używany potem we właściwościach, selekcjach i ClientMessage. xlsatoms Jima Fultona z 1989 roku przechodzi tablicę przez GetAtomName od numeru 1 w górę, aż serwer odpowie błędem, drukując numer i nazwę. Pierwsze 68 jest ustalone przez protokół i identyczne na każdym serwerze — PRIMARY ma numer 1, ATOM 4, WM_COMMAND 34, WM_CLIENT_MACHINE 36, a WM_TRANSIENT_FOR 68 — więc klienci nie muszą o nie pytać; potem idzie wszystko, co jacykolwiek klienci utworzyli od startu serwera, w kolejności zdarzeń. -range 60-70 wybiera przedział, -name _NET_WM_PID wykonuje wyszukanie z powłoki i zgłasza błąd, jeśli atom nie istnieje, a -format kształtuje wynik składnią printf.
Lista jest przekrojem archeologicznym. Protokół podstawowy nie ma żądania usunięcia atomu, więc każda nazwa żyje do restartu serwera, niezależnie od tego, że klient, który ją utworzył, zniknął tygodnie temu. Na zwykłym pulpicie po około tygodniu pracy wychodzi kilka tysięcy wierszy, z nazwami GDK_ i _NET_ zwykle jako dwiema największymi grupami, i można z nich wyczytać, jakie toolkity, menedżery okien i rozszerzenia tędy przeszły. To czyni xlsatoms narzędziem do wykrywania wycieków atomów: program, który rejestruje nową, unikalną nazwę dla każdego okna czy podpowiedzi, wypełnia tablicę serwera, aż ktoś zastanowi się, czemu X zjada pamięć, a xlsatoms | wc -l przed i po zdradza to w minutę.