Kristian Lyngstøl's Blog

Current state of Zoom and TODO

Posted on 2007-06-04

I've implemented a lot of features, most of them work well.

At the moment, the plugin is somewhat bugged on "bigscreen" multihead (which is what most people have; xinerama, twinview, mergedfb, etc). This will be a priority for me to fix over the next few days, it shouldn't be too much of a bother.

Also, the drawing of the cursor uses XFixes. And XFixes is not really that safe. There seems to two fairly grave issues with XFixes that affects my plugin: Cursor simply disappearing on certain cursors (animated ones seem to be a sinner), and X crashing.

The "good" news is that X crashing seem to be related to my multiscreen setup (This is NOT xinerama/twinview/mergedfb). I have not been able to reproduce this on single-screen, and as I'll be working with twinview the next few days, I'll quickly discover if this is multiscreen related or not.

The disappearing seem to be a known issue. I intend to ask for some assistance on both these issues, so the plugin can at least tell when/if the mouse cursor disappears.

Other than that, the code is in fairly good shape. I've put effort into making things generic, to avoid having to re-do too much even when changing the way the actual zoom is performed. I'm at the end of what I can do without acquiring new knowledge, so this is where things will get interesting.

So, my todo: - Fix bigscreen multihead (twinview/xinerama/mergedfb/etc) - Narrow down the cause of the X crashes (feedback if anyone else can reproduce this is wanted) - Mouse based panning - Determine how to go about integrating the plugin with AT-SPI (gnome-accessibility can expect an e-mail from me) - Test ZoomText - Possible workarounds for XFixes loosing the mouse cursor - Quick-store/restore of zoom levels/position

This is probably not complete. I estimate the interesting parts will be AT-SPI integration and possibly dbus. I'm ashamed to admit that I've never bothered playing with dbus even though Compiz and Beryl has had support for it for the longest time.

For the interested parties, my code can be found at:;a=summary (;a=summary)

Features the zoom plugin has: - Floating zoom (default: Super + mouse wheel). Existed in the original zoom plugin. - Fixed zoom factors (default: Super 1, 2, 3. Zoom to: 100%, 50%, 20% (100% == completely zoomed out)) - Focus tracking - Input enabled (Both borrowed from inputzoom from Beryl, and improved with an idea by Dennis/Onestone) - Fit zoom level to a window (Can be activated on focus tracking. Default: Super r) - Fit window to zoom level (Resizes the window, does not move it. Default: super v ) - Keyboard panning (default: super qwes) - Center mouse on screen (Default: super+c)

I should mention that my exams just started with the first one today (Monday 4th), so parts of my attention will be diverted to those. By June 14th I'll be finished with exams.