Re: [Fresco-devel] Some questions
Nick Lewycky <[email protected]> Sat, 12 Apr 2003 19:12:07 -0400
| Newsgroups | gmane.comp.video.fresco.devel |
|---|---|
| Message-ID | <[email protected]> |
If you hadn't told us you were new to Linux, I wouldn't have guessed. Your question boils down to, "what is the state of X on Linux today, and what is the future and how is Fresco involved?" so I'll organize my answer that way. X11 is responsible for handing the back end, drivers, mouse cursor, that sort of thing. A window manager is an X client that is responsible for decorating the windows. Some window managers also take clicks on the windowless areas, to provide desktop menus. A desktop environment is simply a group of programs that all agree to look similar, based on some style guide as an agreement (and usually some underlying libraries, such as toolkits which provide text entry boxes, buttons and the other standard UI elements.) In Fresco, a client requests the window not directly from the display server, but from the DesktopKit, which is the Fresco incarnation of X11 window managers. Similarly for standard UI elements, the clients are expected to ask the WidgetKit to provide them, instead of a client-side library. This means that clients have no idea what "desktop environment" they belong to, since they are decoupled form the implementation of the Kits. 3D acceleration is a touchy issue. At the moment, there is no 3D acceleration in Linux without X11, except for a gross hack called fbdri. That said, if you run Fresco on top of X, you can use 3D acceleration today. OpenGL backend support isn't the end of the story. "OpenGL" only specifies the state machine responsible for rasterizing 3D elements. There exists a whole other piece called GLX for X11 or WGL for Windows or PGL for OS/2, AGL for Macs ... and possibly more. These specifications dictate how client programs ask the windowing system for an OpenGL Rendering Context (remember that OpenGL is a C API, so we can't simply return a CORBA/C++ object) and provide the interface for important functions such as flipping the front and back buffers. Without a comparable FrescoGL interface, we're nowhere. You mention drop shadows, which are nice eye candy and fit rather nicely in Fresco, even though we can't actually draw them yet. A drop shadow is a gradient from black to transparent, but we don't support gradients. In theory, though, it would be simple for the DesktopKit to put the appropriate decorations on the window when creating it. Fresco does support alpha channel transparency quite well, so there's no architectural issue in implementing it. One of the goals of the Fresco project is to provide a framework for user interface experimentation. This means at least two things, one good one bad. The bad news is that most of the tools and know-how for working in a Fresco-like system don't exist yet. You can't make a "theme" for Fresco with The GIMP, since we are a vector graphics system and bitmapped themes are useless to us. The good news is that while it may take us a while before something useful coalesces, we endeavour to produce a system that is different, better and perhaps some day, the best. Nick Lewycky