Analisando os pacotes de contribuição do XMonad , você encontrará XMonad.Actions.WindowGo , que exporta os following function :
runOrRaiseMaster :: String -> Query Bool -> X ()
que leva um argumento de string do programa para executar , por exemplo "Raposa de fogo"; e uma consulta booleana que é usada para descobrir se ela já está em execução , por meio de propriedades X11, por exemplo (className =? "Firefox") (veja o topo da XMonad.Actions.WindowGo page para variantes).
Então, tudo que você precisa é vincular runOrRaiseMaster "firefox" (className =? "Firefox") à chave desejada, como explicado em XMonad.Doc.Extending , via
((modMask, xK_f ), runOrRaiseMaster "firefox" (className =? "Firefox"))
como parte das combinações de teclas Data.Map da sua configuração (os detalhes diferem da sua configuração, ou seja, de todo o seu xmonad.hs , consulte Adicionando atalhos de teclado ).
Note que não há sentido real em maximizar uma janela no XMonad. Quando você configura as coisas como explicado, você terá Mod4 + f agindo da seguinte forma:
- se houver uma janela com um nome de classe correspondente a "Firefox", ela será focada e definida como mestre , ou seja, dependendo de sua recente layout , será a grande janela
- se nenhuma janela corresponder, o Firefox será gerado e definido como mestre .
A maximização pode ser emulada escolhendo o Full layout depois de chamar runOrRaiseMaster , conforme descrito aqui :
("M-<F1>", sendMessage $ JumpToLayout "Full")
(observe que este exemplo também demonstra XMonad.Util.EZConfig permitindo definições de atalhos de teclado mais fáceis)
Combinar essas duas coisas é possível também. Ambos são do tipo X () , ou seja, são na X Monad .
Usando >> , que é do tipo (verifique com :t (>>) em ghci )
(>>) :: Monad m => m a -> m b -> m b
temos (runOrRaiseMaster "firefox" (className =? "Firefox")) >> (sendMessage $ JumpToLayout "Full") como uma combinação de dois X () tipos do tipo X () , e pode, assim, ser vinculado a uma chave.
EDIT Falta ) na linha de código com >>
Editar2 modm - > modMask .
Edit3 Espero que este xmonad.hs funcione.