You are not logged in.

#1 2009-11-02 01:12:00

llcawthorne
Member
From: Columbia, SC
Registered: 2009-10-16
Posts: 142

[BUGGED] xmonad tri-screen non-xinerama problems

Hello All!

New Archer here.  I'm really enjoying playing with Arch.  Ran it about a week on a VM, and then promptly backed up/tore up/re-created my 3 TB RAID array as a shrine in deciation to its glory.  I haven't posted much along the process, because I've generally been able to put things together to my liking other than a few minor setbacks that I mostly managed to handle myself.  I have even gave Arch the coveted position of my "Laptop Linux."  I have a slightly odd setup and it seems to be tied in with an issue that I am having, so I thought I might post here, especially since some of you seem to be xmonad users.

The Paragraph
Most wm's seem to handle non-Xinerama multi-display fine (I've been trying out as many as I could find since switching over to Arch.  I figured new Linux/new Look).  It seems that xmonad handles Xinerama better but has a less friendly non-Xinerama out of the box experience, and it is terribly hard to find the information I am after since when I go looking for multi-monitor resources, I find alot about Xinerama and praise for its Xinerama way of doing things.  Apparently, you still can't enable Composite and Xinerama at the same time, and in general, I prefer funny fade effects and what not to being able to move windows from screen to screen so have opted for a standard non-Xinerama multi-card, multi-display setup of xorg.

Bullet Points
1 - Minor Problem:  xmonad only runs on one screen if I don't enable Xinerama
2 - Entertwined Problem:  Composite extension becomes disabled if I enable Xinerama
3 - Other Entertwined Problem:  Most wm's I try if they don't support dual screen natively, I can simply put calls in my .xinitrc to load on the various display (ie. 'DISPLAY=:0.2 wmii &; DISPLAY=:0.1 wmii&; exec wmii'), and it's no big.  If I try that with xmonad, the session on DISPLAY :0.0 won't give up control of the keyboard to the displays on the other monitors.  That's pretty weird, since it gives up control to my unmanaged windows just fine, or gives up control to another WM (as I type this, I have openbox managing my second monitor so I have an easy way to resize windows and such, but that is a somewhat imperfect solution in my opinion).  If I leave the screens unmanaged , I can launch apps on them easily enough by 'DISPLAY=:0.1 thunderbird' (like I do with openbox managing them if I don't want to use the menu) through command-line or scripts, but there is no way to move the apps or resize them or anything without some WM (like openbox) attached to the DISPLAY.
4 - Minor Entertwined Problem That Makes This Whole Mess Harder To Ignore:
When you go off the screen to an unmanaged window or a window managed by another window manager, apparently xmonad continues to think you are focused on the app that you hovered over last on your way to the other screen (ie. if I go over to Thunderbird now, xmonad will leave the active border around Firefox since I have it on the left side of my primary monitor and the other screen is to the left).  This is no big, although I would prefer it to gray out or whatever.  At the same time, xmobar displays that I am still over my Firefox window.  I am fine with it not knowing that I am over messing around in another WM or on an unmanaged screen.  The big problem is that when I bring the mouse back, it seems to get confused about whether I left or not, and doesn't pass focus back to the app in question.  It still thinks the app has focus (according to its border and xmobar), but keystrokes still go to the other screen and the window on the first screen will no longer even directly respond to mouse clicks.  It is easy to fix, I can simply move to any other window on the same screen, and then back to my firefox and things work fine.  I know that's a weird wall of text, so a quick explanation:
If I take my mouse off the screen to the left, passing over Firefox, I end up on my Screen 1 that is currently displaying Thunderbird and managed by Openbox.  I can then click message, type things, all no problem.  If I move my mouse back to the Firefox screen, it looks like it is active, but I cannot click on anything (no links work, the buttons that control formatting of this message darken when I hover over them but do nothing on click, the check boxes at the bottom of this compose message window darken but do not respond to clicks, etc).  If I do nothing else other than but my mouse over one of my terminal windows (which will receive the focus border and receive input fine), and then move it back to Firefox - everything in Firefox will at that point work great.

That last note is the primary reason I can't just let another WM loose on my secondary display and go about my day (I mean, I tend to just leave e-mail up on the thing, and I suppose a valid argument can be made for having a floating manager on your second screen anyway).  It's most annoying when I just barely go off the edge of the main monitor by mistake, say on my way to a tab or something, and can't click my tabs anymore without dragging the mouse back to a terminal and back over to Firefox.  Of course, I would be fine with messing with xmonad on all my screens really if I didn't have to turn off my Composite extension to do it.

