-- | Collection of utilities to make @wybor@ customization palatable -- -- Those are mostly thin wrappers over things in "System.Console.ANSI" from @ansi-terminal@ module Ansi ( reset , bold , regular , underlining , swap , unswap , fgcolor , bgcolor , Ansi.Underlining(..) , Ansi.ColorIntensity(..) , Ansi.Color(..) ) where import Data.Text (Text) import qualified Data.Text as Text import qualified System.Console.ANSI as Ansi -- | Sets all attributes off reset :: Text reset = sgr Ansi.Reset -- | Set bold font style bold :: Text bold = sgr (Ansi.SetConsoleIntensity Ansi.BoldIntensity) -- | Set regular font style regular :: Text regular = sgr (Ansi.SetConsoleIntensity Ansi.NormalIntensity) -- | Set underlining style underlining :: Ansi.Underlining -> Text underlining = sgr . Ansi.SetUnderlining -- | Swap foreground and background colors swap :: Text swap = sgr (Ansi.SetSwapForegroundBackground True) -- | Unswap foreground and background colors unswap :: Text unswap = sgr (Ansi.SetSwapForegroundBackground False) -- | Set foreground color fgcolor :: Ansi.ColorIntensity -> Ansi.Color -> Text fgcolor i c = sgr (Ansi.SetColor Ansi.Foreground i c) -- | Set background color bgcolor :: Ansi.ColorIntensity -> Ansi.Color -> Text bgcolor i c = sgr (Ansi.SetColor Ansi.Background i c) sgr :: Ansi.SGR -> Text sgr = Text.pack . Ansi.setSGRCode . return