15.1 Extensions

The X Window System is based on a core protocol which can be extended to provide new functionality. An extension is generally represented by an additional set of requests or event types that are implemented by an X server supporting the extension. By definition, a client program using an extension may not be portable to other servers. However, extensions allow different server implementations and different sites to add their own special features to X, without disrupting clients that rely only on the core protocol.

Extensions are identified by assigning them unique name strings and major protocol numbers. A client program can request an X server to use a protocol extension by furnishing the extension protocol number as an argument to open-display. The X Consortium maintains a registry of standard extension names and protocol numbers.

The following paragraphs describe the CLX functions used to:



list-extensions display &key (:result-type 'list) Function
        
display
A display.
:result-type
The type of name sequence to return.

Returns a sequence containing the names of all extensions supported by the display server.

names
Type sequence of string.


query-extension display name Function
        
display
A display.
name
An extension name string.

Returns the major-opcode for the given extension name support by the display server. If the extension is not supported, only nil values are returned. The extension name must contain only ISO Latin-1 characters; case is significant.

If the extension involves additional event types, the first-event returned is the base event type code for new events; otherwise, the first-event is nil. If the extension involves additional error codes, the first-error returned is the base code for new errors; otherwise, the first-error is nil. The formats of error and event messages sent by the server are completely defined by the extension.

major-opcode, first-event, first-error
Type card8 or null.