Olhando para os pacotes contrib do XMonad , você encontrará XMonad.Actions.WindowGo
, que exporta a seguinte função :
runOrRaiseMaster :: String -> Query Bool -> X ()
que utiliza um argumento de string do programa para executar , por exemplo, "firefox"; e uma consulta booleana que é usada para descobrir se já está sendo executada , através das propriedades do X11, por exemplo (className =? "Firefox")
(consulte o topo da XMonad.Actions.WindowGo
página para variantes).
Portanto, tudo que você precisa é vincular runOrRaiseMaster "firefox" (className =? "Firefox")
à chave desejada, conforme explicado emXMonad.Doc.Extending
, via
((modMask, xK_f ), runOrRaiseMaster "firefox" (className =? "Firefox"))
como parte das combinações Data.Map
de teclas da sua configuração (os detalhes diferem com a maneira como você define as configurações, ou seja, com toda a sua configuração xmonad.hs
, consulte Adicionando combinações de teclas ).
Observe que não há sentido real em maximizar uma janela no XMonad. Ao configurar as coisas conforme explicado, você terá Mod4+ a fseguinte ação:
- se houver uma janela com um nome de classe correspondente ao "Firefox", ela será focada e definida como master , ou seja, dependendo do layout recente , será a grande janela
- se nenhuma janela corresponder, o Firefox será gerado e definido como master .
A maximização pode ser emulada escolhendo o Full
layout após a chamada runOrRaiseMaster
, conforme descrito aqui :
("M-<F1>", sendMessage $ JumpToLayout "Full")
(observe que este exemplo também demonstra XMonad.Util.EZConfig
permitir definições mais fáceis de vinculação de teclas)
Combinar essas duas coisas também é possível. Ambos são do tipo X ()
, ou seja, estão na X Mônada . Usando >>
, que é do tipo (verifique com :t (>>)
em ghci
)
(>>) :: Monad m => m a -> m b -> m b
também temos (runOrRaiseMaster "firefox" (className =? "Firefox")) >> (sendMessage $ JumpToLayout "Full")
uma combinação de dois X ()
tipos de tipos X ()
e, portanto, pode ser vinculado a uma chave.
EDIT ausente )
na linha de código com>>
Editar2 modm
-> modMask
.
Edit3 Esta xmonad.hs
espero funciona.
( Por que não aprender um Haskell para o bem? )