A window capable of migration sets a property _GPE_DISPLAY_CHANGE on itself. Its type is STRING and it is initially set to zero length. Changing this property to a non-empty value signals a request for the application to migrate. The property has the format "TARGET-DISPLAY AUTH-TYPE AUTH-DATA", where TARGET-DISPLAY is the desired destination in "host:display.screen" notation; AUTH-TYPE is the authentication method in use (see below); and AUTH-DATA is the appropriate authentication information. Prior to setting this property on a window, the requesting application should inspect its current value. Anything other than zero length indicates that the migration attempt has collided with one made by another requestor, and should be aborted. Once a migration request has been processed, the migrated window should reset its _GPE_DISPLAY_CHANGE property to zero length, indicating readiness to receive further requests. The outcome of a migration attempt is signalled by sending a ClientMessage of type _GPE_DISPLAY_CHANGE to the original display's root window with event mask SubstructureNotify and payload as follows: l[0] window handle for which status is being reported l[1] status code, one of: 0 success 1 unable to connect to display 2 requested screen does not exist 3 invalid authentication 4 indeterminate failure Only one authentication scheme, RSA-SIG, is currently defined. In this scheme, the requestor reads a challenge string from the _GPE_DISPLAY_CHANGE_RSA_CHALLENGE property on the window to be migrated and computes the PKCS-1 signature of the target display name, followed by a NUL delimeter, followed by the challenge string. The authentication data string consists of the key ID used for signature, followed by a space, followed by the signature text. -- Should all windows owned by one application be migrated together? If so, does this need specific protocol support, or should the requesting application simply deal with each one individually?