I want to mimic larswm behaviour where there is one window that gets around 60% of the desktop space, and all other windows get tiled in the remaining space, preferably in a LIFO order. (so that the most recently used window gets placed as the uppermost tile).
This should be actually a WindowPlacement policy. I don’t know if it is possible to define placement policies that are not native to fvwm, or if I have to create a function that gets called every time I create/destroy a window.
Any ideas on how I can make this work, will be appreciated.
You can’t arbitrarily just make up a placement policy – but you can
emulate one. With respect to the window that takes up 60% of the screen
(to which I shall henceforth refer to as “A”), you can use use the MaxWindowSize style option for this window – or, give it an
initial --geomtry (if the application supports it), and set:
Style A FixedSize, FixedPosition
I’m going to assume for the moment that this placement policy is specific
to a page rather than a desk. This is just for simplicity’s sake, and
I’m sure you could expand it. By default, MinOverLapPlacement placement is
probably the one that you want to use, since that tries to place windows
without placing them on others within a set bound (see MinoverlapPlacementPenalities). However that probably won’t be
that strict, or the penalties you might set could be too cumbersome in
operation. Note that this option doesn’t use or need FvwmEvent.
The other option I can see is that you make liberal use of FvwmRearrange.
Assuming none of the windows you’re wanting to place around window A are
“special” you could set window A’s style option to include CirculateSkip – such that FvwmRearrange ignores it. Then what
could do is, is call FvwmRearrange with a series of options (see its
manpage) depending on what you needed. Note that this solution is far
from ideal, but it’s one way. I suppose you might well want to ask me how
you’d use FvwmRearrange in conjunction with windows being mapped. For
this you could use FvwmEvent. Examples forthcoming if you so wish,
although these forums hold almost any example I can think of with
FvwmEvent – it’s the one question I answer the most here. Search them.
the problem is, with both options, how do I make fvwm place the other windows outside the EwmhBaseStruts specified area?
Another thing is… what I would like is… more than MinOverlapPlacement, something like “NoOverlapPlacement”… I believe the only way around this is either figuring out FvwmRearrange, or rearranging the windows by hand… what do you think?
Has anyone got something like this working, even partially? I find the idea intriguing, and I have great faith in FVWM’s potential, but the discussion here is well beyond my experience. It would be very useful to see a proof of concept, however limited, before I start poking around in dusty corners of the man page. And of course I’d like to, er, borrow the code.
I wonder: the “other windows” might have to be resized in order to fit within the remaining space, for otherwise Fvwm would have to overlap them, right? Also, what’s wrong with TileCascadePlacement (aside from this overlap issue, if correct)?
I think I’d be content to allow a frame to overlap those “other windows” if the behavior of windows I chose to put in that frame was convenient.
Warning: Naive rambling ahead.
Suppose one could specifiy that some windows were to go in a frame, and that they were to optimally tile that frame. For example, I often find myself shuffling terms and editor windows, when all I really want is to see as much as possible of them for a moment, before closing or burying one and re-expanding another. In this scenario, precision matters less than speed or removing the distraction of manually placing and resizing windows.
I think Ion and wmii (can) work this way, but I haven’t dug into either one very much.
Perhaps this is a trivial application of tabs or a buttonbox, or maybe it’s just a bad idea all around. It will be some time before I can look into it, but I stumbled across this thread and thought it might be useful to stimulate discussion.
There’s nothing wrong with it, but I don’t think it will help with the business of resizing selected windows.