FACTOID # 143: If someone you know died from falling out of a tree, you’re probably Brazilian.
 
 Home   Encyclopedia   Statistics   Countries A-Z   Flags   Maps   Education   Forum   FAQ   About 
 
WHAT'S NEW
RECENT ARTICLES
More Recent Articles »
 

FACTS & STATISTICS    Simple view

  1. Select countries to view: (hold down Control key and click to select several)

     

     

    Compare:

     

     

  1. Select fact or statistic: (* = graphable)

     

     

     

  2. (OPTIONAL) Compare to statistic: (both need to be graphable)

     

     

     

  3. View result as:

     

       
(OR) SEARCH ALL encyclopedia, stats & forums:   

Encyclopedia > Xlib

Xlib is an X Window System protocol client library in the C programming language. It contains functions for interacting with an X server. These functions allow programmers to write programs without knowing the details of the protocol. Few applications use Xlib directly; rather, they employ other libraries that use Xlib functions to provide widget toolkits: GNOME 2. ... Illustration of an application which may use libvorbisfile. ... C is a general-purpose, block structured, procedural, imperative computer programming language developed in 1972 by Dennis Ritchie at the Bell Telephone Laboratories for use with the Unix operating system. ... In computer science, a subroutine (function, method, procedure, or subprogram) is a portion of code within a larger program, which performs a specific task and is relatively independent of the remaining code. ... This article does not cite any references or sources. ... A programmer or software developer is someone who programs computers, that is, one who writes computer software. ... For other senses of this word, see protocol. ... In computer programming, widget toolkits (or GUI toolkits) are sets of basic building units for graphical user interfaces. ...

Xlib and other libraries using it
Xlib and other libraries using it

Xlib appeared around 1985, and is currently used in GUIs for many Unix-like operating systems. Image File history File links X-client-libraries. ... Intrinsics (also known as Xt, for X toolkit) is a library used in the X Window System. ... Xaw is short for the Athena widget set, which is a set of widgets to implement simple user interfaces based upon the X Toolkit Intrinsics. ... Screenshot of an application that uses the Open Motif toolkit Motif is a widget toolkit for building graphical user interfaces under the X Window System on Unix and other POSIX-compliant systems. ... GTK+, or the GIMP Toolkit, is one of the two most popular widget toolkits for the X Window System for creating graphical user interfaces. ... For other uses, see Qt. ... Year 1985 (MCMLXXXV) was a common year starting on Tuesday (link displays 1985 Gregorian calendar). ... GUI can refer to the following: GUI is short for graphical user interface, a term used to describe a type of interface in computing. ... Filiation of Unix and Unix-like systems Unix (officially trademarked as UNIX®) is a computer operating system originally developed in 1969 by a group of AT&T employees at Bell Labs including Ken Thompson, Dennis Ritchie and Douglas McIlroy. ... It has been suggested that Maintenance OS be merged into this article or section. ...


The XCB library is an attempt to replace Xlib. In computing, XCB (X C Binding) is a C language binding for the X Window System. ...

Contents

Data types

The main types of data in Xlib are the Display structure and the types of the identifiers.


Informally, a display is a physical or virtual device where graphical operations are done. The Display structure of the Xlib library contains information about the display, but more importantly it contains information relative to the channel between the client and the server. For example, in a Unix-like operating system, the Display structure contains the file handle of the socket of this channel (this can be retrieved using the ConnectionNumber macro.) Most Xlib functions have a Display structure as an argument because they either operate on the channel or are relative to a specific channel. In particular, all Xlib functions that interact with the server need this structure for accessing the channel. Some other functions need this structure, even if they operate locally, because they operate on data relative to a specific channel. Operations of this kind include for example operations on the event queue, which is described below. Filiation of Unix and Unix-like systems Unix (officially trademarked as UNIX®) is a computer operating system originally developed in 1969 by a group of AT&T employees at Bell Labs including Ken Thompson, Dennis Ritchie and Douglas McIlroy. ... A Unix domain socket or IPC socket (inter-procedure call socket) is a virtual socket, similar to an internet socket that is used in POSIX operating systems for inter-process communication. ...


