----------------------------------------------------------------------------
-- |
-- Executable  :  xinerama-screeninfos
-- Copyright   :  (c) 2008 Olivier Schwander <olivier.schwander@ens-lyon.org>
-- License     :  BSD3-style (see LICENSE)
--
-- Maintainer  :  Olivier Schwander <olivier.schwander@ens-lyon.org>
-- Stability   :  unstable
-- Portability :  not portable, uses X11, Xinerama
--
-- xinerama-screeninfos little tool giving information about active screens
--
-----------------------------------------------------------------------------

import System.Environment (getArgs)

import Graphics.X11.Xinerama (getScreenInfo)
import qualified Graphics.X11.Xlib as X

-- TODO: a more pretty pretty printer
-- pp :: forall a. (Show a) => a -> IO ()
pp sc =
    print sc

main :: IO ()
main = do
  args <- getArgs
  let xserver = case args of
                "--display":s:_ -> s
                _ -> ""

  display <- X.openDisplay xserver
  screens <- getScreenInfo display
  X.closeDisplay display

  mapM_ pp screens


