Module: ui.backend.x11

Source: ./ui/backend/x11.reef


Overview

ui/backend/x11.reef - X11 window system backend Part of reef-stdlib UI module

This module provides direct X11 window creation and event handling without any toolkit dependencies. It's useful for:

  • Native Linux/BSD desktop applications
  • Custom window managers
  • Games with simple window needs
  • Embedded X11 applications

This backend uses Xlib via C helpers to avoid complex FFI struct handling. For modern graphics, consider using a Wayland backend instead.


Types

X11Error (enum)

Variants:

  • None
  • DisplayNotFound
  • ConnectionFailed
  • WindowCreationFailed
  • InvalidOperation
  • OutOfMemory

X11WindowConfig

Fields:

Name Type
title string
x int
y int
width int
height int
screen int
resizable bool
borderless bool
override_redirect bool

X11Display

Fields:

Name Type
handle pointer
is_open bool

X11Window

Fields:

Name Type
display X11Display
window_id int
gc pointer
width int
height int
x int
y int
is_visible bool
is_open bool

X11EventType (enum)

Variants:

  • None
  • KeyPress
  • KeyRelease
  • ButtonPress
  • ButtonRelease
  • MotionNotify
  • EnterNotify
  • LeaveNotify
  • FocusIn
  • FocusOut
  • Expose
  • ConfigureNotify
  • MapNotify
  • UnmapNotify
  • DestroyNotify
  • ClientMessage

X11Event

Fields:

Name Type
event_type X11EventType
window_id int
x int
y int
width int
height int
button int
keycode int
keysym int
state int

X11DisplayResult (enum)

Variants:

  • Ok(X11Display)
  • Err(X11Error)

X11WindowResult (enum)

Variants:

  • Ok(X11Window)
  • Err(X11Error)

Functions

fn reef_x11_open_display(name: string): pointer

Display operations

fn reef_x11_close_display(display: pointer): int

fn reef_x11_screen_count(display: pointer): int

fn reef_x11_default_screen(display: pointer): int

fn reef_x11_screen_width(display: pointer, screen: int): int

fn reef_x11_screen_height(display: pointer, screen: int): int

fn reef_x11_flush(display: pointer): int

fn reef_x11_sync(display: pointer, discard: int): int

fn reef_x11_create_window(display: pointer, screen: int, x: int, y: int, w: int, h: int, borderless: int, override_redirect: int): int

Window operations

fn reef_x11_destroy_window(display: pointer, window_id: int): int

fn reef_x11_show_window(display: pointer, window_id: int): int

fn reef_x11_hide_window(display: pointer, window_id: int): int

fn reef_x11_move_window(display: pointer, window_id: int, x: int, y: int): int

fn reef_x11_resize_window(display: pointer, window_id: int, w: int, h: int): int

fn reef_x11_set_title(display: pointer, window_id: int, title: string): int

fn reef_x11_raise_window(display: pointer, window_id: int): int

fn reef_x11_lower_window(display: pointer, window_id: int): int

fn reef_x11_create_gc(display: pointer, window_id: int): pointer

Graphics context

fn reef_x11_free_gc(display: pointer, gc: pointer): int

fn reef_x11_set_fg(display: pointer, gc: pointer, r: int, g: int, b: int): int

fn reef_x11_set_bg(display: pointer, gc: pointer, r: int, g: int, b: int): int

fn reef_x11_clear(display: pointer, window_id: int, gc: pointer): int

Drawing operations

fn reef_x11_fill_rect(display: pointer, window_id: int, gc: pointer, x: int, y: int, w: int, h: int): int

fn reef_x11_draw_rect(display: pointer, window_id: int, gc: pointer, x: int, y: int, w: int, h: int): int

fn reef_x11_draw_line(display: pointer, window_id: int, gc: pointer, x1: int, y1: int, x2: int, y2: int): int

fn reef_x11_draw_point(display: pointer, window_id: int, gc: pointer, x: int, y: int): int

fn reef_x11_draw_text(display: pointer, window_id: int, gc: pointer, x: int, y: int, text: string): int

fn reef_x11_pending(display: pointer): int

