old-www/HOWTO/XWindow-Overview-HOWTO/so-far.html

179 lines
4.5 KiB
HTML

<HTML
><HEAD
><TITLE
>What we have so far</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.63
"><LINK
REL="HOME"
TITLE="X Window System Architecture Overview HOWTO"
HREF="index.html"><LINK
REL="PREVIOUS"
TITLE="Widget Libraries or toolkits"
HREF="toolkits.html"><LINK
REL="NEXT"
TITLE="Desktop environments to the rescue"
HREF="desktop-environments.html"></HEAD
><BODY
CLASS="SECT1"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>X Window System Architecture Overview HOWTO</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="toolkits.html"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
></TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="desktop-environments.html"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="SO-FAR"
>7. What we have so far</A
></H1
><P
>Up to this point we have an idea of how X has a client-server
architecture, where the clients are our application programs. Under
this client-server graphic system, we have several possible window
managers, which manage our screen real estate; we also have our client
applications, which are where we actually get our work done, and
clients can be programmed using several possible different toolkits.</P
><P
>Here's where the mess begins. Each window manager has a
different approach to managing the clients; the behavior and
decorations are different from one to the next. Also, as defined by
which toolkit each client uses, they can also look and behave
differently from each other. Since there's nothing that says authors
have to use the same toolkit for all their applications, it's
perfectly possible for a user to be running, say, six different
applications, each written using a different toolkit, and they all
look and behave differently. This creates a mess because behavior
between the apps is not consistent. If you've ever used a program
written with the Athena widgets, you'll notice it's not too similar to
something written using Gtk. And you'll also remember it's a mess
using all these apps which look and feel so different. This basically
negates the advantage of using a GUI environment in the first place.</P
><P
>On a more technical standpoint, using lots of different toolkits
increases resource usage. Modern operating systems support the concept
of dynamic shared libraries. This means that if I have two or three
applications using Gtk, and I have a dynamic shared version of Gtk,
then those two or three applications share the same copy of Gtk, both
on the disk and in memory. This saves resources. On the other hand, if
I have a Gtk application, a Qt application, something Athena-based, a
Motif-based program such as Netscape, a program that uses FLTK and
another using XForms, I'm now loading six different libraries in
memory, one for each of the different toolkits. Keep in mind that all
the toolkits provide basically the same functionality.</P
><P
>There are other problems here. The way of launching programs
varies from one window manager to the next. Some have a nice menu for
launching apps; others don't, and they expect us to open a
command-launching box, or use a certain key combination, or even open
an xterm and launch all your apps by invoking the commands. Again,
there's no standarization here so it becomes a mess.</P
><P
>Finally, there are niceties we expect from a GUI environment
which our scheme hasn't covered. Things like a configuration utility,
or "control panel"; or a graphical file manager. Of course, these can
be written as client apps. And, in typical free software fashion,
there are hundreds of file managers, and hundreds of system
configuration programs, which conceivably, further the mess of having
to deal with a lot of disparate software components.</P
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="toolkits.html"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="desktop-environments.html"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Widget Libraries or toolkits</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
>&nbsp;</TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Desktop environments to the rescue</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>