# $Id: Overview,v 1.7 2001/07/09 23:48:12 matju Exp $

The Ruby X11 Client Library

AUTHOR

	Mathieu Bouchard <matju@sympatico.ca>
	irc: irc.openprojects.net / #ruby-lang / matju
	(note: I can't read Japanese; write in French or English please)

REQUIREMENTS

	Ruby 1.6
	an X11 Display Server

PURPOSE

	To provide a compact and convenient programming interface for
	programming X11 protocol clients. To provide a slim, DRY ("don't
	repeat yourself") implementation, independent of the official
	C-based "Xlib".

BIG FEATURES (that C-Xlib doesn't have)

	1. object oriented interface
	
	2. pervasive use of vectors (instead of x,y,width,height)

	3. reflection (query tuples about their fields and methods about
	their argument lists, at run time)

	4. smallest implementation (that I know):

		C xlib:         > 1M
		smalltalk xlib: ~ 400k
		perl xlib:      ~ 160k
		this xlib:      ~ 80k

	5. async replies:

		# will be printed whenever we get the reply.
		$d.intern_atom {|answer| p answer.atom }

		also Display#wait_for allows for a synchronous set of replies
		which are individually made asynchronous.

	6. this library can serve as a basis for writing the a X11 server too,
	as most types definitions still hold and most encodings are reversible.

NOTES

	X11 requests are grouped by category according to their leading
	parameters. Remote resources are accessed through proxies that
	contain an XID as well as a reference to the Display.

	Some further sequences of parameters are abstracted out by using
	the geometry classes Point, Rectangle, etc.

	Most of the implementation is in a declarative style. Improving
	performance of the library can (and should) be done through
	improving the engine that handles those declarations.

	I hope these things together should make this X11 client library
	the most usable and manageable.

BUG REPORTING

Please report to the author: bugs, perceived flaws, requests for
improvements, etc. Thank you.

#----------------------------------------------------------------#

Thanks to: Ben Tilly, Stephen McCamant, Yoshida Kazuhiro.
