[xmonad] Decoration rewrite
nzeh at cs.dal.ca
Mon Feb 13 01:13:03 CET 2012
Gwern Branwen [2012.02.12 1818 -0500]:
> On Sun, Feb 12, 2012 at 4:54 PM, Norbert Zeh <nzeh at cs.dal.ca> wrote:
> > The reason why I'm writing about this *before* putting the effort into testing
> > all my changes is that I'd like to know how the community feels about a change
> > in the interface of the DecorationStyle type class. As it is, there are only
> > two choices: accept this change or continue to live with quadratic-time
> > behaviour of all or at least most decoration modules because the latter is
> > unavoidable with the current interface. This change in interface should only
> > affect other modules in XMonadContrib, and I've converted them to the new
> > interface already. User configurations should not be affected even for the
> > majority of people who use window decorations because they will normally simply
> > use the layout modifiers based on the decoration module - they will not directly
> > use the DecorationStyle class.
> /puts on XMC commit hat
> The performance issue is a serious one, which has caused emails for
> years now, and has no doubt irritated many users. I'd rank it as one
> of the most serious issues with stock XMC and something that should.
> If the performance really is fixed by a breaking API change, then I'm
> cool with it as long as the 8 or 9 modules using DecorationStyle are
> also fixed - breaking the compile or runtime is pretty non-negotiable.
Of course! So I'll coninue working on this. I just finished a test with
NoFrillsDeco based on the new Decoration module. It's faster but not fast.
I'll have to put this on the backburner for a few days...conference deadline.
After that I'll have to think a little harder how to see how to cut down on CPU
cycles even more.
As an indication of what "faster" means: Before, 30 windows per workspace led to
delays of several seconds in layout updates on my machine. Now I have this down
to probably about half a second. With 15-30 windows on a workspace, things feel
quite a bit snappier but still sluggish compared to not having decorations at
all. It gets really fast only once you're down to about 6-10 windows, at which
point the old module is also reasonably usable.
More information about the xmonad