Kacheln von Fenstermanagern und Multi-Head-Setup: Arbeitsbereich im Gnome-Stil

3085
Flow

Ich habe gerade von metacity zu xmonad gewechselt und bin sehr beeindruckt von dem Konzept des Kachelfenstermanagers. Was mich aber stört: In gnome bestand ein "Workspace" aus allen meinen drei Monitoren, aber mit xmonad hat jeder physische Bildschirm seinen eigenen Arbeitsbereich (wenn ich beispielsweise mod + 1 drücke, wechselt nur ein Bildschirm seinen Arbeitsbereich).

Gibt es einen Kachelfenstermanager, der das Arbeitsbereichskonzept Gnome (Metacity) implementiert? Kann xmonad alle physischen Bildschirme irgendwie in einem Arbeitsbereich verknüpfen?

4

1 Antwort auf die Frage

3
Robert Massaioli

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.

"XMonad kann nicht alle drei Bildschirme als einen einzelnen Arbeitsbereich verwenden, aber Sie möchten es auch nicht." Das ist ziemlich zuversichtlich. :) Angenommen, Sie haben 3 kleine Monitore mit einer Auflösung von 1366 × 768, Sie starten eine Shell ganz links und drucken dann 100 Zeilen mit 500 Zeichen. Sie würden wickeln. Um das Lesen zu erleichtern, sollten Sie die Shell vorübergehend auf zwei oder drei Monitore erweitern. Sie können es schwimmen lassen, aber dann verlieren Sie eine Menge an Fliesenfliesen. Ich denke, es ist sehr wertvoll, einen Arbeitsbereich auf allen Monitoren ausführen zu können. steady rain vor 9 Jahren 0
Ich habe diese Antwort aus demselben Grund, der durch stetigen Regen gegeben wird, herabgestuft; es ist eine vollkommen gültige Sache zu wollen. user76871 vor 8 Jahren 0