Raxol.Terminal.Emulator (Raxol v0.5.0)

View Source

Manages the state of the terminal emulator, including screen buffer, cursor position, attributes, and modes.

Scrollback Limit Configuration

The scrollback buffer limit can be set via application config:

config :raxol, :terminal, scrollback_lines: 1000

Or overridden per emulator instance by passing the :scrollback option to new/3:

Emulator.new(80, 24, scrollback: 2000)

Summary

Functions

See Raxol.Terminal.ScrollbackManager.add_to_scrollback/2.

See Raxol.Core.Runtime.Plugins.Manager.call_hook/4.

See Raxol.Terminal.HyperlinkManager.clear_hyperlink_state/1.

See Raxol.Terminal.State.Manager.clear_saved_states/1.

See Raxol.Terminal.ScrollbackManager.clear_scrollback/1.

See Raxol.Terminal.Tab.Manager.clear_tab_stop/1.

See Raxol.Terminal.ColorManager.color_to_rgb/2.

See Raxol.Terminal.HyperlinkManager.create_hyperlink/4.

See Raxol.Terminal.ColorManager.get_color/2.

See Raxol.Terminal.ColorManager.get_colors/1.

See Raxol.Terminal.State.Manager.get_current_state/1.

See Raxol.Terminal.HyperlinkManager.get_hyperlink_state/1.

See Raxol.Terminal.HyperlinkManager.get_hyperlink_url/1.

See Raxol.Terminal.State.Manager.get_last_col_exceeded/1.

See Raxol.Core.Runtime.Plugins.Manager.get_loaded_plugins/1.

See ModeManager.get_manager/1.

See Raxol.Terminal.Parser.StateManager.get_state/1.

See Raxol.Terminal.Parser.StateManager.get_state_name/1.

See Raxol.Core.Runtime.Plugins.Manager.get_plugin_config/2.

See Raxol.Core.Runtime.Plugins.Manager.get_manager/1.

See Raxol.Terminal.State.Manager.get_saved_states_count/1.

See Raxol.Terminal.State.Manager.get_scroll_region/1.

See Raxol.Terminal.ScrollbackManager.get_scrollback_buffer/1.

See Raxol.Terminal.ScrollbackManager.get_scrollback_limit/1.

See Raxol.Terminal.ScrollbackManager.get_scrollback_range/3.

See Raxol.Terminal.ScrollbackManager.get_scrollback_size/1.

See ModeManager.get_set_modes/1.

See Raxol.Terminal.State.Manager.get_state_stack/1.

See Raxol.Terminal.WindowManager.get_window_state/1.

See Raxol.Terminal.State.Manager.has_saved_states?/1.

See Raxol.Terminal.Parser.StateManager.in_control_sequence_state?/1.

See Raxol.Terminal.Parser.StateManager.in_escape_state?/1.

See Raxol.Terminal.Parser.StateManager.in_ground_state?/1.

See Raxol.Core.Runtime.Plugins.Manager.initialize_plugin/3.

See ModeManager.mode_set?/2.

See Raxol.Terminal.Cursor.Manager.move_to/4.

See Raxol.Terminal.Cursor.Manager.move_to/4.

Creates a new terminal emulator instance.

See Raxol.Core.Runtime.Plugins.Manager.plugin_loaded?/2.

Processes input from the user, handling both regular characters and escape sequences. Delegates to Raxol.Terminal.InputHandler.process_terminal_input/2.

See ModeManager.reset_all_modes/1.

See Raxol.Terminal.ColorManager.reset_colors/1.

See ModeManager.reset_mode/2.

See Raxol.Terminal.Parser.StateManager.reset_to_ground/1.

See Raxol.Terminal.State.Manager.reset_to_initial_state/1.

Resizes the emulator's screen buffers.

See ModeManager.restore_modes/1.

See Raxol.Terminal.State.Manager.restore_state/1.

See Raxol.Terminal.WindowManager.restore_window_size/1.

See ModeManager.save_modes/1.

See Raxol.Terminal.State.Manager.save_state/1.

See Raxol.Terminal.WindowManager.save_window_size/1.

See Raxol.Terminal.ScrollbackManager.scrollback_empty?/1.

Sets the character set for the specified G-set. Returns {:ok, updated_emulator} or {:error, reason}.

