[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