diff --git a/protocol/xdg-shell.xml b/protocol/xdg-shell.xml
index 68cf469..50c81b5 100644
--- a/protocol/xdg-shell.xml
+++ b/protocol/xdg-shell.xml
@@ -368,6 +368,95 @@
+
+
+ These constaints allow the compositor to help position child surfaces
+ without intreraction from the client application, and to notify the
+ client of any constraint issues.
+
+ Constraint issues may occur if the surface or another surface is moved
+ to clip either the edge of an output or another surface.
+
+ This can be useful for compositors implementing physics type window
+ effects, non-overlaping windows or allowing the client to keep "popup"
+ windows open without having to rely on implicit grabs.
+
+ An application should use the weakest constraint possible for correct
+ functionality.
+
+
+ The surface will be movable by the compositor.
+
+
+ The surface can be mirrored by the compositor and window co-ordinates
+ are guarenteed for this surface relative to its parent.
+
+ Subsurfaces will not be mirrored and will be positioned as if mirrored
+ first along the parent axis and then along their height mid point.
+
+ Decorations should be specified in this surface and then text and
+ position dependent content as a subsurface.
+
+ Not all compositors will support this mode so the client should provide
+ an alternative should it fail.
+
+
+ The surface is resizable and window co-ordinates are guarenteed
+ for this surface relative to its parent.
+
+ The compositor will suggest the maximum dimensions via configure events
+ to fit the surface onto the output without clipping. The client is free
+ to resize the surface or attempt to reposition the window if the surface
+ becomes too small.
+
+
+ The surface is rotatable about the window co-ordinates which are
+ guarenteed for this surface relative to its parent.
+
+
+ The root surface is scalable and window co-ordinates are
+ guarenteed for this surface relative to its parent.
+
+ The parent and all child surfaces including this one will be scaled by
+ the compositor to fit onto the ouput.
+
+ Not all compositors will support this mode so the client should provide
+ an alternative should it fail.
+
+
+ The root surface is resizable and window co-ordinates are
+ guarenteed for this surface relative to its parent.
+
+ The compositor will suggest the maximum dimensions via configure events
+ to fit the root surface and all child surfaces onto the output without
+ clipping. The client should then resize the root surface and all
+ children or attempt to reposition the child or subsurface to fit inside
+ the maximum size.
+
+
+
+
+
+ Advise the compositor a list of constraits for the surface.
+
+ If the compositor cannot guarentee the constaint on the surface then it
+ will proceed to the next constraint in the list provided.
+
+ If the client provides a positive value for max_left, max_up, max_right
+ or max_down then the movement for that axis will be limited to moving by
+ that amount that area.
+
+ If the compositor is unable to reach a satisfactory constraint based on
+ the provided list then it will return to un-constrained functionality.
+
+
+
+
+
+
+
+
+