One easy solution is to just use Awesome.  It looks nice and seems to offer some of the same features, but I kind of like xmonad's way of configuring things and the idea that my configs seemingly shouldn't break on minor version numbers.  Awesome has already bit me in my playing around by making widget obselete two days after I put the widgets in my config file, and it seems they have a history of this type of action. 

I can happily provide any configuration files on request.  My xorg.conf is probably of the most interest, I would think, but if I knew how to fix this, I wouldn't be on here asking for help.  It doesn't appear to be related to xmonad.hs, since I can use the default or a heavily customized one and get the same behavior.  There might be a way to fix the problem somehow in xmonad.hs; I don't know.

Oh well, sorry my first post was such a wall of text, but I wanted to provide a solid idea of what was going on here.  Any help would be greatly appreciated.

Lewis

Last edited by llcawthorne (2009-11-18 02:26:08)


To understand recursion, you must understand recursion.

Offline

#2 2009-11-02 23:12:30

vogt
Member
From: Toronto, Canada
Registered: 2006-11-25
Posts: 389

Re: [BUGGED] xmonad tri-screen non-xinerama problems

I have had composite enabled with xinerama.

Some graphics drivers restrict the size of all screens to fit within 2048x2048 pixels if you still want compositing, but if you have 3 monitors, it is unlikely that that you can find an arrangement that satisfies that driver/hardware limitation.

Offline

#3 2009-11-04 15:21:16

llcawthorne
Member
From: Columbia, SC
Registered: 2009-10-16
Posts: 142

Re: [BUGGED] xmonad tri-screen non-xinerama problems

vogt wrote:

I have had composite enabled with xinerama.

Some graphics drivers restrict the size of all screens to fit within 2048x2048 pixels if you still want compositing, but if you have 3 monitors, it is unlikely that that you can find an arrangement that satisfies that driver/hardware limitation.

Yeah, 2048x2048 woudln't work for me.  My main monitor runs 1920x1200, secondary is 1680x1050, and the tv is at 1920x1080.

Apparently since the xorg upgrade the other day, I can't even turn on Xinerama anymore.  I know it worked when I tested just to see if things worked in Xinerama mode the other day (but it automatically disabled Composite).  Now I can turn on Xinerama but I get a strange cursor flicker and segfault when trying to go to the other screen.  Apparently some other people have that problem with the latest x-server and xinerama with Nvidia, but I haven't looked into fixing it, since I don't tend to use Xinerama anyway.  It makes testing some solutions a bit harder though not being able to temporarily turn it on.

I have done some more testing though.  With my current multi-screen Xinerama off X-layout, things definitely work as expected in other Window managers.  I have played around in GNOME, compiz, fluxbox, openbox, awesome and ratpoison with this separate screen X-layout without problems. 

The problem seems to be more with xmonad accepting the cursor than letting it go.  When I run :0.1 unmanaged or with another window manager, I can switch over to the other display with 100% reliability, but only have the problem when coming back to my xmonad display.  However, if I spawn xmonad to :0.1 in addition to having xmonad on :0.0, I almost always have problems switching over to :0.1, but once I get switched over to :0.1, I have trouble coming back to :0.0.

Also, strangely enough, I can reliably switch to any other display with two windows on it.  I have taken to running a clock on display :0.1, since 90% of the time when I switch over to my e-mail client I will not get proper focus.  I can fix this 100% of the time by mousing over the clock, then back over the e-mail client.  To come back to my main screen, I will not get focus on my browser 90% of the time, but can reliably get focus to it 100% of the time there is a problem by mousing over one of the terminals to the right of my browser and then coming back to the browser.  Since the problem is predictable, I can work around it, but either way it is annoying.

