IT-словарь › Программирование › WM_Sn

WM_Sn

Программирование Svenska → Обновлено: 2026-10-18

Селекция ICCCM 2.0 (по одной на экран), которой владеет оконный менеджер с момента запуска, — чтобы другой мог аккуратно сменить его через --replace, не убивая.

Что на экране может быть только один оконный менеджер, обеспечивает сам X-сервер: лишь один клиент может выбрать SubstructureRedirect на корневом окне, а следующий получает BadAccess и знакомое «another window manager is already running». Но блокировка не говорит, кто именно работает, и не даёт сменить его без убийства. В 1994 году ICCCM 2.0 позаимствовал инструмент буфера обмена — селекции. Запускающийся менеджер захватывает селекцию WM_S0 для экрана 0, WM_S1 для следующего — через XSetSelectionOwner на собственном невидимом окне. Если владелец уже есть, новичок завершается — если только не запущен с --replace: тогда он забирает селекцию, старый владелец получает SelectionClear, упорядоченно отпускает окна и выходит.

Таков механизм compiz --replace — команды, которую половина мира Linux набирала в 2006 году, меняя Metacity на вращающийся куб, — и того же флага в Openbox, KWin и xfwm4. Приём затем переиспользовали для всего, что должно существовать в одном экземпляре: _NET_WM_CM_Sn для композитора, _NET_SYSTEM_TRAY_Sn для системного трея, _XSETTINGS_Sn для демона настроек. Владение селекцией не означает умения что-то конкретное — для этого есть _NET_SUPPORTING_WM_CHECK, — но однозначно говорит, что менеджер есть и кому слать запросы. Менеджеры, не удосужившиеся этого ритуала, существуют до сих пор, и их приходится убивать по-старому.

← Назад к словарю