-- | Module to control screen brightness within the `X` Monad.
module XMonad.Util.Brightness (brighten) where

import           XMonad

-- | Brighten screen
-- also consider splitting off once this has been generalized
brighten :: Int -> X ()
brighten n = liftIO $ do
    currentBacklight <- readFile "/sys/class/backlight/intel_backlight/brightness"
    length currentBacklight `seq` (writeFile "/sys/class/backlight/intel_backlight/brightness" (show . guard $ (read currentBacklight :: Int) + n))

-- | Don't let the brightness be obnoxious
guard :: Int -> Int
guard = (gu 2000) . (gl 0)
    where gu m n = if n > m then m else n
          gl m n = if n < m then m else n