1
0
mirror of https://github.com/gryf/wmaker.git synced 2025-12-22 05:48:01 +01:00

wmaker: replace and be replaced (ICCCM protocol)

Use the same logic used by xfwm4, metacity et al to replace an existing
window manager on the screen and allow other window managers to replace
us, as defined by the ICCCM 2.0:

http://www.x.org/releases/X11R7.6/doc/xorg-docs/specs/ICCCM/icccm.html
  Communication with the Window Manager by Means of Selections

By convention those window managers try to become the selection owner of
the WM_Sn atom where n is the screen number.  If the atom is owned by
another window manager and the --replace argument was not given to wmaker
we fail to start.  If the argument was given we try to become the new
owner and wait for the existing window manger to exit.

After a successful startup we watch for SelectionClear events on the
atom and initiate a shutdown if one arrives, as that implies that
another window manager was started with --replace.
This commit is contained in:
Iain Patterson
2015-05-14 18:55:32 +02:00
committed by Carlos R. Mafra
parent fa5f8d9937
commit 28b0169147
5 changed files with 133 additions and 5 deletions

View File

@@ -463,6 +463,7 @@ extern struct WPreferences {
char show_clip_title;
struct {
unsigned int replace:1; /* replace existing window manager */
unsigned int nodock:1; /* don't display the dock */
unsigned int noclip:1; /* don't display the clip */
unsigned int clip_merged_in_dock:1; /* disable clip, switch workspaces with dock */