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.WindowGo
Seite 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.Map
Ihrer 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 Full
Layouts nach dem Aufruf emuliert werden runOrRaiseMaster
, wie hier beschrieben :
("M-<F1>", sendMessage $ JumpToLayout "Full")
(Beachten Sie, dass dieses Beispiel auch zeigt, XMonad.Util.EZConfig
dass 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.hs
funktioniert hoffentlich.
( Warum lernst du nicht ein Haskell für großes Wohl? )