WM_SAVE_YOURSELF
De eerste poging van ICCCM tot sessiebeheer: de vensterbeheerder vraagt een programma op te schrijven hoe het herstart moet worden, en het programma antwoordt door WM_COMMAND te herschrijven — een protocol dat in 1994 verouderd werd verklaard maar nooit helemaal verdween.
ICCCM 1.0, in 1989 geleverd met X11R4, had geen sessiemanagers om op te leunen, dus al het sessiebeheer moest in één bericht passen. Een programma zette WM_SAVE_YOURSELF in WM_PROTOCOLS; bij uitloggen of een checkpoint stuurde de vensterbeheerder een ClientMessage met dat atoom, en het programma moest antwoorden door WM_COMMAND te herschrijven tot een opdrachtregel die de huidige toestand weer opbouwt — of dezelfde als eerst als er niets te bewaren viel, of een lege als het niet herstart wilde worden. Het schrijven was de bevestiging: de vensterbeheerder wachtte op een PropertyNotify op WM_COMMAND en nam na een time-out aan dat wie niet antwoordde was vastgelopen. Intussen mocht het programma niet met de gebruiker praten; een vraag over niet-opgeslagen wijzigingen was uitdrukkelijk verboden.
De gebreken werden snel zichtbaar. Het programma kon een checkpoint niet van het einde van de sessie onderscheiden, kon niet weigeren, en het antwoord stond op een venster, zodat er één commando per venster was in plaats van per programma. ICCCM 2.0 verplaatste de hele procedure in 1994 naar een appendix met verouderde conventies en verwees naar XSMP. Toch verdween het niet: smproxy stuurt het nog steeds naar programma's zonder XSMP, de ksmserver van KDE heeft dezelfde truc ingebouwd onder de naam legacy session management, Tk biedt het aan als wm protocol . WM_SAVE_YOURSELF, en Emacs beantwoordt het met XSetCommand — maar alleen als het niet al met een sessiemanager praat, want een programma dat beide ondersteunt zou anders bij de volgende login twee keer starten.