Isso falhou. O XMonad funciona como esperado, mas os aplicativos não recebem chaves pressionadas. Quero dizer, eu uso winkey como modKey no quinto espaço de trabalho e altkey em outros espaços de trabalho. Eu costumava mudar espaços de trabalho com o número de modKey +. Quando eu pressiono Alt + 2 no quinto espaço de trabalho, o XMonad não faz nada (o que é correto), e o aplicativo não faz nada (o que está errado). O Chrome não muda para a segunda guia e assim por diante.
Ok, então consegui fazer isso usando XMonad.Actions.PerWorkspaceKeys .
Configuração relacionada:
import XMonad.Actions.PerWorkspaceKeys
workspaceModkeys = [ (mod1Mask, map show ([1..4] ++ [6..9])) -- use Alt as modkey on all workspaces
, (mod4Mask, ["5"]) -- save 5th (use Win there)
]
modifiedKeysList conf =
[ ((0, xK_Return), spawn $ XMonad.terminal conf) -- launch a terminal
, ((shiftMask, xK_c ), kill) -- close focused window
]
unmodifiedKeys conf =
[ ((0, xF86XK_AudioPlay ), spawn "mpc toggle")
, ((0, xF86XK_AudioStop ), spawn "mpc stop")
]
keysList conf = concat (map modifyKey (modifiedKeysList conf)) ++ (unmodifiedKeys conf)
modifyKey :: ((KeyMask, KeySym), X()) -> [((KeyMask, KeySym), X())]
modifyKey k = map (f k) workspaceModkeys
where
f ((mask, key), action) (mod, workspaces) = ((mask .|. mod, key), bindOn (map (\w -> (w, action)) workspaces))
myKeys conf = M.fromList $ keysList conf
main = xmonad $ defaultConfig {
keys = myKeys
}
Lista de teclas modificadas usará modificador (neste exemplo - Winkey no quinto espaço de trabalho, e deixou Alt em todos os outros), lista de teclas não modificadas é usada como está.
Ainda pode pesquisar chaves específicas da janela mais tarde, mas estou pronto por enquanto.