DualHead & placement problems

(If this topic doesn’t fit here, please move it. Thx!)

I’m using FVWM build with:

on Gentoo together with two monitors (exactly same type) and an ATI 9600 with a xorg.conf build by “aticonfig” coming with the prop. ATI-drivers.

The monitors are arranged as one big desktop going from left to right, something like this:

This is giving me a total resolution of 2.560 x 1.024.

The problem(s):

If bound a function like this to KP_5

[code]DestroyFunc WindowToCenter
AddToFunc WindowToCenter

  • I ThisWindow WindowStyle CenterPlacement
  • I PlaceAgain Anim
  • I WarpToWindow 50 50[/code]

As expected, when I press KP_5 the focused window will move to the center of the active screen, i.e. if I’ve got a focused terminal on screen 0 (left of the two monitors) the window will be centered on screen 0.

If I’ve got a focused window on screen 1 (right monitor) an press the key, it doesn’t move to the center of screen 1, but instead it moves to the center vertically and horizontally to the left edge of screen 1(sorry, can’t describe it any better, but think it should be clear).

This problem occours with any application. My style-definitions are as follows:

Style * SloppyFocus, MouseFocusClickRaises, MinOverlapPlacement, WindowShadeSteps 100, WindowShadeBusy, !Title, BorderWidth 0, HandleWidth 1

(That’s it, haven’t definded more styles, yet)

So, is this a known bug? If so, sorry, I couldn’t find it. If it’s a bug or not, is there a workaround for this behaviour?

Next Problem:

If I’ve got mplayer running on the right screen and press “F” to make it fullscreen, it goes fullscreen but on the left screen. If I then press “F” again, it goes back to normal state but is positioned on the top/left of the left screen. Any hints?


Is there a way to tell FVWM that it should start an application on the right monitor, besides setting a “-geometry XxY+X+Y”(which also doesn’t work for ally apps)?


I’ve tried the different placement-policies, but none works like I want it.

What I have:

Let’s say I’ve got a maximized Opera on my left screen and nothing on the right screen. The cursor is in the Opera-window and I start a new app via an shortcut, then I would expect that the new application-windows spawns on the blank right screen. Instead it starts directly over Opera in the top/left of the screen.
If I’ve got Opera on the left and maximzed and the cursor is on the right screen, applications start where the cursor is, but not all(mplayer again).

What I want:

If I’ve got an maximezed app on one screen, then all other apps should start on the other screen and there with, let’s say’ MinOverlapPlacement.

Can I and if so, how can I achieve that?

Thanks for your time, please ask, if I haven’t been clear enough and sorry for my english.


[color=red]Edited by theBlackDragon:
-> moved from Basic questions[/color]

Don’t do this in the future. It’s annoying beyond belief. If you have a few questions you wish to ask, kindly use separate threads. There’s a plethora of (somewhat) useful information on these forums, which if they were categorised appropriately by the people posting the questions, would make searching for them much more easier.

Assuming you mean an explicit window, I would have used Current over ThisWindow (assuming it had the focus).

With the use of Current then, yes, what you have written there is true, but note that ThisWindow does NOT imply focus. It’s an important distinction.

It will centre the window relative to the page you’re on. If this is not want you want, see the MoveTo{Page,Desk} commands.

I don’t think it’s a bug – I just think it’s not doing inherently what you think it should. There’s a subtle yet important difference between expectations and actual results.

That does sound like a bug. MPlayer is notoriously shite.

Exec exec some_application --geometry XxY+0+290@1

The “@” symbol is what defines the monitor to use.

How is it you expect this? There is no placement policy that says: “Hmm, I’ll try and guess what the user wants based on thin air, and see what I can come up with”.

As it should, for most placement policies.

That’s not a placement policy. That’s conditionally shunting windows elsewhere. You can use FvwmEvent to do this. Note that I don’t use or have Xinerama support, given that I am lucky to have at least one monitor that works. So, first thing to do is to setup FvwmEvent:

DestroyModuleConfig FE: *
*FE: Cmd Function
*FE: add_window somefunction

Module FvwmEvent FE

That says that whenever windows are created (mapped) that the function ‘‘somefunction’’ is executed. Low and behold, guess what somefunction will do in this case? That’s right…

DestroyFunc somefunction
AddToFunc   somefunction
+ I Any (CurrentScreen, Maximized) ThisWindow (!Transient) MoveToScreen p

YMMV on this one.

– Thomas Adam