xmonad-config/lib/XMonad/Internal/DBus/Control.hs

38 lines
1.0 KiB
Haskell

{-# LANGUAGE OverloadedStrings #-}
--------------------------------------------------------------------------------
-- | High-level interface for managing XMonad's DBus
module XMonad.Internal.DBus.Control
( Client
, startXMonadService
, stopXMonadService
) where
import DBus.Client
import XMonad.Internal.DBus.IntelBacklight
import XMonad.Internal.DBus.Screensaver
startXMonadService :: IO (Client, Maybe BacklightControls)
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 do
putStrLn "Another service owns \"org.xmonad\""
return (client, Nothing)
else do
putStrLn "Started xmonad dbus client"
bc <- exportIntelBacklight client
exportScreensaver client
return (client, bc)
stopXMonadService :: Client -> IO ()
stopXMonadService client = do
_ <- releaseName client "org.xmonad"
disconnect client
return ()