User Tools

Site Tools


workingpanningwith701

Panning utility for the eeePC

This wiki should now be obselete as Asus has already provided the package VGA Utility which supports a virtual panning display of 1024×768. You can simply download it and install by right click on the file and choose [Install DEB file].

Although the package is only available in the 701 en_US repository of Asus update, the package will work for all EeePC models and locales (the menu to activate the virtual display is in English).

Bigger virtual resolution up to 1680×1680 is also possible. Please refer to albkwan's blog.

Why do you need it?

The 701 eeePC comes with an 800×480 display. Standard resolutions used are normally a fair bit bigger, eg. 800×600 , or 1024×768. eee users often find that applications are “too big” for the eee's small screen, with things like OK buttons ending up off the screen, or menus that take up a big chunk of screen real estate.

Ancient History

Once upon a time, way back in 2005, the X server that is the base of the eee's GUI supported a thing called virtual resolution. With virtual resolution, you could set a much larger virtual display, and your real display became a small window which you could move over the much larger virtual display by simply moving your mouse about - as it reached an edge of the real screen, the screen would 'move' in the direction of the mouse, allowing you to pan about. This was a useful function of the X server, and it made life a whole lot easier for those with small screens.

Alas! Due to the infinite wisdom of the xorg developers (They Who Code The X Server), they broke virtual screen panning under X to add better , more exciting features.

The xorg developers state that panning should really be the domain of the window manager, but few - if any - window managers actually implement this. So, panning - which used to work nicely, is now broken. Thanks guys, small screen users of X really appreciate what you've done. To be fair, a lot of the changes that they made were necessary now that people are plugging all sorts of displays into X. But still….

Enough grumbling and finger pointing. In the eeePC's case, one really would like to have screen panning, as the display panel is only 800×480 pixels. It's hard to fit everyday dialogs in, as most (sane) designers boldly assume the minimum height of the screen is at least 600 pixels - the height of the standard 800×600 super VGA display.

A solution.

The utility presented is a quick'n'dirty hack to enable users to get panning back. It's based upon the previous panning utility, i810pan, as discussed here.

Get it from this page here. Extract the files to a convenient directory, run the startpan.sh and suddenly your desktop will grow outside your screen area and you can pan around a full 1024×768 screen, just like old times.

Killing the eeepan program with a ctrl-C or kill command will reset the viewport back to the top left corner of the screen, and resize the display back to 800 x 480.

If you want a different virtual resolution from 1024×768 at present you need to recompile the utility. You also have to look in the startpan.sh script and change the resolution created by the xrandr command. This will be sorted out properly one of these days….

Why is it new?

The previous version (i810pan) used a few routines to locate the i810 GPU of the eeePC and manipulate/move the viewport of the larger virtual screen directly, depending on where you moved the mouse.

This is fine, but it turns out that Xorg then doesn't know precisely where the hardware cursor is, meaning that the pointer and what actually gets clicked upon winds up progressively further out the further away you move the viewport from the top left of the screen. Bummer. So, you turn off hardware cursors in your xorg config file to be able to pan your tiny screen around. But then (sigh) video acceleration doesn't work.

So, after an afternoon of head-scratching, I have removed the direct routines and added panning routines using XSetViewPort, which communicates to X where you would like the viewport to be. As such, X knows what's going on and can keep the pointer working correctly.

It uses the get/setvidport routines in the XF86VidMode extension, and thus will probably run on anything that can run xvidtune. It is hardcoded for a panel size of 800×400, though one can change that easily in the source.

Enjoy!

workingpanningwith701.txt · Last modified: 2009/08/03 13:37 by albkwan