|
|
@ -59,33 +59,3 @@ main = do
|
|
59
|
59
|
let switchLang cur = if cur == "us" then "de" else "us"
|
|
60
|
60
|
spawn $ "setxkbmap " ++ switchLang kb
|
|
61
|
61
|
modifyIORef kbMap switchLang
|
|
62
|
|
|
|
63
|
|
evHook :: Event -> X All
|
|
64
|
|
evHook (ClientMessageEvent _ _ _ dpy win typ dat) = do
|
|
65
|
|
state <- getAtom "_NET_WM_STATE"
|
|
66
|
|
fullsc <- getAtom "_NET_WM_STATE_FULLSCREEN"
|
|
67
|
|
isFull <- runQuery isFullscreen win
|
|
68
|
|
|
|
69
|
|
let remove = 0
|
|
70
|
|
add = 1
|
|
71
|
|
toggle = 2
|
|
72
|
|
|
|
73
|
|
ptype = 4
|
|
74
|
|
|
|
75
|
|
action = head dat
|
|
76
|
|
|
|
77
|
|
when (typ == state && (fromIntegral fullsc) `elem` tail dat) $ do
|
|
78
|
|
when (action == add || (action == toggle && not isFull)) $ do
|
|
79
|
|
io $ changeProperty32 dpy win state ptype propModeReplace [fromIntegral fullsc]
|
|
80
|
|
fullFloat win
|
|
81
|
|
when (head dat == remove || (action == toggle && isFull)) $ do
|
|
82
|
|
io $ changeProperty32 dpy win state ptype propModeReplace []
|
|
83
|
|
tileWin win
|
|
84
|
|
|
|
85
|
|
return $ All False
|
|
86
|
|
|
|
87
|
|
evHook _ = return $ All True
|
|
88
|
|
|
|
89
|
|
fullFloat, tileWin :: Window -> X ()
|
|
90
|
|
fullFloat w = windows $ W.float w (W.RationalRect 0 0 1 1)
|
|
91
|
|
tileWin w = windows $ W.sink w
|