diff options
-rw-r--r-- | Commands.hs | 18 | ||||
-rw-r--r-- | Config.hs | 7 | ||||
-rw-r--r-- | Main.hs | 3 | ||||
-rw-r--r-- | Runnable.hs | 4 |
4 files changed, 24 insertions, 8 deletions
diff --git a/Commands.hs b/Commands.hs index 6fcb343..1a80b80 100644 --- a/Commands.hs +++ b/Commands.hs @@ -8,7 +8,13 @@ -- Stability : unstable -- Portability : unportable -- --- A Command datatype for XMobar status bar for the Xmonad Window Manager +-- The 'Exec' class and the 'Command' data type. +-- +-- The 'Exec' class rappresents the executable types, whose constructors may +-- appear in the 'Config.commands' field of the 'Config.Config' data type. +-- +-- The 'Command' data type stores the monitors to be run internally by +-- XMobar. -- ----------------------------------------------------------------------------- @@ -26,6 +32,11 @@ import Monitors.Swap import Monitors.Cpu import Monitors.Batt +class Exec e where + run :: e -> IO String + rate :: e -> Int + alias :: e -> String + data Command = Com Program Args Alias Rate | Weather Station Args Rate | Network Interface Args Rate @@ -42,11 +53,6 @@ type Station = String type Interface = String type Rate = Int -class Exec e where - run :: e -> IO String - rate :: e -> Int - alias :: e -> String - instance Exec Command where alias (Weather s _ _) = s alias (Network i _ _) = i @@ -19,7 +19,6 @@ module Config ( -- * Configuration , runnableTypes ) where - import Commands import {-# SOURCE #-} Runnable @@ -61,5 +60,11 @@ defaultConfig = , template = "Uptime: <fc=#00FF00>%uptime%</fc> ** <fc=#FF0000>%date%</fc> %memory%" } +-- | This is the list of types that can be hidden inside +-- 'Runnable.Runnable', the existential type that stores all commands +-- to be executed by XMobar. It is used by 'Runnable.readRunnable' in +-- the 'Runnable.Runnable' Read instance. To install a plugin just add +-- the plugin's type to the list of types appearing in this function's type +-- signature. runnableTypes :: (Command,()) runnableTypes = undefined @@ -15,7 +15,8 @@ module Main ( -- * Main Stuff -- $main main - , readConfig + , readConfig + , readDefaultConfig ) where import XMobar diff --git a/Runnable.hs b/Runnable.hs index c122eea..96216d0 100644 --- a/Runnable.hs +++ b/Runnable.hs @@ -48,6 +48,10 @@ instance (Read t, Exec t, ReadAsAnyOf ts Runnable) => ReadAsAnyOf (t,ts) Runnabl readAsAnyOf ~(t,ts) = r t `mplus` readAsAnyOf ts where r ty = do { m <- readPrec; return (Run (m `asTypeOf` ty)) } +-- | The 'Prelude.Read' parser for the 'Runnable' existential type. It +-- needs an 'Prelude.undefined' with a type signature containing the +-- list of all possible types hidden within 'Runnable'. See 'Config.runnableTypes'. +-- Each hidden type must have a 'Prelude.Read' instance. readRunnable :: ReadPrec Runnable readRunnable = prec 10 $ do Ident "Run" <- lexP |