PDA

View Full Version : Zoom


Kristian
May 18th, 2007, 08:03 PM
Short introduction
I'll be working on zoom over the summer for a Google summer of Code project, with Ubuntu as the mentoring organisation. This is mainly to improve accessibility.

I hope to use this thread to get feedback, and to keep the community updated. I'll both keep the original post updated, and add new posts when I implement something worthwhile.

I decided to use the Compiz zoom plugin as a base. It works well, and only required small changes to make it input enabled in the same way Beryl's input enabled zoom works. I'll be working on making it (more) generic so it can be used without too much hassle when input redirection/transformation is available.

Where to find my zoom code
http://gitweb.opencompositing.org/?p=us ... ;a=summary (http://gitweb.opencompositing.org/?p=users/kristian/zoom;a=summary)

Current state of the code
Quite stable. Now in plugins-main. A few XFixes related issues.

Implemented improvements

Input enabled[/*:m:713d7]
Zoom follows focus[/*:m:713d7]
Fit zoom-area to a window[/*:m:713d7]
Manual keyboard zoom panning[/*:m:713d7]
Zoomed cursor[/*:m:713d7]
Static zoom area with mouse input (zoom that doesn't move the moment you move the mouse)[/*:m:713d7]
Pre-defined zoom levels on hotkeys[/*:m:713d7]
Fit window to zoom-level[/*:m:713d7]
Center Mouse[/*:m:713d7]
DBus interface[/*:m:713d7]
Unlimited zoom level[/*:m:713d7]
Mouse panning[/*:m:713d7]

Pending improvements

Zoom follows cursor (at-spi magic)[/*:m:713d7]
Communication with Orca[/*:m:713d7]
Center zoom. (Can be achieved by dbus binding if you like)
[/*:m:713d7]

Additional features might pop up include:

Input transformation/redirection enabled zoom (This depends on X.org development)[/*:m:713d7]
Storing/Restoring zoom-states on the fly.[/*:m:713d7]
Sensitivity fixes[/*:m:713d7]
Mouse guides[/*:m:713d7]

franzrogar
May 26th, 2007, 04:28 PM
That's a good new :)

(and it works like charm)

Forgot to mention: from my forum users: "Congrats! It's fantastic!" :)

Kristian
May 29th, 2007, 12:48 AM
Thanks, I've implemented a few keyboard panning bindings, and the ability to make the zoom area fit to a window, either automatically with focus tracking or by manually triggering a binding.

Next on the list is zoomed pointer, then at-spi fun.

Kristian
May 30th, 2007, 11:07 PM
I just added zoomed cursor and a little goodie that I think you will like.

Update, enable zoomed cursor, then disable mouse sync.... The zoomed cursor will be drawn at the correct place even if the zoomed area doesn't move, allowing you to zoom in on a window and keep the zoom-area still even when moving the mouse.... I'll improve this over the next few days to avoid "loosing" the mouse, but it's looking good.

plun
May 30th, 2007, 11:26 PM
Well.... its magic... :D

Thanks..!

Guillaume86
June 1st, 2007, 02:18 PM
hello, i can't compile the plugin from git, is it normal?
i get :
[code:515c9]
zoom.c: In function 'zoomPaintScreen':
zoom.c:374: warning: passing argument 2 of 's->paintScreen' from incompatible pointer type
zoom.c:374: warning: passing argument 3 of 's->paintScreen' makes integer from pointer without a cast
zoom.c:374: warning: passing argument 4 of 's->paintScreen' makes integer from pointer without a cast
zoom.c:374: error: too many arguments to function 's->paintScreen'
zoom.c:374: error: void value not ignored as it ought to be
zoom.c:375: warning: assignment from incompatible pointer type
zoom.c:384: warning: passing argument 2 of 's->paintScreen' from incompatible pointer type
zoom.c:384: warning: passing argument 3 of 's->paintScreen' makes integer from pointer without a cast
zoom.c:384: warning: passing argument 4 of 's->paintScreen' makes integer from pointer without a cast
zoom.c:384: error: too many arguments to function 's->paintScreen'
zoom.c:384: error: void value not ignored as it ought to be
zoom.c:385: warning: assignment from incompatible pointer type
zoom.c: In function 'drawCursor':
zoom.c:645: warning: passing argument 2 of 'transformToScreenSpace' makes pointer from integer without a cast
zoom.c: In function 'zoomInitScreen':
zoom.c:1349: warning: assignment from incompatible pointer type
make: *** [build/zoom.lo] Erreur 1
[/code:515c9]
Any idea? thx

Kristian
June 1st, 2007, 03:32 PM
hello, i can't compile the plugin from git, is it normal?
i get :
[code:092fa]
zoom.c: In function 'zoomPaintScreen':
zoom.c:374: warning: passing argument 2 of 's->paintScreen' from incompatible pointer type
zoom.c:374: warning: passing argument 3 of 's->paintScreen' makes integer from pointer without a cast
zoom.c:374: warning: passing argument 4 of 's->paintScreen' makes integer from pointer without a cast
zoom.c:374: error: too many arguments to function 's->paintScreen'
zoom.c:374: error: void value not ignored as it ought to be
zoom.c:375: warning: assignment from incompatible pointer type
zoom.c:384: warning: passing argument 2 of 's->paintScreen' from incompatible pointer type
zoom.c:384: warning: passing argument 3 of 's->paintScreen' makes integer from pointer without a cast
zoom.c:384: warning: passing argument 4 of 's->paintScreen' makes integer from pointer without a cast
zoom.c:384: error: too many arguments to function 's->paintScreen'
zoom.c:384: error: void value not ignored as it ought to be
zoom.c:385: warning: assignment from incompatible pointer type
zoom.c: In function 'drawCursor':
zoom.c:645: warning: passing argument 2 of 'transformToScreenSpace' makes pointer from integer without a cast
zoom.c: In function 'zoomInitScreen':
zoom.c:1349: warning: assignment from incompatible pointer type
make: *** [build/zoom.lo] Erreur 1
[/code:092fa]
Any idea? thx

Caused by an update to core. The zoom plugin has been update to take these into account, so if you pull again, it should compile :)

Guillaume86
June 1st, 2007, 04:06 PM
thk you it's working now ;)

RacerII
June 1st, 2007, 08:53 PM
Just want to say thanks to Kristian for his hard work on this plugin , im using it for a while now and find it really useful.
Im using an 21" crt monitor @ 1600x1200 and some things are just to small , like reading news etc in firefox (no really my eyes are ok :P ) and thats where the "interactive" zoom plugins works wonders.

RacerII
June 10th, 2007, 02:36 PM
For some reason it doesnt work anymore for me.
I get an error that it has some dependency problems and that the plugin should be loaded before the expo plugin.

Kristian
June 10th, 2007, 03:49 PM
It should be loaded after the expo plugin, indeed. But if you're using ccs this shouldn't be an issue.

If you are using gconf or ini, you might have to re-order the plugin list.

If this doesn't solve it for you, can you paste the error message(s)?

RacerII
June 12th, 2007, 04:33 PM
I am using css, will try out the latest git and see if it works.
Or post the error msg.
Edit:
/usr/local/bin/compiz (core) - Error: 'zoom' plugin must be loaded after 'expo' plugin
/usr/local/bin/compiz (core) - Error: Can't activate 'zoom' plugin due to dependency problems

Kristian
June 13th, 2007, 05:47 PM
Are you sure you are installing the metadata correctly? This dependency is defined both in the source and in the metadata, and so ccs should be perfectly able to sort the plugin list before loading it.

RacerII
June 13th, 2007, 07:38 PM
Uhm
I just do make and make install , what else should i do?

Kristian
June 13th, 2007, 11:47 PM
That is enough. You may want to attempt to disable and re-enable the plugin in ccsm/ccs-settings, I'm not sure when the plugin list is built...

I'll look into this closer tomorrow if you are still having problems. The need for this load rule is fairly obscure, so I might just leave it only in the metadata.

RacerII
June 15th, 2007, 05:41 PM
Still have the same problem , even tried uninstalling compiz and removing all files.
But still no go.

Garfunkel
June 25th, 2007, 12:00 PM
Hi, I just tried to install the plugin from your source, i tried to do a sudo make; make install -d and i get a huge long error, here is the output:

-e compiling : ezoom.c -> build/ezoom.loPutting child 0x08082ce0 (build/ezoom.lo) PID 16937 on the chain.
Live child 0x08082ce0 (build/ezoom.lo) PID 16937
Reaping winning child 0x08082ce0 PID 16937
Package compiz was not found in the pkg-config search path.
Perhaps you should add the directory containing `compiz.pc'
to the PKG_CONFIG_PATH environment variable
No package 'compiz' found
Live child 0x08082ce0 (build/ezoom.lo) PID 16938
ezoom.c:87:20: error: compiz.h: No such file or directory
ezoom.c:89: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'zoomMetadata'
ezoom.c:138: error: expected specifier-qualifier-list before 'Bool'
ezoom.c:149: error: expected specifier-qualifier-list before 'HandleEventProc'
ezoom.c:175: error: expected specifier-qualifier-list before 'GLfloat'
ezoom.c:190: error: expected specifier-qualifier-list before 'PreparePaintScreenProc'
ezoom.c:209: error: expected ')' before '*' token
ezoom.c:210: error: expected ')' before '*' token
ezoom.c:211: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'updateMouseInterval'
ezoom.c:212: error: expected ')' before '*' token
ezoom.c:213: error: expected ')' before '*' token
ezoom.c:214: error: expected ')' before '*' token
ezoom.c:216: error: expected ')' before '*' token
ezoom.c:217: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'fetchMousePosition'
ezoom.c:236: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'outputIsZoomArea'
ezoom.c:246: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'isActive'
ezoom.c:260: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'isZoomed'
ezoom.c: In function 'updateActualTranslates':
ezoom.c:277: error: 'ZoomArea' has no member named 'ztrans'
ezoom.c:277: error: 'DEFAULT_Z_CAMERA' undeclared (first use in this function)
ezoom.c:277: error: (Each undeclared identifier is reported only once
ezoom.c:277: error: for each function it appears in.)
ezoom.c:277: error: 'ZoomArea' has no member named 'currentZoom'
ezoom.c:278: error: 'ZoomArea' has no member named 'ztrans'
ezoom.c:280: error: 'ZoomArea' has no member named 'zVelocity'
ezoom.c:281: error: 'ZoomArea' has no member named 'ztrans'
ezoom.c:284: error: 'ZoomArea' has no member named 'xtrans'
ezoom.c:284: error: 'ZoomArea' has no member named 'realXTranslate'
ezoom.c:284: error: 'ZoomArea' has no member named 'currentZoom'
ezoom.c:285: error: 'ZoomArea' has no member named 'ytrans'
ezoom.c:285: error: 'ZoomArea' has no member named 'realYTranslate'
ezoom.c:285: error: 'ZoomArea' has no member named 'currentZoom'
ezoom.c: At top level:
ezoom.c:294: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'isInMovement'
ezoom.c: In function 'initialiseZoomArea':
ezoom.c:317: error: 'ZoomArea' has no member named 'currentZoom'
ezoom.c:318: error: 'ZoomArea' has no member named 'newZoom'
ezoom.c:319: error: 'ZoomArea' has no member named 'xVelocity'
ezoom.c:320: error: 'ZoomArea' has no member named 'yVelocity'
ezoom.c:321: error: 'ZoomArea' has no member named 'zVelocity'
ezoom.c:322: error: 'ZoomArea' has no member named 'xTranslate'
ezoom.c:323: error: 'ZoomArea' has no member named 'yTranslate'
ezoom.c:324: error: 'ZoomArea' has no member named 'realXTranslate'
ezoom.c:325: error: 'ZoomArea' has no member named 'realYTranslate'
ezoom.c: At top level:
ezoom.c:333: error: expected ')' before '*' token
ezoom.c:365: error: expected ')' before '*' token
ezoom.c:411: error: expected ')' before '*' token
ezoom.c:453: error: expected ')' before '*' token
ezoom.c:478: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'zoomPaintOutput'
ezoom.c:537: error: expected ')' before '*' token
ezoom.c:571: error: expected ')' before '*' token
ezoom.c:599: error: expected ')' before '*' token
ezoom.c:629: error: expected ')' before '*' token
ezoom.c:643: error: expected ')' before '*' token
ezoom.c:665: error: expected ')' before '*' token
ezoom.c:709: error: expected ')' before '*' token
ezoom.c:735: error: expected ')' before '*' token
ezoom.c:755: error: expected ')' before '*' token
ezoom.c:784: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'ensureVisibility'
ezoom.c:823: error: expected ')' before '*' token
ezoom.c:855: error: expected ')' before '*' token
ezoom.c:888: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'fetchMousePosition'
ezoom.c:917: error: expected ')' before '*' token
ezoom.c:935: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'updateMouseInterval'
ezoom.c: In function 'freeCursor':
ezoom.c:954: error: 'CursorTexture' has no member named 'isSet'
ezoom.c:957: warning: implicit declaration of function 'makeScreenCurrent'
ezoom.c:957: error: 'CursorTexture' has no member named 'screen'
ezoom.c:958: error: 'CursorTexture' has no member named 'isSet'
ezoom.c:958: error: 'FALSE' undeclared (first use in this function)
ezoom.c:959: warning: implicit declaration of function 'glDeleteTextures'
ezoom.c:959: error: 'CursorTexture' has no member named 'texture'
ezoom.c:960: error: 'CursorTexture' has no member named 'texture'
ezoom.c: At top level:
ezoom.c:966: error: expected ')' before '*' token
ezoom.c:1010: error: expected ')' before '*' token
ezoom.c:1063: error: expected ')' before '*' token
ezoom.c:1094: error: expected ')' before '*' token
ezoom.c:1121: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'zoomIn'
ezoom.c:1152: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'zoomSpecific'
ezoom.c:1197: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'zoomSpecific1'
ezoom.c:1209: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'zoomSpecific2'
ezoom.c:1221: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'zoomSpecific3'
ezoom.c:1236: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'zoomToWindow'
ezoom.c:1262: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'zoomPanLeft'
ezoom.c:1278: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'zoomPanRight'
ezoom.c:1294: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'zoomPanUp'
ezoom.c:1311: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'zoomPanDown'
ezoom.c:1330: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'zoomCenterMouse'
ezoom.c:1362: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'zoomFitWindowToZoom'
ezoom.c:1391: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'zoomInitiate'
ezoom.c:1409: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'zoomOut'
ezoom.c:1433: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'zoomTerminate'
ezoom.c:1473: error: expected ')' before '*' token
ezoom.c:1522: error: expected ')' before '*' token
ezoom.c:1553: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'zoomDisplayOptionInfo'
ezoom.c:1573: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'zoomScreenOptionInfo'
ezoom.c:1592: error: expected '=', ',', ';', 'asm' or '__attribute__' before '*' token
ezoom.c:1604: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'zoomSetScreenOption'
ezoom.c:1621: error: expected '=', ',', ';', 'asm' or '__attribute__' before '*' token
ezoom.c:1632: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'zoomSetDisplayOption'
ezoom.c:1649: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'zoomInitDisplay'
ezoom.c:1689: error: expected ')' before '*' token
ezoom.c:1700: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'zoomInitScreen'
ezoom.c:1745: error: expected ')' before '*' token
ezoom.c:1761: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'zoomInit'
ezoom.c:1782: error: expected ')' before '*' token
ezoom.c:1789: error: expected ')' before '*' token
ezoom.c:1795: error: expected '=', ',', ';', 'asm' or '__attribute__' before '*' token
ezoom.c:1801: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'zoomDeps'
ezoom.c:1805: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'zoomVTable'
ezoom.c:1827: error: expected '=', ',', ';', 'asm' or '__attribute__' before '*' token
Reaping losing child 0x08082ce0 PID 16938
make: *** [build/ezoom.lo] Error 1
Removing child 0x08082ce0 PID 16938 from chain.




Wow. um...i'm stuck...

It's not really that important, i'm more then happy to wait for an official release or it to be merged into compiz-fusion but just a heads up! :)

PsyberOne
June 27th, 2007, 01:45 AM
I'm so glad to see this plugin back to it's beryl glory. There was one thing that I have been looking for out of this plugin and I know it's difficult; display zoom on second monitor. To be able to keep track of the screen as a whole on the left and view the zoomed in part on the right monitor. I'm not sure if this can even be done with the current X but I would love to see it in the future.

schoeggu
July 3rd, 2007, 07:20 AM
-e compiling : ezoom.c -> build/ezoom.loPutting child 0x08082ce0 (build/ezoom.lo) PID 16937 on the chain.
Live child 0x08082ce0 (build/ezoom.lo) PID 16937
Reaping winning child 0x08082ce0 PID 16937
Package compiz was not found in the pkg-config search path.
Perhaps you should add the directory containing `compiz.pc'
to the PKG_CONFIG_PATH environment variable
No package 'compiz' found
Live child 0x08082ce0 (build/ezoom.lo) PID 16938
ezoom.c:87:20: error: compiz.h: No such file or directory
...

you need to run this command:
[code:39b40]export PKG_CONFIG_PATH=/pathToCompiz/lib/pkgconfig:$PKG_CONFIG_PATH[/code:39b40]
(and of course change pathToCompiz to your real path to compiz (eg. for me its /home/schoeggu/.compiz/lib/pkgconfig)

neuralzen
July 5th, 2007, 08:08 PM
Firstly, thank you very much for the awesome plugin, I really missed some of the features beryl had in it's implementation of zoom, and you did it with style to spare!

I was wondering about the possibility of implementing something that lets you make the cursor invisible, either with a timer, like after X seconds of not moving while zoomed the cursor goes invisible, or with a keyboard shortcut. The zoom feature has been really awesome for zooming into small videos while surfing the net, or throwing something onto my TV (2nd video output), but since the zoom follows the cursor, it always blocks the video. I'm sure you have plenty to do, but please consider it. Thanks again for this very useful and practice plugin!

shame
July 16th, 2007, 01:30 PM
I have been using this for a bit and it's working very nively thankyou.
One thing I don't understand is the expo connection. Why doesn't ezoom work if expo is disabled, what does ezoom need from expo?

azathothgr
July 20th, 2007, 05:07 PM
Hello

First of all, let me say this is an excellent plugin.
I'm having a problem with it though : When it's enabled, the mouse pointer will disappear randomly even when I'm not zoomed in, and stay invisible until it's over a link or something that changes it, or until the right mouse button is pressed. This can turn very annoying very quickly, as it's impossible to see where you're pointing, and having to right click just to check where the pointer is can be rather tiring.
I'm not sure if it's a bug of the enhanced zoom plugin or of something unrelated, but it happens only with zoom enabled.
Can't figure out what triggers the pointer to vanish, either, but I think it's also when it is over something that changes it, like a link or a textbox.

Any ideas as to what's causing this , or how to fix it ?

Thanks =)

Kristian
July 27th, 2007, 07:23 PM
Been a little slow on the followups, but here goes:

I was wondering about the possibility of implementing something that lets you make the cursor invisible, either with a timer, like after X seconds of not moving while zoomed the cursor goes invisible, or with a keyboard shortcut.

This is a great idea, and I'll do this asap. It should be a small thing.

I have been using this for a bit and it's working very nively thankyou.
One thing I don't understand is the expo connection. Why doesn't ezoom work if expo is disabled, what does ezoom need from expo?

This was a bit of a bug; If you use expo, you can bind "zoom specific level" to the same as expo, then set that level to be 100%. If the load order is correct, then you will first zoom out when pressing that key, then go to expo the next time you press it. It wasn't supposed to be a dependency, just a load rule if expo was enabled. Hopefully it's fixed with the recent metadata changes, let me know if it isn't for you.


I'm having a problem with it though : When it's enabled, the mouse pointer will disappear randomly even when I'm not zoomed in, and stay invisible until it's over a link or something that changes it, or until the right mouse button is pressed. This can turn very annoying very quickly, as it's impossible to see where you're pointing, and having to right click just to check where the pointer is can be rather tiring.
I'm not sure if it's a bug of the enhanced zoom plugin or of something unrelated, but it happens only with zoom enabled.
Can't figure out what triggers the pointer to vanish, either, but I think it's also when it is over something that changes it, like a link or a textbox.

Any ideas as to what's causing this , or how to fix it ?


Alas, this is caused by bugs in XFixes, which I can do very little about at the moment. The only known workaround is to not hide the original cursor. I'm looking at some hacks to reduce the effect (display another cursor when the bugged/invisible ones appear, for instance), but I can't promise anything.

Last:

ezoom just entered plugins-main, hooray :)

shame
July 27th, 2007, 10:55 PM
ezoom just entered plugins-main, hooray :)
And well deserved too. :)

<EDIT>

Um, after updating everything, ezoom appears in ccsm as "ezoom" (rather than "enhanced desktop zoom" it was previously) but there are no options showing up at all.

Ruede
July 28th, 2007, 03:29 PM
hi

Been a little slow on the followups, but here goes:

I was wondering about the possibility of implementing something that lets you make the cursor invisible, either with a timer, like after X seconds of not moving while zoomed the cursor goes invisible, or with a keyboard shortcut.

This is a great idea, and I'll do this asap. It should be a small thing.


this + the zoom follows the curser.
also would be awesome when the content would be able to control (keyboard mouse I/O), f.e. a bar from a flashvideo or simply the wheel for internetbrowsing (stuff like that)

another thing:

zoom out with different degrees of zoomlevel and not one key for complete zoom=off
:)

*fingercrossing*

neuralzen
August 5th, 2007, 11:52 PM
Thanks for the lock/unlock mechanism, great idea! I noticed a bug, though, and I thought I should mention it. It seems that when zoomed in AND locked, a flash application/animation's hit area's do not fall directly under the pointer. The buttons can be clicked only by moving the cursor off-center form them an inch or two away. This only happens when locked....not like it's a big deal, but something I noticed. Thanks again for the kick ass plugin, you have greatly enhanced my desktop, web, and basic computing experience! I owe you one! ^_^

Kristian
August 11th, 2007, 07:05 PM
Thanks for the lock/unlock mechanism, great idea! I noticed a bug, though, and I thought I should mention it. It seems that when zoomed in AND locked, a flash application/animation's hit area's do not fall directly under the pointer. The buttons can be clicked only by moving the cursor off-center form them an inch or two away. This only happens when locked....not like it's a big deal, but something I noticed. Thanks again for the kick ass plugin, you have greatly enhanced my desktop, web, and basic computing experience! I owe you one! ^_^

This sounds like you're not using a scaled pointer?

The configuration options are a bit complex now so I'm investigating some ways of simplifying without loosing the flexibility...

ioannis
February 6th, 2008, 08:52 PM
The enhanced zoom plugin is extremely useful. It's one of the compiz plugins that I use very often. Thanks Kristian!

I do have a small problem though. Something that was mentioned by neuralzen already. When enabling 'zoom area lock', it seems that 'input' continues to pan as you move the cursor, even if the screen doesn't. Neuralzen describes this as something that happens with flash, but I see that it happens everywhere.

I've tried various options, such as 'mouse panning' and with or without 'sync mouse', but I can't get the right behaviour. Am I missing something, or is this a known bug ?

And something that was probably asked before (kind of academic question). The current zoom is a pixmap resize. What's missing from X to allow vector-like resize (so no aliasing)?

regards