blob: a44f5f75cf7496604b9d4a0f8d9f7c5785dd3d4c (
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
48
49
50
51
52
53
54
55
56
57
|
module Graphics.X11.EWMH
( module Graphics.X11.EWMH
, module Graphics.X11.EWMH.Atom
) where
import Codec.Binary.UTF8.String (encode)
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 (changeProperty8, getWindowProperty32, propModeReplace)
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
setDesktopNames :: [String] -> Display -> IO ()
setDesktopNames names dpy = do
changeProperty8 dpy r a t propModeReplace names'
where
names' = map fromIntegral $ concatMap ((<>[0]) . encode) names
a = _NET_DESKTOP_NAMES
t = uTF8_STRING
r = defaultRootWindow dpy
|