The problem is easy to duplicate with both a default xmonad.hs, another xmonad.hs pulled off the site (tried it with andrea's and arossato's, and with my personal customized and overly large xmonad.hs that I have been trying out various features with.

Curiously enough, since it was a focus problem, I though "maybe if it updated focus more often?" and I tried 'import XMonad.Actions.UpdateFocus" with the proper startupHook's and handleEventHooks to make it attempt to update focus whenever you move the mouse within a window.  This did nothing to alleviate the problem, although it obviously took ince I noticed the change in focus handling when I didn't leave a monitor.

Oh, and as another test to see if it might relate back to my drivers somehow, I removed nvidia's proprietary drivers and installed Nouveau.  While the Nouveau drivers are pretty neat (the fast frame buffer switching is fun!), I found them annoying since I don't know how to make my console come up on the right monitor with them, but that is unrelated.  I changed around my config and brought up X and was able to duplicate the problem exactly with the alternate drivers (but same configuration otherwise). 

And lastly, I booted to my Gentoo install (that does use the same hardware are xorg.conf).  I can't get the 0.9 xmonad from the overlay to compile on it for whatever reason, so it conveniently has 0.8 installed.  I see the same behavior with a default config and a sample config swiped from the website (I cannot test with my custom config, since it has multiple 0.9 imports in it, but I have no reason to believe it would react differently).

I welcome any ideas.

Lewis Cawthorne


To understand recursion, you must understand recursion.

Offline

#4 2009-11-04 15:31:01

llcawthorne
Member
From: Columbia, SC
Registered: 2009-10-16
Posts: 142

Re: [BUGGED] xmonad tri-screen non-xinerama problems

Oh, here's a link to my xorg.conf.  Since my X works with everything else, I don't imagine it to be at fault by itself, but since not everyone that uses xmonad seems to be having the same problem, I suspect the problem might exist somewhere around the intersection of how I have xorg configured and how xmonad does things:

http://dpaste.com/116203/

It seems a pretty straightforward way to do an xorg.conf to me.  I am aware you can do dynamic stuff with xrandr these days or what not, but I don't rotate things or change resolution or any of that stuff, so hardcoding values in a text file seems a fine and dandy way to do things still.


To understand recursion, you must understand recursion.

Offline

#5 2009-11-04 15:40:08

llcawthorne
Member
From: Columbia, SC
Registered: 2009-10-16
Posts: 142

Re: [BUGGED] xmonad tri-screen non-xinerama problems

Oh, I also has the same problem with this file:

http://dpaste.com/116208/

It's pretty much the same with all the unnecessary features (like VBlank and what not) removed from the file.

The hardware in question is fairly simple.  I have dual 8800GT's in a SLI configuration (with SLI turned off, since even with my other monitors connected to a completely independent card from my SLI array it likes to turn off any display but the main one if I switch SLI to 'on' -- a problem I plan on fixing one of these days, but it isn't like I am running any intensive 3d apps on my Linux box right now anyway) and an 8400GS. 

My 8800 GT (or GT's, but one isn't doing anything right now) drives my 28" LCD.  My 8400 GS drives my Samsung 22" that I tend to read e-mail and some text on (I have the brightness on it dimmed a little - makes it easy on the eyes), and a 46" Sony XBR4 that I watch movies on and open HuluDesktop to quite regularly but otherwise leave turned off.


To understand recursion, you must understand recursion.

Offline

#6 2009-11-04 20:46:56

llcawthorne
Member
From: Columbia, SC
Registered: 2009-10-16
Posts: 142

Re: [BUGGED] xmonad tri-screen non-xinerama problems

Have attempted two more things.

I tried adding gaps on both sides of each screen (in hopes that maybe it would catch itself moving over a gap and pass control or something).  No effect.

I also tried connecting my primary and secondary monitor both to my main 8800GT and only having the television on the 8400 GS, but it didn't change anything.  (having two monitors on the weaker card was a holdover from back when the windows SLI driver wanted to disable multiple outputs from a single card).

And just to make matters stranger, I have attempted collecting data with all three monitors hooked up and running xmonad. 

If I sit on this screen with my browser and hit my keystroke to open a terminal, it opens on this screen (Screen0).
If I move the mouse one screen to the left (Screen1) and open a terminal, it opens on this main screen again (Screen0).
If I move the mouse one screen to the left (Screen2) and open a terminal, it opens on the middle screen (Screen1).
If I move the mouse one screen to the right (Screen1) and open a terminal, it appears on the television (Screen2).
If I move the mouse one screen to the right (Screeen0) and open a terminal, it appers on the proper screen!  (Screen0).

I can make it repeat that pattern...  Well at least the 10 times I've just done it while typing this.
I can reset the pattern and make everything open on the proper screen quite reliably by moving to a screen and then moving to any other window except for the one that I moved into upon entering (ie., if I move one screen left but scroll past my e-mail client and even momentarily touch the clock and I am fine until I try to go to another screen).

Anyone else ever seen anything like this?


To understand recursion, you must understand recursion.

Offline

#7 2009-11-04 20:57:25

llcawthorne
Member
From: Columbia, SC
Registered: 2009-10-16
Posts: 142

Re: [BUGGED] xmonad tri-screen non-xinerama problems

