Module: RatatuiRuby::Backend

Defined in:
lib/ratatui_ruby/backend.rb,
lib/ratatui_ruby/backend/window_size.rb

Overview

Backend abstractions for terminal rendering.

This module contains types related to terminal backend operations. It mirrors upstream Ratatui's backend module structure.

Defined Under Namespace

Classes: WindowSize

Class Method Summary collapse

Class Method Details

.window_sizeObject

Queries terminal window size in characters and pixels.

Some operations need both the character grid and pixel dimensions. Querying them separately wastes syscalls. Most backends fetch both at once anyway.

This method queries crossterm for window dimensions. It returns a Backend::WindowSize with columns_rows and pixels fields, each as Layout::Size instances. Returns nil if the query fails.

Note: Pixel dimensions may be zero on some systems. Unix marks these fields "unused" in TIOCGWINSZ. Windows does not implement them.

Example

--

SPDX-SnippetBegin SPDX-FileCopyrightText: 2026 Kerrick Long SPDX-License-Identifier: MIT-0 ++ ws = RatatuiRuby::Backend.window_size if ws puts "#RatatuiRuby::Backend.wsws.columns_rowsws.columns_rows.widthx#RatatuiRuby::Backend.wsws.columns_rowsws.columns_rows.height chars" puts "#RatatuiRuby::Backend.wsws.pixelsws.pixels.widthx#RatatuiRuby::Backend.wsws.pixelsws.pixels.height pixels" end

SPDX-SnippetEnd ++



44
45
46
47
48
49
50
51
52
53
54
# File 'lib/ratatui_ruby/backend.rb', line 44

def window_size
  window_size = Terminal._terminal_window_size
  return nil unless window_size
  columns, rows, px_width, px_height = window_size
  WindowSize.new(
    columns_rows: Layout::Size.new(width: columns, height: rows),
    pixels: Layout::Size.new(width: px_width, height: px_height)
  )
rescue
  nil
end