Kristian Lyngstøl's Blog

The maximumize plugin

Posted on 2007-12-18

The maximumize plugin was invented during the ubuntu developer summit, and is incredibly simple at the moment.

All it does is resize a window so it fits the largest available space it's in. That is, if you have two terminals, maximumizing both will fill screen. This is convenient for using all of your screen real estate.

However, the plugin is not properly finished, and not suitable for a release right now. It ended up in the shadow of school work and other projects, and now behind shelf too. However, it is not forgotten.

It currently does the basic maximumizing, but that's all it does, and it's not extremely smart about it.

I've been talking with Gavintlgold and Fyda on IRC (and the forums) about it the last few days, and we've come up with a few ideas, some which were already planned.

First of all, it needs an animation, and there are a few ways of doing this. Second, it needs to be smarter about which windows to ignore and not, this is easily achieved through the window matching interface. It also needs the ability to deal with overlapping windows. Right now, it has a little bit of tolerance, but not much (40px).

The basic algorithm for expanding the window is also incredibly stupid, it would serve as a perfect text book example of a completely un-optimized algorithm which could easily be improved in steps. All it does is increase the window size by 1 pixel at a time, which means you'll iterate a lot in most cases. This could be improved in different ways, and doing so would allow the plugin do use this function more frequently, thus allowing it to also have a mode that moves the window to the location with the biggest free area.

Allowing the window to actually shrink might also make sense, that's a quick hack in any event.

I intend to do all of this when I'm finished with Shelf, but I welcome input and ideas. As for a date, I expect I'll finish the majority of shelf during Christmas. However, I do have another significant project planned which might take precedence.