summaryrefslogtreecommitdiff
path: root/packages/code/dfetch/app
diff options
context:
space:
mode:
Diffstat (limited to 'packages/code/dfetch/app')
-rw-r--r--packages/code/dfetch/app/Dfetch/Battery.hs26
-rw-r--r--packages/code/dfetch/app/Dfetch/Brightness.hs8
-rw-r--r--packages/code/dfetch/app/Main.hs8
3 files changed, 42 insertions, 0 deletions
diff --git a/packages/code/dfetch/app/Dfetch/Battery.hs b/packages/code/dfetch/app/Dfetch/Battery.hs
new file mode 100644
index 0000000..6e6a0a8
--- /dev/null
+++ b/packages/code/dfetch/app/Dfetch/Battery.hs
@@ -0,0 +1,26 @@
+module Dfetch.Battery
+ ( Battery(..)
+ , allBatteries
+ ) where
+
+import System.FilePath ((</>))
+import System.Directory (listDirectory)
+import Data.List (isPrefixOf)
+
+basePath :: FilePath
+basePath = "/sys/class/power_supply/"
+
+data Battery = Battery
+ {name :: String, capacity :: Int} deriving (Show)
+
+getCapacity :: String -> IO Battery
+getCapacity name = Battery <$> pure name <*> capacity
+ where
+ path = basePath </> name </> "capacity"
+ capacity = read <$> readFile path
+
+findBatteries :: IO [String]
+findBatteries = filter ("BAT" `isPrefixOf`) <$> listDirectory basePath
+
+allBatteries :: IO [Battery]
+allBatteries = findBatteries >>= traverse getCapacity
diff --git a/packages/code/dfetch/app/Dfetch/Brightness.hs b/packages/code/dfetch/app/Dfetch/Brightness.hs
new file mode 100644
index 0000000..912905a
--- /dev/null
+++ b/packages/code/dfetch/app/Dfetch/Brightness.hs
@@ -0,0 +1,8 @@
+module Dfetch.Brightness where
+
+import System.FilePath ((</>))
+import System.Directory (listDirectory)
+import Data.List (isPrefixOf)
+
+basePath :: FilePath
+basePath = "/sys/class/backlight/"
diff --git a/packages/code/dfetch/app/Main.hs b/packages/code/dfetch/app/Main.hs
new file mode 100644
index 0000000..d9a15ac
--- /dev/null
+++ b/packages/code/dfetch/app/Main.hs
@@ -0,0 +1,8 @@
+module Main (main) where
+
+import Dfetch.Battery (allBatteries)
+
+main :: IO ()
+main = do
+ bs <- allBatteries
+ print bs