diff options
-rw-r--r-- | changelog.md | 9 | ||||
-rw-r--r-- | readme.md | 14 | ||||
-rw-r--r-- | src/Xmobar/Plugins/Monitors/Disk.hs | 25 |
3 files changed, 36 insertions, 12 deletions
diff --git a/changelog.md b/changelog.md index 3ddbb43..34d1ef2 100644 --- a/changelog.md +++ b/changelog.md @@ -1,3 +1,12 @@ +## Version 0.30 + +_New features_ + + - `DiskIO`: Additional template variables for absolute number of + bytes rather than speeds (see [issue #390]. + +[issue #390]: https://github.com/jaor/xmobar/issues/390 + ## Version 0.29.5 (March, 2019) _Bug fixes_ @@ -964,11 +964,15 @@ more than one battery. - Aliases to `diskio` - Disks: list of pairs of the form (device or mount point, template), - where the template can contain `<total>`, `<read>`, `<write>` for total, - read and write speed, respectively. There are also bar versions of each: - `<totalbar>`, `<totalvbar>`, `<totalipat>`, - `<readbar>`, `<readvbar>`, `<readipat>`, - `<writebar>`, `<writevbar>`, and `<writeipat>`. + where the template can contain `<total>`, `<read>`, `<write>` for + total, read and write speed, respectively, as well as `<totalb>`, + `<readb>`, `<writeb>`, which report number of bytes during the last + refresh period rather than speed. There are also bar versions of + each: `<totalbar>`, `<totalvbar>`, `<totalipat>`, `<readbar>`, + `<readvbar>`, `<readipat>`, `<writebar>`, `<writevbar>`, and + `<writeipat>`; and their "bytes" counterparts: `<totalbbar>`, + `<totalbvbar>`, `<totalbipat>`, `<readbbar>`, `<readbvbar>`, + `<readbipat>`, `<writebbar>`, `<writebvbar>`, and `<writebipat>`. - Thresholds refer to speed in b/s - Args: default monitor arguments. `-t`/`--template` is ignored. Plus - `--total-icon-pattern`: dynamic string for total disk I/O in `<totalipat>`. diff --git a/src/Xmobar/Plugins/Monitors/Disk.hs b/src/Xmobar/Plugins/Monitors/Disk.hs index 3f89629..0305d78 100644 --- a/src/Xmobar/Plugins/Monitors/Disk.hs +++ b/src/Xmobar/Plugins/Monitors/Disk.hs @@ -1,7 +1,7 @@ ----------------------------------------------------------------------------- -- | -- Module : Plugins.Monitors.Disk --- Copyright : (c) 2010, 2011, 2012, 2014, 2018 Jose A Ortega Ruiz +-- Copyright : (c) 2010, 2011, 2012, 2014, 2018, 2019 Jose A Ortega Ruiz -- License : BSD-style (see LICENSE) -- -- Maintainer : Jose A Ortega Ruiz <jao@gnu.org> @@ -54,9 +54,13 @@ parseDiskIOOpts argv = diskIOConfig :: IO MConfig diskIOConfig = mkMConfig "" ["total", "read", "write" + ,"totalb", "readb", "writeb" ,"totalbar", "readbar", "writebar" + ,"totalbbar", "readbbar", "writebbar" ,"totalvbar", "readvbar", "writevbar" + ,"totalbvbar", "readbvbar", "writebvbar" ,"totalipat", "readipat", "writeipat" + ,"totalbipat", "readbipat", "writebipat" ] data DiskUOpts = DiskUOpts @@ -148,11 +152,16 @@ parseDev dat dev = case find ((==dev) . fst) dat of Nothing -> (dev, [0, 0, 0]) Just (_, xs) -> - let rSp = speed (xs !! 2) (xs !! 3) - wSp = speed (xs !! 6) (xs !! 7) - sp = speed (xs !! 2 + xs !! 6) (xs !! 3 + xs !! 7) - speed x t = if t == 0 then 0 else 500 * x / t - dat' = if length xs > 6 then [sp, rSp, wSp] else [0, 0, 0] + let r = xs !! 2 + w = xs !! 6 + t = r + w + rSp = speed r (xs !! 3) + wSp = speed w (xs !! 7) + sp = speed t (xs !! 3 + xs !! 7) + speed x d = if d == 0 then 0 else 500 * x / d + dat' = if length xs > 6 + then [sp, rSp, wSp, t, r, w] + else [0, 0, 0, 0, 0, 0] in (dev, dat') speedToStr :: Float -> String @@ -184,7 +193,9 @@ runDiskIO' opts (tmp, xs) = do b <- mapM (showLogBar 0.8) xs vb <- mapM (showLogVBar 0.8) xs ipat <- mapM (\(f,v) -> showLogIconPattern (f opts) 0.8 v) - $ zip [totalIconPattern, readIconPattern, writeIconPattern] xs + $ zip [totalIconPattern, readIconPattern, writeIconPattern + , totalIconPattern, readIconPattern, writeIconPattern] + xs setConfigValue tmp template parseTemplate $ s ++ b ++ vb ++ ipat |