[xmonad] Xine woes
Norbert Zeh
nzeh at cs.dal.ca
Tue Feb 8 04:10:15 CET 2011
Hi folks,
I've seen the following odd behaviour with xine on my dual-screen setup.
I open xine on the left screen, then press "f" to get it into fullscreen
mode and voila, it extends partially into the right screen covering the
windows on that screen by a few pixels: 2*borderwidth to be precise.
Here's what I think happens based on some digging through the xmonad
code that I did:
1. xine goes into fullscreen and requests the full screen size as its
geometry.
2. Since my manage hook floats xine, the xmonad floating window code kicks
in, which honours the size request of the window but adds twice the
border width to its size to accommodate the border decoration.
3. If I activate a layout modifier that removes the border on fullscreen
float windows, then the border is removed but the geometry stays at
the increased size.
I didn't actually verify that this is what happens, but it's the most
plausible explanation given the following observations I made:
1. the floatLocation function in XMonad.Operations adds 2*borderwidth to
the size of the window as stated above.
2. the problem disappears with a border width of 0.
3. xine extends into the right screen by 2*borderwidth no matter whether
I remove borders from fullscreen float windows or not.
4. Changing the layout so that the screens are arranged vertically and
placing xine onto the top screen, it extends by 2*borderwidth into
the bottom screen.
5. the problem does not appear in any other environment I tried (gnome,
kde, awesome), presumably because they automatically remove the
border from fullscreen windows without adjusting their geometry.
Maybe xine even sets a window hint that says it doesn't want a
border, and those window managers honour this request while xmonad
does not?
So my question for the list is what can be done to fix this behaviour.
In my opinion it boils down to the question of whether adding the
borderwidth to the window geometry as X.O.floatLocation does is the
right thing to do. I think it is for windows that are not fullscreen,
but for windows that are fullscreen it is more likely than not that it
isn't.
Would it make sense for X.O.floatLocation to distinguish between windows
that take up the full size of a screen and ones that do not and treat
them differently?
- Norbert
More information about the xmonad
mailing list