diff options
| -rw-r--r-- | Config.hs | 3 | ||||
| -rw-r--r-- | NEWS | 4 | ||||
| -rw-r--r-- | Plugins/Monitors.hs | 4 | ||||
| -rw-r--r-- | Plugins/Monitors/Uptime.hs (renamed from Plugins/Uptime.hs) | 35 | ||||
| -rw-r--r-- | README | 15 | 
5 files changed, 35 insertions, 26 deletions
@@ -32,7 +32,6 @@ import Plugins.CommandReader  import Plugins.StdinReader  import Plugins.XMonadLog  import Plugins.EWMH -import Plugins.Uptime  #ifdef INOTIFY  import Plugins.Mail @@ -109,7 +108,7 @@ infixr :*:  -- the 'Runnable.Runnable' Read instance. To install a plugin just add  -- the plugin's type to the list of types (separated by ':*:') appearing in  -- this function's type signature. -runnableTypes :: Command :*: Monitors :*: Date :*: PipeReader :*: CommandReader :*: StdinReader :*: XMonadLog :*: EWMH :*: Uptime :*: +runnableTypes :: Command :*: Monitors :*: Date :*: PipeReader :*: CommandReader :*: StdinReader :*: XMonadLog :*: EWMH :*:  #ifdef INOTIFY                   Mail :*: MBox :*:  #endif @@ -20,8 +20,8 @@ _New features_    - Window borders: configuration options `border` and `borderColor`      allow drawing borders around xmobar's window. -  - New plugin, `Uptime`, showing the system uptime. -  - New Monitor option (`-P`) to enable displaying the `%` sign in +  - New monitor, `Uptime`, showing the system uptime. +  - New monitor argument (`-P`) to enable displaying the `%` sign in      percentages; the sign is now never included by default.    - New 'run once' commands, by specifying a 0 refresh rate in `Run      Com` ([issue 26]). diff --git a/Plugins/Monitors.hs b/Plugins/Monitors.hs index 98949cf..a19f82a 100644 --- a/Plugins/Monitors.hs +++ b/Plugins/Monitors.hs @@ -31,6 +31,7 @@ import Plugins.Monitors.CpuFreq  import Plugins.Monitors.CoreTemp  import Plugins.Monitors.Disk  import Plugins.Monitors.Top +import Plugins.Monitors.Uptime  #ifdef IWLIB  import Plugins.Monitors.Wireless  #endif @@ -53,6 +54,7 @@ data Monitors = Weather  Station    Args Rate                | CoreTemp Args       Rate                | TopProc  Args       Rate                | TopMem   Args       Rate +              | Uptime   Args       Rate  #ifdef IWLIB                | Wireless Interface  Args Rate  #endif @@ -86,6 +88,7 @@ instance Exec Monitors where      alias (CoreTemp   _ _) = "coretemp"      alias (DiskU    _ _ _) = "disku"      alias (DiskIO   _ _ _) = "diskio" +    alias (Uptime     _ _) = "uptime"  #ifdef IWLIB      alias (Wireless i _ _) = i ++ "wi"  #endif @@ -106,6 +109,7 @@ instance Exec Monitors where      start (DiskU    s a r) = runM a          diskUConfig   (runDiskU s)   r      start (DiskIO   s a r) = runM a          diskIOConfig  (runDiskIO s)  r      start (TopMem     a r) = runM a          topMemConfig   runTopMem     r +    start (Uptime     a r) = runM a          uptimeConfig   runUptime     r      start (TopProc    a r) = startTop a r  #ifdef IWLIB      start (Wireless i a r) = runM (a ++ [i]) wirelessConfig runWireless   r diff --git a/Plugins/Uptime.hs b/Plugins/Monitors/Uptime.hs index 6d81acd..453b9ad 100644 --- a/Plugins/Uptime.hs +++ b/Plugins/Monitors/Uptime.hs @@ -1,6 +1,6 @@  ------------------------------------------------------------------------------  -- | --- Module      : Plugins.Uptime +-- Module      : Plugins.Monitors.Uptime  -- Copyright   : (c) 2010 Jose Antonio Ortega Ruiz  -- License     : BSD3-style (see LICENSE)  -- @@ -15,19 +15,15 @@  ------------------------------------------------------------------------------ -module Plugins.Uptime (Uptime(..)) where +module Plugins.Monitors.Uptime (uptimeConfig, runUptime) where -import Plugins +import Plugins.Monitors.Common  import qualified Data.ByteString.Lazy.Char8 as B -data Uptime = Uptime String Int -    deriving (Read, Show) - -instance Exec Uptime where -    alias (Uptime a _) = a -    run   (Uptime _ _) = uptime -    rate  (Uptime _ r) = r +uptimeConfig :: IO MConfig +uptimeConfig = mkMConfig "Up <days>d <hours>h <minutes>m" +                         ["days", "hours", "minutes", "seconds"]  readUptime :: IO Float  readUptime = @@ -36,16 +32,19 @@ readUptime =  secsPerDay :: Integer  secsPerDay = 24 * 3600 -uptime :: IO String +uptime :: Monitor [String]  uptime = do -  t <- readUptime +  t <- io readUptime +  u <- getConfigValue usePercent    let tsecs = floor t        secs = tsecs `mod` secsPerDay        days = tsecs `quot` secsPerDay -      hrs = secs `quot` 3600 +      hours = secs `quot` 3600        mins = (secs `mod` 3600) `div` 60 -      dstr | days == 0 = "" -           | otherwise = show days ++ "d " -      str x | x < 10 = '0':show x -            | otherwise = show x -  return $ dstr ++ str hrs ++ ":" ++ str mins +      ss = secs `mod` 60 +      str x s = if u then show x ++ s else show x +  mapM (`showWithColors'` days) +       [str days "d", str hours "h", str mins "m", str ss "s"] + +runUptime :: [String] -> Monitor String +runUptime _ = uptime >>= parseTemplate @@ -314,6 +314,17 @@ installed by default.  Each monitor has an `alias` to be used in the output template.  Monitors have default aliases. +`Uptime Args RefreshRate` + +- Aliases to `uptime` +- Args: default monitor arguments (see below). The low and high +  thresholds refer to the number of days. +- Variables that can be used with the `-t`/`--template` argument: +  `days`, `hours`, `minutes`, `seconds`. The total uptime is the +  sum of all those fields. You can set the `-P` argument to "True" +  to add units to the display of those numeric fields. +- Default template: `Up: <days>d <hours>h <minutes>m` +  `Weather StationID Args RefreshRate`  - Aliases to the Station ID: so `Weather "LIPB" []` can be used in template as `%LIPB%` @@ -660,10 +671,6 @@ can be used in the output template as `%mydate%`  - Format is a time format string, as accepted by the standard ISO C    `strftime` function (or Haskell's `formatCalendarTime`). -`Uptime Alias RefreshRate` - -- Shows system uptime. -  `CommandReader "/path/to/program" Alias`  - Runs the given program, and displays its standard output.  | 
