En regardant les paquets de contributions de XMonad , vous trouverez XMonad.Actions.WindowGo
, qui exporte la fonction suivante :
runOrRaiseMaster :: String -> Query Bool -> X ()
qui prend un argument de chaîne du programme à exécuter , par exemple "firefox"; et une requête booléenne qui est utilisée pour savoir si elle est déjà en cours d'exécution , via les propriétés X11, par exemple (className =? "Firefox")
(voir le haut de la XMonad.Actions.WindowGo
page pour les variantes).
Donc, tout ce dont vous avez besoin est de lier runOrRaiseMaster "firefox" (className =? "Firefox")
la clé que vous voulez, comme expliqué dansXMonad.Doc.Extending
, via
((modMask, xK_f ), runOrRaiseMaster "firefox" (className =? "Firefox"))
dans le cadre des raccourcis clavier Data.Map
de votre configuration (les détails diffèrent selon la façon dont vous les définissez, c'est-à-dire l'ensemble de votre xmonad.hs
, voir Ajout de raccourcis clavier ).
Notez qu'il n'y a pas vraiment de sens à maximiser une fenêtre dans XMonad. Lorsque vous configurez les choses comme expliqué, vous aurez Mod4+ fagir comme suit:
- s'il y a une fenêtre avec un nom de classe correspondant à "Firefox", il sera focalisé et défini sur master , c'est-à-dire, selon votre disposition récente , sera la grande fenêtre
- si aucune fenêtre ne correspond, Firefox sera généré et défini sur master .
La maximisation peut être émulée en choisissant la Full
disposition après l'appel runOrRaiseMaster
, comme décrit ici :
("M-<F1>", sendMessage $ JumpToLayout "Full")
(notez que cet exemple montre également XMonad.Util.EZConfig
comment permettre des définitions de raccourcis clavier plus faciles)
La combinaison de ces deux choses est également possible. Les deux sont de type X ()
, c'est-à-dire qu'ils sont dans la X Monade . L' utilisation >>
, qui est de type (vérifier avec :t (>>)
en ghci
)
(>>) :: Monad m => m a -> m b -> m b
nous avons (runOrRaiseMaster "firefox" (className =? "Firefox")) >> (sendMessage $ JumpToLayout "Full")
aussi une combinaison de deux X ()
types de type X ()
, et il peut donc être lié à une clé.
EDIT Manquant )
dans la ligne de code avec>>
Edit2 modm
-> modMask
.
Edit3 Cela xmonad.hs
fonctionne, espérons-le.
( Pourquoi ne pas vous apprendre un Haskell pour le plus grand bien? )