vty-5.16: A simple terminal UI library

Safe Haskell | None
Language | Haskell2010

Graphics.Vty.Inline

Description

The inline module provides a limited interface to changing the style of terminal output. The intention is for this interface to be used inline with other output systems.

The changes specified by the InlineM monad are applied to the terminal's display attributes. These display attributes affect the display of all following text output to the terminal file descriptor.

For example, in an IO monad the following code will print the text "Not styled. " Followed by the text " Styled! " drawn over a red background and underlined.

         putStr "Not styled. "
         putAttrChange_ $ do
             backColor red
             applyStyle underline
         putStr " Styled! "
         putAttrChange_ $ defaultAll
         putStrLn "Not styled."

`putAttrChange` emits the control codes to the terminal device attached to `Handle`. This is a duplicate of the `stdout` handle when the `terminalHandle` was (first) acquired. If `stdout` has since been changed then `putStr`, `putStrLn`, `print` etc. will output to a different `Handle` than `putAttrChange`.

Copyright 2009-2010 Corey O'Connor

Synopsis

- type InlineM v = State Attr v
- backColor :: Color -> InlineM ()
- foreColor :: Color -> InlineM ()
- applyStyle :: Style -> InlineM ()
- removeStyle :: Style -> InlineM ()
- defaultAll :: InlineM ()
- putAttrChange :: (Applicative m, MonadIO m) => Output -> InlineM () -> m ()
- putAttrChange_ :: (Applicative m, MonadIO m) => InlineM () -> m ()
- withVty :: (Vty -> IO b) -> IO b

# Documentation

type InlineM v = State Attr v #

backColor :: Color -> InlineM () #

Set the background color to the provided `Color`.

foreColor :: Color -> InlineM () #

Set the foreground color to the provided `Color`.

applyStyle :: Style -> InlineM () #

Attempt to change the `Style` of the following text..

If the terminal does not support the style change then no error is produced. The style can still be removed.

removeStyle :: Style -> InlineM () #

Attempt to remove the specified `Style` from the display of the following text.

This will fail if `applyStyle` for the given style has not been previously called.

defaultAll :: InlineM () #

Reset the display attributes.

putAttrChange :: (Applicative m, MonadIO m) => Output -> InlineM () -> m () #

Apply the provided display attribute changes to the given terminal output device.

This does not flush the terminal.

putAttrChange_ :: (Applicative m, MonadIO m) => InlineM () -> m () #

Apply the provided display attributes changes to the terminal output device.

This will flush the terminal output.

withVty :: (Vty -> IO b) -> IO b #

This will create a Vty instance using `mkVty` and execute an IO action provided that instance. The created Vty instance will be stored to the unsafe `IORef` `globalVty`.

This instance will use duplicates of the stdin and stdout Handles.