The server notifies clients of various events that may occur, such as a mouse movement or pressing a mouse button etc. The server sends events to a client by queuing them for the client to read. In fact, most X applications to operate in this event driven manner. Typically, on starting up, a client program, having performed some initialization, contacts the server to display some required windows and then loops forever awaiting an event.