diff options
Diffstat (limited to 'src/Xmobar/Config')
-rw-r--r-- | src/Xmobar/Config/Parse.hs | 19 | ||||
-rw-r--r-- | src/Xmobar/Config/Types.hs | 23 |
2 files changed, 24 insertions, 18 deletions
diff --git a/src/Xmobar/Config/Parse.hs b/src/Xmobar/Config/Parse.hs index 41088e9..16af3db 100644 --- a/src/Xmobar/Config/Parse.hs +++ b/src/Xmobar/Config/Parse.hs @@ -16,7 +16,10 @@ ------------------------------------------------------------------------------ -module Xmobar.Config.Parse(readConfig, parseConfig) where +module Xmobar.Config.Parse(readConfig + , parseConfig + , indexedFont + , indexedOffset) where import Text.ParserCombinators.Parsec import Text.ParserCombinators.Parsec.Number (int) @@ -174,3 +177,17 @@ commandsErr = "commands: this usually means that a command could not" ++ readConfig :: Config -> FilePath -> IO (Either ParseError (Config,[String])) readConfig defaultConfig f = liftIO (S.readFile f) <&> parseConfig defaultConfig + +-- | Extracts from a configuration the additional font at the corresponding index. +-- Returns the default font if not present. +indexedFont :: Config -> FontIndex -> String +indexedFont config idx = + if idx < 1 || idx > length (additionalFonts config) + then font config else additionalFonts config !! (idx - 1) + +-- | Extracts from a configuration the offset at the corresponding index. +-- Returns the default offset if not present. +indexedOffset :: Config -> FontIndex -> Int +indexedOffset config idx = + if idx < 1 || idx > length (textOffsets config) + then textOffset config else textOffsets config !! (idx - 1) diff --git a/src/Xmobar/Config/Types.hs b/src/Xmobar/Config/Types.hs index 3f2297f..a448d5d 100644 --- a/src/Xmobar/Config/Types.hs +++ b/src/Xmobar/Config/Types.hs @@ -1,6 +1,6 @@ ----------------------------------------------------------------------------- -- | --- Module : Xmobar.Config +-- Module : Xmobar.Config.Types -- Copyright : (c) Andrea Rossato -- License : BSD-style (see LICENSE) -- @@ -13,12 +13,9 @@ ----------------------------------------------------------------------------- module Xmobar.Config.Types - ( -- * Configuration - -- $config - Config (..) + ( Config (..) , XPosition (..), Align (..), Border (..), TextOutputFormat (..) - , SignalChan (..) - , indexedFont, indexedOffset + , FontIndex, SignalChan (..) ) where import qualified Control.Concurrent.STM as STM @@ -71,19 +68,9 @@ data Config = -- right text alignment , template :: String -- ^ The output template , verbose :: Bool -- ^ Emit additional debug messages - , signal :: SignalChan -- ^ The signal channel used to send signals to xmobar + , signal :: SignalChan -- ^ The signal channel to send signals to xmobar } deriving (Read, Show) -indexedFont :: Config -> Int -> String -indexedFont config idx = - if idx < 1 || idx > length (additionalFonts config) - then font config else additionalFonts config !! (idx - 1) - -indexedOffset :: Config -> Int -> Int -indexedOffset config idx = - if idx < 1 || idx > length (textOffsets config) - then textOffset config else textOffsets config !! (idx - 1) - data XPosition = Top | TopH Int | TopW Align Int @@ -111,6 +98,8 @@ data Border = NoBorder data TextOutputFormat = Plain | Ansi | Pango | Swaybar deriving (Read, Show, Eq) +type FontIndex = Int + newtype SignalChan = SignalChan { unSignalChan :: Maybe (STM.TMVar SignalType) } instance Read SignalChan where |