Out of curiousity, I tried stripping things down to a far simpler setup.  I removed all but one device line and am trying with two monitors connected to my 8800 GT, and suprisingly enough I am still seeing the same sort of focus issues when running no WM or running xmonad on the secondary monitor.

With no WM on the secondary monitor, I can reliably change focus to the second monitor, but sometimes have to move across to another window and focus it to get back to my main monitor.

With another instance of xmonad on the second monitor, I can experience problems going in either direction.

I sort of expected my problems to clear up with a more basic configuration...  My issue is relating to switching screens, so simplifying down to a single monitor seems rather less than helpful.


To understand recursion, you must understand recursion.

Offline

#8 2009-11-05 04:26:42

Cyrusm
Member
From: Bozeman, MT
Registered: 2007-11-15
Posts: 1,053

Re: [BUGGED] xmonad tri-screen non-xinerama problems

hmmm. have you considered configuring your multi-monitor set-up using Xrandr instead of Xinerama?  I am personally running a 2 monitor layout with xrandr + xmonad, and everything is working great.    here's my xorg.conf if you would like to take a look at it for configuration etc.

Section "Module"
Load "dbe"
  SubSection "extmod"
  Option "omit xfree86-DGA"
  EndSubSection
Load "glx"
Load "freetype"
#Load "type1"
Load "dri"
Load "drm"
EndSection

Section "Files"
    FontPath   "/usr/share/fonts/misc"
    FontPath   "/usr/share/fonts/100dpi:unscaled"
    FontPath   "/usr/share/fonts/75dpi:unscaled"
    FontPath   "/usr/share/fonts/TTF"
    FontPath   "/usr/share/fonts/Type1"
EndSection

Section "Server Flags"
    Option "AutoAddDevices" "false"
    Option "DontZap" "false"

EndSection

Section "Input Device"
    Identifier    "Keyboard1"
    Driver    "kbd"

    Option "AutoRepeat" "500 30"
    Option "XkbRules"    "xorg"
    Option "XkbModel"    "microsoft"
    Option "XkbLayout"    "us"
EndSection

Section "Input Device"
    Identifier    "Mouse1"
    Driver    "mouse"
    Option "Protocol"    "Auto"    
    Option "Device"      "/dev/input/mice"
    Option "ZAxisMapping"   "4 5 6 7"
    Option "Emulate3Buttons"
EndSection

Section "Monitor"
    Identifier "monitor0"
    Option "DPMS" "true"
EndSection

Section "Monitor"
    Identifier "monitor1"
    Option "DPMS" "true"
    Option "RightOf" "monitor0"
EndSection

Section "Device"
     Identifier "device0"
     Driver "radeonhd"
     BusID "PCI:1:5:0" 
     Option    "monitor-DVI-D_1" "monitor0"
     Option    "monitor-VGA_1" "monitor1"
     Option "RROutputOrder" "DVI-D_1"
#    OPtion "ColorTiling" "on" 
#    Option "AccelMethod" "shadowfb"
     Option "AccelMethod" "exa"
     Option "DRI" "on"
EndSection

Section "Screen"
     Identifier "Screen0"
     Device "device0"
    DefaultDepth     24
    SubSection "Display"
        Depth     24
    EndSubSection
EndSection

Section "ServerLayout"
    Identifier     "Multihead Layout"
    Screen         "Screen0" 0 0
    InputDevice    "Mouse1" "CorePointer"
    InputDevice    "Keyboard1" "CoreKeyboard"
EndSection

Section "DRI"
Group        "video"
 Mode         0666
EndSection

Hofstadter's Law:
           It always takes longer than you expect, even when you take into account Hofstadter's Law.

Offline

#9 2009-11-05 04:48:24

llcawthorne
Member
From: Columbia, SC
Registered: 2009-10-16
Posts: 142

Re: [BUGGED] xmonad tri-screen non-xinerama problems

I tried configuring my system to work with xrandr, but it doesn't see my secondary card at all; only the first one.  My information may be outdated, but what I find on Google seems to indicate that as of 1.3 it doesn't support more than one card in a system.  I haven't messed with it alot though, and may try reconfiguring tomorrow with your file as a starting point and see if it might be happier.


To understand recursion, you must understand recursion.

Offline

#10 2009-11-06 02:14:53

llcawthorne
Member
From: Columbia, SC
Registered: 2009-10-16
Posts: 142

Re: [BUGGED] xmonad tri-screen non-xinerama problems

