Listing 1. Example Program for Concepts and Functions in X11

#include  // preceede most other headers!

int main(){

  Display *dsp = XOpenDisplay( NULL );
  if( !dsp ){ return 1; }


  int screenNumber = DefaultScreen(dsp);
  unsigned long white = WhitePixel(dsp,screenNumber);
  unsigned long black = BlackPixel(dsp,screenNumber);


  Window win = XCreateSimpleWindow(dsp,
                               DefaultRootWindow(dsp),
                               50, 50,   // origin
                               200, 200, // size
                               0, black, // border
                               white );  // backgd

  XMapWindow( dsp, win );


  long eventMask = StructureNotifyMask;
  XSelectInput( dsp, win, eventMask );

  XEvent evt;
  do{
    XNextEvent( dsp, &evt );   // calls XFlush
  }while( evt.type != MapNotify );


  GC gc = XCreateGC( dsp, win,
                     0,        // mask of values
                     NULL );   // array of values
  XSetForeground( dsp, gc, black );


  XDrawLine(dsp, win, gc, 10, 10,190,190); //from-to
  XDrawLine(dsp, win, gc, 10,190,190, 10); //from-to


  eventMask = ButtonPressMask|ButtonReleaseMask;
  XSelectInput(dsp,win,eventMask); // override prev
 
  do{
    XNextEvent( dsp, &evt );   // calls XFlush()
  }while( evt.type != ButtonRelease );


  XDestroyWindow( dsp, win );
  XCloseDisplay( dsp );

  return 0;
}