See Raxol.Terminal.ColorManager.set_color/3.

See Raxol.Terminal.ColorManager.set_colors/2.

See Raxol.Terminal.Cursor.Manager.move_to/4.

See Raxol.Terminal.WindowManager.set_icon_name/2.

See ModeManager.set_mode/2.

See Raxol.Terminal.Parser.StateManager.set_state_name/2.

See Raxol.Terminal.ScrollbackManager.set_scrollback_limit/2.

See Raxol.Terminal.WindowManager.set_stacking_order/2.

See Raxol.Terminal.WindowManager.set_window_position/3.

See Raxol.Terminal.WindowManager.set_window_size/3.

See Raxol.Terminal.WindowManager.set_window_title/2.

See Raxol.Core.Runtime.Plugins.Manager.unload_plugin/2.

Updates the currently active screen buffer.

See Raxol.Terminal.State.Manager.update_current_state/2.

See Raxol.Terminal.HyperlinkManager.update_hyperlink_state/2.

See Raxol.Terminal.HyperlinkManager.update_hyperlink_url/2.

See Raxol.Terminal.State.Manager.update_last_col_exceeded/2.

See ModeManager.update_manager/2.

See Raxol.Terminal.Parser.StateManager.update_state/2.

See Raxol.Core.Runtime.Plugins.Manager.update_plugin_config/3.

See Raxol.Core.Runtime.Plugins.Manager.update_manager/2.

See Raxol.Terminal.State.Manager.update_scroll_region/2.

See Raxol.Terminal.State.Manager.update_state_stack/2.

Writes data to the terminal output.

Writes output to the terminal.

Types

cursor_style_type()

@type cursor_style_type() ::
  :blinking_block
  | :steady_block
  | :blinking_underline
  | :steady_underline
  | :blinking_bar
  | :steady_bar

t()

Functions

add_to_history(emulator, command)

See Raxol.Terminal.Command.Manager.add_to_history/2.

add_to_scrollback(emulator, line)

See Raxol.Terminal.ScrollbackManager.add_to_scrollback/2.

apply_single_shift(emulator, g_set)

See Raxol.Terminal.CharsetManager.apply_single_shift/2.

attribute_set?(emulator, attribute)

See Raxol.Terminal.FormattingManager.attribute_set?/2.

call_plugin_hook(emulator, plugin_name, hook_name, args)

See Raxol.Core.Runtime.Plugins.Manager.call_hook/4.

clear_all_tab_stops(emulator)

See Raxol.Terminal.Tab.Manager.clear_all_tab_stops/1.

clear_history(emulator)

See Raxol.Terminal.Command.Manager.clear_history/1.

clear_output_buffer(emulator)

See Raxol.Terminal.OutputManager.clear_output_buffer/1.

clear_saved_states(emulator)

See Raxol.Terminal.State.Manager.clear_saved_states/1.

clear_scrollback(emulator)

See Raxol.Terminal.ScrollbackManager.clear_scrollback/1.

clear_tab_stop(emulator)

See Raxol.Terminal.Tab.Manager.clear_tab_stop/1.

color_to_rgb(emulator, index)

See Raxol.Terminal.ColorManager.color_to_rgb/2.

create_hyperlink(emulator, url, id, params)

See Raxol.Terminal.HyperlinkManager.create_hyperlink/4.

designate_charset(emulator, g_set, charset)

See Raxol.Terminal.CharsetManager.designate_charset/3.

enqueue_control_sequence(emulator, sequence)

See Raxol.Terminal.OutputManager.enqueue_control_sequence/2.

enqueue_output(emulator, output)

See Raxol.Terminal.OutputManager.enqueue_output/2.

flush_output(emulator)

See Raxol.Terminal.OutputManager.flush_output/1.

get_active_buffer(emulator)

Callback implementation for Raxol.Terminal.EmulatorBehaviour.get_active_buffer/1.

get_background(emulator)

See Raxol.Terminal.FormattingManager.get_background/1.

get_buffer_type(emulator)

See Raxol.Terminal.ScreenManager.get_buffer_type/1.

get_charset_state(emulator)

See Raxol.Terminal.CharsetManager.get_state/1.

get_color(emulator, index)

See Raxol.Terminal.ColorManager.get_color/2.

get_colors(emulator)

