Fact-checked by Grok 2 weeks ago

Xlib

Xlib is a low-level C programming library that serves as the primary client-side interface to the protocol, enabling applications to connect to X servers, create and manage windows, handle input events, and perform basic graphics operations in a network-transparent environment. Developed as part of the at MIT's , Xlib originated with the first release of X in 1985 and has evolved through multiple versions, with the latest release being version 1.8.12 as of March 2025, incorporating contributions from organizations like the . It provides over 200 functions, including core routines such as XOpenDisplay for establishing connections to displays, XCreateWindow for generating on-screen windows and off-screen pixmaps, and XNextEvent for processing user input and system notifications. Key features of Xlib emphasize its role in , supporting elements like graphics contexts for , colormaps for color handling, and cursors for pointer visuals, all while maintaining compatibility with the X11 protocol's emphasis on client-server architecture across local or remote networks. As the foundational layer beneath higher-level toolkits like Xt or modern alternatives such as and , Xlib remains essential for direct protocol access in systems, though its use has declined in favor of more abstracted for contemporary graphical application development.

Overview

Definition and Purpose

Xlib, formally known as libX11, is the original C-language client library for the X11 protocol within the . It serves as the foundational interface that allows client applications to communicate with X servers over a network-transparent stream connection, facilitating the creation and management of graphical user interfaces (GUIs). Developed initially at MIT's , Xlib was first released in September 1985 as part of X version 9, providing programmers with direct access to the 's capabilities. Today, it is maintained by the , ensuring ongoing compatibility and updates for modern operating systems. The current version of libX11 is 1.8.12 as of March 2025, with ongoing updates including security fixes. The core purpose of Xlib is to offer low-level access to the , enabling developers to create windows, handle user input from devices such as keyboards and mice, and render basic graphics and text on displays. This makes it essential for building custom in environments where fine-grained control over display resources is required. In practice, Xlib is typically used for direct, low-level programming or as the underlying foundation for higher-level widget toolkits, such as the X Toolkit Intrinsics (Xt) and the toolkit, which abstract its complexities for more structured application development.

Historical Development

Xlib originated as the primary C-language client library for the , developed at the () under in the early 1980s. The project, aimed at integrating computing into education, saw initial work on the X system beginning in 1984, with key contributions from Robert Scheifler of the MIT Laboratory for Computer Science, Jim Gettys of , and Phil Karlton of , who handled the design and implementation of the first ten versions of X. These efforts focused on creating a network-transparent , and Xlib emerged as the interface enabling applications to communicate with X servers. The library's first public release occurred in September 1985 alongside X Version 9, marking the introduction of color support and adoption of the . The transition to X Version 11 in September 1987 solidified Xlib's role, as X11 became the stable protocol version still in use today, with Xlib providing the core API for client-side interactions. Standardization efforts advanced in 1988 with the formation of the X Consortium, a vendor-neutral organization that took over development from MIT to ensure interoperability across systems; this body later evolved into the in 1999, continuing oversight of Xlib and related components. Through the late and early , Xlib underwent iterative releases aligned with X11 updates, emphasizing compatibility and protocol refinements. A significant milestone came with X11 Release 6 (X11R6) in May 1994, which introduced enhanced features, including support for multibyte character sets and locale handling, broadening Xlib's applicability in global environments. Performance concerns with Xlib's synchronous design prompted re-implementation efforts in the mid-2000s; by 2008, with X11R7.4, libX11 was rebuilt as a atop the XCB library, enabling asynchronous operations and multithreading for improved efficiency while maintaining the existing . Direct usage of Xlib has declined since the 1990s with the rise of higher-level toolkits such as and , which abstract its complexities for modern development, and the ongoing shift toward display servers like . Nonetheless, as of 2025, Xlib persists in legacy Unix systems, embedded applications, and compatibility layers like XWayland, ensuring backward compatibility for millions of existing X11 programs.

Technical Foundations

Core Data Types

