Mirando los paquetes contrib de XMonad , encontrará XMonad.Actions.WindowGo
, que exporta la siguiente función :
runOrRaiseMaster :: String -> Query Bool -> X ()
que toma un argumento de cadena del programa para ejecutarse , por ejemplo, "firefox"; y una consulta booleana que se utiliza para averiguar si ya se está ejecutando , a través de las propiedades X11, por ejemplo (className =? "Firefox")
(consulte la parte superior de la XMonad.Actions.WindowGo
página para conocer las variantes).
Por lo tanto, todo lo que necesita es vincularse runOrRaiseMaster "firefox" (className =? "Firefox")
a la clave que desea, como se explica enXMonad.Doc.Extending
, a través de
((modMask, xK_f ), runOrRaiseMaster "firefox" (className =? "Firefox"))
como parte de las combinaciones Data.Map
de teclas de su configuración (los detalles difieren con su forma de configuración, es decir, la totalidad de su xmonad.hs
, consulte Agregar combinaciones de teclas ).
Tenga en cuenta que no tiene sentido maximizar la ventana en XMonad. Cuando configure las cosas como se explica, tendrá Mod4+ factuar de la siguiente manera:
- si hay una ventana con un nombre de clase que coincida con "Firefox", se enfocará y configurará como maestro , es decir, dependiendo de su diseño reciente , será la ventana grande
- Si no hay coincidencias ventana, Firefox se generó y ajustado a maestro .
La maximización se puede emular eligiendo el Full
diseño después de llamar runOrRaiseMaster
, como se describe aquí :
("M-<F1>", sendMessage $ JumpToLayout "Full")
(tenga en cuenta que este ejemplo también demuestra que XMonad.Util.EZConfig
permite definiciones de combinación de teclas más fáciles)
Combinar estas dos cosas también es posible. Ambos son de tipo X ()
, es decir, están en la X Mónada . Usando >>
, que es de tipo (consulte con :t (>>)
en ghci
)
(>>) :: Monad m => m a -> m b -> m b
también tenemos (runOrRaiseMaster "firefox" (className =? "Firefox")) >> (sendMessage $ JumpToLayout "Full")
una combinación de dos X ()
tipos de tipos X ()
y, por lo tanto, puede vincularse a una clave.
EDITAR Falta )
en la línea de código con>>
Editar2 modm
-> modMask
.
Edit3 Esto con xmonad.hs
suerte funciona.
( ¿Por qué no aprender un Haskell por un gran bien? )