See Raxol.Terminal.ColorManager.get_colors/1.

get_command_buffer(emulator)

See Raxol.Terminal.Command.Manager.get_command_buffer/1.

get_command_history(emulator)

See Raxol.Terminal.Command.Manager.get_command_history/1.

get_current_g_set(emulator)

See Raxol.Terminal.CharsetManager.get_current_g_set/1.

get_current_state(emulator)

See Raxol.Terminal.State.Manager.get_current_state/1.

get_cursor_blink(pid \\ __MODULE__)

get_cursor_position(emulator)

Callback implementation for Raxol.Terminal.EmulatorBehaviour.get_cursor_position/1.

get_cursor_style(pid \\ __MODULE__)

get_cursor_visibility(pid \\ __MODULE__)

get_designated_charset(emulator, g_set)

See Raxol.Terminal.CharsetManager.get_designated_charset/2.

get_foreground(emulator)

See Raxol.Terminal.FormattingManager.get_foreground/1.

get_history_command(emulator, index)

See Raxol.Terminal.Command.Manager.get_history_command/2.

get_last_col_exceeded(emulator)

See Raxol.Terminal.State.Manager.get_last_col_exceeded/1.

get_last_key_event(emulator)

See Raxol.Terminal.Command.Manager.get_last_key_event/1.

get_loaded_plugins(emulator)

See Raxol.Core.Runtime.Plugins.Manager.get_loaded_plugins/1.

get_mode_manager(emulator)

See ModeManager.get_manager/1.

get_next_tab_stop(emulator)

See Raxol.Terminal.Tab.Manager.get_next_tab_stop/1.

get_output_buffer(emulator)

See Raxol.Terminal.OutputManager.get_output_buffer/1.

get_parser_state(emulator)

See Raxol.Terminal.Parser.StateManager.get_state/1.

get_parser_state_name(emulator)

See Raxol.Terminal.Parser.StateManager.get_state_name/1.

get_plugin_config(emulator, plugin_name)

See Raxol.Core.Runtime.Plugins.Manager.get_plugin_config/2.

get_plugin_manager(emulator)

See Raxol.Core.Runtime.Plugins.Manager.get_manager/1.

get_saved_states_count(emulator)

See Raxol.Terminal.State.Manager.get_saved_states_count/1.

get_scroll_region(emulator)

See Raxol.Terminal.State.Manager.get_scroll_region/1.

get_scrollback_buffer(emulator)

See Raxol.Terminal.ScrollbackManager.get_scrollback_buffer/1.

get_scrollback_limit(emulator)

See Raxol.Terminal.ScrollbackManager.get_scrollback_limit/1.

get_scrollback_range(emulator, start, count)

See Raxol.Terminal.ScrollbackManager.get_scrollback_range/3.

get_scrollback_size(emulator)

See Raxol.Terminal.ScrollbackManager.get_scrollback_size/1.

get_set_attributes(emulator)

See Raxol.Terminal.FormattingManager.get_set_attributes/1.

get_set_modes(emulator)

See ModeManager.get_set_modes/1.

get_single_shift(emulator)

See Raxol.Terminal.CharsetManager.get_single_shift/1.

get_state_stack(emulator)

See Raxol.Terminal.State.Manager.get_state_stack/1.

get_style(emulator)

See Raxol.Terminal.FormattingManager.get_style/1.

get_window_state(emulator)

See Raxol.Terminal.WindowManager.get_window_state/1.

has_saved_states?(emulator)

See Raxol.Terminal.State.Manager.has_saved_states?/1.

in_control_sequence_state?(emulator)

See Raxol.Terminal.Parser.StateManager.in_control_sequence_state?/1.

in_escape_state?(emulator)

See Raxol.Terminal.Parser.StateManager.in_escape_state?/1.

in_ground_state?(emulator)

See Raxol.Terminal.Parser.StateManager.in_ground_state?/1.

index(emulator)

See Raxol.Terminal.Buffer.Operations.index/1.

initialize_buffers(width, height, scrollback_limit)

See Raxol.Terminal.ScreenManager.initialize_buffers/3.

initialize_plugin(emulator, plugin_name, config)

See Raxol.Core.Runtime.Plugins.Manager.initialize_plugin/3.

invoke_g_set(emulator, g_set)

See Raxol.Terminal.CharsetManager.invoke_g_set/2.

