summaryrefslogtreecommitdiffhomepage
path: root/src/Plugins/Monitors/Bright.hs
diff options
context:
space:
mode:
authorPavan Rikhi <pavan.rikhi@gmail.com>2018-03-17 22:48:24 -0400
committerjao <jao@gnu.org>2018-11-21 21:41:35 +0000
commit4d1402a1a7d87767267d48a77998e4fb13395b31 (patch)
tree17fd6160dc1fa9c8a0676a94bcf8d19b551c655c /src/Plugins/Monitors/Bright.hs
parent9e2a5c7daddf683d4be7c318aefed3da3ea7a89a (diff)
downloadxmobar-4d1402a1a7d87767267d48a77998e4fb13395b31.tar.gz
xmobar-4d1402a1a7d87767267d48a77998e4fb13395b31.tar.bz2
Split Modules into Library & Executable Structure
Move the Main module to a new `app` directory. All other modules have been nested under the `Xmobar` name. Lots of module headers & imports were updated.
Diffstat (limited to 'src/Plugins/Monitors/Bright.hs')
-rw-r--r--src/Plugins/Monitors/Bright.hs99
1 files changed, 0 insertions, 99 deletions
diff --git a/src/Plugins/Monitors/Bright.hs b/src/Plugins/Monitors/Bright.hs
deleted file mode 100644
index cb510f6..0000000
--- a/src/Plugins/Monitors/Bright.hs
+++ /dev/null
@@ -1,99 +0,0 @@
------------------------------------------------------------------------------
----- |
----- Module : Plugins.Monitors.Birght
----- Copyright : (c) Martin Perner
----- License : BSD-style (see LICENSE)
-----
----- Maintainer : Martin Perner <martin@perner.cc>
----- Stability : unstable
----- Portability : unportable
-----
----- A screen brightness monitor for Xmobar
-----
--------------------------------------------------------------------------------
-
-module Plugins.Monitors.Bright (brightConfig, runBright) where
-
-import Control.Applicative ((<$>))
-import Control.Exception (SomeException, handle)
-import qualified Data.ByteString.Lazy.Char8 as B
-import System.FilePath ((</>))
-import System.Posix.Files (fileExist)
-import System.Console.GetOpt
-
-import Plugins.Monitors.Common
-
-data BrightOpts = BrightOpts { subDir :: String
- , currBright :: String
- , maxBright :: String
- , curBrightIconPattern :: Maybe IconPattern
- }
-
-defaultOpts :: BrightOpts
-defaultOpts = BrightOpts { subDir = "acpi_video0"
- , currBright = "actual_brightness"
- , maxBright = "max_brightness"
- , curBrightIconPattern = Nothing
- }
-
-options :: [OptDescr (BrightOpts -> BrightOpts)]
-options = [ Option "D" ["device"] (ReqArg (\x o -> o { subDir = x }) "") ""
- , Option "C" ["curr"] (ReqArg (\x o -> o { currBright = x }) "") ""
- , Option "M" ["max"] (ReqArg (\x o -> o { maxBright = x }) "") ""
- , Option "" ["brightness-icon-pattern"] (ReqArg (\x o ->
- o { curBrightIconPattern = Just $ parseIconPattern x }) "") ""
- ]
-
--- from Batt.hs
-parseOpts :: [String] -> IO BrightOpts
-parseOpts argv =
- case getOpt Permute options argv of
- (o, _, []) -> return $ foldr id defaultOpts o
- (_, _, errs) -> ioError . userError $ concat errs
-
-sysDir :: FilePath
-sysDir = "/sys/class/backlight/"
-
-brightConfig :: IO MConfig
-brightConfig = mkMConfig "<percent>" -- template
- ["vbar", "percent", "bar", "ipat"] -- replacements
-
-data Files = Files { fCurr :: String
- , fMax :: String
- }
- | NoFiles
-
-brightFiles :: BrightOpts -> IO Files
-brightFiles opts = do
- is_curr <- fileExist $ fCurr files
- is_max <- fileExist $ fCurr files
- return (if is_curr && is_max then files else NoFiles)
- where prefix = sysDir </> subDir opts
- files = Files { fCurr = prefix </> currBright opts
- , fMax = prefix </> maxBright opts
- }
-
-runBright :: [String] -> Monitor String
-runBright args = do
- opts <- io $ parseOpts args
- f <- io $ brightFiles opts
- c <- io $ readBright f
- case f of
- NoFiles -> return "hurz"
- _ -> fmtPercent opts c >>= parseTemplate
- where fmtPercent :: BrightOpts -> Float -> Monitor [String]
- fmtPercent opts c = do r <- showVerticalBar (100 * c) c
- s <- showPercentWithColors c
- t <- showPercentBar (100 * c) c
- d <- showIconPattern (curBrightIconPattern opts) c
- return [r,s,t,d]
-
-readBright :: Files -> IO Float
-readBright NoFiles = return 0
-readBright files = do
- currVal<- grab $ fCurr files
- maxVal <- grab $ fMax files
- return (currVal / maxVal)
- where grab f = handle handler (read . B.unpack <$> B.readFile f)
- handler = const (return 0) :: SomeException -> IO Float
-