Back to Projects
TUIX v0.6Beta

Last Updated: 2026-08-14

Core Engine & Terminal Probing

The `tuix.core.core` package manages process-level runtime lifecycle, execution loops, thread synchronization, and scene caching. The `tuix.core.tuix` package provides terminal probing, capability detection, Unicode grapheme cell measurement, and runtime terminal configuration.

Core Engine Lifecycle

FunctionDescriptionPurpose & Return
core.tuix_core_init() -> intInitializes the native engine, registry, and memory pools.Must be called before creating scenes or builders. Returns TUIX_RC_OK (0).
core.tuix_core_shutdown() -> intShuts down the native engine and cleans up registry resources.Call during application exit after stopping listeners.
core.tuix_core_loop_run() -> NoneExecutes one complete frame iteration: input routing, layout resolution, builder updates, compositing, and delta rendering.Core execution step in synchronous application loops.
core.tuix_core_pipeline_tick(scene_name: bytes) -> intRuns a single pipeline tick for a specific scene.Allows custom orchestrators to tick individual scenes without running the full global loop.
core.tuix_core_lock() -> NoneAcquires the global native engine mutex.Guarantees thread safety when mutating scene trees or objects from background worker threads.
core.tuix_core_unlock() -> NoneReleases the global native engine mutex.Releases mutex after thread mutations.
core.tuix_cache_scenes() -> NoneSnapshots active scenes to native cache.Saves scene state before modal scene swaps.
core.tuix_restore_scenes() -> NoneRestores scenes from native cache.Restores previous scene hierarchy.
core.tuix_core_time_now_us() -> intReturns high-resolution monotonic time in microseconds.Used for precise frame timing, profiling, and animations.
core.tuix_core_loop_get_stats() -> dictReturns a detailed dictionary of performance metrics from the last frame execution.Includes frame_counter, batch_commit_ms, buffer_ms, composite_ms, total_ms, traversal_cache_hit, traversal_cache_miss, etc.
core.tuix_mouse_capture_start(uid: int) -> NoneStarts exclusive mouse event capture for a specific widget UID.Directs pointer events exclusively to the capturing widget during dragging.
core.tuix_mouse_capture_stop(uid: int) -> NoneEnds exclusive mouse event capture for a specific widget UID.Releases capture so normal hitmap routing resumes.
core.tuix_mouse_capture_get_uid() -> intReturns UID of widget currently capturing mouse events, or 0.Queries active capture state.

Terminal Probing & Configuration (tuix.core.tuix)

The `tuix.core.tuix` package interacts directly with the terminal emulator to probe supported features (wide character widths, emoji rendering, RGB truecolor, cursor position queries, and ASCII fallback policies).

FunctionDescriptionPurpose
tuix.tuix_terminal_prepare() -> intPrepares terminal for raw mode, enables alternate screen buffer, and disables echo.Initializes terminal environment before starting UI loop.
tuix.tuix_terminal_probe() -> intSends probe escape sequences to detect terminal dimensions, cursor responsiveness, and Unicode capabilities.Dynamically tunes rendering strategies to terminal capabilities.
tuix.tuix_terminal_select_policy() -> intSelects rendering and symbol fallback policy based on probe results.Ensures wide/emoji characters don't corrupt terminal layout.
tuix.tuix_terminal_get_info() -> dictReturns dictionary with detected terminal emulator information, encoding, and probe flags.Diagnostic querying for capabilities and environment.
tuix.tuix_terminal_config_set_probe_mode(mode: int)Configures terminal probing mode (e.g. strict, fast, or disabled).Controls probing overhead during startup.
tuix.tuix_terminal_config_set_ascii_fallback(enabled: bool)Forces ASCII character fallback for box-drawing and borders if terminal lacks Unicode support.Guarantees readable display on legacy terminals.
tuix.tuix_terminal_restore() -> NoneRestores original terminal state, cursor visibility, and exits alternate screen buffer.Must be executed on application exit.

Unicode & Codepoint Probing

FunctionDescription
tuix.tuix_codepoint_cell_width(cp: int) -> intReturns the terminal cell column width (0, 1, or 2) for a given Unicode codepoint.
tuix.tuix_text_cell_count(s: bytes) -> intCalculates total visible cell width of a UTF-8 encoded string.
tuix.tuix_codepoint_is_box(cp: int) -> intReturns non-zero if codepoint is a box-drawing character.
tuix.tuix_codepoint_is_wide(cp: int) -> intReturns non-zero if codepoint occupies 2 terminal cells (East Asian Wide / Fullwidth).
tuix.tuix_codepoint_is_emoji(cp: int) -> intReturns non-zero if codepoint is an emoji glyph.
tuix.tuix_codepoint_is_combining(cp: int) -> intReturns non-zero if codepoint is a zero-width combining mark or diacritic.

Standard Application Boot Sequence

from tuix.core import core, scene, content_builder, input, tuix

# 1. Prepare terminal & probe environment
tuix.tuix_terminal_prepare()
tuix.tuix_terminal_probe()

# 2. Initialize core engine & builders
core.tuix_core_init()
content_builder.tuix_builder_register_standard()

# 3. Setup scenes & input
scene.tuix_scene_init(b'Main')
scene.tuix_scene_select(b'Main')
input.tuix_input_start()

# 4. Main loop execution
while running:
    core.tuix_core_loop_run()

# 5. Clean teardown
input.tuix_input_stop()
core.tuix_core_shutdown()
tuix.tuix_terminal_restore()