179 lines
4.5 KiB
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"
|
|
> </TD
|
|
><TD
|
|
WIDTH="33%"
|
|
ALIGN="right"
|
|
VALIGN="top"
|
|
>Desktop environments to the rescue</TD
|
|
></TR
|
|
></TABLE
|
|
></DIV
|
|
></BODY
|
|
></HTML
|
|
> |