The XSetTextProperty function replaces the existing specified
property for the named window with the data, type, format, and number
of items determined by the value field, the encoding field, the format
field, and the nitems field, respectively, of the specified XTextProperty
structure. If the property does not already exist, XSetTextProperty
sets it for the specified window.

The XGetTextProperty
function reads the specified property from the window and stores the data
in the returned XTextProperty structure. It stores the data in the value
field, the type of the data in the encoding field, the format of the data
in the format field, and the number of items of data in the nitems field.
An extra byte containing null (which is not included in the nitems member)
is stored at the end of the value field of text_prop_return. The particular
interpretation of the property's encoding and data as text is left to the
calling application. If the specified property does not exist on the window,
XGetTextProperty sets the value field to NULL, the encoding field to
None, the format field to zero, and the nitems field to zero.

If it was
able to read and store the data in the XTextProperty structure, XGetTextProperty
returns a nonzero status; otherwise, it returns a zero status.

The server failed to allocate
the requested resource or server memory.

BadAtom

A value for an Atom argument
does not name a defined Atom.

BadValue

Some numeric value falls outside
the range of values accepted by the request. Unless a specific range is
specified for an argument, the full range defined by the argument's type
is accepted. Any argument defined as a set of alternatives can generate
this error.