diff options
| author | Jose Antonio Ortega Ruiz <jao@gnu.org> | 2010-12-12 22:01:12 +0100 | 
|---|---|---|
| committer | Jose Antonio Ortega Ruiz <jao@gnu.org> | 2010-12-12 22:01:12 +0100 | 
| commit | 52be04baa703cb5c0263aecb61f0079230367cd0 (patch) | |
| tree | a1503d98651867fb2de3bdabaadc41a316757717 | |
| parent | dc4712688986edd9a3f272858b91b94badf2560d (diff) | |
| download | xmobar-52be04baa703cb5c0263aecb61f0079230367cd0.tar.gz xmobar-52be04baa703cb5c0263aecb61f0079230367cd0.tar.bz2  | |
New plugin: Uptime
| -rw-r--r-- | Config.hs | 3 | ||||
| -rw-r--r-- | NEWS | 7 | ||||
| -rw-r--r-- | Plugins/Date.hs | 2 | ||||
| -rw-r--r-- | Plugins/Uptime.hs | 51 | ||||
| -rw-r--r-- | README | 12 | 
5 files changed, 66 insertions, 9 deletions
@@ -32,6 +32,7 @@ import Plugins.CommandReader  import Plugins.StdinReader  import Plugins.XMonadLog  import Plugins.EWMH +import Plugins.Uptime  #ifdef INOTIFY  import Plugins.Mail @@ -108,7 +109,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 :*: +runnableTypes :: Command :*: Monitors :*: Date :*: PipeReader :*: CommandReader :*: StdinReader :*: XMonadLog :*: EWMH :*: Uptime :*:  #ifdef INOTIFY                   Mail :*: MBox :*:  #endif @@ -20,13 +20,14 @@ _New features_    - Window borders: configuration options `border` and `borderColor`      allow drawing borders around xmobar's window. -  - MPD: updated to libmpd 1.5. New fields `ppos` (playlist position) -    and `remaining` (remaining time). New configuration options to -    specify MPD's host, user name and password. +  - New plugin, `Uptime`, showing the system uptime.    - New Monitor option (`-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]). +  - MPD monitor: updated to libmpd 1.5. New fields `ppos` (playlist +    position) and `remaining` (remaining time). New configuration +    options to specify MPD's host, user name and password.    - Battery monitor: new `watts` and `timeleft` fields (Petr Rockai),      and specific arguments to control coloring and thresholds of the      former. diff --git a/Plugins/Date.hs b/Plugins/Date.hs index a4ed80f..bfcb132 100644 --- a/Plugins/Date.hs +++ b/Plugins/Date.hs @@ -16,7 +16,7 @@  --  ----------------------------------------------------------------------------- -module Plugins.Date where +module Plugins.Date (Date(..)) where  import Plugins diff --git a/Plugins/Uptime.hs b/Plugins/Uptime.hs new file mode 100644 index 0000000..6d81acd --- /dev/null +++ b/Plugins/Uptime.hs @@ -0,0 +1,51 @@ +------------------------------------------------------------------------------ +-- | +-- Module      : Plugins.Uptime +-- Copyright   : (c) 2010 Jose Antonio Ortega Ruiz +-- License     : BSD3-style (see LICENSE) +-- +-- Maintainer  : jao@gnu.org +-- Stability   : unstable +-- Portability : unportable +-- Created: Sun Dec 12, 2010 20:26 +-- +-- +-- Uptime +-- +------------------------------------------------------------------------------ + + +module Plugins.Uptime (Uptime(..)) where + +import Plugins + +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 + +readUptime :: IO Float +readUptime = +  fmap (read . B.unpack . head . B.words) (B.readFile "/proc/uptime") + +secsPerDay :: Integer +secsPerDay = 24 * 3600 + +uptime :: IO String +uptime = do +  t <- readUptime +  let tsecs = floor t +      secs = tsecs `mod` secsPerDay +      days = tsecs `quot` secsPerDay +      hrs = 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 @@ -298,8 +298,8 @@ date plugin. These plugins install the following internal commands:  `Weather`, `Network`, `Wireless` (optional), `Memory`, `Swap`, `Cpu`,  `MultiCpu`, `Battery`, `TopProc`, `TopMem`, `DiskU`, `DiskIO`,  `Thermal`, `CpuFreq`, `CoreTemp`, `MPD` (optional), `Mail` (optional), -`MBox` (optional), `Date`, `StdinReader`, `CommandReader`, and -`PipeReader`. +`MBox` (optional), `Date`, `Uptime`, `StdinReader`, `CommandReader`, +and `PipeReader`.  To remove them see below Installing/Removing a Plugin @@ -657,8 +657,12 @@ can be used in the output template as `%mydate%`  `Date Format Alias RefreshRate` -- Format is a time format string, as accepted by the standard UNIX -  utility `date`. +- 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`  | 