The problem between my two primary screens disappears entirely if I enable TwinView and feed it the set of configuration options I find tolerable.  Of course, I don't particularly like that option, since I can't easily start something up on monitor 2 with a DISPLAY=:0.1 and right now my tv doesn't work at all, but I might be able to make it work properly.  Also, I'ld need to learn how to set my background image without deforming it across the two monitors, but I am sure there are easy ways to do that which I haven't looked at since I've done things the other way.  Can't test until the wife is done watching her awful shows.

Of course, the more annoying thing is that it makes xmonad work at the cost of making all my other WM's weird.  Awesome seems to be fine with it (it seems to tolerate anything except a misplaced space in its rc.lua file); it was fine with the old config.  My Fluxbox looks sick now.  The stretched wallpaper only slightly annoys me; half my bottom bar disappearing into empty space that exists below my secondary monitor isn't cool though (one monitor is 1920x1200, one is 1680x1050).  I can't get the wife approve me getting another 1920x1200 monitor now (although I should remember this configuration and show it to her as an 'excuse' around black friday). 

It is nice to see the problem doesn't exist in the new config, but I was already pretty sure it was related to my separate X screen way of doing things.


To understand recursion, you must understand recursion.

Offline

#11 2009-11-06 02:56:00

llcawthorne
Member
From: Columbia, SC
Registered: 2009-10-16
Posts: 142

Re: [BUGGED] xmonad tri-screen non-xinerama problems

Fascinating...  If I have twinview enabled on one card and run xmonad, everything works great.  It treats monitor one as a screen and monitor two as a screen, and I can play around figuring out the difference between greedyView and view (and whether I want to get used to it or import IdependentScreens or what). 

However, if I add my other card into xorg.conf and then setup another screen to be left of my twinview screen then load up xmonad, xmonad treats the twinview arrangement as one large wide screen to tile (like other WM's deal with the twinview screen) and the other screen is over there (since I can mouse over it), but I can't tell what's on it since the wife is still watching Grey's.  I imagine it is a separate display device though, since my background is only stretched across the two twinview screens.

I can't really figure out doing anything with xrandr.  I tried hacking up my config and making it work, but xrandr -q just shows me a list of displays and I am not sure how to access my other monitors.  I tried like DVI-1, but no luck.  I was using xrandr successfully for a bit with the nouveau driver, as I recall.  Maybe I'll play with it more and see if I can figure out something about making it work with just the two monitors and ignore the third, then try to add it on later though.  Does anyone know a good resource on xrandr?  The wiki doesn't seem to have anything dedicated to it.


To understand recursion, you must understand recursion.

Offline

#12 2009-11-18 02:29:17

llcawthorne
Member
From: Columbia, SC
Registered: 2009-10-16
Posts: 142

Re: [BUGGED] xmonad tri-screen non-xinerama problems

Low priority bug submitted to xmonad.  Trying to get accustomed to Xinerama and no compositing for now.  I really like playing with xmonad and Haskell, or else I would run something different on my main PC and just run xmonad on my laptop...  If I can't get used to Xinerama and such, I might try DWM...  Not sure.  I kind of like the way xmonad does Xinerama anyway, so this is kind of fun.

Maybe I can learn Haskell and fix the bug before someone else does.  I'll consider it a race, even if I am not sure anyone is racing against me.

Or maybe I'll get used to Xinerama.  What did transparency and shadows ever do to increase my productivity anyway?

Either way, issue closed enough for now.


To understand recursion, you must understand recursion.

Offline

#13 2009-12-15 21:56:47

muflax
Member
From: Germany
Registered: 2008-07-21
Posts: 58

Re: [BUGGED] xmonad tri-screen non-xinerama problems

Well, this might be a bit of a late reply now, but I have the same problem. I'm quite annoyed by it, especially because I have no alternatives. Xinerama and Xrandr don't work for me at all (X.org is so horribly broken it took me days and many downgrades to make it even start with all 3 monitors and both graphics cards active...) and any WM except xmonad has become painful to use. However, I'll try to understand xmonad's source and maybe fix it somehow. hmm

Offline

#14 2009-12-17 15:59:55

llcawthorne
Member
From: Columbia, SC
Registered: 2009-10-16
Posts: 142

Re: [BUGGED] xmonad tri-screen non-xinerama problems

Here's a link to the bug report should anyone want to post and let the dev's know it is bothering more than one person and/or provide any other information:

http://code.google.com/p/xmonad/issues/detail?id=340


To understand recursion, you must understand recursion.

Offline

Board footer

Powered by FluxBB