XMonad kann nicht alle drei Bildschirme als einen einzelnen Arbeitsbereich verwenden, aber Sie möchten dies auch nicht. Ich denke, Sie müssen nur wissen, wie Sie Ihre Bildschirme besser steuern können. Ich habe ein Setup, das mir sehr gut gefällt, und Sie können die Konfigurationsdatei für dieses Setup im XMonad-Abschnitt des Haskell-Wiki sehen . Alles, was ich zeigen werde, kommt von Sachen in meiner eigenen Konfiguration auf meinem Rechner (obwohl dies nicht unbedingt das ist, was auf der Seite ist, auf die ich verlinkt habe).
Es gibt zwei Xmonad-Contrib- Bibliotheken, die die Navigation mehrerer Köpfe nicht nur erträglich machen, sondern auch einen wunderbaren Geschenk des Himmels darstellen . Dies sind CycleWS und TagWindows .
Mit CycleWS können Sie die Arbeitsbereiche auf verschiedenen physischen Bildschirmen durchlaufen (mit prevScreen und nextScreen). Außerdem können Sie Fenster problemlos zwischen Bildschirmen verschieben (mit shiftPrevScreen und shiftNextScreen). Das heißt, obwohl Sie auf jedem Bildschirm unterschiedliche Arbeitsbereiche haben, können die einzelnen Fenster die Fenster untereinander teilen. Wenn Sie nicht möchten, dass sich ein Fenster über alle Bildschirme erstreckt, die Sie haben, ist alles in Ordnung. So verwendet mein xmonad.hs die CycleWS-Befehle:
-- Alt + Ctrl Left / Right makes the view go left and right, ((altMask .|. controlMask, xK_Left ), prevScreen >> windowCenter), ((altMask .|. controlMask, xK_Right ), nextScreen >> windowCenter), ((altMask .|. controlMask, xK_Down ), shiftPrevScreen), ((altMask .|. controlMask, xK_Up ), shiftNextScreen), ((altMask .|. controlMask .|. shiftMask, xK_Down ), shiftPrevScreen >> prevScreen >> windowCenter), ((altMask .|. controlMask .|. shiftMask, xK_Up ), shiftNextScreen >> nextScreen >> windowCenter)
[Hinweis: windowCenter = warpToWindow (1% 6) (1% 6)]
TagWindows ist großartig, vor allem die viewOnScreen-Funktion, mit der Sie jedes getaggte Programm auf Ihren Bildschirmen direkt an der Vorderseite aufrufen können, obwohl ich ein wenig hacken musste, um die Arbeit nach Belieben zu gestalten. Hier sind die Schlüssel, die ich benutze:
, ((myModMask, xK_g ), tagPrompt defaultXPConfig (withFocused . addTag)), ((myModMask .|. shiftMask, xK_g ), tagDelPrompt defaultXPConfig), ((altMask, xK_g ), tagPrompt defaultXPConfig (`withTaggedGlobalP` gotoWindow))
Und hier ist die gotoWindow-Funktion definiert:
-- Warning: This gotoWindow function assumes you made your workspaces -- with the 'withScreens' function from XMonad.Layout.IndependentScreens gotoWindow :: Window -> WindowSet -> WindowSet gotoWindow window ws = case S.findTag window ws of Just i -> viewOnScreen (screenIdFromTag i) i ws Nothing -> ws where screenIdFromTag :: WorkspaceId -> ScreenId screenIdFromTag = S . read . takeWhile (/= '_')
Und das sollte es Ihnen ermöglichen, in Ihrer XMonad-Konfigurationsdatei mehrköpfige Großartigkeit zu finden. Wenn Sie Fragen haben, können Sie mir gerne weitere Fragen stellen. Ich hoffe das hilft.