Section 2 - Listing GNOME Window Manager Compliance

It is important to list which parts of GNOME Window Manager compliance are supported. This is done fairly easily by doing the following:

Create a property on the root window of the atom name _WIN_PROTOCOLS. This property contains a list(array)of atoms that are all the properties the Window Manager supports. These atoms are any number of the following:

If you list one of these properties then you support it and applications can expect information provided by, or accepted by the Window Manager to work.

Example:
  Display            *disp;
  Window              root_window;
  Atom                atom_set;
  Atom                list[10];

  atom_set = XInternAtom(disp, "_WIN_PROTOCOLS", False);
  list[0] = XInternAtom(disp, "_WIN_LAYER", False);
  list[1] = XInternAtom(disp, "_WIN_STATE", False);
  list[2] = XInternAtom(disp, "_WIN_HINTS", False);
  list[3] = XInternAtom(disp, "_WIN_APP_STATE", False);
  list[4] = XInternAtom(disp, "_WIN_EXPANDED_SIZE", False);
  list[5] = XInternAtom(disp, "_WIN_ICONS", False);
  list[6] = XInternAtom(disp, "_WIN_WORKSPACE", False);
  list[7] = XInternAtom(disp, "_WIN_WORKSPACE_COUNT", False);
  list[8] = XInternAtom(disp, "_WIN_WORKSPACE_NAMES", False);
  list[9] = XInternAtom(disp, "_WIN_CLIENT_LIST", False);
  XChangeProperty(disp, root_window, atom_set, XA_ATOM, 32, PropModeReplace,
                  (unsigned char *)list, 10);