vty-5.11.2: A simple terminal UI library

Safe HaskellNone




outputForConfig :: Config -> IO Output Source #

Returns a Output for the terminal specified in Config

The specific Output implementation used is hidden from the API user. All terminal implementations are assumed to perform more, or less, the same. Currently, all implementations use terminfo for at least some terminal specific information.

Specifics about it being based on terminfo are hidden from the API user. If a terminal implementation is developed for a terminal without terminfo support then Vty should work as expected on that terminal.

Selection of a terminal is done as follows:

  • If TERM contains "xterm" or "screen", use XTermColor.
  • otherwise use the TerminfoBased driver.

todo add an implementation for windows that does not depend on terminfo. Should be installable with only what is provided in the haskell platform. Use ansi-terminal

setCursorPos :: MonadIO m => Output -> Int -> Int -> m () Source #

Sets the cursor position to the given output column and row.

This is not necessarially the same as the character position with the same coordinates. Characters can be a variable number of columns in width.

Currently, the only way to set the cursor position to a given character coordinate is to specify the coordinate in the Picture instance provided to outputPicture or refresh.

hideCursor :: MonadIO m => Output -> m () Source #

Hides the cursor

showCursor :: MonadIO m => Output -> m () Source #

Shows the cursor

data Output Source #




data DisplayContext Source #




outputPicture :: MonadIO m => DisplayContext -> Picture -> m () Source #

Displays the given Picture.

  1. The image is cropped to the display size.
  2. Converted into a sequence of attribute changes and text spans.
  3. The cursor is hidden.
  4. Serialized to the display.
  5. The cursor is then shown and positioned or kept hidden.

todo: specify possible IO exceptions. abstract from IO monad to a MonadIO instance.