| 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
Documentation
Terminal window width and height
Instances
| Functor Window # | |||||
| Foldable Window # | |||||
Defined in System.Console.Terminal.Common Methods fold :: Monoid m => Window m -> m # foldMap :: Monoid m => (a -> m) -> Window a -> m # foldMap' :: Monoid m => (a -> m) -> Window a -> m # foldr :: (a -> b -> b) -> b -> Window a -> b # foldr' :: (a -> b -> b) -> b -> Window a -> b # foldl :: (b -> a -> b) -> b -> Window a -> b # foldl' :: (b -> a -> b) -> b -> Window a -> b # foldr1 :: (a -> a -> a) -> Window a -> a # foldl1 :: (a -> a -> a) -> Window a -> a # elem :: Eq a => a -> Window a -> Bool # maximum :: Ord a => Window a -> a # minimum :: Ord a => Window a -> a # | |||||
| Traversable Window # | |||||
| Generic1 Window # | |||||
Defined in System.Console.Terminal.Common Associated Types
| |||||
| Data a => Data (Window a) # | |||||
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) # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Window a) # toConstr :: Window a -> Constr # dataTypeOf :: Window a -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Window a)) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Window a)) # gmapT :: (forall b. Data b => b -> b) -> Window a -> Window a # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Window a -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Window a -> r # gmapQ :: (forall d. Data d => d -> u) -> Window a -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Window a -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Window a -> m (Window a) # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Window a -> m (Window a) # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Window a -> m (Window a) # | |||||
| Generic (Window a) # | |||||
Defined in System.Console.Terminal.Common Associated Types
| |||||
| Read a => Read (Window a) # | |||||
| Show a => Show (Window a) # | |||||
| Eq a => Eq (Window a) # | |||||
| type Rep1 Window # | |||||
Defined in System.Console.Terminal.Common type Rep1 Window = D1 ('MetaData "Window" "System.Console.Terminal.Common" "terminal-size-0.3.4-EKN80GNpQGnBy3a2XJUeTh" 'False) (C1 ('MetaCons "Window" 'PrefixI 'True) (S1 ('MetaSel ('Just "height") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) Par1 :*: S1 ('MetaSel ('Just "width") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) Par1)) | |||||
| type Rep (Window a) # | |||||
Defined in System.Console.Terminal.Common type Rep (Window a) = D1 ('MetaData "Window" "System.Console.Terminal.Common" "terminal-size-0.3.4-EKN80GNpQGnBy3a2XJUeTh" 'False) (C1 ('MetaCons "Window" 'PrefixI 'True) (S1 ('MetaSel ('Just "height") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 a) :*: S1 ('MetaSel ('Just "width") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 a))) | |||||
size :: Integral n => IO (Maybe (Window n)) #
Get terminal window width and height for stdout.
>>>import System.Console.Terminal.Size>>>sizeJust (Window {height = 60, width = 112})
fdSize :: Integral n => Fd -> IO (Maybe (Window n)) #
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 stdOutputJust (Window {height = 56, width = 85})>>>fd <- openFd "foo" ReadWrite (Just stdFileMode) defaultFileFlags>>>fdSize fdNothing
hSize :: Integral n => Handle -> IO (Maybe (Window n)) #
Same as fdSize, but takes Handle instead of Fd (file descriptor).
Note that on Windows with shells that use the native console API (cmd.exe,
PowerShell) this works only for output handles like stdout and stderr;
for input handles like stdin it always returns Nothing.
>>>import System.Console.Terminal.Size>>>import System.IO>>>hSize stdoutJust (Window {height = 56, width = 85})