Event handling

fn reef_x11_poll_event(display: pointer, event_out: pointer): int

fn reef_x11_wait_event(display: pointer, event_out: pointer): int

fn reef_x11_poll_event_simple(display: pointer): int

Simple event functions (no pointer passing needed)

fn reef_x11_wait_event_simple(display: pointer): int

fn reef_x11_last_event_type(): int

fn reef_x11_last_event_window(): int

fn reef_x11_last_event_x(): int

fn reef_x11_last_event_y(): int

fn reef_x11_last_event_width(): int

fn reef_x11_last_event_height(): int

fn reef_x11_last_event_button(): int

fn reef_x11_last_event_keycode(): int

fn reef_x11_last_event_keysym(): int

fn reef_x11_last_event_state(): int

fn x11_open_display(): X11DisplayResult

fn x11_open_display_name(name: string): X11DisplayResult

fn x11_screen_count(display: X11Display): int

fn x11_default_screen(display: X11Display): int

fn x11_screen_width(display: X11Display, screen: int): int

fn x11_screen_height(display: X11Display, screen: int): int

fn x11_window_config_default(): X11WindowConfig

fn x11_window_config(title: string, width: int, height: int): X11WindowConfig

fn x11_create_window(display: X11Display, config: X11WindowConfig): X11WindowResult

fn x11_window_width(win: X11Window): int

fn x11_window_height(win: X11Window): int

fn x11_window_x(win: X11Window): int

fn x11_window_y(win: X11Window): int

fn x11_window_is_visible(win: X11Window): bool

fn x11_window_is_open(win: X11Window): bool

fn x11_pending_events(display: X11Display): int

fn x11_poll_event(display: X11Display): X11Event

fn x11_wait_event(display: X11Display): X11Event

fn event_from_last(): X11Event

Build event from C global state

fn int_to_event_type(t: int): X11EventType

Convert int to X11EventType enum

fn empty_event(): X11Event

fn x11_event_type(ev: X11Event): X11EventType

fn x11_event_window(ev: X11Event): int

fn x11_event_x(ev: X11Event): int

fn x11_event_y(ev: X11Event): int

fn x11_event_button(ev: X11Event): int

fn x11_event_keycode(ev: X11Event): int

fn x11_event_keysym(ev: X11Event): int

fn x11_event_width(ev: X11Event): int

fn x11_event_height(ev: X11Event): int

fn is_display_ok(r: X11DisplayResult): bool

fn is_display_err(r: X11DisplayResult): bool

fn unwrap_display(r: X11DisplayResult): X11Display

fn empty_display(): X11Display

fn display_error(r: X11DisplayResult): X11Error

fn is_window_ok(r: X11WindowResult): bool

fn is_window_err(r: X11WindowResult): bool

fn unwrap_window(r: X11WindowResult): X11Window

fn empty_window(): X11Window

fn window_error(r: X11WindowResult): X11Error


Procedures

proc x11_close_display(display: X11Display)

proc x11_destroy_window(win: X11Window)

proc x11_show_window(win: X11Window)

proc x11_hide_window(win: X11Window)

proc x11_move_window(win: X11Window, x: int, y: int)

proc x11_resize_window(win: X11Window, width: int, height: int)

proc x11_set_title(win: X11Window, title: string)

proc x11_raise_window(win: X11Window)

proc x11_lower_window(win: X11Window)

proc x11_clear(win: X11Window, color: core.Color)

proc x11_fill_rect(win: X11Window, x: int, y: int, w: int, h: int, color: core.Color)

proc x11_draw_rect(win: X11Window, x: int, y: int, w: int, h: int, color: core.Color)

proc x11_draw_line(win: X11Window, x1: int, y1: int, x2: int, y2: int, color: core.Color)

proc x11_draw_point(win: X11Window, x: int, y: int, color: core.Color)

proc x11_blit_image(win: X11Window, img: image.Image, x: int, y: int)

proc x11_draw_text(win: X11Window, x: int, y: int, text: string, color: core.Color)

proc x11_flush(win: X11Window)

proc x11_sync(win: X11Window)


Generated by reefc doc