diff options
author | Michal Zielonka <michal.zielonka.8001@gmail.com> | 2021-10-07 23:25:09 +0200 |
---|---|---|
committer | Michal Zielonka <michal.zielonka.8001@gmail.com> | 2021-10-08 11:11:11 +0200 |
commit | b99a8a6833a1b38882b463fd72784cd6d6f91d9e (patch) | |
tree | 9537dcfe5eff2108937bf9a2160a5f15a7a266e5 /src/Xmobar/Plugins/Monitors/Swap.hs | |
parent | a845465fec735d9818a61d078337653b5293da5c (diff) | |
download | xmobar-b99a8a6833a1b38882b463fd72784cd6d6f91d9e.tar.gz xmobar-b99a8a6833a1b38882b463fd72784cd6d6f91d9e.tar.bz2 |
try to reorganize modules per os
We should make better split os specify code for FreeBSD and Linux.
Idea comes from @liskin.
Diffstat (limited to 'src/Xmobar/Plugins/Monitors/Swap.hs')
-rw-r--r-- | src/Xmobar/Plugins/Monitors/Swap.hs | 55 |
1 files changed, 4 insertions, 51 deletions
diff --git a/src/Xmobar/Plugins/Monitors/Swap.hs b/src/Xmobar/Plugins/Monitors/Swap.hs index ca46010..e8b2f54 100644 --- a/src/Xmobar/Plugins/Monitors/Swap.hs +++ b/src/Xmobar/Plugins/Monitors/Swap.hs @@ -17,10 +17,10 @@ module Xmobar.Plugins.Monitors.Swap where import Xmobar.Plugins.Monitors.Common -#ifdef FREEBSD -import System.BSD.Sysctl (sysctlReadUInt, sysctlReadULong) +#if defined(freebsd_HOST_OS) +import qualified Xmobar.Plugins.Monitors.Swap.FreeBSD as MS #else -import qualified Data.ByteString.Lazy.Char8 as B +import qualified Xmobar.Plugins.Monitors.Swap.Linux as MS #endif swapConfig :: IO MConfig @@ -28,53 +28,6 @@ swapConfig = mkMConfig "Swap: <usedratio>%" -- template ["usedratio", "total", "used", "free"] -- available replacements -#ifdef FREEBSD - -isEnabled :: IO Bool -isEnabled = do - enabled <- sysctlReadUInt "vm.swap_enabled" - return $ enabled == 1 - -parseMEM' :: Bool -> IO [Float] -parseMEM' False = return $ [] -parseMEM' True = do - swapIn <- sysctlReadUInt "vm.stats.vm.v_swapin" - swapTotal <- sysctlReadULong "vm.swap_total" - let tot = toInteger swapTotal - free = tot - (toInteger swapIn) - - return $ res (fromInteger tot) (fromInteger free) - where - res :: Float -> Float -> [Float] - res _ 0 = [] - res tot free = [(tot - free) / tot, tot, tot - free, free] - -parseMEM :: IO [Float] -parseMEM = do - enabled <- isEnabled - parseMEM' enabled - -#else -fileMEM :: IO B.ByteString -fileMEM = B.readFile "/proc/meminfo" - -parseMEM :: IO [Float] -parseMEM = - do file <- fileMEM - let li i l - | l /= [] = head l !! i - | otherwise = B.empty - fs s l - | null l = False - | otherwise = head l == B.pack s - get_data s = flip (/) 1024 . read . B.unpack . li 1 . filter (fs s) - st = map B.words . B.lines $ file - tot = get_data "SwapTotal:" st - free = get_data "SwapFree:" st - return [(tot - free) / tot, tot, tot - free, free] - -#endif - formatSwap :: [Float] -> Monitor [String] formatSwap (r:xs) = do d <- getConfigValue decDigits @@ -85,6 +38,6 @@ formatSwap _ = return $ replicate 4 "N/A" runSwap :: [String] -> Monitor String runSwap _ = - do m <- io parseMEM + do m <- io MS.parseMEM l <- formatSwap m parseTemplate l |