Windows, colormaps, etc. are managed by the server, which means that the data about their actual implementation is all stored in the server. The client operates on these objects by using their identifiers. The client cannot directly operate on an object, but can only request the server to perform the operation specifying the identifier of the object.


The types Windows, Pixmap, Font, Colormap, etc. are all identifiers, which are 32-bit integers (just as in the X11 protocol itself). A client “creates” a window by requesting that the server create a window. This is done via a call to an Xlib function that returns an identifier for the window, that is, a number. This identifier can then be used by the client for requesting other operations on the same window to the server.


The identifiers are unique to the server. Most of them can be used by different applications to refer to the same objects. For example, two applications connecting with the same server use the same identifier to refer to the same window. These two applications use two different channels, and therefore have two different Display structures; however, when they request operations on the same identifier, these operations will be done on the same object.


Protocol and events

The Xlib functions that send requests to the server usually do not send these requests immediately but store them in a buffer, called the output buffer. The term output in this case refers to the output from the client that is directed to the server: the output buffer can contain all kinds of requests to the server, not only those having a visible effect on the screen. The output buffer is guaranteed to be flushed (i.e., all requests done so far are sent to the server) after a call to the functions XSync or XFlush, after a call to a function that returns a value from the server (these functions block until the answer is received), and in some other conditions.


Xlib stores the received events in a queue. The client application can inspect and retrieve events from the queue. While the X server sends events asynchronously, applications using the Xlib library are required to explicitly call Xlib functions for accessing the events in the queue. Some of these functions may block; in this case, they also flush the output buffer.


Errors are instead received and treated asynchronously: the application can provide an error handler that will be called whenever an error message from the server is received.


The content of a window is not guaranteed to be preserved if the window of one of its parts are made not visible. In this case, the application are sent an Expose event when the window of one part of it is made visible again. The application is then supposed to draw the window content again.


Functions

The functions in the Xlib library can be grouped in:

  1. operations on the connection (XOpenDisplay, XCloseDisplay, ...);
  2. requests to the server, including requests for operations (XCreateWindow, XCreateGC,...) and requests for information (XGetWindowProperty, ...); and
  3. operations that are local to the client: operations on the event queue (XNextEvent, XPeekEvent, ...) and other operations on local data (XLookupKeysym, XParseGeometry, XSetRegion, XCreateImage, XSaveContext, ...)

Example

The following program creates a window with a little black square in it.

 /* Simple Xlib application drawing a box in a window. */ #include<X11/Xlib.h> #include<stdio.h> #include<stdlib.h> int main() { Display *d; int s; Window w; XEvent e; /* open connection with the server */ d=XOpenDisplay(NULL); if(d==NULL) { printf("Cannot open displayn"); exit(1); } s=DefaultScreen(d); /* create window */ w=XCreateSimpleWindow(d, RootWindow(d, s), 10, 10, 100, 100, 1, BlackPixel(d, s), WhitePixel(d, s)); /* select kind of events we are interested in */ XSelectInput(d, w, ExposureMask | KeyPressMask); /* map (show) the window */ XMapWindow(d, w); /* event loop */ while(1) { XNextEvent(d, &e); /* draw or redraw the window */ if(e.type==Expose) { XFillRectangle(d, w, DefaultGC(d, s), 20, 20, 10, 10); XDrawString(d, w, DefaultGC(d, s), 50, 50, "Hello, World!",strlen("Hello, World!")); } /* exit on key press */ if(e.type==KeyPress) break; } /* close connection to server */ XCloseDisplay(d); return 0; } 

The client creates a connection with the server by calling XOpenDisplay. It then requests the creation of a window with XCreateSimpleWindow. A separate call to XMapWindow is necessary for mapping the window, that is, for making it visible on the screen.


The square is drawn by calling XFillRectangle. This operation can only be performed after the window is created. However, performing it once may not be enough. Indeed, the content of the window is not always guaranteed to be preserved. For example, if the window is covered and then uncovered again, its content might require to be draw again. The program is informed that the window or a part of it has to be drawn by the reception of an Expose event.


