smproxy
Więcej informacji
- Autor
- Ralph Mor, X Consortium
- Rok
- Typ
- Proxy sesji dla X11
- Licencja
- MIT
- Kod źródłowy
- gitlab.freedesktop.org
Proxy sesji z X11R6: program, który łączy się z menedżerem sesji w imieniu każdego okna, którego właściciel nigdy nie poznał XSMP, i obiecuje uruchomić je ponownie na podstawie WM_COMMAND.
XSMP pojawił się w 1994 roku na pulpitach pełnych programów, które przez lata nie miały być aktualizowane, więc Ralph Mor napisał proxy w tym samym wydaniu. smproxy startuje w sesji, obserwuje nowe okna główne i szuka takich, które nie mają SM_CLIENT_ID, ale mają WM_COMMAND — na samym oknie albo na oknie lidera wskazanym przez WM_CLIENT_LEADER, tak aby program z pięcioma oknami stał się jednym klientem, a nie pięcioma. Dla każdego łączy się z menedżerem sesji jako osobny klient XSMP, z nazwą hosta z WM_CLIENT_MACHINE i poleceniem restartu z WM_COMMAND, a menedżer sesji nie odróżnia go od prawdziwego programu.
Gdy menedżer sesji zażąda SaveYourself, smproxy z kolei wysyła WM_SAVE_YOURSELF do okien, które wymieniły go w WM_PROTOCOLS, czeka na przepisanie WM_COMMAND i przekazuje dalej nowe polecenie; programy, które nie obsługują nawet tego, są uruchamiane od nowa bez stanu. Proxy nie mogło zrobić więcej, i wystarczyło to dla xterma, xclocka i świata Xt, lecz nie dla wielu innych rzeczy. KDE wbudowało tę samą logikę w ksmserver zamiast uruchamiać program, GNOME ją zignorowało, a smproxy nadal jest dostarczany z X.Org obok xsm — jako zapis tego, jak dorabiać obsługę protokołu programom, których nie można zmienić.