What is the best GUI OS?

Question about which tools to use, bugs, the best way to implement a function, etc should go here. Don't forget to see if your question is answered in the wiki first! When in doubt post here.
ehird
Member
Member
Posts: 214
Joined: Thu Mar 15, 2007 8:48 am

Post by ehird »

Exposé uses the GPU too
User avatar
~
Member
Member
Posts: 1228
Joined: Tue Mar 06, 2007 11:17 am
Libera.chat IRC: ArcheFire

Post by ~ »

Well, having a handful of options to study :-k 8-[ , it would be a matter to create wrapper interfaces to utilize the resources available in a machine, from "manual" math calculation to using high-precision capabilities of the processor, and very finally a GFX card.

But the main intention is to make a good graphics library which is able to do everything a 3D-capable video card, from texturing and complex rendering. I guess it could get to be as fast as hardware rendering if it uses extreme hacks both for speed and code size, and given the high processor speeds now, and also the existence of 128-bit SIMD instructions as well as multicore processors.

It could be well possible that such library has support for those resources if present, and that be able to use more "manual" resources from the library itself if not present, and the ideal would be to have one only version of the library, instead of many of them, ones requiring multimedia instructions, others multiple processor cores, multiple threads, or a bare-bones one. That would surely raise the project quality.

So, hands on ](*,) !!!
User avatar
Colonel Kernel
Member
Member
Posts: 1437
Joined: Tue Oct 17, 2006 6:06 pm
Location: Vancouver, BC, Canada
Contact:

Post by Colonel Kernel »

ehird wrote:Exposé uses the GPU too
So does Parallels, when it "flips" VMs over to the configuration dialog. So does the "cube" effect when you use fast-user switching or full-screen mode in Parallels. So does flipping Widgets around to configure them. So does Front Row when your desktop "fades" into the background. So will Time Machine in Leopard... etc.
Top three reasons why my OS project died:
  1. Too much overtime at work
  2. Got married
  3. My brain got stuck in an infinite loop while trying to design the memory manager
Don't let this happen to you!
User avatar
mystran
Member
Member
Posts: 670
Joined: Thu Mar 08, 2007 11:08 am

Post by mystran »

Most of what those fancy GUIs do, can be solved with 3D acceleration simply by having each window store their contents into video-memory, then drawing the windows as polygons, texturing with the window contents. That'll be enough to let you spin the windows around and what not. If you have alpha channel, that gives you half-transparent and shaped windows for free.

For shadows, blurs, and other basic effects, you can either do several blits slightly differently positioned, with varying levels of alpha, or let shaders do the job for you. The only thing "new" about such effects is using them for screen composition in normal desktop GUIs.

If you don't need to spin the windows around, then hardware scaling and alpha-blit will give most of the other effects. I guess stuff like shadows and blurs could be somewhat sluggish with only blit to work with (though if your card can push lots of polygons, it can probably blit 2D graphics fast as well, since the latter is more or less just an easy special case of the former).

I've been thinking of trying some of the stuff at some point, to see how much acceleration is actually necessary for acceptable performance, but I haven't bothered yet.

For what it's worth, XDirectFB could run a semi-transparent mplayer playing a movie scaled to 1280 wide, under another semi-transparent X-chat, on my old Duron 800 with Matrox G550 just fine. That was back when Matrox cards where the only ones properly supported by XDirectFB. Naturally there was no problem with framerate when opening some terminals and webrowser on top of those, all semi-transparent, but then it was too hard to enjoy the movie behind all the other stuff...

I normally ran it with something like 90-95% opaque for active window, around 30% (?) opaque for inactive windows, with focus-follows-mouse, so I could easily move mouse over different windows to control which window would be most visible - no need to move (or even raise) windows simply because you don't have screen space to keep them next to each other. Together with evilwm as window manager, it was actually one of the best desktop setups I've used (and I've used a lot more different setups than most people, since trying all kinds of 'alternative' desktop setups was a hobby of mine at some point).

I'd probably kept it for alot longer, but there was some issues with keyboard in XDirectFB back then. Can't remember what it was anymore..

I also kinda liked Ion, though it had trouble with applications that relied on having several windows in specific configuration (Gimp probably the worst offenders) so I often found myself running Xnest in one of the Ion windows, with another window manager...

A manager I used for a long time, was wmx. I liked it enough to do some work porting a patch with support for gnome (1.x I guess) features from an older version into the still current version 6. Also fixed a half-written alt-drag patch for it.

Together with evilwm, wmx is the only small window manager that I've used at least a year. That says something about them. I still use evilwm both in home and at work. I guess I could try wmx again, since it's been a while. :)
The real problem with goto is not with the control transfer, but with environments. Properly tail-recursive closures get both right.
Post Reply