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
-
.window_size ⇒ Object
Queries terminal window size in characters and pixels.
Class Method Details
.window_size ⇒ Object
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 |