Packages
Core behaviours, utilities, events, config, accessibility, and plugin infrastructure for Raxol. Zero external runtime dependencies. Provides BaseManager, event system, plugin lifecycle, keyboard/focus management, and accessibility primitives.
Current section
Files
Jump to
Current section
Files
lib/raxol/core/preferences.ex
defmodule Raxol.Core.Preferences do
@moduledoc """
Manages user preferences and settings for the Raxol terminal UI.
"""
use Raxol.Core.Behaviours.BaseManager
# BaseManager provides start_link/1 with proper option handling
def get_preference(key, default \\ nil) do
GenServer.call(__MODULE__, {:get_preference, key, default})
end
def set_preference(key, value) do
GenServer.call(__MODULE__, {:set_preference, key, value})
end
@impl Raxol.Core.Behaviours.BaseManager
def init_manager(_opts) do
{:ok,
%{
reduced_motion: false,
high_contrast: false,
font_size: :normal
}}
end
@impl Raxol.Core.Behaviours.BaseManager
def handle_manager_call({:get_preference, key, default}, _from, state) do
value = Map.get(state, key, default)
{:reply, value, state}
end
def handle_manager_call({:set_preference, key, value}, _from, state) do
new_state = Map.put(state, key, value)
{:reply, :ok, new_state}
end
end