Xlib defines several fundamental data types that form the basis for interacting with the , encapsulating connections, resources, communication identifiers, and timing information. These types are primarily declared in the header file <X11/Xlib.h>, with additional atom-related definitions in <X11/Xatom.h>. They enable clients to manage server resources efficiently while abstracting low-level protocol details. The structure serves as the central opaque handle for a client's connection to an . It encapsulates all necessary information about the server and its screens, including the state required for communication over the connection. Specifically, it contains the for the connection (accessible via the ConnectionNumber macro), buffers to hold outgoing requests and incoming replies, and a for pending events (with its queryable via the QLength macro). This is returned by functions like XOpenDisplay and remains private to Xlib, with direct access to its members discouraged to maintain portability and encapsulation. Resource identifiers in Xlib are represented by the generic XID type, which is a 32-bit unsigned integer used to uniquely reference server-allocated objects. Examples include Window for graphical windows, Pixmap for off-screen image storage, Colormap for color mappings, Font for text rendering resources, Cursor for pointer shapes, and GC (graphics context) for drawing attributes. The value XNone, defined as 0, represents an invalid or null resource identifier and is guaranteed to differ from any valid XID. These identifiers are allocated dynamically by the server upon request creation, ensuring uniqueness within the client's namespace. The type, also a 32-bit unsigned derived from XID, facilitates inter-client communication by mapping human-readable strings to unique identifiers. Atoms are used primarily for naming properties on windows (such as XA_WM_NAME for the window title), selection types, and other elements like cut buffers or supported features. Predefined atoms, prefixed with XA_ in <X11/Xatom.h>, cover standard conventions, while custom atoms can be interned as needed; this string-to-ID mapping promotes efficiency by avoiding repeated string transmissions over the network. The Time type, an unsigned long , represents timestamps as milliseconds elapsed since the last reset or initialization. It is employed for sequencing events, synchronizing selections, and timestamping operations to resolve ordering ambiguities in distributed scenarios. Due to its 32-bit effective range, Time wraps around after approximately 49.7 days, necessitating careful handling in long-running applications to avoid misinterpretation of relative ordering.

Protocol and Events

The X11 protocol, as implemented through Xlib, is fundamentally asynchronous, enabling efficient client-server communication over a network. When a client calls a function like XCreateWindow, the request is buffered in the client's output queue and transmitted to the , which processes it independently without requiring the client to wait for completion or a reply. This design supports non-blocking operations, allowing clients to issue multiple requests rapidly, though it necessitates explicit synchronization in scenarios where immediate feedback is required. Most of the 128 core protocol requests lack replies and execute asynchronously, with only about one-third generating synchronous responses for data retrieval. Events form a key mechanism for the server to notify clients of state changes or input, delivered asynchronously and queued for retrieval. Core event types encompass input notifications such as KeyPress and KeyRelease for actions, ButtonPress and ButtonRelease for pointer interactions, and exposure like Expose to indicate regions of a that require redrawing due to or resizing. Clients select interest in specific via during window creation or attribute changes, ensuring only relevant notifications are queued. For specialized needs, Xlib supports synthetic through XSendEvent, which injects fabricated directly into the server's propagation path, bypassing normal input sources and useful for automation or inter-client signaling while respecting event and grabs. Due to the asynchronous nature, protocol errors—such as BadWindow, generated when an invalid window identifier is referenced in a request—are also queued by the server and delivered to the client via the event , potentially out of sequence with the offending request. Xlib integrates these errors into the standard event processing flow, where they trigger a client-supplied error handler if set via XSetErrorHandler; otherwise, a default handler prints details and terminates the program. This delayed delivery underscores the importance of periodic checks to detect and address errors promptly. Synchronization in Xlib is managed through functions like XSync, which flushes the client's output buffer to the and blocks until all pending requests are processed, including any associated replies, , or errors. The XSync call takes a discard to optionally clear the input queue of extraneous beforehand, aiding in precise control over protocol state, particularly during debugging or when verifying operation completion. Enabling global synchronous mode via XSynchronize further enforces immediate error reporting by making all requests blocking, though at a performance cost.

Programming Interface

Key Functions

