35 lines
796 B
Haskell
35 lines
796 B
Haskell
module Xmobar.Backlight where
|
|
|
|
import Control.Monad
|
|
import Control.Concurrent
|
|
|
|
import Data.Int (Int32)
|
|
|
|
import DBus
|
|
import DBus.Client
|
|
|
|
import DBus.Backlight
|
|
|
|
import Xmobar
|
|
|
|
data Backlight = Backlight (String, String)
|
|
deriving (Read, Show)
|
|
|
|
instance Exec Backlight where
|
|
alias (Backlight _) = "betterbacklight"
|
|
start (Backlight _) cb = do
|
|
-- print "connecting"
|
|
client <- connectSession
|
|
_ <- addMatch client brMatcher $ \sig -> do
|
|
cb $ formatSignal sig
|
|
-- print sig
|
|
forever (threadDelay 5000)
|
|
|
|
formatSignal :: Signal -> String
|
|
formatSignal sig = -- show $ (map fromVariant $ signalBody sig :: [Maybe Int32])
|
|
case signalBody sig of
|
|
[] -> "N/A"
|
|
(x:_) -> case (fromVariant x :: Maybe Int32) of
|
|
Just i -> show i
|
|
Nothing -> "n/a"
|