X Windowing
History:
- Version 11, called X11, first released by MIT in September 1987,
was inspirded by Standfords "W" windowing package.
- Release 5 in August 1991 under control of the X Consortium.
- Although X11 is open source it is not free.
- For Linux there is XFree86 and a vrsion exist for MacOS
- For widows can use Cygwin/XFree86, Cygwin is an unix emulator, and
XFree86 has been ported to Cygwin.
- XFree86 version 4 came out in 2000 with openGL support and chnaged
the format of the configuration file.
- Home page: www.xfree86.org
- Documentation at www.xfree86.org/support.html
Goals of X Windows, a windowing system:
- Standard - Used by almost all workstation
- Portable - Write once run on many workstation
- Network Based - Windowing application can run on remote machines
- Extendable - new drivers and functionality
Components of XWindows:
- Displays and Screens - Users workstation
- Display = Keyborad + pointing device + screen
- Multiple screens - physical or virual monitors
- Multiple pointers
- Sever - Client Network Model: draw a picture.
- Clients:
- Applications
- Use Xlib Libaray calls
- sends messages to server
- revieves events from server
- Server: user sits at the server.
- Allows multiple clients to acess display
- Intermediary between clients
- interpets network messages
- Communicate with device driver
- On the display machine => does the actual drawing on the display.
- Does most of the work
- Maintians data structures, such as windows, fonts and graphics
context....
- X-protocal used to communicate between server and client across
the net.
- This enables distriputed computing.
- Window Manger (WM):
- A special client, only one for each server
- Controls the general appearence of windows
- Syles of window layouts:
- "titled" - no overlapping window - Siemen's RTL WM
- "real-estate driven" - cursor position depends keyboard input
destination - TWM
- "click-to-type" - for detemining keyboard focus
- Other examples: winman.org - web page of many window managers.
- XWM - 1985 toy included in the release
- TWM/VTWM - orginal tapped window manager.
- FVWM - all time favorite, highly configurable
- Desktop Environment (DE) use Window Managers and offer more applications
- Gnome - requires Gnome aware WM, examples are Sawfish, Enlightment,
and IceWM
- KDE - uses KWM
- CDE - commerical on unix, uses dtwm.
- Important files:
- startx -> xinit -> WM or DE, scripts found on /usr/X11R6/bin/
- Important rc files are /etc/X11/XF86Config and /etc/X11/xinit/xinitrc,
as a user in the home directory.
- Session Mangers - control the shut down and loading of window environment,
typically saving application windows settings and location etc.
- Events:
- User inputs - mouse and keyboads
- may generate side effect like exposing a window
- User control of application - princple of HCI => client applications
ready anytime for any event.
- Events are placed in a queue
- Clients application program must have
- Event loop - typically infinite while loop
- Get/Read event
- Branch to event type - typically a switch statement.
- Extensions - Expands capability, for example new drives, and better
drawing
- Shape - extension for non rectangle windows
- XInput - more input
- PEX, which includes PHIGS and PEXLib, api for 3-d graphics
- there is more
- XWindow System Software Architecture
- XLib - client side
- communicate with the server using XProtocals
- Other applications, such as xterm, xclock, xcalc, xmh
- Clients can also use Toolkits, such as XtToolkit, QTK, GTK and others,
to make XLib calls
- Xserver - server side
- interpets XProtocals
- maintian DS
- Sends and revieve messages from drive and therefore the device.
X Window System Software Architecture: