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 | 