Xlib's programming interface centers on a collection of core functions that enable applications to connect to the , create and manage windows, render graphics, and allocate necessary resources. These functions form the foundational for low-level interaction with the , allowing precise control over display operations while abstracting the underlying protocol details. Connection functions handle the establishment and termination of communication with the . The XOpenDisplay function initiates a connection by specifying a display name, which defaults to the DISPLAY if omitted; it returns a Display pointer representing the or NULL on failure, enabling subsequent Xlib operations. Complementing this, XCloseDisplay closes the specified , freeing associated resources and flushing any pending requests to ensure error reporting. Window management functions provide tools for creating, destroying, and controlling the visibility of . XCreateWindow generates a new window as a child of a window, specifying attributes such as position, size, depth, visual class, and window attributes via a mask; it returns a window ID and generates a CreateNotify event. To remove a window, XDestroyWindow destroys the specified window and all its subwindows, releasing resources and triggering DestroyNotify events for each. Visibility is managed through XMapWindow, which makes the window and its descendants visible if their ancestors are mapped, generating MapNotify and potentially Expose events to prompt redrawing. Graphics primitives offer basic drawing capabilities within drawable objects like windows or pixmaps. The XDrawLine function renders a straight line from one point to another in a drawable, using coordinates and a graphics context to define style and color. For filled shapes, XFillRectangle draws and fills a rectangular area at specified coordinates with given dimensions, applying the foreground color or pattern from the graphics context. Bit-block transfer is handled by XCopyArea, which copies a rectangular region of pixels from a source drawable to a destination drawable, supporting operations like scrolling or image duplication with optional clipping via the graphics context. These primitives may trigger events such as Expose for repainting affected areas. Resource allocation functions support the creation of auxiliary objects essential for rendering. XCreatePixmap allocates an off-screen pixmap of specified width, height, and depth tied to a drawable, returning a pixmap ID for storing independently of windows. Central to drawing operations is XCreateGC, which creates a context associated with a drawable and initializes attributes like line style, fill rule, colors, and clipping masks based on a value mask and structure; the returned GC handle is used in all graphics primitives to apply consistent rendering properties.

Event Handling

Xlib provides mechanisms for applications to retrieve and process events generated by the , such as user input or window changes, through a combination of blocking and non-blocking functions. The primary function for event retrieval is XNextEvent, which blocks the calling process until an event is available in the display's event queue, copies the event into an XEvent structure, and removes it from the queue; it also flushes the output buffer to ensure requests are processed. For non-blocking checks, XCheckMaskEvent searches the event queue and server for events matching a specified event mask, returns a non-zero value if one is found, copies it to an XEvent structure, and removes it from the queue without blocking the application. To receive specific events, applications use XSelectInput to set an event mask for a particular , subscribing it to event types defined as bitmasks in <X11/X.h>. This takes the , the , and the event mask as parameters; for example, KeyPressMask enables notifications for presses, while ExposureMask reports when a window needs redrawing due to . The mask overrides any previous selection for that window, and events propagate to ancestor windows unless suppressed; multiple clients can select the same events with certain restrictions to avoid server overload. Core event types, such as key presses or exposures, are filtered based on these masks before delivery. Events in Xlib are represented by the XEvent structure, a union that accommodates various event-specific variants to optimize storage and access. Common fields across events include type (an integer identifying the event kind), serial (the request serial number), send_event (indicating synthetic events), display (the originating display), and window (the affected window). For keyboard events, the XKeyEvent variant extends this with fields like keycode (the hardware-dependent key identifier), time (a timestamp in milliseconds), and state (a bitmask of modifier states, such as Shift or Control). Selection handling in Xlib facilitates inter-client communication for data transfer, akin to clipboard operations, using atoms to identify selections like PRIMARY or CLIPBOARD. The XGetSelectionOwner function queries the current owner of a selection by returning the window ID (or None if unowned) associated with a given atom on the specified display. To request data, XConvertSelection sends a conversion request to the owner, specifying the selection atom, target format atom, property atom for storage, requestor window, and timestamp; the owner responds by converting and storing the data in the requestor's property or generating a SelectionNotify event. This asynchronous mechanism ensures efficient data exchange without direct client-to-client coupling.

Practical Usage

Basic Example

A basic example of Xlib usage involves creating a simple , handling an event to draw a , and managing the until a key press closes the application. This demonstrates the fundamental steps of connecting to the , creation, event selection, and graphics operations. The following complete program opens a , creates a 300x300 , selects for and KeyPress events, maps the window, and enters an . Upon receiving an event, it fills a 100x100 black at position (100, 100) using a . The program exits on any key press and properly cleans up resources.
c
#include <X11/Xlib.h>
#include <stdio.h>
#include <stdlib.h>