maybe_scroll(emulator)

See Raxol.Terminal.Buffer.Operations.maybe_scroll/1.

mode_set?(emulator, mode)

See ModeManager.mode_set?/2.

move_cursor(pid \\ __MODULE__, direction, count \\ 1)

move_cursor_down(emulator, lines \\ 1, width, height)

See Raxol.Terminal.Cursor.Manager.move_down/4.

move_cursor_left(emulator, columns \\ 1, width, height)

See Raxol.Terminal.Cursor.Manager.move_left/4.

move_cursor_right(emulator, columns \\ 1, width, height)

See Raxol.Terminal.Cursor.Manager.move_right/4.

move_cursor_to(emulator, position, width, height)

See Raxol.Terminal.Cursor.Manager.move_to/4.

move_cursor_to_column(emulator, column, width, height)

See Raxol.Terminal.Cursor.Manager.move_to/4.

move_cursor_to_line_start(emulator)

See Raxol.Terminal.Cursor.Manager.move_to_line_start/1.

move_cursor_up(emulator, lines \\ 1, width, height)

See Raxol.Terminal.Cursor.Manager.move_up/4.

new()

Creates a new terminal emulator instance.

Can be called with:

  • new(opts_map) where opts_map is a map containing :width, :height, and other options.
  • new(width, height, opts_keyword_list)
  • new(width, height, session_id, client_options) (delegates to the keyword list version)

Options (Keyword list or Map)

  • :width - Terminal width (default: 80)
  • :height - Terminal height (default: 24)
  • :scrollback - Maximum number of scrollback lines (default: from config or 1000)
  • :memorylimit - Memory limit (default: 1_000_000)
  • :max_command_history - Max command history (default: 100)
  • :plugin_manager - A pre-initialized Raxol.Plugins.Manager.Core struct.
  • :session_id - A session identifier string.
  • :client_options - A map of client-specific options.

next_line(emulator)

See Raxol.Terminal.Buffer.Operations.next_line/1.

plugin_loaded?(emulator, plugin_name)

See Raxol.Core.Runtime.Plugins.Manager.plugin_loaded?/2.

process_input(emulator, input)

@spec process_input(t(), String.t()) :: {t(), String.t()}

Processes input from the user, handling both regular characters and escape sequences. Delegates to Raxol.Terminal.InputHandler.process_terminal_input/2.

process_key_event(emulator, key_event)

See Raxol.Terminal.Command.Manager.process_key_event/2.

reset_all_attributes(emulator)

See Raxol.Terminal.FormattingManager.reset_all_attributes/1.

reset_all_modes(emulator)

See ModeManager.reset_all_modes/1.

reset_attribute(emulator, attribute)

See Raxol.Terminal.FormattingManager.reset_attribute/2.

reset_charset_state(emulator)

See Raxol.Terminal.CharsetManager.reset_state/1.

reset_colors(emulator)

See Raxol.Terminal.ColorManager.reset_colors/1.

reset_mode(emulator, mode)

See ModeManager.reset_mode/2.

reset_parser_to_ground(emulator)

See Raxol.Terminal.Parser.StateManager.reset_to_ground/1.

reset_to_initial_state(emulator)

See Raxol.Terminal.State.Manager.reset_to_initial_state/1.

resize(emulator, new_width, new_height)

@spec resize(
  t(),
  non_neg_integer(),
  non_neg_integer()
) :: t()

Resizes the emulator's screen buffers.

Parameters

  • emulator - The emulator to resize
  • new_width - New width in columns
  • new_height - New height in rows

Returns

Updated emulator with resized buffers

resize_buffers(emulator, new_width, new_height)

See Raxol.Terminal.ScreenManager.resize_buffers/3.

restore_modes(emulator)

See ModeManager.restore_modes/1.

restore_state(emulator)

See Raxol.Terminal.State.Manager.restore_state/1.

restore_window_size(emulator)

See Raxol.Terminal.WindowManager.restore_window_size/1.

reverse_index(emulator)

See Raxol.Terminal.Buffer.Operations.reverse_index/1.

save_modes(emulator)

See ModeManager.save_modes/1.

save_state(emulator)

See Raxol.Terminal.State.Manager.save_state/1.

save_window_size(emulator)

See Raxol.Terminal.WindowManager.save_window_size/1.

