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:
NoneDisplayNotFoundConnectionFailedWindowCreationFailedInvalidOperationOutOfMemory
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:
NoneKeyPressKeyReleaseButtonPressButtonReleaseMotionNotifyEnterNotifyLeaveNotifyFocusInFocusOutExposeConfigureNotifyMapNotifyUnmapNotifyDestroyNotifyClientMessage
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