PDA

View Full Version : Feature request; Torus instead of cube


perpetualrabbit
August 16th, 2007, 04:06 PM
A long time ago, before metacity existed in gnome, it was possible to have your desktop be a "view": a rectangular section on a much larger plane. I could slide my view over this large desktop and see windows zip by. Also, with desktop cube, I miss having a nxm desktop plane.

My proposal would be to have a desktop Torus, with nxm desktops, where you can slide a view, i.e. a rectangular section on the torus is your current desktop.
The current view would be flat, but in "moving mode" (like in moving the cube now) the flat view would animate to become curved and zoom out until you see the entire torus.

That would be cool already, but there's more!

With AIGLX it is possible to have hardware acceleration of windows sent by the X protocol over the network. It works neat; I can start say tuxracer on machine B and have its window display on machine A, hardware accelerated.

This means that in principle it should be possible to not only see a torus for my own desktop on machine A, but another one for programs running on machine B. It should even be possible to drag windows between the tori.

You could also have multiple tori for different sessions, say different users logged into the same machine. You could have a carousel-alike animation for switching between machines, or sessions, like you can do now with windows.
This last idea would probably have to be implemented in gdm and the gdm-greeter program though.

Also, the _inside_ of each torus could be used for something that is actually usefull, like some kind of graphics displaying processor load, memory usage, floating objects representing background processes and daemons, etc.
It would even be more useful if you could _do_ something with objects that represent processes, like zoom in on them to see detailed memory usage, see files that they have open, renice or kill, network connections... the possibilities are endless.

I have many more ideas, but I am going to stop now before anyone thinks I'm a ranting madman.

metastability
August 16th, 2007, 05:10 PM
I am interested in this new kind of geometric shape for Compiz Fusion, but I feel obligated to point out that the wall plugin does the n x m plane thing already.

With n x m virtual desktops in a torus (donut) shape you would be able to see 3 virtual desktops behind the view when looking towards the center of the torus and assuming transparency like in the cube plugin. This might make it hard to put stuff in the center of the cube and animate it properly.

Also, if you are working on a rectangular screen, when you rotate to change virtual desktops the edges must be necessarily warped (perhaps by an animation) before rotation. This kind of thing could be applied to a number of other geometries for the desktop environment.

I don't think this kind of thing would take away from Compiz Fusion or be outside the scope of it (as somebody has suggested to me). People have been asking for this kind of thing since Beryl and I can't see the logic in the argument that more choice is a bad thing when the settings would be quick and easy to change from wall to torus to cube, etc.

I am still somewhat amateurish at programming, but I'm willing to give the coding for this and other geometries a shot over my next Summer break starting around November.

PS - I agree with the ranting thing because by the end of this longish reply I'm almost convinced I'm a ranting madman :)

perpetualrabbit
August 17th, 2007, 10:06 AM
The idea of the desktop being a freely roaming rectangle on a torus is at least somewhat new. This kind of thing used to be called a "view" but it was taken out of gnome, but still is part or fvwm. At that time it was all flat and not 3D of course.

I have seen one other request in this forum that looks a bit like it: for an "infinite" desktop. There the desktop would be a rectangular cut out of an infinite plane. However, the author of that idea pointed out himself that if someone where to set two windows apart say 60000 pixels, he would have to zoom out an awful lot to see the whole. You don't get that kind of problem with a torus.

A sphere has also been proposed, but a sphere has poles. This means singularities in the coördinate systems, that are potentially difficult to deal with. A torus is actually quite a natural shape.

Also the idea of a torus resonates a bit with the idea of "rings" in Linux: ring 0 being where the kernel lives, ring 3 where userspace programs live, etc. Ring 3 would be the outside of the torus, and the hollow inside of the torus could be containing the kernel objects, and objects representing daemons etc. would be ring 0. For instance, the sshd daemon could be floating in there, and show some kind of animation or state change when someone makes a new connection to it.

Of course, those type of 3D objects would be real 3D applications, and a whole new type of programming infrastructure would have to be invented for those. Some kind of 3D widget set. Not some kind of extension to gtk or qt, to make it look 3D, but something with basic 3D building blocks that can be combined to build applications with. How and what, I do not dare to speculate on.

metastability
August 17th, 2007, 11:11 AM
I see your problem with the sphere - different windows can be moved to the poles with different orientations to each other. You are right to suggest a torus instead.

I think it would be hard for some users to visualize their windows going up/down 360 and left/right 360, but I'm sure some people would enjoy this feature and storing 3d items/animations in the hole in the gaps. Also, I think much of the code could be reused in implementations of other geometrical shapes for the desktop.

However, your ideas about the kernel being ring 0 and different widgets for network connections, etc I think are outside the scope of Compiz Fusion. You are not talking about managing windows and drawing things over the background, you are talking about an entirely new desktop manager.

I think you should hold on to these ideas until Compiz Fusion becomes more integrated into the Linux distributions.

dafnis
August 26th, 2007, 12:50 PM
I definitely like the idea of a 'Toroidal Desktop'. In fact I posted about that wish (on 'Spanish Support', because at that time the 'Feature Requests' forum didn't even exist); you can have a look at it here (in spanish):

http://forum.compiz-fusion.org/showthread.php?t=1335

I wouldn't need a 3D representation of the torus, my vision is that of a boundless plane where, when you move (<super> + mouse drag) beyond the rightmost window, you meet the leftmost one; the same would happen when you move up/down over the desktop. In fact, this means the windows lived on the 2D surface of a torus.

If I need a more general view, I can simply zoom out the camera arbitrarily (<super> + wheelmouse) and see as many windows as I want (or move the mouse cursor to the top right corner to zoom out until all open windows are visible). You can interact with windows no matter the zoom level.

Windows wouldn't be allowed to stack on top of each other (except for modal dialogues and such), and dragging a window would force its neighbours to make pass, like a ship moving among ice clusters.

When you roll up a window (mousewheel over titlebar) it neighbours would move to close the space it left.

The taskbars, desktop icons and panels would follow the camera (like the HUD in a flight simulator or the health level on a first person shooter), and could be hidden with a keystroke (<super>).

... and many more.

This variant of the toroidal desktop looks for usability rather than visual attractive, because everything is displayed over a plane, there's no need to project the windows over 3d surfaces (curved surfaces if you think of a torus!). There's room however for a lot of interesting 3d effects to be applied, like making icebergs (the windows) floating on a rippled sea (the desktop). And there can always be the option to display the whole torus in its whole magnificence.

... and now that's a rant! :)