Moving and resizing windows


I want to move and resize windows with the mouse, but without having to use the frame or title bar. In principle that’s easy, just use a modifier or extra buttons. Unfortunately, I met some problems with both options:

Modifier: The usual Ctrl, Alt, Shift cannot be used, since some applications need them. Since the windows keys take their room from the spacebar, I avoid keyboards with those. That leaves caps lock, which I have mapped to “compose”. I guess that removed its modifier status, since I couldn’t get fvwm to recognize it. So this option seems like it won’t work.

Extra buttons: Nice idea, though I have to use my secondary mouse for that, which has two side buttons. Sounds good, and works with “button 6 WSFT A Move”. But then I have to click the button, move the window and click again. The solution I found looks like this:

DestroyFunc user_move
AddToFunc user_move

  • M Move
    [/code]Which works when bound to button 1, but when I do “button 6 WSFT A user_move”, fvwm says

[FVWM][ParseBinding]: <<WARNING>> Got mouse button 6 when the maximum is 5. You can't bind complex functions to this button. To suppress this warning, use: Silent Mouse 6 WFST A user_move What’s the problem here? Where is this maximum of five mouse buttons defined? Why can I use more, but only without complex functions? I’m using the Debian package in unstable (1:2.5.21-1), if that helps anyone.

The problem is this:

The check for the problem you describe happens in bindings.c:

        if (!is_silent)

Between that, and the FAQ, you have your answer.

– Thomas Adam

I just use:

Silent Mouse 8 W N user_Move
Silent Mouse 9 W N user_Resize

DestroyFunc user_Resize
AddToFunc   user_Resize
+ C Resize

DestroyFunc user_Move   
AddToFunc   user_Move 
+ M Move
+ M Raise
+ C Move
+ C Raise

And I don’t need any special thing to make this work. I click -> move -> release, and it works. Isn’t that the intended behaviour?

Pretty much, although the use of Silent is cheating.

– Thomas Adam