packages feed

termbox-1.1.0: src/Termbox/Internal/Size.hs

module Termbox.Internal.Size
  ( Size (..),
    getSize,
  )
where

import GHC.Generics (Generic)
import qualified Termbox.Bindings.Hs

-- | A terminal size.
data Size = Size
  { width :: {-# UNPACK #-} !Int,
    height :: {-# UNPACK #-} !Int
  }
  deriving stock (Eq, Generic, Ord, Show)

-- | Get the current terminal size.
getSize :: IO Size
getSize = do
  width <- Termbox.Bindings.Hs.tb_width
  height <- Termbox.Bindings.Hs.tb_height
  pure Size {width, height}