int main(void) {
    Display *display;
    Window window;
    XEvent event;
    GC gc;
    int screen;

    display = XOpenDisplay(NULL);
    if (display == NULL) {
        fprintf(stderr, "Cannot open display\n");
        exit(1);
    }

    screen = DefaultScreen(display);
    window = XCreateSimpleWindow(display, RootWindow(display, screen),
                                 0, 0, 300, 300, 0,
                                 BlackPixel(display, screen),
                                 WhitePixel(display, screen));

    gc = XCreateGC(display, window, 0, NULL);
    XSetForeground(display, gc, BlackPixel(display, screen));

    XSelectInput(display, window, ExposureMask | KeyPressMask);
    XMapWindow(display, window);

    while (1) {
        XNextEvent(display, &event);
        if (event.type == Expose) {
            XFillRectangle(display, window, gc, 100, 100, 100, 100);
        }
        if (event.type == KeyPress) {
            break;
        }
    }

    XFreeGC(display, gc);
    XDestroyWindow(display, window);
    XCloseDisplay(display);
    return 0;
}
To compile this program, use a C such as with the X11 library linked: gcc -o example example.c -lX11. This links against the libX11 library containing the Xlib functions.

Common Patterns

In Xlib programming, the main forms the core of interactive applications, typically structured as a continuous cycle that integrates XNextEvent with custom application logic to respond to user inputs and system notifications. XNextEvent blocks until an event arrives from the queue, copying it into an XEvent structure for processing, which allows the application to remain responsive without busy-waiting. To handle multiple event types efficiently, developers select interests via XSelectInput using event masks (e.g., ExposureMask for redraw requests or ButtonPressMask for mouse clicks), then dispatch based on the event's type field, often employing a to route KeyPress events to input handlers or events to rendering routines. This pattern ensures scalable event-driven design, where application state updates—such as redrawing windows or updating data models—are triggered only by relevant events, promoting efficient resource use across diverse workloads. Error checking in Xlib applications emphasizes robustness against asynchronous failures, commonly achieved through non-blocking queue inspections with XCheckIfEvent or protocol error interception via XSetErrorHandler. XCheckIfEvent scans the event queue for matches against a user-defined predicate function, returning true if a specific (e.g., a ConfigureNotify for window resizing) is found and removing it, enabling proactive handling in tight loops without stalling the main thread. For broader error management, XSetErrorHandler installs a custom callback invoked on X protocol errors like BadWindow or BadAlloc, allowing applications to log details from the XErrorEvent structure, recover where possible (e.g., by recreating invalid resources), and avoid abrupt termination—contrasting the default handler's exit behavior. This dual approach fosters reliable applications that degrade gracefully under server constraints or invalid requests. Effective resource management is critical in Xlib to prevent leaks in long-running applications, particularly involving explicit deallocation of server-side objects like pixmaps and graphics contexts (GCs). Pixmaps, off-screen drawables created via XCreatePixmap, must be freed with XFreePixmap once obsolete, as the server retains until the reference count reaches zero; failing to do so can exhaust server on repeated allocations. Similarly, GCs—defining rendering attributes and obtained through XCreateGC—require XFreeGC to release associated , including component values like line styles or foreground colors, ensuring no dangling identifiers persist after scope exit. Best practices include pairing creation with cleanup in structured code (e.g., using RAII-like wrappers in C++ extensions) and verifying destruction via error checks, which maintains performance in graphics-intensive scenarios like animations or image manipulations. For portability across heterogeneous environments, Xlib applications should query display configurations dynamically, especially when addressing varying screen depths or setups using macros like XScreenNumberOfScreen. This returns the index of a given Screen structure within its , enabling code to iterate over available screens (e.g., via DefaultScreen() for the primary) and select appropriate visuals or depths with XListDepths to match hardware capabilities, such as 8-bit versus 24-bit color support. In contexts, where a single may span multiple physical screens, applications detect the total count with ScreenCount() and adapt window placement or event routing accordingly, avoiding assumptions about single-screen topologies that could fail on distributed X servers. This query-based pattern ensures compatibility with diverse workstation setups without hardcoding resolutions or layouts.