scrollback_empty?(emulator)

See Raxol.Terminal.ScrollbackManager.scrollback_empty?/1.

search_history(emulator, prefix)

See Raxol.Terminal.Command.Manager.search_history/2.

set_attribute(emulator, attribute)

See Raxol.Terminal.FormattingManager.set_attribute/2.

set_background(emulator, color)

See Raxol.Terminal.FormattingManager.set_background/2.

set_buffer_type(emulator, type)

See Raxol.Terminal.ScreenManager.set_buffer_type/2.

set_charset(emulator, charset)

Sets the character set for the specified G-set. Returns {:ok, updated_emulator} or {:error, reason}.

set_color(emulator, index, color)

See Raxol.Terminal.ColorManager.set_color/3.

set_colors(emulator, colors)

See Raxol.Terminal.ColorManager.set_colors/2.

set_cursor_blink(pid \\ __MODULE__, blink)

set_cursor_position(pid \\ __MODULE__, arg)

set_cursor_position(emulator, position, width, height)

See Raxol.Terminal.Cursor.Manager.move_to/4.

set_cursor_style(pid \\ __MODULE__, style)

set_cursor_visibility(pid \\ __MODULE__, visible)

set_foreground(emulator, color)

See Raxol.Terminal.FormattingManager.set_foreground/2.

set_horizontal_tab(emulator)

See Raxol.Terminal.Tab.Manager.set_horizontal_tab/1.

set_icon_name(emulator, name)

See Raxol.Terminal.WindowManager.set_icon_name/2.

set_mode(emulator, mode)

See ModeManager.set_mode/2.

set_parser_state_name(emulator, state_name)

See Raxol.Terminal.Parser.StateManager.set_state_name/2.

set_scrollback_limit(emulator, limit)

See Raxol.Terminal.ScrollbackManager.set_scrollback_limit/2.

set_stacking_order(emulator, order)

See Raxol.Terminal.WindowManager.set_stacking_order/2.

set_window_position(emulator, x, y)

See Raxol.Terminal.WindowManager.set_window_position/3.

set_window_size(emulator, width, height)

See Raxol.Terminal.WindowManager.set_window_size/3.

set_window_title(emulator, title)

See Raxol.Terminal.WindowManager.set_window_title/2.

start_link(opts \\ [])

switch_buffer(emulator)

See Raxol.Terminal.ScreenManager.switch_buffer/1.

unload_plugin(emulator, plugin_name)

See Raxol.Core.Runtime.Plugins.Manager.unload_plugin/2.

update_active_buffer(emulator, new_buffer)

@spec update_active_buffer(
  t(),
  Raxol.Terminal.ScreenBuffer.t()
) :: t()

Updates the currently active screen buffer.

update_charset_state(emulator, charset_state)

See Raxol.Terminal.CharsetManager.update_state/2.

update_command_buffer(emulator, buffer)

See Raxol.Terminal.Command.Manager.update_command_buffer/2.

update_current_state(emulator, state)

See Raxol.Terminal.State.Manager.update_current_state/2.

update_last_col_exceeded(emulator, last_col_exceeded)

See Raxol.Terminal.State.Manager.update_last_col_exceeded/2.

update_last_key_event(emulator, event)

See Raxol.Terminal.Command.Manager.update_last_key_event/2.

update_mode_manager(emulator, mode_manager)

See ModeManager.update_manager/2.

update_parser_state(emulator, state)

See Raxol.Terminal.Parser.StateManager.update_state/2.

update_plugin_config(emulator, plugin_name, config)

See Raxol.Core.Runtime.Plugins.Manager.update_plugin_config/3.

update_plugin_manager(emulator, manager)

See Raxol.Core.Runtime.Plugins.Manager.update_manager/2.

update_scroll_region(emulator, scroll_region)

See Raxol.Terminal.State.Manager.update_scroll_region/2.

update_state_stack(emulator, state_stack)

See Raxol.Terminal.State.Manager.update_state_stack/2.

update_style(emulator, style)

See Raxol.Terminal.FormattingManager.update_style/2.

write(emulator, data)

@spec write(t(), String.t()) :: t()

Writes data to the terminal output.

write_to_output(emulator, output)

@spec write_to_output(t(), String.t()) :: t()

Writes output to the terminal.