{-| Module : Hi3Status.Blocks.Clock License : MIT Maintainer : Josh Kirklin (jjvk2@cam.ac.uk) Stability : experimental -} module Hi3Status.Blocks.Clock ( ClockBlock (..) ) where import Hi3Status.Block import Hi3Status.Block.Util import qualified Data.Text as T import Data.Time.Clock import Data.Time.Format import Control.Monad.IO.Class -- | A clock. data ClockBlock = ClockBlock { -- | The format of the clock. Conventions for substitution are those used -- by @strftime@. format :: String } instance Block ClockBlock where runBlock (ClockBlock format) = periodic_ 1000000 $ do t <- liftIO getCurrentTime let s = formatTime defaultTimeLocale format t pushBlockDescription $ emptyBlockDescription { full_text = T.pack s }