A program for organizing the windows of a graphical user interface. The position, size, and contents of a window can be controlled by an application. There may be many applications active at any one time, and each application may have more than one window active at any one time. Windows are created, managed, and closed down by requests from the applications to the windows manager; the applications are clients while the windows manager is the server. All changes to all windows are controlled by the windows manager, which will check the validity of a request from an application and then update the contents of the application's window in accordance with the request, returning a message to the client on the outcome of the request. In addition, the windows manager continuously monitors the position of the mouse cursor, reporting the position of the mouse to an application at any time when the cursor is positioned within a window associated with that application, and generating an “event” when a mouse button is pressed or released. The application can use information about the state of the mouse button, and the cursor position within the window, to control the running of the application. The windows manager also offers some common functions, such as the ability to resize a window, to drag the entire window, and to iconize the window — shrinking its size to the minimum possible. When the windows manager changes the size of a window the client application is informed, and can then redraw the contents of the window appropriately.