]> git.decadent.org.uk Git - ion3-doc.git/blob - ionconf/node3.html
[svn-inject] Installing original source of ion3
[ion3-doc.git] / ionconf / node3.html
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2
3 <!--Converted with LaTeX2HTML 2002-2-1 (1.71)
4 original version by:  Nikos Drakos, CBLU, University of Leeds
5 * revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
6 * with significant contributions from:
7   Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
8 <HTML>
9 <HEAD>
10 <TITLE>2. Preliminaries: Key concepts and relations</TITLE>
11 <META NAME="description" CONTENT="2. Preliminaries: Key concepts and relations">
12 <META NAME="keywords" CONTENT="ionconf">
13 <META NAME="resource-type" CONTENT="document">
14 <META NAME="distribution" CONTENT="global">
15
16 <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
17 <META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
18 <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
19
20 <LINK REL="STYLESHEET" HREF="ionconf.css">
21
22 <LINK REL="next" HREF="node4.html">
23 <LINK REL="previous" HREF="node2.html">
24 <LINK REL="up" HREF="ionconf.html">
25 <LINK REL="next" HREF="node4.html">
26 </HEAD>
27
28 <BODY >
29
30 <DIV CLASS="navigation"><!--Navigation Panel-->
31 <A NAME="tex2html240"
32   HREF="node4.html">
33 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
34 <A NAME="tex2html234"
35   HREF="ionconf.html">
36 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
37 <A NAME="tex2html228"
38   HREF="node2.html">
39 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
40 <A NAME="tex2html236"
41   HREF="node1.html">
42 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
43 <A NAME="tex2html238"
44   HREF="node11.html">
45 <IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
46 <BR>
47 <B> Next:</B> <A NAME="tex2html241"
48   HREF="node4.html">3. Basic configuration</A>
49 <B> Up:</B> <A NAME="tex2html235"
50   HREF="ionconf.html">Configuring and extending Ion3</A>
51 <B> Previous:</B> <A NAME="tex2html229"
52   HREF="node2.html">1. Introduction</A>
53  &nbsp; <B>  <A NAME="tex2html237"
54   HREF="node1.html">Contents</A></B> 
55  &nbsp; <B>  <A NAME="tex2html239"
56   HREF="node11.html">Index</A></B> 
57 <BR>
58 <BR></DIV>
59 <!--End of Navigation Panel-->
60 <!--Table of Child-Links-->
61 <A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
62
63 <UL CLASS="ChildLinks">
64 <LI><A NAME="tex2html242"
65   HREF="node3.html#SECTION00310000000000000000"><SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN> Modules</A>
66 <LI><A NAME="tex2html243"
67   HREF="node3.html#SECTION00320000000000000000"><SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN> Class and object hierarchies</A>
68 <UL>
69 <LI><A NAME="tex2html244"
70   HREF="node3.html#SECTION00321000000000000000"><SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN> Class hierarchy</A>
71 <LI><A NAME="tex2html245"
72   HREF="node3.html#SECTION00322000000000000000"><SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN> Object hierarchies: WRegion parents and managers</A>
73 <UL>
74 <LI><A NAME="tex2html246"
75   HREF="node3.html#SECTION00322100000000000000"><SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN> Parent-child relations</A>
76 <LI><A NAME="tex2html247"
77   HREF="node3.html#SECTION00322200000000000000"><SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN> Manager-managed relations</A>
78 </UL>
79 <LI><A NAME="tex2html248"
80   HREF="node3.html#SECTION00323000000000000000"><SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">3</SPAN> Summary</A>
81 </UL></UL>
82 <!--End of Table of Child-Links-->
83 <HR>
84
85 <H1><A NAME="SECTION00300000000000000000"></A>
86 <A NAME="chap:prelim"></A>
87 <BR>
88 <SPAN CLASS="arabic">2</SPAN>. Preliminaries: Key concepts and relations
89 </H1>
90
91 <P>
92 The purpose of this chapter to explain some of key concepts and
93 relations you need to understand before reading the following
94 chapters. These include modules explained in section <A HREF="#sec:modules">2.1</A>
95 and the Ion class and object hierarchies, section <A HREF="#sec:objects">2.2</A>.
96
97 <P>
98
99 <H2><A NAME="SECTION00310000000000000000"></A>
100 <A NAME="sec:modules"></A>
101 <BR>
102 <SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN> Modules
103 </H2>
104
105 <P>
106 Ion has been designed so that the 'ion' executable only implements some
107 basic services on top of which very different kinds of window managers
108 could be build by loading the appropriate 'modules'. On modern system
109 these modules are simply dynamically loaded <SPAN  CLASS="textit">.so</SPAN> libraries. On 
110 more primitive systems, or if you want to squeeze total size of the 
111 executable and libraries, the modules can optionally be statically 
112 linked to the main binary, but must nevertheless be loaded with the
113 <A HREF="#fn:dopath"><TT>dopath</TT></A> function. Modules may also include Lua code.
114
115 <P>
116 If no modules are loaded, all client windows appear in full screen mode.
117 To get better window management support, one or more workspace modules
118 should be loaded. Currently Ion provides the following modules:
119
120 <P>
121 <DL>
122 <DT><STRONG><SPAN  CLASS="textit">mod_tiling</SPAN></STRONG></DT>
123 <DD>Tilings for workspaces of the original tiled
124        Ion kind.
125     
126 </DD>
127 <DT><STRONG><SPAN  CLASS="textit">mod_query</SPAN></STRONG></DT>
128 <DD>Queries (for starting programs and so on)
129       and message boxes.
130     
131 </DD>
132 <DT><STRONG><SPAN  CLASS="textit">mod_menu</SPAN></STRONG></DT>
133 <DD>Support for menus, both pull-down and
134       keyboard-operated in-frame menus.
135     
136 </DD>
137 <DT><STRONG><SPAN  CLASS="textit">mod_statusbar</SPAN></STRONG></DT>
138 <DD>Module that implements a statusbar that
139       can be adaptively embedded in each workspace's layout.
140     
141 </DD>
142 <DT><STRONG><SPAN  CLASS="textit">mod_dock</SPAN></STRONG></DT>
143 <DD>Module for docking Window Maker dockapps.
144       The dock can both float and be embedded as the statusbar.
145     
146 </DD>
147 <DT><STRONG><SPAN  CLASS="textit">mod_sp</SPAN></STRONG></DT>
148 <DD>This module implements a scratchpad frame that can
149       be toggled on/off everywhere. Think of the 'console' in some 
150       first-person shooters.
151     
152 </DD>
153 <DT><STRONG><SPAN  CLASS="textit">mod_mgmtmode</SPAN></STRONG></DT>
154 <DD>Support module for implementing ''management
155       modes'' with a XOR-frame similar to move/resize mode around selected
156       region.
157     
158 </DD>
159 <DT><STRONG><SPAN  CLASS="textit">mod_sm</SPAN></STRONG></DT>
160 <DD>Session management support module.
161       <SPAN  CLASS="textit">Loaded automatically when needed!</SPAN>
162 </DD>
163 </DL>
164
165 <P>
166 So-called drawing engines are also implemented as a modules,
167 but they are not discussed here; see chapter <A HREF="node5.html#chap:gr">4</A>.
168
169 <P>
170 The stock configuration for the 'ion3' executable loads all of the modules
171 mentioned above except <SPAN  CLASS="textit">mod_dock</SPAN> and filemod_mgmtmode.
172 The stock configuration for the 'pwm3' executable (which differs from the 
173 'ion3' executable in a few configuration details, such as Xinerama usage)
174 loads another set of modules.
175
176 <P>
177
178 <P>
179
180 <H2><A NAME="SECTION00320000000000000000"></A>
181 <A NAME="sec:objects"></A>
182 <BR>
183 <SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN> Class and object hierarchies
184 </H2>
185
186 <P>
187 While Ion does not not have a truly object-oriented design
188 <A NAME="tex2html3"
189   HREF="#foot306"><SUP><SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN></SUP></A>,
190 things that appear on the computer screen are, however, quite
191 naturally expressed as such ''objects''. Therefore Ion implements
192 a rather primitive OO system for these screen objects and some
193 other things. 
194
195 <P>
196 It is essential for the module writer to learn this object
197 system, but also people who write their own binding configuration files
198 necessarily come into contact with the class and object hierarchies
199 - you need to know which binding setup routines apply where, 
200 and what functions can be used as handlers in which bindings.
201 It is the purpose of this section to attempt to explain these 
202 hierarchies. If you do not wish the read the full section, at least
203 read the summary at the end of it, so that you understand the very
204 basic relations.
205
206 <P>
207 For simplicity we consider only the essential-for-basic-configuration
208 Ioncore, <SPAN  CLASS="textit">mod_tiling</SPAN> and <SPAN  CLASS="textit">mod_query</SPAN> classes. 
209 See Appendix <A HREF="node9.html#app:fullhierarchy">B</A> for the full class hierachy visible
210 to Lua side.
211
212 <P>
213
214 <H3><A NAME="SECTION00321000000000000000">
215 <SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN> Class hierarchy</A>
216 </H3>
217
218 <P>
219 One of the most important principles of object-oriented design methodology
220 is inheritance; roughly how classes (objects are instances of classes)
221 extend on others' features. Inheritance gives rise to class hierarchy.
222 In the case of single-inheritance this hierarchy can be expressed as a
223 tree where the class at the root is inherited by all others below it
224 and so on. Figure <A HREF="#fig:classhierarchy">2.1</A> lists out the Ion class 
225 hierarchy and below we explain what features of Ion the classes 
226 implement.
227
228 <P>
229
230 <DIV ALIGN="CENTER"><A NAME="fig:classhierarchy"></A><A NAME="413"></A>
231 <TABLE>
232 <CAPTION ALIGN="BOTTOM"><STRONG>Figure 2.1:</STRONG>
233 Partial Ioncore, <SPAN  CLASS="textit">mod_tiling</SPAN> and <SPAN  CLASS="textit">mod_query</SPAN> 
234     class hierarchy.</CAPTION>
235 <TR><TD><PRE>
236     Obj
237      |--&gt;WRegion
238      |    |--&gt;WClientWin
239      |    |--&gt;WWindow
240      |    |    |--&gt;WRootWin
241      |    |    |--&gt;WMPlex
242      |    |    |    |--&gt;WScreen
243      |    |    |    |--&gt;WFrame
244      |    |    |--&gt;WInput (mod_query)
245      |    |         |--&gt;WEdln (mod_query)
246      |    |         |--&gt;WMessage (mod_query)
247      |    |--&gt;WGroup
248      |    |    |--&gt;WGroupWS
249      |    |    |--&gt;WGroupCW
250      |    |--&gt;WTiling (mod_tiling)
251      |--&gt;WSplit (mod_tiling)
252 </PRE></TD></TR>
253 </TABLE>
254 </DIV>
255
256 <P>
257 The core classes:
258
259 <P>
260 <DL>
261 <DT><STRONG>Obj</STRONG></DT>
262 <DD><A NAME="419"></A>
263     Is the base of Ion's object system.
264
265 <P>
266 </DD>
267 <DT><STRONG>WRegion</STRONG></DT>
268 <DD><A NAME="420"></A>
269     is the base class for everything corresponding to something on the
270     screen. Each object of type WRegion has a size and  position
271     relative to the parent WRegion. While a big part of Ion 
272     operates on these instead of more specialised classes, WRegion
273     is a ''virtual''  base class in that there are no objects of ''pure''
274     type WRegion; all concrete regions are objects of some class 
275     that inherits WRegion.
276
277 <P>
278 </DD>
279 <DT><STRONG>WClientWin</STRONG></DT>
280 <DD><A NAME="421"></A> is a class for
281     client window objects, the objects that window managers are
282     supposed to manage.
283
284 <P>
285 </DD>
286 <DT><STRONG>WWindow</STRONG></DT>
287 <DD><A NAME="422"></A> is the base class for all
288     internal objects having an X window associated to them
289     (WClientWins also have X windows associated to them).
290
291 <P>
292 </DD>
293 <DT><STRONG>WRootWin</STRONG></DT>
294 <DD><A NAME="423"></A> is the class for
295     root windows<A NAME="336"></A> of X screens<A NAME="337"></A>.
296     Note that an ''X screen'' or root window is not necessarily a
297     single  physical screen<A NAME="338"></A> as a root window
298     may be split over multiple screens when multi-head extensions 
299     such as Xinerama<A NAME="339"></A> are used. (Actually there
300     can be only one WRootWin when Xinerama is used.)
301
302 <P>
303 </DD>
304 <DT><STRONG>WMPlex</STRONG></DT>
305 <DD>is a base class for all regions that''multiplex'' 
306     other regions. This means that of the regions managed by the multiplexer,
307     only one can be displayed at a time. Classes that inhereit WMPlex
308     include screens and frames.
309
310 <P>
311 </DD>
312 <DT><STRONG>WScreen</STRONG></DT>
313 <DD><A NAME="424"></A> is the class for objects
314     corresponding to physical screens. Screens may share a root
315     window when Xinerama multihead extensions are used as explained
316     above.
317
318 <P>
319 </DD>
320 <DT><STRONG>WFrame</STRONG></DT>
321 <DD><A NAME="425"></A> is the class for frames.
322     While most Ion's objects have no graphical presentation, frames basically
323     add to WMPlexes the decorations around client windows 
324     (borders, tabs).
325
326 <P>
327 </DD>
328 <DT><STRONG>WGroup</STRONG></DT>
329 <DD><A NAME="426"></A> is the base class for groups.
330     Particular types of groups are workspaces 
331     (WGroupWS<A NAME="427"></A>)
332     and groups of client windows
333     (WGroupCW<A NAME="428"></A>).
334 </DD>
335 </DL>
336
337 <P>
338 Classes implemented by the <SPAN  CLASS="textit">mod_tiling</SPAN> module:
339
340 <P>
341 <DL>
342 <DT><STRONG>WTiling</STRONG></DT>
343 <DD><A NAME="430"></A> is the class for tilings
344     of frames.
345   
346 </DD>
347 <DT><STRONG>WSplit</STRONG></DT>
348 <DD><A NAME="431"></A> (or, more specifically, classes
349     that inherit it) encode the WTiling tree structure.
350 </DD>
351 </DL>
352
353 <P>
354 Classes implemented by the <SPAN  CLASS="textit">mod_query</SPAN> module:
355
356 <P>
357 <DL>
358 <DT><STRONG>WInput</STRONG></DT>
359 <DD><A NAME="433"></A> is a virtual base class for the
360     two classes below.
361   
362 </DD>
363 <DT><STRONG>WEdln</STRONG></DT>
364 <DD><A NAME="434"></A> is the class for the ''queries'',
365     the text inputs that usually appear at bottoms of frames and sometimes
366     screens. Queries are the functional equivalent of ''mini buffers'' in
367     many text editors.
368   
369 </DD>
370 <DT><STRONG>WMessage</STRONG></DT>
371 <DD><A NAME="435"></A> implements the boxes for 
372     warning and other messages that Ion may wish to display to the user. 
373     These also usually appear at bottoms of frames.
374 </DD>
375 </DL>
376
377 <P>
378 There are also some other ''proxy'' classes that do not refer
379 to objects on the screen. The only important one of these for
380 basic configuration is WMoveresMode that is used for
381 binding callbacks in the move and resize mode.
382
383 <P>
384
385 <H3><A NAME="SECTION00322000000000000000">
386 <SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN> Object hierarchies: WRegion parents and managers</A>
387 </H3>
388
389 <P>
390
391 <H4><A NAME="SECTION00322100000000000000">
392 <SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN> Parent-child relations</A>
393 </H4>
394 Each object of type WRegion has a parent and possibly a manager
395 associated to it. The parent<A NAME="376"></A> for an object is always a 
396 WWindow and for WRegion with an X window (WClientWin,
397 WWindow) the parent WWindow is given by the same relation of
398 the X windows. For other WRegions the relation is not as clear.
399 There is generally very few restrictions other than the above on the
400 parent--child relation but the most common is as described in
401 Figure <A HREF="#fig:parentship">2.2</A>.
402
403 <P>
404
405 <DIV ALIGN="CENTER"><A NAME="fig:parentship"></A><A NAME="387"></A>
406 <TABLE>
407 <CAPTION ALIGN="BOTTOM"><STRONG>Figure 2.2:</STRONG>
408 Most common parent-child relations</CAPTION>
409 <TR><TD><PRE>
410     WRootWins
411      |--&gt;WScreens
412           |--&gt;WGroupWSs
413           |--&gt;WTilings
414           |--&gt;WClientWins in full screen mode
415           |--&gt;WFrames
416                |--&gt;WGroupCWs
417                |--&gt;WClientWins
418                |--&gt;WFrames for transients
419                |--&gt;a possible WEdln or WMessage
420 </PRE></TD></TR>
421 </TABLE>
422 </DIV>
423
424 <P>
425 WRegions have very little control over their children as a parent.
426 The manager<A NAME="391"></A> WRegion has much more control over its
427 managed WRegions. Managers, for example, handle resize requests,
428 focusing and displaying of the managed regions. Indeed the manager--managed
429 relationship gives a better picture of the logical ordering of objects on
430 the screen. Again, there are generally few limits, but the most common
431 hierarchy is given in Figure <A HREF="#fig:managership">2.3</A>. Note that sometimes
432 the parent and manager are the same object and not all objects may have
433 a manager (e.g. the dock in the dock module at the time of writing this)
434 but all have a parent-a screen if not anything else.
435
436 <P>
437
438 <H4><A NAME="SECTION00322200000000000000">
439 <SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN> Manager-managed relations</A>
440 </H4>
441
442 <P>
443
444 <DIV ALIGN="CENTER"><A NAME="fig:managership"></A><A NAME="399"></A>
445 <TABLE>
446 <CAPTION ALIGN="BOTTOM"><STRONG>Figure 2.3:</STRONG>
447 Most common manager-managed relations</CAPTION>
448 <TR><TD><PRE>
449     WRootWins
450      |--&gt;WScreens
451           |--&gt;WGroupCWs for full screen WClientWins
452           |    |--&gt;WClientWins
453           |    |--&gt;WFrames for transients (dialogs)
454           |         |--&gt; WClientWin
455           |--&gt;WGroupWSs for workspaces
456           |    |--&gt;WTiling
457           |    |    |--&gt;possibly a WEdln, WMessage or WMenu
458           |    |    |--&gt;WFrames
459           |    |         |--&gt;WGroupCWs (with contents as above)
460           |    |--&gt;WFrames for floating content
461           |--&gt;WFrames for sticky stuff, such as the scratchpad
462 </PRE></TD></TR>
463 </TABLE>
464 </DIV>
465
466 <P>
467 Note that a workspace can manage another workspace. This can be
468 achieved with the <A HREF="#fn:attach_new"><TT>attach_new</TT></A> function, and allows you to nest
469 workspaces as deep as you want.
470
471 <P>
472
473 <H3><A NAME="SECTION00323000000000000000">
474 <SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">3</SPAN> Summary</A>
475 </H3>
476
477 <P>
478 In the standard setup, keeping queries, messages and menus out of
479 consideration:
480
481 <P>
482
483 <UL>
484 <LI>The top-level objects that matter are screens and they correspond
485     to physical screens. The class for screens is WScreen.
486 </LI>
487 <LI>Screens contain (multiplex) groups (WGroup) and other 
488     objects, such as WFrames. Some of these are mutually exclusive
489     to be viewed at a time.
490 </LI>
491 <LI>Groups of the specific kind WGroupWS often contain a
492     WTiling tiling for tiling frames (WFrame), but 
493     groups may also directly contain floating frames.
494 </LI>
495 <LI>Frames are the objects with decorations such as tabs and borders.
496     Frames contain (multiplex) among others (groups of) client windows, 
497     to each of which corresponds a tab in the frame's decoration. Only 
498     one client window (or other object) can be shown at a time in each 
499     frame. The class for client windows is WClientWin.
500 </LI>
501 </UL>
502
503 <P>
504 <BR><HR><H4>Footnotes</H4>
505 <DL>
506 <DT><A NAME="foot306">... design</A><A
507  HREF="node3.html#tex2html3"><SUP><SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN></SUP></A></DT>
508 <DD>the author doesn't like such artificial designs
509
510 </DD>
511 </DL>
512 <DIV CLASS="navigation"><HR>
513 <!--Navigation Panel-->
514 <A NAME="tex2html240"
515   HREF="node4.html">
516 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
517 <A NAME="tex2html234"
518   HREF="ionconf.html">
519 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
520 <A NAME="tex2html228"
521   HREF="node2.html">
522 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
523 <A NAME="tex2html236"
524   HREF="node1.html">
525 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
526 <A NAME="tex2html238"
527   HREF="node11.html">
528 <IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
529 <BR>
530 <B> Next:</B> <A NAME="tex2html241"
531   HREF="node4.html">3. Basic configuration</A>
532 <B> Up:</B> <A NAME="tex2html235"
533   HREF="ionconf.html">Configuring and extending Ion3</A>
534 <B> Previous:</B> <A NAME="tex2html229"
535   HREF="node2.html">1. Introduction</A>
536  &nbsp; <B>  <A NAME="tex2html237"
537   HREF="node1.html">Contents</A></B> 
538  &nbsp; <B>  <A NAME="tex2html239"
539   HREF="node11.html">Index</A></B> </DIV>
540 <!--End of Navigation Panel-->
541
542 </BODY>
543 </HTML>