Alternatives

Other X Libraries

The X Toolkit Intrinsics (Xt) serves as a foundational object-oriented layer atop Xlib, enabling developers to create and manage widgets for graphical user interfaces in the . It provides mechanisms for widget instantiation, event dispatching, and resource management, abstracting much of Xlib's low-level protocol handling while allowing for extensible widget sets. Xt forms the basis for prominent widget toolkits such as , which implements the (CDE) look and feel, and Lesstif, an open-source reimplementation of Motif. The Athena Widgets (Xaw), developed by the (MIT) as part of , offer a standard set of basic built on Xt, including buttons, menus, labels, text editors, and scrollbars. These emphasize simplicity and portability, serving as a for widget design in the X Toolkit and supporting straightforward construction without advanced visual styling. Xaw's and composite facilitate common interface elements like dialog boxes and list selections, and it remains available in modern X11 distributions for legacy applications. XView, introduced by in 1988, is an object-oriented toolkit derived from Sun's earlier SunView system, providing a complete framework for building OPEN LOOK-compliant applications on Xlib. It supports high-level abstractions for windows, panels, and canvases through a C-based with object-oriented principles, including inheritance-like extensions for custom components. XView handles event loops, geometry management, and drawing primitives internally, making it suitable for complex desktop applications during the late and 1990s. InterViews, developed at in the late 1980s, is a C++-based graphical interface toolkit that leverages Xlib for rendering and input handling. It emphasizes object-oriented design with classes for interactors (basic UI elements like buttons and sliders), views (layout managers), and sessions (application contexts), allowing for composable and reusable GUI components. InterViews supports advanced features such as constraint-based layout and output, influencing later C++ GUI frameworks. FLTK (Fast Light Toolkit), a cross-platform library, utilizes Xlib as its backend on systems to interface with the . Originating in the , FLTK provides a minimal set of widgets and drawing functions optimized for performance, with its X11 implementation handling display connections, event processing, and graphics contexts directly through Xlib calls. This backend enables FLTK's portability while maintaining low overhead for applications requiring simple, responsive interfaces on X11 environments.

Modern Replacements

The XCB (X protocol C-language Binding) project, initiated in 2001, serves as a modern replacement for Xlib by providing direct access to the X11 protocol without the intermediate buffering layer of Xlib. This design enables lower latency through explicit control over request batching and asynchronous operations, while also offering improved thread-safety for multi-threaded applications. Since version 1.4 in 2010, libX11 has optionally utilized an XCB backend for its , allowing developers to mix Xlib and XCB calls over the same connection and facilitating a gradual transition. Wayland, a display server protocol whose development began in 2008, represents a fundamental shift away from the X11 architecture, aiming to simplify and rendering while enhancing security and performance. Clients interact with Wayland compositors via libwayland, a C library that generates APIs from XML protocol definitions for efficient message encoding and decoding. For backward compatibility, XWayland provides a that translates X11 protocol requests into Wayland equivalents, enabling legacy Xlib-based applications to run on Wayland sessions without modification. In terms of performance, Xlib's request buffering introduces overhead by automatically flushing batches only when responses are needed, potentially causing round-trip delays in remote or high-latency scenarios; for instance, tools like xwininfo exhibit reduced execution times (from over eight minutes to 45 seconds on remote connections) when ported to XCB due to its ability to minimize such flushes. XCB supports zero-copy semantics in protocol handling by avoiding unnecessary data duplication in the client-side buffer, allowing for more efficient direct transmission to the server. Wayland further improves efficiency by eliminating X11's network-transparent model in favor of local compositing, reducing context switches and enabling hardware-accelerated rendering without the overhead of Xlib's legacy abstractions. Wayland addresses key X11 security shortcomings, such as the exposure of global input coordinates that allowed any client to intercept keystrokes or mouse events across applications; instead, input is confined to individual surfaces, preventing unauthorized access and enhancing isolation between clients. As of November 2025, Xlib remains prevalent in legacy applications maintained through on major Linux desktops like and , where GNOME's Mutter compositor has fully dropped native X11 support while preserving XWayland for compatibility. New development predominantly favors XCB for X11-based projects due to its efficiency, or for modern interfaces, with distributions like and defaulting to Wayland sessions and reports indicating over 70% adoption among users as of mid-2025.

