
Quoting Samir Unni
I was wondering if there's a way to change the workspace layout based on the properties of the display (i.e., resolution). I'm trying to use a three
This doesn't have to be dynamic - if the workspace layouts are set once when xmonad is launched based on which monitors are in use, that would be fine.
This is definitely possible. If you import Graphics.X11.Xlib and Graphics.X11.Xinerama, then the following snippet will give you a list of rectangles describing the currently-attached screens: openDisplay "" >>= getScreenInfo So, for example, you might do something like this: main = do rects <- openDisplay "" >>= getScreenInfo case rects of [Rectangle {rect_width = 1600, rect_height=1200}] -> xmonad configForBigScreen _ -> xmonad fallbackConfig Of course, there are many other options: you can do the dispatching in your startupHook rather than in main, for example, if you want to use the display that xmonad opens rather than opening your own, or you might even do something in your eventHook if you want it to adjust dynamically. Let us know if you'd like some more pointers. ~d