despot Jul 27, 2013 @ 10:31am
My working multiscreen Xmonad configuration
Hi all,

Finally got Source engine games (Portal, TF2) running in my multimonitor Xmonad environment, and I thought I'd share my configuration in the hopes that it'd save someone else the time it's taken me to get a working setup.

Distro: Ubuntu 13.04 (Raring Ringtail)
Video cards: dual Nvidia GTX 560 Ti, with SLI bridge (no SLI enabled in Linux)
Video drivers: nvidia-current (304.88-0ubuntu1)

Xorg.conf

Section "ServerLayout"
Identifier "Layout0"
Screen 0 "Screen1" 0 0
Screen 1 "Screen2" LeftOf "Screen1"
Screen 2 "Screen3" LeftOf "Screen2"
Screen 3 "Screen4" LeftOf "Screen3"
Option "Xinerama" "1"
EndSection

Section "Files"
EndSection
Section "Monitor"
Identifier "Monitor1"
VendorName "Samsung"
HorizSync 30.0 - 81.0
VertRefresh 56.0 - 60.0
EndSection

Section "Monitor"
Identifier "Monitor2"
VendorName "Unknown"
ModelName "Samsung SyncMaster"
HorizSync 30.0 - 81.0
VertRefresh 56.0 - 75.0
EndSection

Section "Monitor"
Identifier "Monitor3"
VendorName "Unknown"
ModelName "Samsung SyncMaster"
HorizSync 30.0 - 81.0
VertRefresh 56.0 - 60.0
Option "DPMS"
EndSection

Section "Monitor"
Identifier "Monitor4"
VendorName "Unknown"
ModelName "WestingHouse"
HorizSync 30.0 - 81.0
VertRefresh 56.0 - 60.0
Option "DPMS"
EndSection

Section "Device"
Identifier "Device1"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BusID "PCI:1:0:0"
Screen 0
EndSection

Section "Device"
Identifier "Device2"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BusID "PCI:1:0:0"
Screen 1
EndSection

Section "Device"
Identifier "Device3"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BusID "PCI:2:0:0"
Screen 0
EndSection

Section "Device"
Identifier "Device4"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BusID "PCI:2:0:0"
Screen 1
EndSection

Section "Screen"
Identifier "Screen1"
Device "Device1"
Monitor "Monitor1"
DefaultDepth 24
EndSection

Section "Screen"
Identifier "Screen2"
Device "Device2"
Monitor "Monitor2"
DefaultDepth 24
SubSection "Display"
Depth 24
EndSubSection
EndSection

Section "Screen"
Identifier "Screen3"
Device "Device3"
Monitor "Monitor3"
DefaultDepth 24
SubSection "Display"
Depth 24
EndSubSection
EndSection

Section "Screen"
Identifier "Screen4"
Device "Device4"
Monitor "Monitor4"
DefaultDepth 24
SubSection "Display"
Depth 24
EndSubSection
EndSection

xmonad.hs (display on the screen two)

import XMonad
import XMonad.Config.Gnome
import XMonad.Util.EZConfig
import XMonad.Hooks.ManageHelpers
import XMonad.Hooks.ManageDocks
import XMonad.Layout.NoBorders

myWorkspaces =
["one" , "two" , "three" , "four" ] myManageHook = composeAll [ className =? "hl2_linux" --> doFullFloat , className =? "hl2_linux" --> doShift "two" , manageDocks ] main = do xmonad $ gnomeConfig { layoutHook = smartBorders $ layoutHook gnomeConfig , workspaces = myWorkspaces , manageHook = myManageHook <+> manageHook defaultConfig } [/code] This configuration makes windows of the classname "hl2_linux" fullscreen and shifts them to workspace "two". The smartBorders addition to the layoutHook removes the border for the fullscreen windows. [h1]Initial Game Configuration:[/h1] For initial configuration, I had to launch the game in a Gnome Fallback session ("sudo apt-get install gnome-session-fallback") and specify the screen number (in my case, screen 1...the screen numbers use zero-based indices). Doing the screen configuration in an Xmonad session didn't work for me. I also had issues with games failing to capture the mouse until I launched the game in a Gnome Fallback session. This initial configuration must be done for each individual
, "two"
, "three"
, "four"
]

myManageHook = composeAll
[ className =? "hl2_linux" --> doFullFloat , className =? "hl2_linux" --> doShift "two" , manageDocks ] main = do xmonad $ gnomeConfig { layoutHook = smartBorders $ layoutHook gnomeConfig , workspaces = myWorkspaces , manageHook = myManageHook <+> manageHook defaultConfig } [/code] This configuration makes windows of the classname "hl2_linux" fullscreen and shifts them to workspace "two". The smartBorders addition to the layoutHook removes the border for the fullscreen windows. [h1]Initial Game Configuration:[/h1] For initial configuration, I had to launch the game in a Gnome Fallback session ("sudo apt-get install gnome-session-fallback") and specify the screen number (in my case, screen 1...the screen numbers use zero-based indices). Doing the screen configuration in an Xmonad session didn't work for me. I also had issues with games failing to capture the mouse until I launched the game in a Gnome Fallback session. This initial configuration must be d
, className =? "hl2_linux" --> doShift "two"
, manageDocks
]

main = do
xmonad $ gnomeConfig {
layoutHook = smartBorders $ layoutHook gnomeConfig
, workspaces = myWorkspaces
, manageHook = myManageHook <+> manageHook defaultConfig
}

This configuration makes windows of the classname "hl2_linux" fullscreen and shifts them to workspace "two". The smartBorders addition to the layoutHook removes the border for the fullscreen windows.

Initial Game Configuration:

For initial configuration, I had to launch the game in a Gnome Fallback session ("sudo apt-get install gnome-session-fallback") and specify the screen number (in my case, screen 1...the screen numbers use zero-based indices). Doing the screen configuration in an Xmonad session didn't work for me. I also had issues with games failing to capture the mouse until I launched the game in a Gnome Fallback session.

This initial configuration must be done for each individual game: Portal's configuration is not shared with TF2's.

-Despot
Last edited by despot; Jul 27, 2013 @ 10:52am
Showing 1-1 of 1 comments
< >
despot Jul 27, 2013 @ 10:46am 
Okay, I can't figure out what it is about the Xmonad config that's making the formatter b0rk. Any ideas?
Showing 1-1 of 1 comments
< >
Per page: 15 30 50