References

  1. [1]
    Xlib - C Language X Interface
    Xlib − C Language X Interface is a reference guide to the low-level C language interface to the X Window System protocol. It is neither a tutorial nor a user's ...
  2. [2]
    [PDF] X Window System: The Complete Reference to Xlib, X ... - Digiater.nl
    ... Xlib functions needed for Inter-Client ... Project Athena, Digital), Phil Karlton (Digital ... September 1985, version 9 of X was made publicly ...
  3. [3]
    X.Org
    May 4, 2023 · The X.Org project provides an open source implementation of the X Window System, developed with the freedesktop.org community.Download · X.Org Foundation · Documentation · Releases/7.7
  4. [4]
    3 The Motif Programming Model - O'Reilly
    Xt provides an object-oriented framework for creating reusable, configurable user-interface components called widgets. Motif provides widgets for such common ...
  5. [5]
    2) What is Motif and how does it relate to the X Toolkit and X
    The X Toolkit Intrinsics are built upon the lowest programming level API called "Xlib" (X library). Both Xlib and Xt are specified by the X Consortium (formerly ...
  6. [6]
    [PDF] Xlib − C Language X Interface - X.Org
    The design and implementation of the first 10 versions of X were primarily the work of three individuals: Robert Scheifler of the MIT Laboratory for ...
  7. [7]
    The X Window System, past and future - LWN.net
    Mar 25, 2003 · The first X release, built with support from the company then known as Digital Equipment Corporation, came out of MIT in 1984. By the time X10 ...
  8. [8]
    [PDF] The X Window System, Version 11 - Bitsavers.org
    Dec 10, 1990 · since Xlib did not remember the information. In X11 all information ... ), adopted as a standard after X11's initial release, defines a set of ...
  9. [9]
    X11R1 - X.Org
    Dec 7, 2014 · X11R1 was the first release of the X Window System, Version 11 from MIT. It was released in September 1987, with the following changes excerpted ...
  10. [10]
    XConsortium - X.Org
    Sep 15, 2013 · The X Consortium was an independent, not-for-profit Delaware membership corporation. It was formed in 1993 as the successor to the MIT X Consortium.
  11. [11]
    X11R6 - X.Org
    Dec 7, 2014 · X11R6 was the sixth release of the X Window System, Version 11. It was released in May 1994, with the following changes excerpted from the release notes.
  12. [12]
    The X New Developer's Guide: Xlib and XCB - X.Org
    Jul 14, 2013 · Xlib and XCB, two helper libraries (really sets of libraries) that provide API for talking to the X server.
  13. [13]
    X11R7.4 - X.Org
    X Window System Version 11 Release 7.4. X11R7.4 is an Open Source version of the X Window System that supports Linux, Solaris, and BSD platforms.
  14. [14]
    The X Window System Turns 30 Years Old Today - Phoronix
    Jun 19, 2014 · For most of that 30 year time, the X Window System has been at version 11, a.k.a. X11. Back in 2012 we were celebrating 25 years of X11.Missing: history Xlib
  15. [15]
  16. [16]
  17. [17]
    Event Types - Xlib Programming Manual - Christophe Tronche
    An event type describes a specific event generated by the X server. For each event type, a corresponding constant name is defined in X11/Xh.Missing: core | Show results with:core
  18. [18]
  19. [19]
    XSetErrorHandler - X.Org
    Xlib generally calls the program's supplied error handler whenever an error is received. It is not called on BadName errors from OpenFont, LookupColor, or ...Missing: asynchronous BadWindow
  20. [20]
    XSync - Xlib Programming Manual - Christophe Tronche
    The XSync() function flushes the output buffer and then waits until all requests have been received and processed by the X server.Missing: synchronization | Show results with:synchronization
  21. [21]
  22. [22]
  23. [23]
  24. [24]
  25. [25]
  26. [26]
  27. [27]
  28. [28]
  29. [29]
  30. [30]
  31. [31]
    XNextEvent(3) manual page
    ### Summary of XNextEvent, XCheckMaskEvent, and Related Event Queue Functions
  32. [32]
    XSelectInput(3) manual page
    ### Summary of XSelectInput(3)
  33. [33]
    XAnyEvent(3) manual page
    ### Summary of XEvent and XKeyEvent Structures
  34. [34]
    XSetSelectionOwner(3) manual page - X.Org
    XGetSelectionOwner can generate a BadAtom error. XConvertSelection requests that the specified selection be converted to the specified target type: If the ...Missing: documentation | Show results with:documentation
  35. [35]
  36. [36]
  37. [37]
  38. [38]
  39. [39]
  40. [40]
  41. [41]
  42. [42]
    X Toolkit Intrinsics – C Language Interface - X.Org
    The Intrinsics are a layer on top of Xlib, the C Library X Interface. They extend the fundamental abstractions provided by the X Window System while still ...
  43. [43]
    [PDF] X Toolkit Intrinsics — C Language Interface - X.Org
    A typical application consists of startup code followed by an event loop that reads events and dis- ... multiple events are interpreted as a repeated event. When ...
  44. [44]
    Athena Widget Set - C Language Interface - X.Org
    The Athena widget set is a sample implementation of a widget set built upon the Intrinsics. In the X Toolkit, a widget is the combination of an X window or ...
  45. [45]
    [PDF] Athena Widget Set — C Language Interface - X.Org
    The Athena widget set is a sample implementation of a widget set built upon the Intrinsics. In the X Toolkit, a widget is the combination of an X window or ...
  46. [46]
    Volume 7A: XView Programming Manual - O'Reilly
    XView was developed by Sun Microsystems and is derived from Sun's proprietary programming toolkit, SunView. It is an easy-to-use object-oriented toolkit ...
  47. [47]
    [PDF] XView Developer's Notes - Oracle Help Center
    XView is a user-interface toolkit based on the X Window System and the OPEN. LOOK graphical user interface. It is included in the current Solaris release.Missing: oriented | Show results with:oriented
  48. [48]
    [PDF] Interviews: A C++ Graphical Interface Toolkit - Stanford University
    InterViews is written in C++ and runs on top of the X window system. Key Words and Phrases: User interfaces, window systems, object-oriented programming. Page 3 ...Missing: Xlib | Show results with:Xlib
  49. [49]
    InterViews: A C++ Graphical Interface Toolkit - ResearchGate
    We have implemented an object-oriented user interface package, called InterViews, that supports the composition of a graphical user interface from a set of ...
  50. [50]
    Operating System Issues - FLTK 1.4.4
    This appendix describes the operating system specific interfaces in FLTK: Accessing the OS Interfaces; The Wayland/X11 hybrid library; The UNIX (X11) Interface ...
  51. [51]
    FLTK 1.3.11: Introduction to FLTK
    The Fast Light Tool Kit (FLTK) is a cross-platform C++ GUI toolkit for UNIX®/Linux® (X11), Microsoft® Windows®, and Apple® macOS®.
  52. [52]
    XCB: the X Protocol C Binding - LWN.net
    Sep 27, 2006 · The XCB project aims to replace the Xlib interface to the X Window System: The X protocol C-language Binding (XCB) is a replacement for Xlib ...Missing: reimplemented | Show results with:reimplemented
  53. [53]
    xcb
    Sep 30, 2024 · The X protocol C-language Binding (XCB) is a replacement for Xlib featuring a small footprint, latency hiding, direct access to the protocol, improved ...Tutorial · Index of /dist · Wiki/xcb · XcbApi
  54. [54]
    Wayland
    Wayland is a replacement for the X11 window system protocol and architecture with the aim to be easier to develop, extend, and maintain.Documentation · Wayland architecture · Releases · Chapter 1. Introduction
  55. [55]
    [PDF] How Xlib is Implemented (And What We're Doing About It)
    Aug 13, 2004 · These hooks enable XCB to replace xtrans in a manner transparent to everything other than four Xlib transport-layer source files. 5.2.2 Protocol ...Missing: 2007 | Show results with:2007
  56. [56]
    Wayland Is On Track For A Very Exciting 2025 - Phoronix
    Mar 31, 2025 · Eight new security issues have now been made public around the X.Org Server codebase that also impact XWayland. Hyprland 0.47 is out to begin a ...Missing: Xlib | Show results with:Xlib<|control11|><|separator|>