blob: 210d1bf782a975526e7bfac772a501666ab03a67 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
module Graphics.X11.EWMH
( module Graphics.X11.EWMH
, module Graphics.X11.EWMH.Atom
) where
import Control.Applicative ((<|>))
import Data.List.Extra (split)
import Foreign.C.Types (CLong)
import Graphics.X11.EWMH.Atom
import Graphics.X11.Types (Window)
import Graphics.X11.Xlib.Atom.Extra
import Graphics.X11.Xlib.Display (defaultRootWindow)
import Graphics.X11.Xlib.Extras (getWindowProperty32)
import Graphics.X11.Xlib.Extras.Extra (getWindowPropertyString)
import Graphics.X11.Xlib.Types (Display)
getActiveWindow :: Display -> IO (Maybe Window)
getActiveWindow dpy =
(fmap (fromIntegral . head) <$>) $
getWindowProperty32 dpy _NET_ACTIVE_WINDOW w
where w = defaultRootWindow dpy
getCurrentDesktop :: Display -> IO (Maybe CLong)
getCurrentDesktop dpy =
(fmap head <$>) $
getWindowProperty32 dpy _NET_CURRENT_DESKTOP w <|>
getWindowProperty32 dpy _WIN_WORKSPACE w
where w = defaultRootWindow dpy
getDesktopNames :: Display -> IO (Maybe [String])
getDesktopNames dpy = do
(fmap (init . split (=='\NUL')) <$>) $
getWindowPropertyString dpy _NET_DESKTOP_NAMES w <|>
getWindowPropertyString dpy _WIN_WORKSPACE_NAMES w
where w = defaultRootWindow dpy
getWindowDesktop :: Display -> Window -> IO (Maybe CLong)
getWindowDesktop dpy w =
(fmap head <$>) $
getWindowProperty32 dpy _NET_WM_DESKTOP w <|>
getWindowProperty32 dpy _WIN_WORKSPACE w
getWindowTitle :: Display -> Window -> IO (Maybe String)
getWindowTitle dpy w =
getWindowPropertyString dpy _NET_WM_NAME w <|>
getWindowPropertyString dpy _WM_NAME w
|