WM_Sn
La selección de ICCCM 2.0, una por pantalla, de la que un gestor de ventanas se adueña al arrancar, para que otro pueda relevarlo limpiamente con --replace en lugar de matarlo.
Que solo pueda haber un gestor de ventanas por pantalla lo garantiza el propio servidor X: solo un cliente puede seleccionar SubstructureRedirect en la ventana raíz, y el siguiente recibe BadAccess y el conocido "another window manager is already running". Pero ese cerrojo no dice quién está en marcha ni ofrece forma de cambiarlo sin matar. En 1994 ICCCM 2.0 tomó prestada una herramienta del portapapeles: las selecciones. Un gestor que arranca se adueña de la selección WM_S0 para la pantalla 0, WM_S1 para la siguiente, con XSetSelectionOwner sobre una ventana invisible propia. Si ya hay un dueño, el recién llegado termina, salvo que se haya lanzado con --replace. Entonces toma la selección de todos modos, el antiguo recibe un SelectionClear, suelta sus ventanas de forma ordenada y sale.
Es el mecanismo detrás de compiz --replace, la orden que medio mundo Linux tecleó en 2006 para cambiar Metacity por un cubo giratorio, y detrás de la misma opción en Openbox, KWin y xfwm4. El patrón se reutilizó después para todo lo que solo puede existir una vez: _NET_WM_CM_Sn para el compositor, _NET_SYSTEM_TRAY_Sn para la bandeja del sistema y _XSETTINGS_Sn para el demonio de ajustes. Poseer la selección no significa que el dueño sepa hacer nada en particular, para eso está _NET_SUPPORTING_WM_CHECK, pero afirma sin ambigüedad que hay un gestor de ventanas y a qué ventana enviarle peticiones. Los gestores que nunca se molestaron con el ritual siguen existiendo, y hay que matarlos como antes.