terminal-size-0.3.3: Get terminal window height and width
Safe Haskell Safe-Inferred
Language Haskell2010

System.Console.Terminal.Size

Description

Get terminal window height and width without ncurses dependency

Based on answer by Andreas Hammar at http://stackoverflow.com/a/12807521/972985

Synopsis

Documentation

data Window a Source #

Terminal window width and height

Constructors

Window

Fields

Instances

Instances details
Functor Window Source #
Instance details

Defined in System.Console.Terminal.Common

Foldable Window Source #
Instance details

Defined in System.Console.Terminal.Common

Traversable Window Source #
Instance details

Defined in System.Console.Terminal.Common

Eq a => Eq ( Window a) Source #
Instance details

Defined in System.Console.Terminal.Common

Data a => Data ( Window a) Source #
Instance details

Defined in System.Console.Terminal.Common

Methods

gfoldl :: ( forall d b. Data d => c (d -> b) -> d -> c b) -> ( forall g. g -> c g) -> Window a -> c ( Window a) Source #

gunfold :: ( forall b r. Data b => c (b -> r) -> c r) -> ( forall r. r -> c r) -> Constr -> c ( Window a) Source #

toConstr :: Window a -> Constr Source #

dataTypeOf :: Window a -> DataType Source #

dataCast1 :: Typeable t => ( forall d. Data d => c (t d)) -> Maybe (c ( Window a)) Source #

dataCast2 :: Typeable t => ( forall d e. ( Data d, Data e) => c (t d e)) -> Maybe (c ( Window a)) Source #

gmapT :: ( forall b. Data b => b -> b) -> Window a -> Window a Source #

gmapQl :: (r -> r' -> r) -> r -> ( forall d. Data d => d -> r') -> Window a -> r Source #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> ( forall d. Data d => d -> r') -> Window a -> r Source #

gmapQ :: ( forall d. Data d => d -> u) -> Window a -> [u] Source #

gmapQi :: Int -> ( forall d. Data d => d -> u) -> Window a -> u Source #

gmapM :: Monad m => ( forall d. Data d => d -> m d) -> Window a -> m ( Window a) Source #

gmapMp :: MonadPlus m => ( forall d. Data d => d -> m d) -> Window a -> m ( Window a) Source #

gmapMo :: MonadPlus m => ( forall d. Data d => d -> m d) -> Window a -> m ( Window a) Source #

Read a => Read ( Window a) Source #
Instance details

Defined in System.Console.Terminal.Common

Show a => Show ( Window a) Source #
Instance details

Defined in System.Console.Terminal.Common

Generic ( Window a) Source #
Instance details

Defined in System.Console.Terminal.Common

Associated Types

type Rep ( Window a) :: Type -> Type Source #

Generic1 Window Source #
Instance details

Defined in System.Console.Terminal.Common

Associated Types

type Rep1 Window :: k -> Type Source #

type Rep ( Window a) Source #
Instance details

Defined in System.Console.Terminal.Common

type Rep ( Window a) = D1 (' MetaData "Window" "System.Console.Terminal.Common" "terminal-size-0.3.3-DdBLgTpgj4b6SQ72oozdGB" ' False ) ( C1 (' MetaCons "Window" ' PrefixI ' True ) ( S1 (' MetaSel (' Just "height") ' NoSourceUnpackedness ' SourceStrict ' DecidedStrict ) ( Rec0 a) :*: S1 (' MetaSel (' Just "width") ' NoSourceUnpackedness ' SourceStrict ' DecidedStrict ) ( Rec0 a)))
type Rep1 Window Source #
Instance details

Defined in System.Console.Terminal.Common

type Rep1 Window = D1 (' MetaData "Window" "System.Console.Terminal.Common" "terminal-size-0.3.3-DdBLgTpgj4b6SQ72oozdGB" ' False ) ( C1 (' MetaCons "Window" ' PrefixI ' True ) ( S1 (' MetaSel (' Just "height") ' NoSourceUnpackedness ' SourceStrict ' DecidedStrict ) Par1 :*: S1 (' MetaSel (' Just "width") ' NoSourceUnpackedness ' SourceStrict ' DecidedStrict ) Par1 ))

size :: Integral n => IO ( Maybe ( Window n)) Source #

Get terminal window width and height for stdout .

>>> import System.Console.Terminal.Size
>>> size
Just (Window {height = 60, width = 112})

fdSize :: Integral n => Fd -> IO ( Maybe ( Window n)) Source #

Not available on Windows: Get terminal window width and height for a specified file descriptor. If it's not attached to a terminal then Nothing is returned.

>>> import System.Console.Terminal.Size
>>> import System.Posix
>>> fdSize stdOutput
Just (Window {height = 56, width = 85})
>>> fd <- openFd "foo" ReadWrite (Just stdFileMode) defaultFileFlags
>>> fdSize fd
Nothing

hSize :: Integral n => Handle -> IO ( Maybe ( Window n)) Source #

Not available on Windows: Same as fdSize , but takes Handle instead of Fd (file descriptor).

>>> import System.Console.Terminal.Size
>>> import System.IO
>>> hSize stdout
Just (Window {height = 56, width = 85})