.EX include "draw.m" Command: module { init: fn(nil: ref Draw->Context; nil: list of string); };
Most programs do not create Contexts but instead inherit one from their parent, typically a shell or window system.
The following elements of Context are used by wm : .TF display
display The Display adt to which the application is connected; may be nil . See draw-display (2).
wm A shared channel through which a private channel can be set up with a window manager. A client application sends a tuple containing a request string (of a format defined by the window manager) and a private reply channel. It receives a tuple in reply on that channel; the tuple contains a string (eg, an acknowledgement or diagnostic) and a reference to a Wmcontext value containing channels by which the application can interact with the window manager.
.TF connfd
kbd A channel of type int that delivers keystrokes from a keyboard.
ptr A channel of type ref Pointer that delivers events from a pointing device such as a mouse. See devpointer (2).
ctl A channel of type string that delivers control messages from the window manager to the application.
wctl A channel of type string , which if initialised is used by the application to send control messages to the window manager. It is not used by the current wm (1) or tkclient (2).
images A channel of type ref Image that allows the window manager and application to exchange images (eg, when resizing, or to supply a cursor image).
connfd A file descriptor that can be used to provide per-client connection control. For instance, a client can store a file descriptor open on a sys-file2chan (2) provided by the window manager, and the window manager will shut down input to the application when the connection closes (eg, if the application exits unexpectedly). Connfd is also used to write requests to the window manager. Conventionally a request is a list of words formatted as by quoted in string (2). A request starting with an exclamation mark "" ( ! ) if successful will result in an image being sent down the image channel; the rectangle of the image indicates the rectangle that has been allocated on the screen. If only the origin is to be changed by the window manager, a nil image is sent first (giving the application a chance to suspend operations on the window), and then the original image, with its origin set appropriately.
image This is used as described above.
ctxt Initialised with the ctxt value that provided the initial connection on the wm channel.