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.