See KdeVsGnome, JavaApplet, ''etc.'' Between your video driver and your desktop is a layer of code that provides windows and widgets, typically seamlessly. Here is an exhaustive list of them: http://www.geocities.com/SiliconValley/Vista/7184/guitool.html See also GuiFrameworks OS specific: * Win32 (WindowsTemplateLibrary, MicrosoftFoundationClasses, VisualStudio, DotNet, etc.) * MacOs: CocoaFramework, QuickDraw * XwindowProtocol: KayDesktopEnvironment, GnomeDesktopEnvironment, etc. * FrescoFramework Higher level: * HTML and JavaScript (forms in browsers) * MozillaXul (XML + JavaScript) * TclTk (thence pTk, RubyTk, PythonTkinter, etc.) * WxWidgets * JavaSwing, JavaAwt OS desktop vendors compete to provide the most seamless toolkit. Many users don't remember the days when some applications took over the whole screen, some only used character mode, and some had completely custom GraphicalUserInterface widgetry. But if the end-programmer spends too much time reinventing buttons, they'll spend too little time on features. And end-users should see a monitor as both a single app with a single look-and-feel, and as many different apps each interacting. So sharing the screen is as much an OS vendor's responsibility as sharing the hard drives. ---- CategoryUserInterface