
3d-Desktop
----------

3d Desktop is a GNOME OpenGL program that allows you to switch
desktops (viewports) in a 3-dimensional way.  The default
"visualization" maps your screen onto an N-sided polygon which is
rotated to select the next screen.  The face is zoomed in and out to
make your desktop appear to be actually in a 3d environment.


Requirements
------------
  OpenGL/Mesa (Hardware acceleration is strongly recommended)
  Image Magick is required for capturing your screen for the textures.
 
Installation
------------

To build, install and setup:

  tar zxvf 3ddesktop-x.y.z.tar.gz
  ./configure
  make
  make install
  Bind a key to /usr/local/bin/3ddesk  


Add a global keybinding ("shortcut") via the window manager to run
/usr/local/bin/3ddesk.  Something like C-M-s (Control-Meta/Alt-s) or
whatever won't conflict with anything else.  When you press this key
combination 3ddesk starts up and zooms out to show you the "3d
visualization" of your desktop.  Then you select the screen you want
to switch to by pressing ENTER.

In Gnome/Sawfish you can add keybindings by going to the Gnome Control
Center (gnomecc) --> Sawfish --> Shortcuts --> Add --> "Run Shell
Command"



**NOTE** When you start 3ddesktop it can only take a snapshot of your
current desktop -- there is no way to get the other desktops until you
move from them using 3ddesktop.

So when you start 3ddesk you will see digits for the other screens you
have not been to yet.  Once you leave those screens, using 3ddesk, the
textures will be acquired and things should look more like they
should.

For the images/textures of the screens to be accurate you will have to
use "3ddesktop" exclusively to switch views, otherwise if you use
something else like the Gnome deskguide then the images can become out
of date and don't match what you actually have on the screen. :(

This was developed using Redhat 7.1 and 7.2 on GNOME using sawfish.  I
have not tested in KDE or with other window managers yet, but I will.



Other random comments
---------------------

This is my first OpenGL program so I'm sure there are lots of things
that aren't perfect or need work.  I'm open to any kind of feedback
positive or otherwise.  Please let me know your thoughts at
bard@systemtoolbox.com

The viewport switching is done with code based off of STPH by Rob
Hodges.  See http://stph.sourceforge.net/ for more info.  Thanks Rob!

For some fun try a command line option like: 
   3ddesk --mode=linear --nozoom

Do 3ddesk --help for more command line options.

There are several things that I know need work.  See the TODO file.

The biggest issue right now is the load time.  The reason it takes so
long to startup is because it has to take a screenshot.  Right now I
call "import" (ImageMagic) to create a file in /var/tmp/3ddesktop and
then read the file into shared memory.  I would like to do the
screenshot directly into memory and optimize the screenshot stuff
possibly sacrificing quality for speed.  Maybe have like a daemon that
updates bits and portions of the screen in the background kinda like
the desk-guide.

Anyway because it takes a bit of time to activate (its not snappy -
like 1 or 2 seconds on my AMD 1ghz) its not really that usuable when
you want to switch between viewports a lot.  I am going to try to
speed it up.

Also at this time it only supports horizontal viewports only.  No
verticle or workspaces yet.


Brad Wasson
bard@systemtoolbox.com





