40 lines
933 B
Haskell
40 lines
933 B
Haskell
|
{-# LANGUAGE OverloadedStrings #-}
|
||
|
|
||
|
module DBus.Common where
|
||
|
|
||
|
-- import Control.Concurrent
|
||
|
-- import Control.Monad
|
||
|
|
||
|
import DBus.Backlight
|
||
|
|
||
|
-- import DBus
|
||
|
import DBus.Client
|
||
|
|
||
|
onFoo :: IO String
|
||
|
onFoo = return "testicle"
|
||
|
|
||
|
startXMonadService :: IO Client
|
||
|
startXMonadService = do
|
||
|
client <- connectSession
|
||
|
requestResult <- requestName client "org.xmonad" []
|
||
|
-- TODO if the client is not released on shutdown the owner will be
|
||
|
-- different
|
||
|
if requestResult /= NamePrimaryOwner then
|
||
|
putStrLn "Another service owns \"org.xmonad\""
|
||
|
else do
|
||
|
putStrLn "Started xmonad dbus client"
|
||
|
exportBrightness client
|
||
|
export client "/test" defaultInterface
|
||
|
{ interfaceName = "test.iface"
|
||
|
, interfaceMethods = [ autoMethod "foo" onFoo ]
|
||
|
}
|
||
|
return client
|
||
|
|
||
|
stopXMonadService :: Client -> IO ()
|
||
|
stopXMonadService client = do
|
||
|
reply <- releaseName client "org.xmonad"
|
||
|
disconnect client
|
||
|
print reply
|
||
|
return ()
|
||
|
|