1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108
|
ansi-terminal [](https://github.com/UnkindPartition/ansi-terminal/actions)
=============
A Haskell package providing support for 'ANSI' control character sequences for
terminals on Unix-like operating systems and Windows
Description
-----------
['ANSI' terminal escape code](http://en.wikipedia.org/wiki/ANSI_escape_sequences)
support for Haskell, which allows:
- Colored text output, with control over both foreground and background
colors
- Clearing parts of a line or the screen
- Hiding or showing the cursor
- Moving the cursor around
- Reporting the position of the cursor
- Scrolling the screen up or down
- Switching between the Alternate and Normal Screen Buffers
- Clickable hyperlinks to URIs
- Changing the title of the terminal
If you like this, you may be interested in
[ansi-wl-pprint](http://github.com/batterseapower/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:
- Select Graphic Rendition mode (colors and other attributes): `setSGR`
- Clearing parts of the screen: `clearFromCursorToScreenEnd`,
`clearFromCursorToScreenBeginning`, `clearScreen`,
`clearFromCursorToLineEnd`, `clearFromCursorToLineBeginning` and
`clearLine`
- Cursor visibility changes: `hideCursor` and `showCursor`
- Cursor movement by character: `cursorUp`, `cursorDown`, `cursorForward` and
`cursorBackward`
- Cursor movement by line: `cursorUpLine` and `cursorDownLine`
- Directly changing cursor position: `setCursorColumn` and `setCursorPosition`
- Saving, restoring and reporting cursor position: `saveCursor`,
`restoreCursor` and `reportCursorPosition`
- Scrolling the screen: `scrollPageUp` and `scrollPageDown`
- Changing the title: `setTitle`
Each supported escape code or family of codes has a corresponding
function that comes in three variants:
- A straight `IO` variant that doesn't take a `Handle` and just applies the
escape code to `stdout` and any terminal attached to it
- An `IO` variant similar to above, but which takes a `Handle` to which the
escape code should be applied
- A `String` variant that returns a literal string that should be
included to get the effect of the code.
Example
-------
A full example is
[available](https://github.com/UnkindPartition/ansi-terminal/blob/master/ansi-terminal/app/Example.hs),
but for a taste of how the library works try the following code:
``` haskell
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](http://hackage.haskell.org/packages/archive/ansi-terminal/latest/doc/html/System-Console-ANSI.html).
Credits
-------
The library is originally written by [Max Bolingbroke](https://github.com/batterseapower)
Maintainers
-----------
[Mike Pilgrem](https://github.com/mpilgrem) and [Roman Cheplyaka](https://github.com/UnkindPartition) are the primary maintainers.
[Oliver Charles](https://github.com/ocharles) is the backup maintainer. Please
get in touch with him if the primary maintainers cannot be reached.
|