Home

Awesome

ansi-terminal and ansi-terminal-types GitHub CI

Haskell packages together providing support for 'ANSI' control character sequences for terminals on Unix-like operating systems and Windows

Description

'ANSI' terminal escape code support for Haskell, which allows:

If you like this, you may be interested in ansi-wl-pprint, which provides a pretty-printer that can construct strings containing 'ANSI' colorisation.

Not all 'ANSI' escape codes are suported by this library but most (if not all) of the popular ones that are well-supported by terminal software are, including:

Each supported escape code or family of codes has a corresponding function that comes in three variants:

Example

A full example is available, but for a taste of how the library works try the following code:

import System.Console.ANSI
import System.IO (stdout)

main :: IO ()
main = do
  stdoutSupportsANSI <- hNowSupportsANSI stdout
  if stdoutSupportsANSI
    then do
      setCursorPosition 5 0
      setTitle "ANSI Terminal Short Example"

      setSGR [ SetConsoleIntensity BoldIntensity
             , SetColor Foreground Vivid Red
             ]
      putStr "Hello"

      setSGR [ SetConsoleIntensity NormalIntensity
             , SetColor Foreground Vivid White
             , SetColor Background Dull Blue
             ]
      putStrLn "World!"
    else
      putStrLn "Standard output does not support 'ANSI' escape codes."

Documentation

Haddock documentation is available at Hackage (ansi-terminal) and (ansi-terminal-types).

Credits

The library was originally written by Max Bolingbroke

Maintainers

Mike Pilgrem and Roman Cheplyaka are the primary maintainers.

Oliver Charles is the backup maintainer. Please get in touch with him if the primary maintainers cannot be reached.