The drawing of the window content is therefore made inside the loop handling the events. Before entering this loop, the events the application is interested into are selected, in this case with XSelectInput. The event loop waits for an incoming event: if this event is a key press, the application exits; if it is an expose event, the window content is drawn. The function XNextEvent blocks and flushes the output buffer if there is no event in the queue. The event loop is a programming construct that waits for and dispatches events. ...


Other libraries

Xlib does not provide support for buttons, menus, scrollbar, etc. Such widgets are provided by other libraries, which in turn use Xlib. There are two kinds of such libraries: A widget (or control) is an interface component that a computer user interacts with, such as a window or a text box. ...

  • libraries built atop of the Intrinsics library (Xt), which provides support for widgets but does not provide any particular widget; specific widgets are provided by widget set libraries that use Xt, such as Xaw and Motif;
  • libraries that provide widget sets using Xlib directly, without the Xt library, such as GTK+, Qt (X11 version), and FLTK (X11 version).

Applications using any of these widget libraries typically specify the content of the window before entering the main loop and do not need to explicitly handle Expose events and redraw the window content. Intrinsics (also known as Xt, for X toolkit) is a library used in the X Window System. ... Widget is a general-purpose term, or placeholder name, for any unspecified device, including those that have not yet been invented. ... Xaw is short for the Athena widget set, which is a set of widgets to implement simple user interfaces based upon the X Toolkit Intrinsics. ... Screenshot of an application that uses the Open Motif toolkit Motif is a widget toolkit for building graphical user interfaces under the X Window System on Unix and other POSIX-compliant systems. ... GTK+, or the GIMP Toolkit, is one of the two most popular widget toolkits for the X Window System for creating graphical user interfaces. ... For other uses, see Qt. ... The Fast, Light Toolkit (generally pronounced fulltick) is a cross-platform GUI library, developed by Bill Spitzak and others. ...


The XCB library is an alternative to Xlib. Its two main aims are: reduction in library size and direct access to the X11 protocol. A modification of Xlib has been produced to use XCB as a low-level layer. In computing, XCB (X C Binding) is a C language binding for the X Window System. ...


See also

Wikibooks
Wikibooks X Windows Programming has a page on the topic of
XLib

Image File history File links Wikibooks-logo-en. ... Wikibooks logo Wikibooks, previously called Wikimedia Free Textbook Project and Wikimedia-Textbooks, is a wiki for the creation of books. ... GNOME 2. ... The X Window System logo In computing, the X Window System (commonly X11 or X) is a network-transparent windowing system for bitmap displays. ...

External links


  Results from FactBites:
 
Xlib - Wikipedia, the free encyclopedia (1208 words)
Xlib is an X Window System protocol client library in the C programming language.
Xlib appeared around 1985, and is currently used in GUIs for many Unix-like operating systems.
Xlib does not provide support for buttons, menus, scrollbar, etc. Such widgets are provided by other libraries, which in turn use Xlib.
Xlib - C Language X Interface (11864 words)
Xlib is a C subroutine library that application programs (clients) use to interface with the window system by means of a stream connection.
Xlib provides a function to permit the resources owned by a client to survive after the client's connection is closed.
Xlib provides basic ways for creating windows, and toolkits often supply higher-level functions specifically for creating and placing top-level windows, which are discussed in the appropriate toolkit documentation.
  More results at FactBites »


 

COMMENTARY     


Share your thoughts, questions and commentary here
Your name
Your comments
Please enter the 5-letter protection code

Want to know more?
Search encyclopedia, statistics and forums:

 


Lesson Plans | Student Area | Student FAQ | Reviews | Press Releases |  Feeds | Contact
The Wikipedia article included on this page is licensed under the GFDL.
Images may be subject to relevant owners' copyright.
All other elements are (c) copyright NationMaster.com 2003-5. All Rights Reserved.
Usage implies agreement with terms.