packages feed

matterhorn-50200.7.0: src/State/Themes.hs

module State.Themes
  (
    listThemes
  , setTheme
  )
where

import           Prelude ()
import           Prelude.MH

import           Brick ( invalidateCache )
import           Brick.Themes ( themeToAttrMap )
import qualified Data.Text as T
import           Lens.Micro.Platform ( (.=) )

import           State.Common
import           Themes
import           Types


listThemes :: MH ()
listThemes = do
    let themeList = T.intercalate "\n" $
                    "Available built-in themes:\n" :
                    (("* " <>) <$> internalThemeName <$> internalThemes)
    postInfoMessage themeList

setTheme :: Text -> MH ()
setTheme name =
    case lookupTheme name of
        Nothing -> listThemes
        Just it -> do
            mh invalidateCache
            csResources.crTheme .= (themeToAttrMap $ internalTheme it)