Wenn Sie sich die Contrib-Pakete von XMonad ansehen , werden Sie feststellen XMonad.Actions.WindowGo, welche die folgende Funktion exportieren :
runOrRaiseMaster :: String -> Query Bool -> X ()
welches ein String-Argument des Programms benötigt, um ausgeführt zu werden , zB "Firefox"; und eine boolesche Abfrage , mit der über X11-Eigenschaften ermittelt wird, ob sie bereits ausgeführt wird, z. B. (className =? "Firefox")( Varianten siehe oben auf der XMonad.Actions.WindowGoSeite für Varianten).
Also alles , was Sie brauchen , ist zu binden , runOrRaiseMaster "firefox" (className =? "Firefox")um den Schlüssel , den Sie möchten, wie erläutertXMonad.Doc.Extending , über
((modMask, xK_f ), runOrRaiseMaster "firefox" (className =? "Firefox"))
als Teil der Tastenkombinationen Data.MapIhrer Konfiguration (Details unterscheiden sich je nach Art der Einstellungen, dh Ihrer gesamten xmonad.hs, siehe Hinzufügen von Tastenkombinationen ).
Beachten Sie, dass es keinen Sinn macht, ein Fenster in XMonad zu maximieren . Wenn Sie die Dinge wie erklärt einrichten, müssen Sie Mod4+ fwie folgt vorgehen:
- Wenn es ein Fenster mit einem Klassennamen gibt, der mit "Firefox" übereinstimmt, wird es fokussiert und auf Master gesetzt , dh abhängig von Ihrem aktuellen Layout wird das große Fenster angezeigt
- wenn keine Fenster Streichhölzer, wird Firefox werden hervorgebracht und auf Master gesetzt .
Die Maximierung kann durch Auswahl des FullLayouts nach dem Aufruf emuliert werden runOrRaiseMaster, wie hier beschrieben :
("M-<F1>", sendMessage $ JumpToLayout "Full")
(Beachten Sie, dass dieses Beispiel auch zeigt, XMonad.Util.EZConfigdass einfachere Schlüsselbindungsdefinitionen möglich sind.)
Die Kombination dieser beiden Dinge ist ebenfalls möglich. Beide sind vom Typ X (), dh sie sind in der X-Monade . Verwenden >>, was vom Typ ist (einchecken mit :t (>>)in ghci)
(>>) :: Monad m => m a -> m b -> m b
Wir haben (runOrRaiseMaster "firefox" (className =? "Firefox")) >> (sendMessage $ JumpToLayout "Full")auch eine Kombination von zwei X ()Arten von Typen X (), und es kann somit an einen Schlüssel gebunden werden.
BEARBEITEN Fehlt )in der Codezeile mit>>
Edit2 modm -> modMask.
Edit3 Das xmonad.hsfunktioniert hoffentlich.
( Warum lernst du nicht ein Haskell für großes Wohl? )