packages feed

dzen-dhall-1.0.0: src/DzenDhall/App/Forked.hs

module DzenDhall.App.Forked where

import           DzenDhall.AST.Render
import           DzenDhall.App
import           DzenDhall.App.StartingUp
import           DzenDhall.Config
import           DzenDhall.Data
import           DzenDhall.Runtime.Data

import           Lens.Micro
import qualified Data.Text.IO


-- | Update a given 'Bar' forever, trying to do it in a timely manner.
updateForever
  :: Bar Initialized
  -> App Forked ()
updateForever bar = do

  barRuntime <- get

  let barSettings = barRuntime ^. brConfiguration ^. cfgBarSettings

  forkApp do
    timely (barSettings ^. bsUpdateInterval) do
      output <- runRender <$> collectSources bar
      liftIO $ Data.Text.IO.hPutStrLn (barRuntime ^. brHandle) output
      modify $ brFrameCounter +~ 1