diff options
author | Michal Zielonka <michal.zielonka.8001@gmail.com> | 2021-10-08 14:42:51 +0200 |
---|---|---|
committer | Michal Zielonka <michal.zielonka.8001@gmail.com> | 2021-10-08 15:44:01 +0200 |
commit | 3d469771a549062be70f4e316680dac00a68d1d2 (patch) | |
tree | 8e0683da0f40d74fd224873e4df062db30fc41f5 /src/Xmobar/Plugins/Monitors | |
parent | b99a8a6833a1b38882b463fd72784cd6d6f91d9e (diff) | |
download | xmobar-3d469771a549062be70f4e316680dac00a68d1d2.tar.gz xmobar-3d469771a549062be70f4e316680dac00a68d1d2.tar.bz2 |
try to add build action for freebsd + uptime plugin split
Diffstat (limited to 'src/Xmobar/Plugins/Monitors')
-rw-r--r-- | src/Xmobar/Plugins/Monitors/Uptime.hs | 14 | ||||
-rw-r--r-- | src/Xmobar/Plugins/Monitors/Uptime/FreeBSD.hsc | 52 | ||||
-rw-r--r-- | src/Xmobar/Plugins/Monitors/Uptime/Linux.hs | 24 |
3 files changed, 84 insertions, 6 deletions
diff --git a/src/Xmobar/Plugins/Monitors/Uptime.hs b/src/Xmobar/Plugins/Monitors/Uptime.hs index 235fc85..646edc8 100644 --- a/src/Xmobar/Plugins/Monitors/Uptime.hs +++ b/src/Xmobar/Plugins/Monitors/Uptime.hs @@ -1,3 +1,5 @@ +{-#LANGUAGE CPP #-} + ------------------------------------------------------------------------------ -- | -- Module : Plugins.Monitors.Uptime @@ -19,22 +21,22 @@ module Xmobar.Plugins.Monitors.Uptime (uptimeConfig, runUptime) where import Xmobar.Plugins.Monitors.Common -import qualified Data.ByteString.Lazy.Char8 as B +#if defined(freebsd_HOST_OS) +import qualified Xmobar.Plugins.Monitors.Uptime.FreeBSD as MU +#else +import qualified Xmobar.Plugins.Monitors.Uptime.Linux as MU +#endif uptimeConfig :: IO MConfig uptimeConfig = mkMConfig "Up <days>d <hours>h <minutes>m" ["days", "hours", "minutes", "seconds"] -readUptime :: IO Float -readUptime = - fmap (read . B.unpack . head . B.words) (B.readFile "/proc/uptime") - secsPerDay :: Integer secsPerDay = 24 * 3600 uptime :: Monitor [String] uptime = do - t <- io readUptime + t <- io MU.readUptime u <- getConfigValue useSuffix let tsecs = floor t secs = tsecs `mod` secsPerDay diff --git a/src/Xmobar/Plugins/Monitors/Uptime/FreeBSD.hsc b/src/Xmobar/Plugins/Monitors/Uptime/FreeBSD.hsc new file mode 100644 index 0000000..e6323e1 --- /dev/null +++ b/src/Xmobar/Plugins/Monitors/Uptime/FreeBSD.hsc @@ -0,0 +1,52 @@ +------------------------------------------------------------------------------ +-- | +-- Module : Plugins.Monitors.Uptime.FreeBSD +-- 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 Xmobar.Plugins.Monitors.Uptime.FreeBSD (readUptime) where + +import Data.Time.Clock.POSIX (getPOSIXTime) +import System.BSD.Sysctl +import Data.Int +import Foreign.C +import Foreign.Storable + +#include <sys/types.h> +#include <sys/user.h> +#include <sys/time.h> +#include <sys/sysctl.h> + +data TimeVal = TimeVal {sec:: CTime} + +instance Storable TimeVal where + sizeOf _ = #{size struct timeval} + alignment _ = alignment (undefined::CTime) + peek ptr = do cSec <- #{peek struct timeval, tv_sec} ptr + return (TimeVal cSec) + poke _ _ = pure () + +now :: IO Int64 +now = do + posix <- getPOSIXTime + return $ round posix + +readUptime :: IO Float +readUptime = do + tv <- sysctlPeek "kern.boottime" :: IO TimeVal + nowSec <- now + return $ fromInteger $ toInteger $ (nowSec - (secInt $ sec tv)) + where + secInt :: CTime -> Int64 + secInt (CTime cSec) = cSec diff --git a/src/Xmobar/Plugins/Monitors/Uptime/Linux.hs b/src/Xmobar/Plugins/Monitors/Uptime/Linux.hs new file mode 100644 index 0000000..46ba1a1 --- /dev/null +++ b/src/Xmobar/Plugins/Monitors/Uptime/Linux.hs @@ -0,0 +1,24 @@ +------------------------------------------------------------------------------ +-- | +-- Module : Plugins.Monitors.Uptime.Linux +-- 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 Xmobar.Plugins.Monitors.Uptime.Linux (readUptime) where + +import qualified Data.ByteString.Lazy.Char8 as B + +readUptime :: IO Float +readUptime = + fmap (read . B.unpack . head . B.words) (B.readFile "/proc/uptime") |