]> git.decadent.org.uk Git - ion3.git/blob - doc/ionconf/node7.html
[svn-upgrade] Integrating new upstream version, ion3 (20070506)
[ion3.git] / doc / ionconf / node7.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>6. Function reference</TITLE>
11 <META NAME="description" CONTENT="6. Function reference">
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="node8.html">
23 <LINK REL="previous" HREF="node6.html">
24 <LINK REL="up" HREF="ionconf.html">
25 <LINK REL="next" HREF="node8.html">
26 </HEAD>
27
28 <BODY >
29
30 <DIV CLASS="navigation"><!--Navigation Panel-->
31 <A NAME="tex2html383"
32   HREF="node8.html">
33 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
34 <A NAME="tex2html377"
35   HREF="ionconf.html">
36 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
37 <A NAME="tex2html371"
38   HREF="node6.html">
39 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
40 <A NAME="tex2html379"
41   HREF="node1.html">
42 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
43 <A NAME="tex2html381"
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="tex2html384"
48   HREF="node8.html">A. The GNU General</A>
49 <B> Up:</B> <A NAME="tex2html378"
50   HREF="ionconf.html">Configuring and extending Ion3</A>
51 <B> Previous:</B> <A NAME="tex2html372"
52   HREF="node6.html">5. Scripting</A>
53  &nbsp; <B>  <A NAME="tex2html380"
54   HREF="node1.html">Contents</A></B> 
55  &nbsp; <B>  <A NAME="tex2html382"
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="tex2html385"
65   HREF="node7.html#SECTION00710000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN> Functions defined in <SPAN  CLASS="textit">ioncore</SPAN></A>
66 <UL>
67 <LI><A NAME="tex2html386"
68   HREF="node7.html#SECTION00711000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN> WClientWin functions</A>
69 <LI><A NAME="tex2html387"
70   HREF="node7.html#SECTION00712000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">2</SPAN> WFrame functions</A>
71 <LI><A NAME="tex2html388"
72   HREF="node7.html#SECTION00713000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">3</SPAN> WGroup functions</A>
73 <LI><A NAME="tex2html389"
74   HREF="node7.html#SECTION00714000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">4</SPAN> WGroupCW functions</A>
75 <LI><A NAME="tex2html390"
76   HREF="node7.html#SECTION00715000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">5</SPAN> WGroupWS functions</A>
77 <LI><A NAME="tex2html391"
78   HREF="node7.html#SECTION00716000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">6</SPAN> WHook functions</A>
79 <LI><A NAME="tex2html392"
80   HREF="node7.html#SECTION00717000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">7</SPAN> WInfoWin functions</A>
81 <LI><A NAME="tex2html393"
82   HREF="node7.html#SECTION00718000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">8</SPAN> WMPlex functions</A>
83 <LI><A NAME="tex2html394"
84   HREF="node7.html#SECTION00719000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN> WMoveresMode functions</A>
85 <LI><A NAME="tex2html395"
86   HREF="node7.html#SECTION007110000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">10</SPAN> WRegion functions</A>
87 <LI><A NAME="tex2html396"
88   HREF="node7.html#SECTION007111000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">11</SPAN> WRootWin functions</A>
89 <LI><A NAME="tex2html397"
90   HREF="node7.html#SECTION007112000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">12</SPAN> WScreen functions</A>
91 <LI><A NAME="tex2html398"
92   HREF="node7.html#SECTION007113000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">13</SPAN> WTimer functions</A>
93 <LI><A NAME="tex2html399"
94   HREF="node7.html#SECTION007114000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">14</SPAN> WWindow functions</A>
95 <LI><A NAME="tex2html400"
96   HREF="node7.html#SECTION007115000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">15</SPAN> global functions</A>
97 <LI><A NAME="tex2html401"
98   HREF="node7.html#SECTION007116000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">16</SPAN> gr functions</A>
99 <LI><A NAME="tex2html402"
100   HREF="node7.html#SECTION007117000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">17</SPAN> string functions</A>
101 <LI><A NAME="tex2html403"
102   HREF="node7.html#SECTION007118000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">18</SPAN> table functions</A>
103 </UL>
104 <BR>
105 <LI><A NAME="tex2html404"
106   HREF="node7.html#SECTION00720000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN> Functions defined in <SPAN  CLASS="textit">mod_tiling</SPAN></A>
107 <UL>
108 <LI><A NAME="tex2html405"
109   HREF="node7.html#SECTION00721000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN> WSplit functions</A>
110 <LI><A NAME="tex2html406"
111   HREF="node7.html#SECTION00722000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN> WSplitInner functions</A>
112 <LI><A NAME="tex2html407"
113   HREF="node7.html#SECTION00723000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">3</SPAN> WSplitRegion functions</A>
114 <LI><A NAME="tex2html408"
115   HREF="node7.html#SECTION00724000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">4</SPAN> WSplitSplit functions</A>
116 <LI><A NAME="tex2html409"
117   HREF="node7.html#SECTION00725000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">5</SPAN> WTiling functions</A>
118 </UL>
119 <BR>
120 <LI><A NAME="tex2html410"
121   HREF="node7.html#SECTION00730000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN> Functions defined in <SPAN  CLASS="textit">mod_query</SPAN></A>
122 <UL>
123 <LI><A NAME="tex2html411"
124   HREF="node7.html#SECTION00731000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">1</SPAN> WComplProxy functions</A>
125 <LI><A NAME="tex2html412"
126   HREF="node7.html#SECTION00732000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN> WEdln functions</A>
127 <LI><A NAME="tex2html413"
128   HREF="node7.html#SECTION00733000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN> WInput functions</A>
129 </UL>
130 <BR>
131 <LI><A NAME="tex2html414"
132   HREF="node7.html#SECTION00740000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">4</SPAN> Functions defined in <SPAN  CLASS="textit">mod_menu</SPAN></A>
133 <UL>
134 <LI><A NAME="tex2html415"
135   HREF="node7.html#SECTION00741000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN> WMenu functions</A>
136 </UL>
137 <BR>
138 <LI><A NAME="tex2html416"
139   HREF="node7.html#SECTION00750000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">5</SPAN> Functions defined in <SPAN  CLASS="textit">mod_dock</SPAN></A>
140 <UL>
141 <LI><A NAME="tex2html417"
142   HREF="node7.html#SECTION00751000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">1</SPAN> WDock functions</A>
143 </UL>
144 <BR>
145 <LI><A NAME="tex2html418"
146   HREF="node7.html#SECTION00760000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">6</SPAN> Functions defined in <SPAN  CLASS="textit">mod_sp</SPAN></A>
147 <LI><A NAME="tex2html419"
148   HREF="node7.html#SECTION00770000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">7</SPAN> Functions defined in <SPAN  CLASS="textit">mod_statusbar</SPAN></A>
149 <UL>
150 <LI><A NAME="tex2html420"
151   HREF="node7.html#SECTION00771000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">7</SPAN>.<SPAN CLASS="arabic">1</SPAN> WStatusBar functions</A>
152 </UL>
153 <BR>
154 <LI><A NAME="tex2html421"
155   HREF="node7.html#SECTION00780000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">8</SPAN> Functions defined in <SPAN  CLASS="textit">de</SPAN></A>
156 <LI><A NAME="tex2html422"
157   HREF="node7.html#SECTION00790000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">9</SPAN> Hooks</A>
158 <LI><A NAME="tex2html423"
159   HREF="node7.html#SECTION007100000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">10</SPAN> Miscellaneous</A>
160 <UL>
161 <LI><A NAME="tex2html424"
162   HREF="node7.html#SECTION007101000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">10</SPAN>.<SPAN CLASS="arabic">1</SPAN> Size policies</A>
163 </UL></UL>
164 <!--End of Table of Child-Links-->
165 <HR>
166
167 <H1><A NAME="SECTION00700000000000000000"></A>
168 <A NAME="sec:exports"></A>
169 <BR>
170 <SPAN CLASS="arabic">6</SPAN>. Function reference
171 </H1>
172
173 <P>
174
175 <H2><A NAME="SECTION00710000000000000000"></A>
176 <A NAME="sec:ioncoreref"></A>
177 <BR>
178 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN> Functions defined in <SPAN  CLASS="textit">ioncore</SPAN>
179 </H2>
180
181   <DL>
182 <DD><A NAME="fn:ioncore.TR"></A>  
183 </DD>
184 <DT><STRONG>Synopsis:</STRONG></DT>
185 <DD><TT>ioncore.TR(s, ...)</TT>
186
187 </DD>
188 <DT><STRONG>Description:</STRONG></DT>
189 <DD>gettext+string.format
190   
191 </DD>
192 </DL>
193
194 <P>
195
196   <DL>
197 <DD><A NAME="fn:ioncore.bdoc"></A>  
198 </DD>
199 <DT><STRONG>Synopsis:</STRONG></DT>
200 <DD><TT>ioncore.bdoc(text)</TT>
201
202 </DD>
203 <DT><STRONG>Description:</STRONG></DT>
204 <DD>Used to enter documentation among bindings so that other programs
205  can read it. Does nothing.
206   
207 </DD>
208 </DL>
209
210 <P>
211
212   <DL>
213 <DD><A NAME="fn:ioncore.chdir_for"></A>  
214 </DD>
215 <DT><STRONG>Synopsis:</STRONG></DT>
216 <DD><TT>ioncore.chdir_for(reg, dir)</TT>
217
218 </DD>
219 <DT><STRONG>Description:</STRONG></DT>
220 <DD>Change default working directory for new programs started in <TT>reg</TT>.
221   
222 </DD>
223 </DL>
224
225 <P>
226
227   <DL>
228 <DD><A NAME="fn:ioncore.compile_cmd"></A>  
229 </DD>
230 <DT><STRONG>Synopsis:</STRONG></DT>
231 <DD><TT>ioncore.compile_cmd(cmd, guard)</TT>
232
233 </DD>
234 <DT><STRONG>Description:</STRONG></DT>
235 <DD>Compile string <TT>cmd</TT> into a bindable function. Within <TT>cmd</TT>, the
236  variable ''<TT>_</TT>'' (underscore) can be used to refer to the object 
237  that was selecting for the bound action and chosen to handle it.
238  The  variable ''<TT>_sub</TT>'' refers to a ''currently active'' sub-object 
239  of <TT>_</TT>, or a sub-object where the action loading to the binding 
240  being called actually occured.
241
242 <P>
243 The string <TT>guard</TT>  maybe set to pose limits on <TT>_sub</TT>. Currently 
244  supported guards are <TT>_sub:non-nil</TT> and <TT>_sub:WFoobar</TT>, where 
245  WFoobar is a class.
246   
247 </DD>
248 </DL>
249
250 <P>
251
252   <DL>
253 <DD><A NAME="fn:ioncore.create_timer"></A>  
254 </DD>
255 <DT><STRONG>Synopsis:</STRONG></DT>
256 <DD><TT>WTimer ioncore.create_timer()</TT>
257
258 </DD>
259 <DT><STRONG>Description:</STRONG></DT>
260 <DD>Create a new timer.
261   
262 </DD>
263 </DL>
264
265 <P>
266
267   <DL>
268 <DD><A NAME="fn:ioncore.create_ws"></A>  
269 </DD>
270 <DT><STRONG>Synopsis:</STRONG></DT>
271 <DD><TT>ioncore.create_ws(scr, tmpl, layout)</TT>
272
273 </DD>
274 <DT><STRONG>Description:</STRONG></DT>
275 <DD>Create new workspace on screen <TT>scr</TT>. The table <TT>tmpl</TT>
276  may be used to override parts of the layout named with <TT>layout</TT>.
277  If no <TT>layout</TT> is given, "default" is used.
278   
279 </DD>
280 </DL>
281
282 <P>
283
284   <DL>
285 <DD><A NAME="fn:ioncore.defbindings"></A>  
286 </DD>
287 <DT><STRONG>Synopsis:</STRONG></DT>
288 <DD><TT>ioncore.defbindings(context, bindings)</TT>
289
290 </DD>
291 <DT><STRONG>Description:</STRONG></DT>
292 <DD>Define bindings for context <TT>context</TT>. Here <TT>binding</TT> is
293  a table composed of entries created with <A HREF="#fn:ioncore.kpress"><TT>ioncore.kpress</TT></A>, 
294  etc.; see section <A HREF="node4.html#sec:bindings">3.3</A> for details.
295   
296 </DD>
297 </DL>
298
299 <P>
300
301   <DL>
302 <DD><A NAME="fn:ioncore.defctxmenu"></A>  
303 </DD>
304 <DT><STRONG>Synopsis:</STRONG></DT>
305 <DD><TT>ioncore.defctxmenu(ctx, ...)</TT>
306
307 </DD>
308 <DT><STRONG>Description:</STRONG></DT>
309 <DD>Define context menu for context <TT>ctx</TT>, <TT>tab</TT> being a table 
310  of menu entries.
311   
312 </DD>
313 </DL>
314
315 <P>
316
317   <DL>
318 <DD><A NAME="fn:ioncore.deflayout"></A>  
319 </DD>
320 <DT><STRONG>Synopsis:</STRONG></DT>
321 <DD><TT>ioncore.deflayout(name, tab)</TT>
322
323 </DD>
324 <DT><STRONG>Description:</STRONG></DT>
325 <DD>Define a new workspace layout with name <TT>name</TT>, and
326  attach/creation parameters given in <TT>tab</TT>. The layout
327  "empty" may not be defined.
328   
329 </DD>
330 </DL>
331
332 <P>
333
334   <DL>
335 <DD><A NAME="fn:ioncore.defmenu"></A>  
336 </DD>
337 <DT><STRONG>Synopsis:</STRONG></DT>
338 <DD><TT>ioncore.defmenu(name, tab)</TT>
339
340 </DD>
341 <DT><STRONG>Description:</STRONG></DT>
342 <DD>Define a new menu with <TT>name</TT> being the menu's name and <TT>tab</TT> 
343  being a table of menu entries. If <TT>tab.append</TT> is set, the entries 
344  are appended to previously-defined ones, if possible.
345   
346 </DD>
347 </DL>
348
349 <P>
350
351   <DL>
352 <DD><A NAME="fn:ioncore.defwinprop"></A>  
353 </DD>
354 <DT><STRONG>Synopsis:</STRONG></DT>
355 <DD><TT>ioncore.defwinprop(list)</TT>
356
357 </DD>
358 <DT><STRONG>Description:</STRONG></DT>
359 <DD>Define a winprop. For more information, see section <A HREF="node4.html#sec:winprops">3.5</A>.
360   
361 </DD>
362 </DL>
363
364 <P>
365
366   <DL>
367 <DD><A NAME="fn:ioncore.exec_on"></A>  
368 </DD>
369 <DT><STRONG>Synopsis:</STRONG></DT>
370 <DD><TT>ioncore.exec_on(reg, cmd, merr_internal)</TT>
371
372 </DD>
373 <DT><STRONG>Description:</STRONG></DT>
374 <DD>Run <TT>cmd</TT> with the environment variable DISPLAY set to point to the
375  root window of the X screen <TT>reg</TT> is on. If <TT>cmd</TT> is prefixed
376  by a colon (<TT>:</TT>), the following command is executed in an xterm
377  (or other terminal emulator) with the help of the <TT>ion-runinxterm</TT> 
378  script. If the command is prefixed by two colons, <TT>ion-runinxterm</TT>
379  will ask you to press enter after the command is finished, even if it
380  returns succesfully.
381   
382 </DD>
383 </DL>
384
385 <P>
386
387   <DL>
388 <DD><A NAME="fn:ioncore.read_savefile"></A>  
389 </DD>
390 <DT><STRONG>Synopsis:</STRONG></DT>
391 <DD><TT>table ioncore.read_savefile(string basename)</TT>
392
393 </DD>
394 <DT><STRONG>Description:</STRONG></DT>
395 <DD>Read a savefile.
396   
397 </DD>
398 </DL>
399
400 <P>
401
402   <DL>
403 <DD><A NAME="fn:ioncore.get_savefile"></A>  
404 </DD>
405 <DT><STRONG>Synopsis:</STRONG></DT>
406 <DD><TT>string ioncore.get_savefile(string basename)</TT>
407
408 </DD>
409 <DT><STRONG>Description:</STRONG></DT>
410 <DD>Get a file name to save (session) data in. The string <TT>basename</TT> 
411  should contain no path or extension components.
412   
413 </DD>
414 </DL>
415
416 <P>
417
418   <DL>
419 <DD><A NAME="fn:ioncore.lookup_script"></A>  
420 </DD>
421 <DT><STRONG>Synopsis:</STRONG></DT>
422 <DD><TT>string ioncore.lookup_script(string file, string sp)</TT>
423
424 </DD>
425 <DT><STRONG>Description:</STRONG></DT>
426 <DD>Lookup script <TT>file</TT>. If <TT>try_in_dir</TT> is set, it is tried
427  before the standard search path.
428   
429 </DD>
430 </DL>
431
432 <P>
433
434   <DL>
435 <DD><A NAME="fn:ioncore.write_savefile"></A>  
436 </DD>
437 <DT><STRONG>Synopsis:</STRONG></DT>
438 <DD><TT>bool ioncore.write_savefile(string basename, table tab)</TT>
439
440 </DD>
441 <DT><STRONG>Description:</STRONG></DT>
442 <DD>Write <TT>tab</TT> in file with basename <TT>basename</TT> in the
443  session directory.
444   
445 </DD>
446 </DL>
447
448 <P>
449
450   <DL>
451 <DD><A NAME="fn:ioncore.find_manager"></A>  
452 </DD>
453 <DT><STRONG>Synopsis:</STRONG></DT>
454 <DD><TT>ioncore.find_manager(obj, t)</TT>
455
456 </DD>
457 <DT><STRONG>Description:</STRONG></DT>
458 <DD>Find an object with type name <TT>t</TT> managing <TT>obj</TT> or one of
459  its managers.
460   
461 </DD>
462 </DL>
463
464 <P>
465
466   <DL>
467 <DD><A NAME="fn:ioncore.get_dir_for"></A>  
468 </DD>
469 <DT><STRONG>Synopsis:</STRONG></DT>
470 <DD><TT>ioncore.get_dir_for(reg)</TT>
471
472 </DD>
473 <DT><STRONG>Description:</STRONG></DT>
474 <DD>Get default working directory for new programs started in <TT>reg</TT>.
475   
476 </DD>
477 </DL>
478
479 <P>
480
481   <DL>
482 <DD><A NAME="fn:ioncore.getbindings"></A>  
483 </DD>
484 <DT><STRONG>Synopsis:</STRONG></DT>
485 <DD><TT>ioncore.getbindings(maybe_context)</TT>
486
487 </DD>
488 <DT><STRONG>Description:</STRONG></DT>
489 <DD>Get a table of all bindings.
490   
491 </DD>
492 </DL>
493
494 <P>
495
496   <DL>
497 <DD><A NAME="fn:ioncore.getctxmenu"></A>  
498 </DD>
499 <DT><STRONG>Synopsis:</STRONG></DT>
500 <DD><TT>ioncore.getctxmenu(name)</TT>
501
502 </DD>
503 <DT><STRONG>Description:</STRONG></DT>
504 <DD>Returns a context menu defined with <A HREF="#fn:ioncore.defctxmenu"><TT>ioncore.defctxmenu</TT></A>.
505   
506 </DD>
507 </DL>
508
509 <P>
510
511   <DL>
512 <DD><A NAME="fn:ioncore.getlayout"></A>  
513 </DD>
514 <DT><STRONG>Synopsis:</STRONG></DT>
515 <DD><TT>ioncore.getlayout(name, all)</TT>
516
517 </DD>
518 <DT><STRONG>Description:</STRONG></DT>
519 <DD>Get named layout (or all of the latter parameter is set,
520  but this is for internal use only).
521   
522 </DD>
523 </DL>
524
525 <P>
526
527   <DL>
528 <DD><A NAME="fn:ioncore.getmenu"></A>  
529 </DD>
530 <DT><STRONG>Synopsis:</STRONG></DT>
531 <DD><TT>ioncore.getmenu(name)</TT>
532
533 </DD>
534 <DT><STRONG>Description:</STRONG></DT>
535 <DD>Returns a menu defined with <A HREF="#fn:ioncore.defmenu"><TT>ioncore.defmenu</TT></A>.
536   
537 </DD>
538 </DL>
539
540 <P>
541
542   <DL>
543 <DD><A NAME="fn:ioncore.getwinprop"></A>  
544 </DD>
545 <DT><STRONG>Synopsis:</STRONG></DT>
546 <DD><TT>ioncore.getwinprop(cwin)</TT>
547
548 </DD>
549 <DT><STRONG>Description:</STRONG></DT>
550 <DD>Find winprop table for <TT>cwin</TT>.
551   
552 </DD>
553 </DL>
554
555 <P>
556
557   <DL>
558 <DD><A NAME="fn:ioncore.aboutmsg"></A>  
559 </DD>
560 <DT><STRONG>Synopsis:</STRONG></DT>
561 <DD><TT>string ioncore.aboutmsg()</TT>
562
563 </DD>
564 <DT><STRONG>Description:</STRONG></DT>
565 <DD>Returns an about message (version, author, copyright notice).
566   
567 </DD>
568 </DL>
569
570 <P>
571
572   <DL>
573 <DD><A NAME="fn:ioncore.activity_first"></A>  
574 </DD>
575 <DT><STRONG>Synopsis:</STRONG></DT>
576 <DD><TT>WRegion ioncore.activity_first()</TT>
577
578 </DD>
579 <DT><STRONG>Description:</STRONG></DT>
580 <DD>Returns first region on activity list.
581   
582 </DD>
583 </DL>
584
585 <P>
586
587   <DL>
588 <DD><A NAME="fn:ioncore.activity_i"></A>  
589 </DD>
590 <DT><STRONG>Synopsis:</STRONG></DT>
591 <DD><TT>bool ioncore.activity_i(function iterfn)</TT>
592
593 </DD>
594 <DT><STRONG>Description:</STRONG></DT>
595 <DD>Iterate over activity list until <TT>iterfn</TT> returns <TT>false</TT>.
596  The function itself returns <TT>true</TT> if it reaches the end of list
597  without this happening.
598   
599 </DD>
600 </DL>
601
602 <P>
603
604   <DL>
605 <DD><A NAME="fn:ioncore.clientwin_i"></A>  
606 </DD>
607 <DT><STRONG>Synopsis:</STRONG></DT>
608 <DD><TT>bool ioncore.clientwin_i(function fn)</TT>
609
610 </DD>
611 <DT><STRONG>Description:</STRONG></DT>
612 <DD>Iterate over client windows until <TT>iterfn</TT> returns <TT>false</TT>.
613  The function itself returns <TT>true</TT> if it reaches the end of list
614  without this happening.
615   
616 </DD>
617 </DL>
618
619 <P>
620
621   <DL>
622 <DD><A NAME="fn:ioncore.current"></A>  
623 </DD>
624 <DT><STRONG>Synopsis:</STRONG></DT>
625 <DD><TT>WRegion ioncore.current()</TT>
626
627 </DD>
628 <DT><STRONG>Description:</STRONG></DT>
629 <DD>Returns the currently focused region, if any.
630   
631 </DD>
632 </DL>
633
634 <P>
635
636   <DL>
637 <DD><A NAME="fn:ioncore.defshortening"></A>  
638 </DD>
639 <DT><STRONG>Synopsis:</STRONG></DT>
640 <DD><TT>bool ioncore.defshortening(string rx, string rule, bool always)</TT>
641
642 </DD>
643 <DT><STRONG>Description:</STRONG></DT>
644 <DD>Add a rule describing how too long titles should be shortened to fit in tabs.
645  The regular expression <TT>rx</TT> (POSIX, not Lua!) is used to match titles
646  and when <TT>rx</TT> matches, <TT>rule</TT> is attempted to use as a replacement
647  for title. If <TT>always</TT> is set, the rule is used even if no shortening 
648  is necessary.
649
650 <P>
651 Similarly to sed's 's' command, <TT>rule</TT> may contain characters that are
652  inserted in the resulting string and specials as follows:
653
654 <P>
655 <TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
656 <TR><TD ALIGN="LEFT">Special</TD>
657 <TD ALIGN="LEFT">Description</TD>
658 </TR>
659 <TR><TD ALIGN="LEFT">$0</TD>
660 <TD ALIGN="LEFT">Place the original string here.</TD>
661 </TR>
662 <TR><TD ALIGN="LEFT">$1 to $9</TD>
663 <TD ALIGN="LEFT">Insert n:th capture here (as usual,captures are surrounded
664                  by parentheses in the regex).</TD>
665 </TR>
666 <TR><TD ALIGN="LEFT">$|</TD>
667 <TD ALIGN="LEFT">Alternative shortening separator. The shortening described
668                  before the first this kind of separator is tried first and
669                  if it fails to make the string short enough, the next is 
670                   tried, and so on.</TD>
671 </TR>
672 <TR><TD ALIGN="LEFT">$&lt;</TD>
673 <TD ALIGN="LEFT">Remove characters on the left of this marker to shorten the
674                  string.</TD>
675 </TR>
676 <TR><TD ALIGN="LEFT">$&gt;</TD>
677 <TD ALIGN="LEFT">Remove characters on the right of this marker to shorten the
678                  string. Only the first $&lt; or $&gt; within an alternative 
679                  shortening is used.</TD>
680 </TR>
681 </TABLE>
682   
683 </DD>
684 </DL>
685
686 <P>
687
688   <DL>
689 <DD><A NAME="fn:ioncore.detach"></A>  
690 </DD>
691 <DT><STRONG>Synopsis:</STRONG></DT>
692 <DD><TT>bool ioncore.detach(WRegion reg, string how)</TT>
693
694 </DD>
695 <DT><STRONG>Description:</STRONG></DT>
696 <DD>Detach or reattach <TT>reg</TT>, depending on whether <TT>how</TT>
697  is `<TT>set</TT>', `<TT>unset</TT>' or `<TT>toggle</TT>'. (Detaching 
698  means making <TT>reg</TT> managed by its nearest ancestor WGroup,
699  framed if <TT>reg</TT> is not itself WFrame. Reattaching means 
700  making it managed where it used to be managed, if a return-placeholder
701  exists.)
702  If <TT>reg</TT> is the `bottom' of some group, the whole group is
703  detached. If <TT>reg</TT> is a WWindow, it is put into a 
704  frame.
705   
706 </DD>
707 </DL>
708
709 <P>
710
711   <DL>
712 <DD><A NAME="fn:ioncore.exec"></A>  
713 </DD>
714 <DT><STRONG>Synopsis:</STRONG></DT>
715 <DD><TT>integer ioncore.exec(string cmd)</TT>
716
717 </DD>
718 <DT><STRONG>Description:</STRONG></DT>
719 <DD>Run <TT>cmd</TT> with the environment variable DISPLAY set to point to the
720  X display the WM is running on. No specific screen is set unlike with
721  <A HREF="#fn:WRootWin.exec_on"><TT>WRootWin.exec_on</TT></A>. The PID of the (shell executing the) new 
722  process is returned.
723   
724 </DD>
725 </DL>
726
727 <P>
728
729   <DL>
730 <DD><A NAME="fn:ioncore.find_screen_id"></A>  
731 </DD>
732 <DT><STRONG>Synopsis:</STRONG></DT>
733 <DD><TT>WScreen ioncore.find_screen_id(integer id)</TT>
734
735 </DD>
736 <DT><STRONG>Description:</STRONG></DT>
737 <DD>Find the screen with numerical id <TT>id</TT>.
738   
739 </DD>
740 </DL>
741
742 <P>
743
744   <DL>
745 <DD><A NAME="fn:ioncore.focushistory_i"></A>  
746 </DD>
747 <DT><STRONG>Synopsis:</STRONG></DT>
748 <DD><TT>bool ioncore.focushistory_i(function iterfn)</TT>
749
750 </DD>
751 <DT><STRONG>Description:</STRONG></DT>
752 <DD>Iterate over focus history until <TT>iterfn</TT> returns <TT>false</TT>.
753  The function itself returns <TT>true</TT> if it reaches the end of list
754  without this happening.
755   
756 </DD>
757 </DL>
758
759 <P>
760
761   <DL>
762 <DD><A NAME="fn:ioncore.get"></A>  
763 </DD>
764 <DT><STRONG>Synopsis:</STRONG></DT>
765 <DD><TT>table ioncore.get()</TT>
766
767 </DD>
768 <DT><STRONG>Description:</STRONG></DT>
769 <DD>Get ioncore basic settings. For details see <A HREF="#fn:ioncore.set"><TT>ioncore.set</TT></A>.
770   
771 </DD>
772 </DL>
773
774 <P>
775
776   <DL>
777 <DD><A NAME="fn:ioncore.get_paths"></A>  
778 </DD>
779 <DT><STRONG>Synopsis:</STRONG></DT>
780 <DD><TT>table ioncore.get_paths(table tab)</TT>
781
782 </DD>
783 <DT><STRONG>Description:</STRONG></DT>
784 <DD>Get important directories (the fields <TT>userdir</TT>, 
785  <TT>sessiondir</TT>, <TT>searchpath</TT> in the returned table).
786   
787 </DD>
788 </DL>
789
790 <P>
791
792   <DL>
793 <DD><A NAME="fn:ioncore.goto_activity"></A>  
794 </DD>
795 <DT><STRONG>Synopsis:</STRONG></DT>
796 <DD><TT>bool ioncore.goto_activity()</TT>
797
798 </DD>
799 <DT><STRONG>Description:</STRONG></DT>
800 <DD>Go to first region on activity list.
801   
802 </DD>
803 </DL>
804
805 <P>
806
807   <DL>
808 <DD><A NAME="fn:ioncore.goto_first"></A>  
809 </DD>
810 <DT><STRONG>Synopsis:</STRONG></DT>
811 <DD><TT>WRegion ioncore.goto_first(WRegion reg, string dirstr, table param)</TT>
812
813 </DD>
814 <DT><STRONG>Description:</STRONG></DT>
815 <DD>Go to first region within <TT>reg</TT> in direction <TT>dirstr</TT>.
816  For information on <TT>param</TT>, see <A HREF="#fn:ioncore.navi_next"><TT>ioncore.navi_next</TT></A>. 
817  Additionally this function supports the boolean <TT>nofront</TT> field,
818  for not bringing the object to front.
819   
820 </DD>
821 </DL>
822
823 <P>
824
825   <DL>
826 <DD><A NAME="fn:ioncore.goto_next"></A>  
827 </DD>
828 <DT><STRONG>Synopsis:</STRONG></DT>
829 <DD><TT>WRegion ioncore.goto_next(WRegion reg, string dirstr, table param)</TT>
830
831 </DD>
832 <DT><STRONG>Description:</STRONG></DT>
833 <DD>Go to region next from <TT>reg</TT> in direction <TT>dirstr</TT>.
834  For information on <TT>param</TT>, see <A HREF="#fn:ioncore.navi_next"><TT>ioncore.navi_next</TT></A>.
835  Additionally this function supports the boolean <TT>nofront</TT>
836  field, for not bringing the object to front.
837   
838 </DD>
839 </DL>
840
841 <P>
842
843   <DL>
844 <DD><A NAME="fn:ioncore.goto_next_screen"></A>  
845 </DD>
846 <DT><STRONG>Synopsis:</STRONG></DT>
847 <DD><TT>WScreen ioncore.goto_next_screen()</TT>
848
849 </DD>
850 <DT><STRONG>Description:</STRONG></DT>
851 <DD>Switch focus to the next screen and return it.
852
853 <P>
854 Note that this function is asynchronous; the screen will not
855  actually have received the focus when this function returns.
856   
857 </DD>
858 </DL>
859
860 <P>
861
862   <DL>
863 <DD><A NAME="fn:ioncore.goto_nth_screen"></A>  
864 </DD>
865 <DT><STRONG>Synopsis:</STRONG></DT>
866 <DD><TT>WScreen ioncore.goto_nth_screen(integer id)</TT>
867
868 </DD>
869 <DT><STRONG>Description:</STRONG></DT>
870 <DD>Switch focus to the screen with id <TT>id</TT> and return it.
871
872 <P>
873 Note that this function is asynchronous; the screen will not
874  actually have received the focus when this function returns.
875   
876 </DD>
877 </DL>
878
879 <P>
880
881   <DL>
882 <DD><A NAME="fn:ioncore.goto_prev_screen"></A>  
883 </DD>
884 <DT><STRONG>Synopsis:</STRONG></DT>
885 <DD><TT>WScreen ioncore.goto_prev_screen()</TT>
886
887 </DD>
888 <DT><STRONG>Description:</STRONG></DT>
889 <DD>Switch focus to the previous screen and return it.
890
891 <P>
892 Note that this function is asynchronous; the screen will not
893  actually have received the focus when this function returns.
894   
895 </DD>
896 </DL>
897
898 <P>
899
900   <DL>
901 <DD><A NAME="fn:ioncore.goto_previous"></A>  
902 </DD>
903 <DT><STRONG>Synopsis:</STRONG></DT>
904 <DD><TT>WRegion ioncore.goto_previous()</TT>
905
906 </DD>
907 <DT><STRONG>Description:</STRONG></DT>
908 <DD>Go to and return to a previously active region (if any).
909
910 <P>
911 Note that this function is asynchronous; the region will not
912  actually have received the focus when this function returns.
913   
914 </DD>
915 </DL>
916
917 <P>
918
919   <DL>
920 <DD><A NAME="fn:ioncore.is_i18n"></A>  
921 </DD>
922 <DT><STRONG>Synopsis:</STRONG></DT>
923 <DD><TT>bool ioncore.is_i18n()</TT>
924
925 </DD>
926 <DT><STRONG>Description:</STRONG></DT>
927 <DD>Is Ion supporting locale-specifically multibyte-encoded strings?
928   
929 </DD>
930 </DL>
931
932 <P>
933
934   <DL>
935 <DD><A NAME="fn:ioncore.load_module"></A>  
936 </DD>
937 <DT><STRONG>Synopsis:</STRONG></DT>
938 <DD><TT>bool ioncore.load_module(string modname)</TT>
939
940 </DD>
941 <DT><STRONG>Description:</STRONG></DT>
942 <DD>Attempt to load a C-side module.
943   
944 </DD>
945 </DL>
946
947 <P>
948
949   <DL>
950 <DD><A NAME="fn:ioncore.lookup_clientwin"></A>  
951 </DD>
952 <DT><STRONG>Synopsis:</STRONG></DT>
953 <DD><TT>WClientWin ioncore.lookup_clientwin(string name)</TT>
954
955 </DD>
956 <DT><STRONG>Description:</STRONG></DT>
957 <DD>Attempt to find a client window with name <TT>name</TT>.
958   
959 </DD>
960 </DL>
961
962 <P>
963
964   <DL>
965 <DD><A NAME="fn:ioncore.lookup_region"></A>  
966 </DD>
967 <DT><STRONG>Synopsis:</STRONG></DT>
968 <DD><TT>WRegion ioncore.lookup_region(string name, string typenam)</TT>
969
970 </DD>
971 <DT><STRONG>Description:</STRONG></DT>
972 <DD>Attempt to find a non-client window region with name <TT>name</TT> and type
973  inheriting <TT>typenam</TT>.
974   
975 </DD>
976 </DL>
977
978 <P>
979
980   <DL>
981 <DD><A NAME="fn:ioncore.navi_first"></A>  
982 </DD>
983 <DT><STRONG>Synopsis:</STRONG></DT>
984 <DD><TT>WRegion ioncore.navi_first(WRegion reg, string dirstr, table param)</TT>
985
986 </DD>
987 <DT><STRONG>Description:</STRONG></DT>
988 <DD>Find first region within <TT>reg</TT> in direction <TT>dirstr</TT>.
989  For information on <TT>param</TT>, see <A HREF="#fn:ioncore.navi_next"><TT>ioncore.navi_next</TT></A>.
990   
991 </DD>
992 </DL>
993
994 <P>
995
996   <DL>
997 <DD><A NAME="fn:ioncore.navi_next"></A>  
998 </DD>
999 <DT><STRONG>Synopsis:</STRONG></DT>
1000 <DD><TT>WRegion ioncore.navi_next(WRegion reg, string dirstr, table param)</TT>
1001
1002 </DD>
1003 <DT><STRONG>Description:</STRONG></DT>
1004 <DD>Find region next from <TT>reg</TT> in direction <TT>dirstr</TT>
1005  (`<TT>up</TT>', `<TT>down</TT>', `<TT>left</TT>', `<TT>right</TT>', 
1006  `<TT>next</TT>', `<TT>prev</TT>', or `<TT>any</TT>'). The table <TT>param</TT>
1007  may contain the boolean field <TT>nowrap</TT>, instructing not to wrap 
1008  around, and the WRegions <TT>no_ascend</TT> and <TT>no_descend</TT>,
1009  and boolean functions <TT>ascend_filter</TT> and <TT>descend_filter</TT> 
1010  on <TT>WRegion</TT> pairs (<TT>to</TT>, <TT>from</TT>), are used to decide when
1011  to descend or ascend into another region.
1012   
1013 </DD>
1014 </DL>
1015
1016 <P>
1017
1018   <DL>
1019 <DD><A NAME="fn:ioncore.popen_bgread"></A>  
1020 </DD>
1021 <DT><STRONG>Synopsis:</STRONG></DT>
1022 <DD><TT>integer ioncore.popen_bgread(string cmd, function h, function errh)</TT>
1023
1024 </DD>
1025 <DT><STRONG>Description:</STRONG></DT>
1026 <DD>Run <TT>cmd</TT> with a read pipe connected to its stdout.
1027  When data is received through the pipe, <TT>handler</TT> is called
1028  with that data.
1029   
1030 </DD>
1031 </DL>
1032
1033 <P>
1034
1035   <DL>
1036 <DD><A NAME="fn:ioncore.progname"></A>  
1037 </DD>
1038 <DT><STRONG>Synopsis:</STRONG></DT>
1039 <DD><TT>string ioncore.progname()</TT>
1040
1041 </DD>
1042 <DT><STRONG>Description:</STRONG></DT>
1043 <DD>Returns the name of program using Ioncore.
1044   
1045 </DD>
1046 </DL>
1047
1048 <P>
1049
1050   <DL>
1051 <DD><A NAME="fn:ioncore.region_i"></A>  
1052 </DD>
1053 <DT><STRONG>Synopsis:</STRONG></DT>
1054 <DD><TT>bool ioncore.region_i(function fn, string typenam)</TT>
1055
1056 </DD>
1057 <DT><STRONG>Description:</STRONG></DT>
1058 <DD>Iterate over all non-client window regions with (inherited) class
1059  <TT>typenam</TT> until <TT>iterfn</TT> returns <TT>false</TT>.
1060  The function itself returns <TT>true</TT> if it reaches the end of list
1061  without this happening.
1062   
1063 </DD>
1064 </DL>
1065
1066 <P>
1067
1068   <DL>
1069 <DD><A NAME="fn:ioncore.request_selection"></A>  
1070 </DD>
1071 <DT><STRONG>Synopsis:</STRONG></DT>
1072 <DD><TT>void ioncore.request_selection(function fn)</TT>
1073
1074 </DD>
1075 <DT><STRONG>Description:</STRONG></DT>
1076 <DD>Request (string) selection. The function <TT>fn</TT> will be called 
1077  with the selection when and if it is received.
1078   
1079 </DD>
1080 </DL>
1081
1082 <P>
1083
1084   <DL>
1085 <DD><A NAME="fn:ioncore.resign"></A>  
1086 </DD>
1087 <DT><STRONG>Synopsis:</STRONG></DT>
1088 <DD><TT>void ioncore.resign()</TT>
1089
1090 </DD>
1091 <DT><STRONG>Description:</STRONG></DT>
1092 <DD>Causes the window manager to simply exit without saving
1093  state/session.
1094   
1095 </DD>
1096 </DL>
1097
1098 <P>
1099
1100   <DL>
1101 <DD><A NAME="fn:ioncore.restart"></A>  
1102 </DD>
1103 <DT><STRONG>Synopsis:</STRONG></DT>
1104 <DD><TT>void ioncore.restart()</TT>
1105
1106 </DD>
1107 <DT><STRONG>Description:</STRONG></DT>
1108 <DD>Restart, saving session first.
1109   
1110 </DD>
1111 </DL>
1112
1113 <P>
1114
1115   <DL>
1116 <DD><A NAME="fn:ioncore.restart_other"></A>  
1117 </DD>
1118 <DT><STRONG>Synopsis:</STRONG></DT>
1119 <DD><TT>void ioncore.restart_other(string cmd)</TT>
1120
1121 </DD>
1122 <DT><STRONG>Description:</STRONG></DT>
1123 <DD>Attempt to restart another window manager <TT>cmd</TT>.
1124   
1125 </DD>
1126 </DL>
1127
1128 <P>
1129
1130   <DL>
1131 <DD><A NAME="fn:ioncore.set"></A>  
1132 </DD>
1133 <DT><STRONG>Synopsis:</STRONG></DT>
1134 <DD><TT>void ioncore.set(table tab)</TT>
1135
1136 </DD>
1137 <DT><STRONG>Description:</STRONG></DT>
1138 <DD>Set ioncore basic settings. The table <TT>tab</TT> may contain the
1139  following fields.
1140
1141 <P>
1142 <TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
1143 <TR><TD ALIGN="LEFT">Field</TD>
1144 <TD ALIGN="LEFT">Description</TD>
1145 </TR>
1146 <TR><TD ALIGN="LEFT"><TT>opaque_resize</TT></TD>
1147 <TD ALIGN="LEFT">(boolean) Controls whether interactive move and
1148                         resize operations simply draw a rubberband during
1149                         the operation (false) or immediately affect the 
1150                         object in question at every step (true).</TD>
1151 </TR>
1152 <TR><TD ALIGN="LEFT"><TT>warp</TT></TD>
1153 <TD ALIGN="LEFT">(boolean) Should focusing operations move the 
1154                         pointer to the object to be focused?</TD>
1155 </TR>
1156 <TR><TD ALIGN="LEFT"><TT>switchto</TT></TD>
1157 <TD ALIGN="LEFT">(boolean) Should a managing WMPlex switch
1158                         to a newly mapped client window?</TD>
1159 </TR>
1160 <TR><TD ALIGN="LEFT"><TT>screen_notify</TT></TD>
1161 <TD ALIGN="LEFT">(boolean) Should notification tooltips be displayed
1162                         for hidden workspaces with activity?</TD>
1163 </TR>
1164 <TR><TD ALIGN="LEFT"><TT>frame_default_index</TT></TD>
1165 <TD ALIGN="LEFT">(string) Specifies where to add new regions
1166                         on the mutually exclusive list of a frame. One of
1167                         `<TT>last</TT>', `<TT>next</TT>', (for after current),
1168                         or `<TT>next-act</TT>'
1169                         (for after current and anything with activity right
1170                         after it).</TD>
1171 </TR>
1172 <TR><TD ALIGN="LEFT"><TT>dblclick_delay</TT></TD>
1173 <TD ALIGN="LEFT">(integer) Delay between clicks of a double click.</TD>
1174 </TR>
1175 <TR><TD ALIGN="LEFT"><TT>kbresize_delay</TT></TD>
1176 <TD ALIGN="LEFT">(integer) Delay in milliseconds for ending keyboard
1177                          resize mode after inactivity.</TD>
1178 </TR>
1179 <TR><TD ALIGN="LEFT"><TT>kbresize_t_max</TT></TD>
1180 <TD ALIGN="LEFT">(integer) Controls keyboard resize acceleration. 
1181                          See description below for details.</TD>
1182 </TR>
1183 <TR><TD ALIGN="LEFT"><TT>kbresize_t_min</TT></TD>
1184 <TD ALIGN="LEFT">(integer) See below.</TD>
1185 </TR>
1186 <TR><TD ALIGN="LEFT"><TT>kbresize_step</TT></TD>
1187 <TD ALIGN="LEFT">(floating point) See below.</TD>
1188 </TR>
1189 <TR><TD ALIGN="LEFT"><TT>kbresize_maxacc</TT></TD>
1190 <TD ALIGN="LEFT">(floating point) See below.</TD>
1191 </TR>
1192 <TR><TD ALIGN="LEFT"><TT>framed_transients</TT></TD>
1193 <TD ALIGN="LEFT">(boolean) Put transients in nested frames.</TD>
1194 </TR>
1195 <TR><TD ALIGN="LEFT"><TT>float_placement_method</TT></TD>
1196 <TD ALIGN="LEFT">(string) How to place floating frames.
1197                           One of `<TT>udlr</TT>' (up-down, then left-right), 
1198                           `<TT>lrud</TT>' (left-right, then up-down), or 
1199                           `<TT>random</TT>'.</TD>
1200 </TR>
1201 <TR><TD ALIGN="LEFT"><TT>mousefocus</TT></TD>
1202 <TD ALIGN="LEFT">(string) Mouse focus mode: 
1203                      `<TT>disable</TT>' or `<TT>sloppy</TT>'.</TD>
1204 </TR>
1205 <TR><TD ALIGN="LEFT"><TT>unsqueeze</TT></TD>
1206 <TD ALIGN="LEFT">(boolean) Auto-unsqueeze transients/menus/queries/etc.</TD>
1207 </TR>
1208 <TR><TD ALIGN="LEFT"><TT>autoraise</TT></TD>
1209 <TD ALIGN="LEFT">(boolean) Autoraise regions in groups on goto.</TD>
1210 </TR>
1211 </TABLE>
1212
1213 <P>
1214 When a keyboard resize function is called, and at most <TT>kbresize_t_max</TT> 
1215  milliseconds has passed from a previous call, acceleration factor is reset 
1216  to 1.0. Otherwise, if at least <TT>kbresize_t_min</TT> milliseconds have 
1217  passed from the from previous acceleration update or reset the squere root
1218  of the acceleration factor is incremented by <TT>kbresize_step</TT>. The 
1219  maximum acceleration factor (pixels/call modulo size hints) is given by 
1220  <TT>kbresize_maxacc</TT>. The default values are (200, 50, 30, 100).
1221   
1222 </DD>
1223 </DL>
1224
1225 <P>
1226
1227   <DL>
1228 <DD><A NAME="fn:ioncore.set_paths"></A>  
1229 </DD>
1230 <DT><STRONG>Synopsis:</STRONG></DT>
1231 <DD><TT>bool ioncore.set_paths(table tab)</TT>
1232
1233 </DD>
1234 <DT><STRONG>Description:</STRONG></DT>
1235 <DD>Set important directories (the fields <TT>sessiondir</TT>, <TT>searchpath</TT>
1236  of <TT>tab</TT>).
1237   
1238 </DD>
1239 </DL>
1240
1241 <P>
1242
1243   <DL>
1244 <DD><A NAME="fn:ioncore.set_selection"></A>  
1245 </DD>
1246 <DT><STRONG>Synopsis:</STRONG></DT>
1247 <DD><TT>void ioncore.set_selection(string p)</TT>
1248
1249 </DD>
1250 <DT><STRONG>Description:</STRONG></DT>
1251 <DD>Set primary selection and cutbuffer0 to <TT>p</TT>.
1252   
1253 </DD>
1254 </DL>
1255
1256 <P>
1257
1258   <DL>
1259 <DD><A NAME="fn:ioncore.shutdown"></A>  
1260 </DD>
1261 <DT><STRONG>Synopsis:</STRONG></DT>
1262 <DD><TT>void ioncore.shutdown()</TT>
1263
1264 </DD>
1265 <DT><STRONG>Description:</STRONG></DT>
1266 <DD>End session saving it first.
1267   
1268 </DD>
1269 </DL>
1270
1271 <P>
1272
1273   <DL>
1274 <DD><A NAME="fn:ioncore.snapshot"></A>  
1275 </DD>
1276 <DT><STRONG>Synopsis:</STRONG></DT>
1277 <DD><TT>void ioncore.snapshot()</TT>
1278
1279 </DD>
1280 <DT><STRONG>Description:</STRONG></DT>
1281 <DD>Save session.
1282   
1283 </DD>
1284 </DL>
1285
1286 <P>
1287
1288   <DL>
1289 <DD><A NAME="fn:ioncore.tagged_clear"></A>  
1290 </DD>
1291 <DT><STRONG>Synopsis:</STRONG></DT>
1292 <DD><TT>void ioncore.tagged_clear()</TT>
1293
1294 </DD>
1295 <DT><STRONG>Description:</STRONG></DT>
1296 <DD>Untag all regions.
1297   
1298 </DD>
1299 </DL>
1300
1301 <P>
1302
1303   <DL>
1304 <DD><A NAME="fn:ioncore.tagged_first"></A>  
1305 </DD>
1306 <DT><STRONG>Synopsis:</STRONG></DT>
1307 <DD><TT>WRegion ioncore.tagged_first(bool untag)</TT>
1308
1309 </DD>
1310 <DT><STRONG>Description:</STRONG></DT>
1311 <DD>Returns first tagged object, untagging it as well if <TT>untag</TT> is set.
1312   
1313 </DD>
1314 </DL>
1315
1316 <P>
1317
1318   <DL>
1319 <DD><A NAME="fn:ioncore.tagged_i"></A>  
1320 </DD>
1321 <DT><STRONG>Synopsis:</STRONG></DT>
1322 <DD><TT>bool ioncore.tagged_i(function iterfn)</TT>
1323
1324 </DD>
1325 <DT><STRONG>Description:</STRONG></DT>
1326 <DD>Iterate over tagged regions until <TT>iterfn</TT> returns <TT>false</TT>.
1327  The function itself returns <TT>true</TT> if it reaches the end of list
1328  without this happening.
1329   
1330 </DD>
1331 </DL>
1332
1333 <P>
1334
1335   <DL>
1336 <DD><A NAME="fn:ioncore.unsqueeze"></A>  
1337 </DD>
1338 <DT><STRONG>Synopsis:</STRONG></DT>
1339 <DD><TT>void ioncore.unsqueeze(WRegion reg, bool override)</TT>
1340
1341 </DD>
1342 <DT><STRONG>Description:</STRONG></DT>
1343 <DD>Try to detach <TT>reg</TT> if it fits poorly in its 
1344  current location. This function does not do anything,
1345  unless <TT>override</TT> is set or the <TT>unsqueeze</TT> option
1346  of <A HREF="#fn:ioncore.set"><TT>ioncore.set</TT></A> is set.
1347   
1348 </DD>
1349 </DL>
1350
1351 <P>
1352
1353   <DL>
1354 <DD><A NAME="fn:ioncore.version"></A>  
1355 </DD>
1356 <DT><STRONG>Synopsis:</STRONG></DT>
1357 <DD><TT>string ioncore.version()</TT>
1358
1359 </DD>
1360 <DT><STRONG>Description:</STRONG></DT>
1361 <DD>Returns Ioncore version string.
1362   
1363 </DD>
1364 </DL>
1365
1366 <P>
1367
1368   <DL>
1369 <DD><A NAME="fn:ioncore.warn"></A>  
1370 </DD>
1371 <DT><STRONG>Synopsis:</STRONG></DT>
1372 <DD><TT>void ioncore.warn(string str)</TT>
1373
1374 </DD>
1375 <DT><STRONG>Description:</STRONG></DT>
1376 <DD>Issue a warning. How the message is displayed depends on the current
1377  warning handler.
1378   
1379 </DD>
1380 </DL>
1381
1382 <P>
1383
1384   <DL>
1385 <DD><A NAME="fn:ioncore.warn_traced"></A>  
1386 </DD>
1387 <DT><STRONG>Synopsis:</STRONG></DT>
1388 <DD><TT>void ioncore.warn_traced(string str)</TT>
1389
1390 </DD>
1391 <DT><STRONG>Description:</STRONG></DT>
1392 <DD>Similar to <A HREF="#fn:ioncore.warn"><TT>ioncore.warn</TT></A>, but also print Lua stack trace.
1393   
1394 </DD>
1395 </DL>
1396
1397 <P>
1398
1399   <DL>
1400 <DD><A NAME="fn:ioncore.x_change_property"></A>  
1401 </DD>
1402 <DT><STRONG>Synopsis:</STRONG></DT>
1403 <DD><TT>void ioncore.x_change_property(integer win, integer atom, integer atom_type, integer format, string mode, table tab)</TT>
1404
1405 </DD>
1406 <DT><STRONG>Description:</STRONG></DT>
1407 <DD>Modify a window property. The <TT>mode</TT> is one of
1408  `<TT>replace</TT>', `<TT>prepend</TT>' or `<TT>append</TT>', and format
1409  is either 8, 16 or 32. Also see <A HREF="#fn:ioncore.x_get_window_property"><TT>ioncore.x_get_window_property</TT></A>
1410  and the <TT>XChangeProperty</TT>(3) manual page.
1411   
1412 </DD>
1413 </DL>
1414
1415 <P>
1416
1417   <DL>
1418 <DD><A NAME="fn:ioncore.x_delete_property"></A>  
1419 </DD>
1420 <DT><STRONG>Synopsis:</STRONG></DT>
1421 <DD><TT>void ioncore.x_delete_property(integer win, integer atom)</TT>
1422
1423 </DD>
1424 <DT><STRONG>Description:</STRONG></DT>
1425 <DD>Delete a window property.
1426   
1427 </DD>
1428 </DL>
1429
1430 <P>
1431
1432   <DL>
1433 <DD><A NAME="fn:ioncore.x_get_atom_name"></A>  
1434 </DD>
1435 <DT><STRONG>Synopsis:</STRONG></DT>
1436 <DD><TT>string ioncore.x_get_atom_name(integer atom)</TT>
1437
1438 </DD>
1439 <DT><STRONG>Description:</STRONG></DT>
1440 <DD>Get the name of an atom. See <TT>XGetAtomName</TT>(3) manual page for 
1441  details.
1442   
1443 </DD>
1444 </DL>
1445
1446 <P>
1447
1448   <DL>
1449 <DD><A NAME="fn:ioncore.x_get_text_property"></A>  
1450 </DD>
1451 <DT><STRONG>Synopsis:</STRONG></DT>
1452 <DD><TT>table ioncore.x_get_text_property(integer win, integer atom)</TT>
1453
1454 </DD>
1455 <DT><STRONG>Description:</STRONG></DT>
1456 <DD>Get a text property for a window. The fields in the returned
1457  table (starting from 1) are the null-separated parts of the property.
1458  See the <TT>XGetTextProperty</TT>(3) manual page for more information.
1459   
1460 </DD>
1461 </DL>
1462
1463 <P>
1464
1465   <DL>
1466 <DD><A NAME="fn:ioncore.x_get_window_property"></A>  
1467 </DD>
1468 <DT><STRONG>Synopsis:</STRONG></DT>
1469 <DD><TT>table ioncore.x_get_window_property(integer win, integer atom, integer atom_type, integer n32expected, bool more)</TT>
1470
1471 </DD>
1472 <DT><STRONG>Description:</STRONG></DT>
1473 <DD>Get a property <TT>atom</TT> of type <TT>atom_type</TT> for window <TT>win</TT>. 
1474  The <TT>n32expected</TT> parameter indicates the expected number of 32bit
1475  words, and <TT>more</TT> indicates whether all or just this amount of data
1476  should be fetched. Each 8, 16 or 32bit element of the property, as
1477  deciphered from <TT>atom_type</TT> is a field in the returned table.
1478  See <TT>XGetWindowProperty</TT>(3) manual page for more information.
1479   
1480 </DD>
1481 </DL>
1482
1483 <P>
1484
1485   <DL>
1486 <DD><A NAME="fn:ioncore.x_intern_atom"></A>  
1487 </DD>
1488 <DT><STRONG>Synopsis:</STRONG></DT>
1489 <DD><TT>integer ioncore.x_intern_atom(string name, bool only_if_exists)</TT>
1490
1491 </DD>
1492 <DT><STRONG>Description:</STRONG></DT>
1493 <DD>Create a new atom. See <TT>XInternAtom</TT>(3) manual page for details.
1494   
1495 </DD>
1496 </DL>
1497
1498 <P>
1499
1500   <DL>
1501 <DD><A NAME="fn:ioncore.x_set_text_property"></A>  
1502 </DD>
1503 <DT><STRONG>Synopsis:</STRONG></DT>
1504 <DD><TT>void ioncore.x_set_text_property(integer win, integer atom, table tab)</TT>
1505
1506 </DD>
1507 <DT><STRONG>Description:</STRONG></DT>
1508 <DD>Set a text property for a window. The fields of <TT>tab</TT> starting from
1509  1 should be the different null-separated parts of the property.
1510  See the <TT>XSetTextProperty</TT>(3) manual page for more information.
1511   
1512 </DD>
1513 </DL>
1514
1515 <P>
1516
1517   <DL>
1518 <DD><A NAME="fn:ioncore.kpress"></A>  
1519 </DD>
1520 <DT><STRONG>Synopsis:</STRONG></DT>
1521 <DD><TT>ioncore.kpress(keyspec, cmd, guard)</TT>
1522
1523 </DD>
1524 <DT><STRONG>Description:</STRONG></DT>
1525 <DD>Creates a binding description table for the action of pressing a key given 
1526  by <TT>keyspec</TT> (with possible modifiers) to the function <TT>func</TT>.
1527  For more information on bindings, see section <A HREF="node4.html#sec:bindings">3.3</A>.
1528   
1529 </DD>
1530 </DL>
1531
1532 <P>
1533
1534   <DL>
1535 <DD><A NAME="fn:ioncore.kpress_wait"></A>  
1536 </DD>
1537 <DT><STRONG>Synopsis:</STRONG></DT>
1538 <DD><TT>ioncore.kpress_wait(keyspec, cmd, guard)</TT>
1539
1540 </DD>
1541 <DT><STRONG>Description:</STRONG></DT>
1542 <DD>This is similar to <A HREF="#fn:kpress"><TT>kpress</TT></A> but after calling <TT>cmd</TT>, 
1543  Ioncore waits for all modifiers to be released before processing
1544  any further actions.
1545  For more information on bindings, see section <A HREF="node4.html#sec:bindings">3.3</A>.
1546   
1547 </DD>
1548 </DL>
1549
1550 <P>
1551
1552   <DL>
1553 <DD><A NAME="fn:ioncore.defer"></A>  
1554 </DD>
1555 <DT><STRONG>Synopsis:</STRONG></DT>
1556 <DD><TT>bool ioncore.defer(function fn)</TT>
1557
1558 </DD>
1559 <DT><STRONG>Description:</STRONG></DT>
1560 <DD>Defer execution of <TT>fn</TT> until the main loop.
1561   
1562 </DD>
1563 </DL>
1564
1565 <P>
1566
1567   <DL>
1568 <DD><A NAME="fn:ioncore.get_hook"></A>  
1569 </DD>
1570 <DT><STRONG>Synopsis:</STRONG></DT>
1571 <DD><TT>WHook ioncore.get_hook(string name)</TT>
1572
1573 </DD>
1574 <DT><STRONG>Description:</STRONG></DT>
1575 <DD>Find named hook <TT>name</TT>.
1576   
1577 </DD>
1578 </DL>
1579
1580 <P>
1581
1582   <DL>
1583 <DD><A NAME="fn:ioncore.match_winprop_dflt"></A>  
1584 </DD>
1585 <DT><STRONG>Synopsis:</STRONG></DT>
1586 <DD><TT>ioncore.match_winprop_dflt(prop, cwin, id)</TT>
1587
1588 </DD>
1589 <DT><STRONG>Description:</STRONG></DT>
1590 <DD>The basic name-based winprop matching criteria.
1591   
1592 </DD>
1593 </DL>
1594
1595 <P>
1596
1597   <DL>
1598 <DD><A NAME="fn:ioncore.mclick"></A>  
1599 </DD>
1600 <DT><STRONG>Synopsis:</STRONG></DT>
1601 <DD><TT>ioncore.mclick(buttonspec, cmd, guard)</TT>
1602
1603 </DD>
1604 <DT><STRONG>Description:</STRONG></DT>
1605 <DD>Creates a binding description table for the action of clicking a mouse 
1606  button while possible modifier keys are pressed,
1607  both given by <TT>buttonspec</TT>, to the function <TT>func</TT>.
1608  For more information, see section <A HREF="node4.html#sec:bindings">3.3</A>.
1609   
1610 </DD>
1611 </DL>
1612
1613 <P>
1614
1615   <DL>
1616 <DD><A NAME="fn:ioncore.mdblclick"></A>  
1617 </DD>
1618 <DT><STRONG>Synopsis:</STRONG></DT>
1619 <DD><TT>ioncore.mdblclick(buttonspec, cmd, guard)</TT>
1620
1621 </DD>
1622 <DT><STRONG>Description:</STRONG></DT>
1623 <DD>Similar to <A HREF="#fn:mclick"><TT>mclick</TT></A> but for double-click.
1624  Also see section <A HREF="node4.html#sec:bindings">3.3</A>.
1625   
1626 </DD>
1627 </DL>
1628
1629 <P>
1630
1631   <DL>
1632 <DD><A NAME="fn:ioncore.mdrag"></A>  
1633 </DD>
1634 <DT><STRONG>Synopsis:</STRONG></DT>
1635 <DD><TT>ioncore.mdrag(buttonspec, cmd, guard)</TT>
1636
1637 </DD>
1638 <DT><STRONG>Description:</STRONG></DT>
1639 <DD>Creates a binding description table for the action of moving the mouse
1640  (or other pointing device) while the button given by <TT>buttonspec</TT>
1641  is held pressed and the modifiers given by <TT>buttonspec</TT> were pressed
1642  when the button was initially pressed.
1643  Also see section <A HREF="node4.html#sec:bindings">3.3</A>.
1644   
1645 </DD>
1646 </DL>
1647
1648 <P>
1649
1650   <DL>
1651 <DD><A NAME="fn:ioncore.menuentry"></A>  
1652 </DD>
1653 <DT><STRONG>Synopsis:</STRONG></DT>
1654 <DD><TT>ioncore.menuentry(name, cmd, guard_or_opts)</TT>
1655
1656 </DD>
1657 <DT><STRONG>Description:</STRONG></DT>
1658 <DD>Use this function to define normal menu entries. The string <TT>name</TT> 
1659  is the string shown in the visual representation of menu. The
1660  parameter <TT>cmd</TT> and <TT>guard_or_opts</TT> (when string) are similar
1661  to those of <A HREF="#fn:ioncore.defbindings"><TT>ioncore.defbindings</TT></A>.  If <TT>guard_or_opts</TT> is
1662  a table, it may contains the <TT>guard</TT> field, and the <TT>priority</TT>
1663  field, for controlling positioning of entries in context menus.
1664  (The default priority is 1 for most entries, and -1 for auto-generated
1665  submenus.)
1666   
1667 </DD>
1668 </DL>
1669
1670 <P>
1671
1672   <DL>
1673 <DD><A NAME="fn:ioncore.mpress"></A>  
1674 </DD>
1675 <DT><STRONG>Synopsis:</STRONG></DT>
1676 <DD><TT>ioncore.mpress(buttonspec, cmd, guard)</TT>
1677
1678 </DD>
1679 <DT><STRONG>Description:</STRONG></DT>
1680 <DD>Similar to <A HREF="#fn:mclick"><TT>mclick</TT></A> but for just pressing the mouse button.
1681  Also see section <A HREF="node4.html#sec:bindings">3.3</A>.
1682   
1683 </DD>
1684 </DL>
1685
1686 <P>
1687
1688   <DL>
1689 <DD><A NAME="fn:ioncore.refresh_stylelist"></A>  
1690 </DD>
1691 <DT><STRONG>Synopsis:</STRONG></DT>
1692 <DD><TT>ioncore.refresh_stylelist()</TT>
1693
1694 </DD>
1695 <DT><STRONG>Description:</STRONG></DT>
1696 <DD>Refresh list of known style files.
1697   
1698 </DD>
1699 </DL>
1700
1701 <P>
1702
1703   <DL>
1704 <DD><A NAME="fn:ioncore.submap"></A>  
1705 </DD>
1706 <DT><STRONG>Synopsis:</STRONG></DT>
1707 <DD><TT>ioncore.submap(kcb_, list)</TT>
1708
1709 </DD>
1710 <DT><STRONG>Description:</STRONG></DT>
1711 <DD>Returns a function that creates a submap binding description table.
1712  When the key press action <TT>keyspec</TT> occurs, Ioncore will wait for
1713  a further key presse and act according to the submap.
1714  For details, see section <A HREF="node4.html#sec:bindings">3.3</A>.
1715   
1716 </DD>
1717 </DL>
1718
1719 <P>
1720
1721   <DL>
1722 <DD><A NAME="fn:ioncore.submap_enter"></A>  
1723 </DD>
1724 <DT><STRONG>Synopsis:</STRONG></DT>
1725 <DD><TT>ioncore.submap_enter(cmd, guard)</TT>
1726
1727 </DD>
1728 <DT><STRONG>Description:</STRONG></DT>
1729 <DD>Submap enter event for bindings.
1730   
1731 </DD>
1732 </DL>
1733
1734 <P>
1735
1736   <DL>
1737 <DD><A NAME="fn:ioncore.submap_wait"></A>  
1738 </DD>
1739 <DT><STRONG>Synopsis:</STRONG></DT>
1740 <DD><TT>ioncore.submap_wait(cmd, guard)</TT>
1741
1742 </DD>
1743 <DT><STRONG>Description:</STRONG></DT>
1744 <DD>Submap modifier release event for bindings.
1745   
1746 </DD>
1747 </DL>
1748
1749 <P>
1750
1751   <DL>
1752 <DD><A NAME="fn:ioncore.submenu"></A>  
1753 </DD>
1754 <DT><STRONG>Synopsis:</STRONG></DT>
1755 <DD><TT>ioncore.submenu(name, sub_or_name, options)</TT>
1756
1757 </DD>
1758 <DT><STRONG>Description:</STRONG></DT>
1759 <DD>Use this function to define menu entries for submenus. The parameter
1760  <A HREF="#fn:sub_or_name"><TT>sub_or_name</TT></A> is either a table of menu entries or the name
1761  of an already defined menu. The initial menu entry to highlight can be
1762  specified by <TT>options.initial</TT> as either an integer starting from 1, 
1763  or a  function that returns such a number. Another option supported is
1764  <TT>options.noautoexpand</TT> that will cause <A HREF="#fn:mod_query.query_menu"><TT>mod_query.query_menu</TT></A>
1765  to not automatically expand this submenu.
1766   
1767 </DD>
1768 </DL>
1769
1770 <P>
1771
1772   <DL>
1773 <DD><A NAME="fn:ioncore.tabnum.clear"></A>  
1774 </DD>
1775 <DT><STRONG>Synopsis:</STRONG></DT>
1776 <DD><TT>ioncore.tabnum.clear()</TT>
1777
1778 </DD>
1779 <DT><STRONG>Description:</STRONG></DT>
1780 <DD>Clear all tab numbers set by <A HREF="#fn:ioncore.tabnum.show"><TT>ioncore.tabnum.show</TT></A>.
1781   
1782 </DD>
1783 </DL>
1784
1785 <P>
1786
1787   <DL>
1788 <DD><A NAME="fn:ioncore.tabnum.show"></A>  
1789 </DD>
1790 <DT><STRONG>Synopsis:</STRONG></DT>
1791 <DD><TT>ioncore.tabnum.show(frame, delay)</TT>
1792
1793 </DD>
1794 <DT><STRONG>Description:</STRONG></DT>
1795 <DD>Show tab numbers on <TT>frame</TT>, clearing them when submap
1796  grab is released the next time. If <TT>delay</TT> is given, in
1797  milliseconds, the numbers are not actually displayed until this
1798  time has passed.
1799   
1800 </DD>
1801 </DL>
1802
1803 <P>
1804
1805   <DL>
1806 <DD><A NAME="fn:ioncore.tagged_attach"></A>  
1807 </DD>
1808 <DT><STRONG>Synopsis:</STRONG></DT>
1809 <DD><TT>ioncore.tagged_attach(reg, param)</TT>
1810
1811 </DD>
1812 <DT><STRONG>Description:</STRONG></DT>
1813 <DD>Attach tagged regions to <TT>reg</TT>. The method of attach
1814  depends on the types of attached regions and whether <TT>reg</TT> 
1815  implements <TT>attach_framed</TT> and <TT>attach</TT>. If <TT>param</TT>
1816  is not set, the default of <code>{switchto=true}</code> is used.
1817   
1818 </DD>
1819 </DL>
1820
1821 <P>
1822
1823 <H3><A NAME="SECTION00711000000000000000">
1824 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN> WClientWin functions</A>
1825 </H3>
1826
1827 <P>
1828
1829   <DL>
1830 <DD><A NAME="fn:WClientWin.get_ident"></A>  
1831 </DD>
1832 <DT><STRONG>Synopsis:</STRONG></DT>
1833 <DD><TT>table WClientWin.get_ident(WClientWin cwin)</TT>
1834
1835 </DD>
1836 <DT><STRONG>Description:</STRONG></DT>
1837 <DD>Returns a table containing the properties <TT>WM_CLASS</TT> (table entries
1838  <TT>instance</TT> and <TT>class</TT>) and  <TT>WM_WINDOW_ROLE</TT> (<TT>role</TT>)
1839  properties for <TT>cwin</TT>. If a property is not set, the corresponding 
1840  field(s) are unset in the  table.
1841   
1842 </DD>
1843 </DL>
1844
1845 <P>
1846
1847   <DL>
1848 <DD><A NAME="fn:WClientWin.kill"></A>  
1849 </DD>
1850 <DT><STRONG>Synopsis:</STRONG></DT>
1851 <DD><TT>void WClientWin.kill(WClientWin cwin)</TT>
1852
1853 </DD>
1854 <DT><STRONG>Description:</STRONG></DT>
1855 <DD>Attempt to kill (with <TT>XKillWindow</TT>) the client that owns 
1856  the X window correspoding to <TT>cwin</TT>.
1857   
1858 </DD>
1859 </DL>
1860
1861 <P>
1862
1863   <DL>
1864 <DD><A NAME="fn:WClientWin.nudge"></A>  
1865 </DD>
1866 <DT><STRONG>Synopsis:</STRONG></DT>
1867 <DD><TT>void WClientWin.nudge(WClientWin cwin)</TT>
1868
1869 </DD>
1870 <DT><STRONG>Description:</STRONG></DT>
1871 <DD>Attempts to fix window size problems with non-ICCCM compliant
1872  programs.
1873   
1874 </DD>
1875 </DL>
1876
1877 <P>
1878
1879   <DL>
1880 <DD><A NAME="fn:WClientWin.quote_next"></A>  
1881 </DD>
1882 <DT><STRONG>Synopsis:</STRONG></DT>
1883 <DD><TT>void WClientWin.quote_next(WClientWin cwin)</TT>
1884
1885 </DD>
1886 <DT><STRONG>Description:</STRONG></DT>
1887 <DD>Send next key press directly to <TT>cwin</TT>.
1888   
1889 </DD>
1890 </DL>
1891
1892 <P>
1893
1894   <DL>
1895 <DD><A NAME="fn:WClientWin.xid"></A>  
1896 </DD>
1897 <DT><STRONG>Synopsis:</STRONG></DT>
1898 <DD><TT>double WClientWin.xid(WClientWin cwin)</TT>
1899
1900 </DD>
1901 <DT><STRONG>Description:</STRONG></DT>
1902 <DD>Return the X window id for the client window.
1903   
1904 </DD>
1905 </DL>
1906
1907 <P>
1908
1909 <H3><A NAME="SECTION00712000000000000000">
1910 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">2</SPAN> WFrame functions</A>
1911 </H3>
1912
1913 <P>
1914
1915   <DL>
1916 <DD><A NAME="fn:WFrame.is_shaded"></A>  
1917 </DD>
1918 <DT><STRONG>Synopsis:</STRONG></DT>
1919 <DD><TT>bool WFrame.is_shaded(WFrame frame)</TT>
1920
1921 </DD>
1922 <DT><STRONG>Description:</STRONG></DT>
1923 <DD>Is <TT>frame</TT> shaded?
1924   
1925 </DD>
1926 </DL>
1927
1928 <P>
1929
1930   <DL>
1931 <DD><A NAME="fn:WFrame.maximize_horiz"></A>  
1932 </DD>
1933 <DT><STRONG>Synopsis:</STRONG></DT>
1934 <DD><TT>void WFrame.maximize_horiz(WFrame frame)</TT>
1935
1936 </DD>
1937 <DT><STRONG>Description:</STRONG></DT>
1938 <DD>Attempt to toggle horizontal maximisation of <TT>frame</TT>.
1939   
1940 </DD>
1941 </DL>
1942
1943 <P>
1944
1945   <DL>
1946 <DD><A NAME="fn:WFrame.maximize_vert"></A>  
1947 </DD>
1948 <DT><STRONG>Synopsis:</STRONG></DT>
1949 <DD><TT>void WFrame.maximize_vert(WFrame frame)</TT>
1950
1951 </DD>
1952 <DT><STRONG>Description:</STRONG></DT>
1953 <DD>Attempt to toggle vertical maximisation of <TT>frame</TT>.
1954   
1955 </DD>
1956 </DL>
1957
1958 <P>
1959
1960   <DL>
1961 <DD><A NAME="fn:WFrame.mode"></A>  
1962 </DD>
1963 <DT><STRONG>Synopsis:</STRONG></DT>
1964 <DD><TT>string WFrame.mode(WFrame frame)</TT>
1965
1966 </DD>
1967 <DT><STRONG>Description:</STRONG></DT>
1968 <DD>Get frame mode.
1969   
1970 </DD>
1971 </DL>
1972
1973 <P>
1974
1975   <DL>
1976 <DD><A NAME="fn:WFrame.p_switch_tab"></A>  
1977 </DD>
1978 <DT><STRONG>Synopsis:</STRONG></DT>
1979 <DD><TT>void WFrame.p_switch_tab(WFrame frame)</TT>
1980
1981 </DD>
1982 <DT><STRONG>Description:</STRONG></DT>
1983 <DD>Display the region corresponding to the tab that the user pressed on.
1984  This function should only be used by binding it to a mouse action.
1985   
1986 </DD>
1987 </DL>
1988
1989 <P>
1990
1991   <DL>
1992 <DD><A NAME="fn:WFrame.p_tabdrag"></A>  
1993 </DD>
1994 <DT><STRONG>Synopsis:</STRONG></DT>
1995 <DD><TT>void WFrame.p_tabdrag(WFrame frame)</TT>
1996
1997 </DD>
1998 <DT><STRONG>Description:</STRONG></DT>
1999 <DD>Start dragging the tab that the user pressed on with the pointing device.
2000  This function should only be used by binding it to <SPAN  CLASS="textit">mpress</SPAN> or
2001  <SPAN  CLASS="textit">mdrag</SPAN> action with area `<TT>tab</TT>'.
2002   
2003 </DD>
2004 </DL>
2005
2006 <P>
2007
2008   <DL>
2009 <DD><A NAME="fn:WFrame.set_grattr"></A>  
2010 </DD>
2011 <DT><STRONG>Synopsis:</STRONG></DT>
2012 <DD><TT>bool WFrame.set_grattr(WFrame frame, string attr, string how)</TT>
2013
2014 </DD>
2015 <DT><STRONG>Description:</STRONG></DT>
2016 <DD>Set extra drawing engine attributes for the frame.
2017  The parameter <TT>attr</TT> is the attribute, and <TT>how</TT> is
2018  one of `<TT>set</TT>', `<TT>unset</TT>', or `<TT>toggle</TT>'.
2019   
2020 </DD>
2021 </DL>
2022
2023 <P>
2024
2025   <DL>
2026 <DD><A NAME="fn:WFrame.set_mode"></A>  
2027 </DD>
2028 <DT><STRONG>Synopsis:</STRONG></DT>
2029 <DD><TT>bool WFrame.set_mode(WFrame frame, string modestr)</TT>
2030
2031 </DD>
2032 <DT><STRONG>Description:</STRONG></DT>
2033 <DD>Set frame mode.
2034   
2035 </DD>
2036 </DL>
2037
2038 <P>
2039
2040   <DL>
2041 <DD><A NAME="fn:WFrame.set_shaded"></A>  
2042 </DD>
2043 <DT><STRONG>Synopsis:</STRONG></DT>
2044 <DD><TT>bool WFrame.set_shaded(WFrame frame, string how)</TT>
2045
2046 </DD>
2047 <DT><STRONG>Description:</STRONG></DT>
2048 <DD>Set shading state according to the parameter <TT>how</TT> 
2049  (`<TT>set</TT>', `<TT>unset</TT>', or `<TT>toggle</TT>'). 
2050  Resulting state is returned, which may not be
2051  what was requested.
2052   
2053 </DD>
2054 </DL>
2055
2056 <P>
2057
2058 <H3><A NAME="SECTION00713000000000000000">
2059 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">3</SPAN> WGroup functions</A>
2060 </H3>
2061
2062 <P>
2063
2064   <DL>
2065 <DD><A NAME="fn:WGroup.attach"></A>  
2066 </DD>
2067 <DT><STRONG>Synopsis:</STRONG></DT>
2068 <DD><TT>WRegion WGroup.attach(WGroup ws, WRegion reg, table param)</TT>
2069
2070 </DD>
2071 <DT><STRONG>Description:</STRONG></DT>
2072 <DD>Attach and reparent existing region <TT>reg</TT> to <TT>ws</TT>.
2073  The table <TT>param</TT> may contain the fields <TT>index</TT> and
2074  <TT>switchto</TT> that are interpreted as for <A HREF="#fn:WMPlex.attach_new"><TT>WMPlex.attach_new</TT></A>.
2075   
2076 </DD>
2077 </DL>
2078
2079 <P>
2080
2081   <DL>
2082 <DD><A NAME="fn:WGroup.attach_new"></A>  
2083 </DD>
2084 <DT><STRONG>Synopsis:</STRONG></DT>
2085 <DD><TT>WRegion WGroup.attach_new(WGroup ws, table param)</TT>
2086
2087 </DD>
2088 <DT><STRONG>Description:</STRONG></DT>
2089 <DD>Create a new region to be managed by <TT>ws</TT>. At least the following
2090  fields in <TT>param</TT> are understood:
2091
2092 <P>
2093 <TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
2094 <TR><TD ALIGN="LEFT">Field</TD>
2095 <TD ALIGN="LEFT">Description</TD>
2096 </TR>
2097 <TR><TD ALIGN="LEFT"><TT>type</TT></TD>
2098 <TD ALIGN="LEFT">(string) Class of the object to be created. Mandatory.</TD>
2099 </TR>
2100 <TR><TD ALIGN="LEFT"><TT>name</TT></TD>
2101 <TD ALIGN="LEFT">(string) Name of the object to be created.</TD>
2102 </TR>
2103 <TR><TD ALIGN="LEFT"><TT>switchto</TT></TD>
2104 <TD ALIGN="LEFT">(boolean) Should the region be switched to?</TD>
2105 </TR>
2106 <TR><TD ALIGN="LEFT"><TT>level</TT></TD>
2107 <TD ALIGN="LEFT">(integer) Stacking level; default is 1.</TD>
2108 </TR>
2109 <TR><TD ALIGN="LEFT"><TT>modal</TT></TD>
2110 <TD ALIGN="LEFT">(boolean) Make object modal; ignored if level is set.</TD>
2111 </TR>
2112 <TR><TD ALIGN="LEFT"><TT>sizepolicy</TT></TD>
2113 <TD ALIGN="LEFT">(string) Size policy; see Section <A HREF="#sec:sizepolicies">6.10.1</A>.</TD>
2114 </TR>
2115 </TABLE>
2116
2117 <P>
2118 In addition parameters to the region to be created are passed in this 
2119  same table.
2120   
2121 </DD>
2122 </DL>
2123
2124 <P>
2125
2126   <DL>
2127 <DD><A NAME="fn:WGroup.bottom"></A>  
2128 </DD>
2129 <DT><STRONG>Synopsis:</STRONG></DT>
2130 <DD><TT>WRegion WGroup.bottom(WGroup ws)</TT>
2131
2132 </DD>
2133 <DT><STRONG>Description:</STRONG></DT>
2134 <DD>Returns the `bottom' of <TT>ws</TT>.
2135   
2136 </DD>
2137 </DL>
2138
2139 <P>
2140
2141   <DL>
2142 <DD><A NAME="fn:WGroup.is_fullscreen"></A>  
2143 </DD>
2144 <DT><STRONG>Synopsis:</STRONG></DT>
2145 <DD><TT>bool WGroup.is_fullscreen(WGroup grp)</TT>
2146
2147 </DD>
2148 <DT><STRONG>Description:</STRONG></DT>
2149 <DD>Is <TT>reg</TT> in full screen mode?
2150   
2151 </DD>
2152 </DL>
2153
2154 <P>
2155
2156   <DL>
2157 <DD><A NAME="fn:WGroup.managed_i"></A>  
2158 </DD>
2159 <DT><STRONG>Synopsis:</STRONG></DT>
2160 <DD><TT>bool WGroup.managed_i(WGroup ws, function iterfn)</TT>
2161
2162 </DD>
2163 <DT><STRONG>Description:</STRONG></DT>
2164 <DD>Iterate over managed regions of <TT>ws</TT> until <TT>iterfn</TT> returns
2165  <TT>false</TT>.
2166  The function itself returns <TT>true</TT> if it reaches the end of list
2167  without this happening.
2168   
2169 </DD>
2170 </DL>
2171
2172 <P>
2173
2174   <DL>
2175 <DD><A NAME="fn:WGroup.set_bottom"></A>  
2176 </DD>
2177 <DT><STRONG>Synopsis:</STRONG></DT>
2178 <DD><TT>bool WGroup.set_bottom(WGroup ws, WRegion reg)</TT>
2179
2180 </DD>
2181 <DT><STRONG>Description:</STRONG></DT>
2182 <DD>Sets the `bottom' of <TT>ws</TT>. The region <TT>reg</TT> must already
2183  be managed by <TT>ws</TT>, unless <TT>nil</TT>.
2184   
2185 </DD>
2186 </DL>
2187
2188 <P>
2189
2190   <DL>
2191 <DD><A NAME="fn:WGroup.set_fullscreen"></A>  
2192 </DD>
2193 <DT><STRONG>Synopsis:</STRONG></DT>
2194 <DD><TT>bool WGroup.set_fullscreen(WGroup grp, string how)</TT>
2195
2196 </DD>
2197 <DT><STRONG>Description:</STRONG></DT>
2198 <DD>Set client window <TT>reg</TT> full screen state according to the 
2199  parameter <TT>how</TT> (one of `<TT>set</TT>', `<TT>unset</TT>', or 
2200  `<TT>toggle</TT>'). Resulting state is returned, which may not be
2201  what was requested.
2202   
2203 </DD>
2204 </DL>
2205
2206 <P>
2207
2208 <H3><A NAME="SECTION00714000000000000000">
2209 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">4</SPAN> WGroupCW functions</A>
2210 </H3>
2211
2212 <P>
2213
2214 <H3><A NAME="SECTION00715000000000000000">
2215 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">5</SPAN> WGroupWS functions</A>
2216 </H3>
2217
2218 <P>
2219
2220   <DL>
2221 <DD><A NAME="fn:WGroupWS.attach_framed"></A>  
2222 </DD>
2223 <DT><STRONG>Synopsis:</STRONG></DT>
2224 <DD><TT>bool WGroupWS.attach_framed(WGroupWS ws, WRegion reg, table t)</TT>
2225
2226 </DD>
2227 <DT><STRONG>Description:</STRONG></DT>
2228 <DD>Attach region <TT>reg</TT> on <TT>ws</TT>.
2229  At least the following fields in <TT>t</TT> are supported:
2230
2231 <P>
2232 <TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
2233 <TR><TD ALIGN="LEFT">Field</TD>
2234 <TD ALIGN="LEFT">Description</TD>
2235 </TR>
2236 <TR><TD ALIGN="LEFT"><TT>switchto</TT></TD>
2237 <TD ALIGN="LEFT">Should the region be switched to (boolean)? Optional.</TD>
2238 </TR>
2239 <TR><TD ALIGN="LEFT"><TT>geom</TT></TD>
2240 <TD ALIGN="LEFT">Geometry; <TT>x</TT> and <TT>y</TT>, if set, indicates top-left of 
2241    the frame to be created while <TT>width</TT> and <TT>height</TT>, if set, indicate
2242    the size of the client window within that frame. Optional.</TD>
2243 </TR>
2244 </TABLE>
2245   
2246 </DD>
2247 </DL>
2248
2249 <P>
2250
2251 <H3><A NAME="SECTION00716000000000000000">
2252 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">6</SPAN> WHook functions</A>
2253 </H3>
2254
2255 <P>
2256
2257   <DL>
2258 <DD><A NAME="fn:WHook.add"></A>  
2259 </DD>
2260 <DT><STRONG>Synopsis:</STRONG></DT>
2261 <DD><TT>bool WHook.add(WHook hk, function efn)</TT>
2262
2263 </DD>
2264 <DT><STRONG>Description:</STRONG></DT>
2265 <DD>Add <TT>efn</TT> to the list of functions to be called when the
2266  hook <TT>hk</TT> is triggered.
2267   
2268 </DD>
2269 </DL>
2270
2271 <P>
2272
2273   <DL>
2274 <DD><A NAME="fn:WHook.listed"></A>  
2275 </DD>
2276 <DT><STRONG>Synopsis:</STRONG></DT>
2277 <DD><TT>bool WHook.listed(WHook hk, function efn)</TT>
2278
2279 </DD>
2280 <DT><STRONG>Description:</STRONG></DT>
2281 <DD>Is <TT>fn</TT> hooked to hook <TT>hk</TT>?
2282   
2283 </DD>
2284 </DL>
2285
2286 <P>
2287
2288   <DL>
2289 <DD><A NAME="fn:WHook.remove"></A>  
2290 </DD>
2291 <DT><STRONG>Synopsis:</STRONG></DT>
2292 <DD><TT>bool WHook.remove(WHook hk, function efn)</TT>
2293
2294 </DD>
2295 <DT><STRONG>Description:</STRONG></DT>
2296 <DD>Remove <TT>efn</TT> from the list of functions to be called when the 
2297  hook <TT>hk</TT> is triggered.
2298   
2299 </DD>
2300 </DL>
2301
2302 <P>
2303
2304 <H3><A NAME="SECTION00717000000000000000">
2305 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">7</SPAN> WInfoWin functions</A>
2306 </H3>
2307
2308 <P>
2309
2310   <DL>
2311 <DD><A NAME="fn:WInfoWin.set_text"></A>  
2312 </DD>
2313 <DT><STRONG>Synopsis:</STRONG></DT>
2314 <DD><TT>void WInfoWin.set_text(WInfoWin p, string str, integer maxw)</TT>
2315
2316 </DD>
2317 <DT><STRONG>Description:</STRONG></DT>
2318 <DD>Set contents of the info window.
2319   
2320 </DD>
2321 </DL>
2322
2323 <P>
2324
2325 <H3><A NAME="SECTION00718000000000000000">
2326 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">8</SPAN> WMPlex functions</A>
2327 </H3>
2328
2329 <P>
2330
2331   <DL>
2332 <DD><A NAME="fn:WMPlex.attach"></A>  
2333 </DD>
2334 <DT><STRONG>Synopsis:</STRONG></DT>
2335 <DD><TT>WRegion WMPlex.attach(WMPlex mplex, WRegion reg, table param)</TT>
2336
2337 </DD>
2338 <DT><STRONG>Description:</STRONG></DT>
2339 <DD>Attach and reparent existing region <TT>reg</TT> to <TT>mplex</TT>.
2340  The table <TT>param</TT> may contain the fields <TT>index</TT> and
2341  <TT>switchto</TT> that are interpreted as for <A HREF="#fn:WMPlex.attach_new"><TT>WMPlex.attach_new</TT></A>.
2342   
2343 </DD>
2344 </DL>
2345
2346 <P>
2347
2348   <DL>
2349 <DD><A NAME="fn:WMPlex.attach_new"></A>  
2350 </DD>
2351 <DT><STRONG>Synopsis:</STRONG></DT>
2352 <DD><TT>WRegion WMPlex.attach_new(WMPlex mplex, table param)</TT>
2353
2354 </DD>
2355 <DT><STRONG>Description:</STRONG></DT>
2356 <DD>Create a new region to be managed by <TT>mplex</TT>. At least the following
2357  fields in <TT>param</TT> are understood (all but <TT>type</TT> are optional).
2358
2359 <P>
2360 <TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
2361 <TR><TD ALIGN="LEFT">Field</TD>
2362 <TD ALIGN="LEFT">Description</TD>
2363 </TR>
2364 <TR><TD ALIGN="LEFT"><TT>type</TT></TD>
2365 <TD ALIGN="LEFT">(string) Class name (a string) of the object to be created.</TD>
2366 </TR>
2367 <TR><TD ALIGN="LEFT"><TT>name</TT></TD>
2368 <TD ALIGN="LEFT">(string) Name of the object to be created (a string).</TD>
2369 </TR>
2370 <TR><TD ALIGN="LEFT"><TT>switchto</TT></TD>
2371 <TD ALIGN="LEFT">(boolean) Should the region be switched to (boolean)?</TD>
2372 </TR>
2373 <TR><TD ALIGN="LEFT"><TT>unnumbered</TT></TD>
2374 <TD ALIGN="LEFT">(boolean) Do not put on the numbered mutually 
2375                      exclusive list.</TD>
2376 </TR>
2377 <TR><TD ALIGN="LEFT"><TT>index</TT></TD>
2378 <TD ALIGN="LEFT">(integer) Index on this list, same as for 
2379                 <A HREF="#fn:WMPlex.set_index"><TT>WMPlex.set_index</TT></A>.</TD>
2380 </TR>
2381 <TR><TD ALIGN="LEFT"><TT>level</TT></TD>
2382 <TD ALIGN="LEFT">(integer) Stacking level.</TD>
2383 </TR>
2384 <TR><TD ALIGN="LEFT"><TT>modal</TT></TD>
2385 <TD ALIGN="LEFT">(boolean) Shortcut for modal stacking level.</TD>
2386 </TR>
2387 <TR><TD ALIGN="LEFT"><TT>hidden</TT></TD>
2388 <TD ALIGN="LEFT">(boolean) Attach hidden, if not prevented
2389                   by e.g. the mutually exclusive list being empty.
2390                   This option overrides <TT>switchto</TT>.</TD>
2391 </TR>
2392 <TR><TD ALIGN="LEFT"><TT>pseudomodal</TT></TD>
2393 <TD ALIGN="LEFT">(boolean) The attached region is ``pseudomodal''
2394                       if the stacking level dictates it to be modal.
2395                       This means that the region may be hidden to display
2396                       regions with lesser stacking levels.</TD>
2397 </TR>
2398 <TR><TD ALIGN="LEFT"><TT>sizepolicy</TT></TD>
2399 <TD ALIGN="LEFT">(string) Size policy; see Section <A HREF="#sec:sizepolicies">6.10.1</A>.</TD>
2400 </TR>
2401 <TR><TD ALIGN="LEFT"><TT>geom</TT></TD>
2402 <TD ALIGN="LEFT">(table) Geometry specification.</TD>
2403 </TR>
2404 </TABLE>
2405
2406 <P>
2407 In addition parameters to the region to be created are passed in this 
2408  same table.
2409   
2410 </DD>
2411 </DL>
2412
2413 <P>
2414
2415   <DL>
2416 <DD><A NAME="fn:WMPlex.dec_index"></A>  
2417 </DD>
2418 <DT><STRONG>Synopsis:</STRONG></DT>
2419 <DD><TT>void WMPlex.dec_index(WMPlex mplex, WRegion r)</TT>
2420
2421 </DD>
2422 <DT><STRONG>Description:</STRONG></DT>
2423 <DD>Move <TT>r</TT> ``left'' within objects managed by <TT>mplex</TT> on list 1.
2424   
2425 </DD>
2426 </DL>
2427
2428 <P>
2429
2430   <DL>
2431 <DD><A NAME="fn:WMPlex.get_index"></A>  
2432 </DD>
2433 <DT><STRONG>Synopsis:</STRONG></DT>
2434 <DD><TT>integer WMPlex.get_index(WMPlex mplex, WRegion reg)</TT>
2435
2436 </DD>
2437 <DT><STRONG>Description:</STRONG></DT>
2438 <DD>Get index of <TT>reg</TT> on the mutually exclusive list of <TT>mplex</TT>.
2439  The indices begin from zero.. If <TT>reg</TT> is not on the list,
2440  -1 is returned.
2441   
2442 </DD>
2443 </DL>
2444
2445 <P>
2446
2447   <DL>
2448 <DD><A NAME="fn:WMPlex.get_stdisp"></A>  
2449 </DD>
2450 <DT><STRONG>Synopsis:</STRONG></DT>
2451 <DD><TT>table WMPlex.get_stdisp(WMPlex mplex)</TT>
2452
2453 </DD>
2454 <DT><STRONG>Description:</STRONG></DT>
2455 <DD>Get status display information. See <A HREF="#fn:WMPlex.get_stdisp"><TT>WMPlex.get_stdisp</TT></A> for
2456  information on the fields.
2457   
2458 </DD>
2459 </DL>
2460
2461 <P>
2462
2463   <DL>
2464 <DD><A NAME="fn:WMPlex.inc_index"></A>  
2465 </DD>
2466 <DT><STRONG>Synopsis:</STRONG></DT>
2467 <DD><TT>void WMPlex.inc_index(WMPlex mplex, WRegion r)</TT>
2468
2469 </DD>
2470 <DT><STRONG>Description:</STRONG></DT>
2471 <DD>Move <TT>r</TT> ``right'' within objects managed by <TT>mplex</TT> on list 1.
2472   
2473 </DD>
2474 </DL>
2475
2476 <P>
2477
2478   <DL>
2479 <DD><A NAME="fn:WMPlex.is_hidden"></A>  
2480 </DD>
2481 <DT><STRONG>Synopsis:</STRONG></DT>
2482 <DD><TT>bool WMPlex.is_hidden(WMPlex mplex, WRegion reg)</TT>
2483
2484 </DD>
2485 <DT><STRONG>Description:</STRONG></DT>
2486 <DD>Is <TT>reg</TT> on within <TT>mplex</TT> and hidden?
2487   
2488 </DD>
2489 </DL>
2490
2491 <P>
2492
2493   <DL>
2494 <DD><A NAME="fn:WMPlex.managed_i"></A>  
2495 </DD>
2496 <DT><STRONG>Synopsis:</STRONG></DT>
2497 <DD><TT>bool WMPlex.managed_i(WMPlex mplex, function iterfn)</TT>
2498
2499 </DD>
2500 <DT><STRONG>Description:</STRONG></DT>
2501 <DD>Iterate over managed regions of <TT>mplex</TT> until <TT>iterfn</TT> returns
2502  <TT>false</TT>.
2503  The function itself returns <TT>true</TT> if it reaches the end of list
2504  without this happening.
2505   
2506 </DD>
2507 </DL>
2508
2509 <P>
2510
2511   <DL>
2512 <DD><A NAME="fn:WMPlex.mx_count"></A>  
2513 </DD>
2514 <DT><STRONG>Synopsis:</STRONG></DT>
2515 <DD><TT>integer WMPlex.mx_count(WMPlex mplex)</TT>
2516
2517 </DD>
2518 <DT><STRONG>Description:</STRONG></DT>
2519 <DD>Returns the number of objects on the mutually exclusive list of <TT>mplex</TT>.
2520   
2521 </DD>
2522 </DL>
2523
2524 <P>
2525
2526   <DL>
2527 <DD><A NAME="fn:WMPlex.mx_current"></A>  
2528 </DD>
2529 <DT><STRONG>Synopsis:</STRONG></DT>
2530 <DD><TT>WRegion WMPlex.mx_current(WMPlex mplex)</TT>
2531
2532 </DD>
2533 <DT><STRONG>Description:</STRONG></DT>
2534 <DD>Returns the managed object currently active within the mutually exclusive
2535  list of <TT>mplex</TT>.
2536   
2537 </DD>
2538 </DL>
2539
2540 <P>
2541
2542   <DL>
2543 <DD><A NAME="fn:WMPlex.mx_i"></A>  
2544 </DD>
2545 <DT><STRONG>Synopsis:</STRONG></DT>
2546 <DD><TT>bool WMPlex.mx_i(WMPlex mplex, function iterfn)</TT>
2547
2548 </DD>
2549 <DT><STRONG>Description:</STRONG></DT>
2550 <DD>Iterate over numbered/mutually exclusive region list of <TT>mplex</TT> 
2551  until <TT>iterfn</TT> returns <TT>false</TT>.
2552  The function itself returns <TT>true</TT> if it reaches the end of list
2553  without this happening.
2554   
2555 </DD>
2556 </DL>
2557
2558 <P>
2559
2560   <DL>
2561 <DD><A NAME="fn:WMPlex.mx_nth"></A>  
2562 </DD>
2563 <DT><STRONG>Synopsis:</STRONG></DT>
2564 <DD><TT>WRegion WMPlex.mx_nth(WMPlex mplex, integer n)</TT>
2565
2566 </DD>
2567 <DT><STRONG>Description:</STRONG></DT>
2568 <DD>Returns the <TT>n</TT>:th object managed by <TT>mplex</TT> on the
2569  <TT>l</TT>:th layer.
2570   
2571 </DD>
2572 </DL>
2573
2574 <P>
2575
2576   <DL>
2577 <DD><A NAME="fn:WMPlex.set_hidden"></A>  
2578 </DD>
2579 <DT><STRONG>Synopsis:</STRONG></DT>
2580 <DD><TT>bool WMPlex.set_hidden(WMPlex mplex, WRegion reg, string how)</TT>
2581
2582 </DD>
2583 <DT><STRONG>Description:</STRONG></DT>
2584 <DD>Set the visibility of the region <TT>reg</TT> on <TT>mplex</TT>
2585  as specified with the parameter <TT>how</TT> 
2586  (one of `<TT>set</TT>', `<TT>unset</TT>', or `<TT>toggle</TT>').
2587  The resulting state is returned.
2588   
2589 </DD>
2590 </DL>
2591
2592 <P>
2593
2594   <DL>
2595 <DD><A NAME="fn:WMPlex.set_index"></A>  
2596 </DD>
2597 <DT><STRONG>Synopsis:</STRONG></DT>
2598 <DD><TT>void WMPlex.set_index(WMPlex mplex, WRegion reg, integer index)</TT>
2599
2600 </DD>
2601 <DT><STRONG>Description:</STRONG></DT>
2602 <DD>Set index of <TT>reg</TT> to <TT>index</TT> within the mutually exclusive 
2603  list of <TT>mplex</TT>. Special values for <TT>index</TT> are:
2604  <TABLE CELLPADDING=3 WIDTH="100%">
2605 <TR><TD ALIGN="LEFT"><SPAN CLASS="MATH"><IMG
2606  WIDTH="27" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
2607  SRC="img4.png"
2608  ALT="$-1$"></SPAN></TD>
2609 <TD ALIGN="LEFT">Last.</TD>
2610 </TR>
2611 <TR><TD ALIGN="LEFT"><SPAN CLASS="MATH"><IMG
2612  WIDTH="27" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
2613  SRC="img5.png"
2614  ALT="$-2$"></SPAN></TD>
2615 <TD ALIGN="LEFT">After <A HREF="#fn:WMPlex.mx_current"><TT>WMPlex.mx_current</TT></A>.</TD>
2616 </TR>
2617 </TABLE>
2618   
2619 </DD>
2620 </DL>
2621
2622 <P>
2623
2624   <DL>
2625 <DD><A NAME="fn:WMPlex.set_stdisp"></A>  
2626 </DD>
2627 <DT><STRONG>Synopsis:</STRONG></DT>
2628 <DD><TT>WRegion WMPlex.set_stdisp(WMPlex mplex, table t)</TT>
2629
2630 </DD>
2631 <DT><STRONG>Description:</STRONG></DT>
2632 <DD>Set/create status display for <TT>mplex</TT>. Table is a standard
2633  description of the object to be created (as passed to e.g. 
2634  <A HREF="#fn:WMPlex.attach_new"><TT>WMPlex.attach_new</TT></A>). In addition, the following fields are
2635  recognised:
2636
2637 <P>
2638 <TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
2639 <TR><TD ALIGN="LEFT">Field</TD>
2640 <TD ALIGN="LEFT">Description</TD>
2641 </TR>
2642 <TR><TD ALIGN="LEFT"><TT>pos</TT></TD>
2643 <TD ALIGN="LEFT">The corner of the screen to place the status display
2644                in: one of `<TT>tl</TT>', `<TT>tr</TT>', `<TT>bl</TT>' 
2645                or `<TT>br</TT>'.</TD>
2646 </TR>
2647 <TR><TD ALIGN="LEFT"><TT>action</TT></TD>
2648 <TD ALIGN="LEFT">If this field is set to `<TT>keep</TT>', <TT>corner</TT>
2649                   and <TT>orientation</TT> are changed for the existing
2650                   status display. If this field is set to `<TT>remove</TT>',
2651                   the existing status display is removed. If this
2652                   field is not set or is set to `<TT>replace</TT>', a 
2653                   new status display is created and the old, if any,
2654                   removed.</TD>
2655 </TR>
2656 </TABLE>
2657   
2658 </DD>
2659 </DL>
2660
2661 <P>
2662
2663   <DL>
2664 <DD><A NAME="fn:WMPlex.switch_next"></A>  
2665 </DD>
2666 <DT><STRONG>Synopsis:</STRONG></DT>
2667 <DD><TT>void WMPlex.switch_next(WMPlex mplex)</TT>
2668
2669 </DD>
2670 <DT><STRONG>Description:</STRONG></DT>
2671 <DD>Have <TT>mplex</TT> display next (wrt. currently selected) object managed 
2672  by it.
2673   
2674 </DD>
2675 </DL>
2676
2677 <P>
2678
2679   <DL>
2680 <DD><A NAME="fn:WMPlex.switch_nth"></A>  
2681 </DD>
2682 <DT><STRONG>Synopsis:</STRONG></DT>
2683 <DD><TT>void WMPlex.switch_nth(WMPlex mplex, integer n)</TT>
2684
2685 </DD>
2686 <DT><STRONG>Description:</STRONG></DT>
2687 <DD>Have <TT>mplex</TT> display the <TT>n</TT>:th object managed by it.
2688   
2689 </DD>
2690 </DL>
2691
2692 <P>
2693
2694   <DL>
2695 <DD><A NAME="fn:WMPlex.switch_prev"></A>  
2696 </DD>
2697 <DT><STRONG>Synopsis:</STRONG></DT>
2698 <DD><TT>void WMPlex.switch_prev(WMPlex mplex)</TT>
2699
2700 </DD>
2701 <DT><STRONG>Description:</STRONG></DT>
2702 <DD>Have <TT>mplex</TT> display previous (wrt. currently selected) object
2703  managed by it.
2704   
2705 </DD>
2706 </DL>
2707
2708 <P>
2709
2710 <H3><A NAME="SECTION00719000000000000000">
2711 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN> WMoveresMode functions</A>
2712 </H3>
2713
2714 <P>
2715
2716   <DL>
2717 <DD><A NAME="fn:WMoveresMode.cancel"></A>  
2718 </DD>
2719 <DT><STRONG>Synopsis:</STRONG></DT>
2720 <DD><TT>void WMoveresMode.cancel(WMoveresMode mode)</TT>
2721
2722 </DD>
2723 <DT><STRONG>Description:</STRONG></DT>
2724 <DD>Return from move/resize cancelling changes if opaque
2725  move/resize has not been enabled.
2726   
2727 </DD>
2728 </DL>
2729
2730 <P>
2731
2732   <DL>
2733 <DD><A NAME="fn:WMoveresMode.finish"></A>  
2734 </DD>
2735 <DT><STRONG>Synopsis:</STRONG></DT>
2736 <DD><TT>void WMoveresMode.finish(WMoveresMode mode)</TT>
2737
2738 </DD>
2739 <DT><STRONG>Description:</STRONG></DT>
2740 <DD>Return from move/resize mode and apply changes unless opaque
2741  move/resize is enabled.
2742   
2743 </DD>
2744 </DL>
2745
2746 <P>
2747
2748   <DL>
2749 <DD><A NAME="fn:WMoveresMode.geom"></A>  
2750 </DD>
2751 <DT><STRONG>Synopsis:</STRONG></DT>
2752 <DD><TT>table WMoveresMode.geom(WMoveresMode mode)</TT>
2753
2754 </DD>
2755 <DT><STRONG>Description:</STRONG></DT>
2756 <DD>Returns current geometry.
2757   
2758 </DD>
2759 </DL>
2760
2761 <P>
2762
2763   <DL>
2764 <DD><A NAME="fn:WMoveresMode.move"></A>  
2765 </DD>
2766 <DT><STRONG>Synopsis:</STRONG></DT>
2767 <DD><TT>void WMoveresMode.move(WMoveresMode mode, integer horizmul, integer vertmul)</TT>
2768
2769 </DD>
2770 <DT><STRONG>Description:</STRONG></DT>
2771 <DD>Move resize mode target one step:
2772
2773 <P>
2774 <TABLE CELLPADDING=3 BORDER="1">
2775 <TR><TD ALIGN="RIGHT"><TT>horizmul</TT>/<TT>vertmul</TT></TD>
2776 <TD ALIGN="LEFT">effect</TD>
2777 </TR>
2778 <TR><TD ALIGN="RIGHT">-1</TD>
2779 <TD ALIGN="LEFT">Move left/up</TD>
2780 </TR>
2781 <TR><TD ALIGN="RIGHT">0</TD>
2782 <TD ALIGN="LEFT">No effect</TD>
2783 </TR>
2784 <TR><TD ALIGN="RIGHT">1</TD>
2785 <TD ALIGN="LEFT">Move right/down</TD>
2786 </TR>
2787 </TABLE>
2788   
2789 </DD>
2790 </DL>
2791
2792 <P>
2793
2794   <DL>
2795 <DD><A NAME="fn:WMoveresMode.resize"></A>  
2796 </DD>
2797 <DT><STRONG>Synopsis:</STRONG></DT>
2798 <DD><TT>void WMoveresMode.resize(WMoveresMode mode, integer left, integer right, integer top, integer bottom)</TT>
2799
2800 </DD>
2801 <DT><STRONG>Description:</STRONG></DT>
2802 <DD>Shrink or grow resize mode target one step in each direction.
2803  Acceptable values for the parameters <TT>left</TT>, <TT>right</TT>, <TT>top</TT>
2804  and <TT>bottom</TT> are as follows: -1: shrink along,
2805  0: do not change, 1: grow along corresponding border.
2806   
2807 </DD>
2808 </DL>
2809
2810 <P>
2811
2812   <DL>
2813 <DD><A NAME="fn:WMoveresMode.rqgeom"></A>  
2814 </DD>
2815 <DT><STRONG>Synopsis:</STRONG></DT>
2816 <DD><TT>table WMoveresMode.rqgeom(WMoveresMode mode, table g)</TT>
2817
2818 </DD>
2819 <DT><STRONG>Description:</STRONG></DT>
2820 <DD>Request exact geometry in move/resize mode. For details on parameters,
2821  see <A HREF="#fn:WRegion.rqgeom"><TT>WRegion.rqgeom</TT></A>.
2822   
2823 </DD>
2824 </DL>
2825
2826 <P>
2827
2828 <H3><A NAME="SECTION007110000000000000000">
2829 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">10</SPAN> WRegion functions</A>
2830 </H3>
2831
2832 <P>
2833
2834   <DL>
2835 <DD><A NAME="fn:WRegion.begin_kbresize"></A>  
2836 </DD>
2837 <DT><STRONG>Synopsis:</STRONG></DT>
2838 <DD><TT>WMoveresMode WRegion.begin_kbresize(WRegion reg)</TT>
2839
2840 </DD>
2841 <DT><STRONG>Description:</STRONG></DT>
2842 <DD>Enter move/resize mode for <TT>reg</TT>. The bindings set with
2843  <A HREF="#fn:ioncore.set_bindings"><TT>ioncore.set_bindings</TT></A> for WMoveresMode are used in 
2844  this mode. Of the functions exported by the Ion C core, only
2845  <A HREF="#fn:WMoveresMode.resize"><TT>WMoveresMode.resize</TT></A>, <A HREF="#fn:WMoveresMode.move"><TT>WMoveresMode.move</TT></A>, 
2846  <A HREF="#fn:WMoveresMode.cancel"><TT>WMoveresMode.cancel</TT></A> and <A HREF="#fn:WMoveresMode.end"><TT>WMoveresMode.end</TT></A> are
2847  allowed to be called while in this mode.
2848   
2849 </DD>
2850 </DL>
2851
2852 <P>
2853
2854   <DL>
2855 <DD><A NAME="fn:WRegion.current"></A>  
2856 </DD>
2857 <DT><STRONG>Synopsis:</STRONG></DT>
2858 <DD><TT>WRegion WRegion.current(WRegion mgr)</TT>
2859
2860 </DD>
2861 <DT><STRONG>Description:</STRONG></DT>
2862 <DD>Return the object, if any, that is considered ``currently active''
2863  within the objects managed by <TT>mplex</TT>.
2864   
2865 </DD>
2866 </DL>
2867
2868 <P>
2869
2870   <DL>
2871 <DD><A NAME="fn:WRegion.geom"></A>  
2872 </DD>
2873 <DT><STRONG>Synopsis:</STRONG></DT>
2874 <DD><TT>table WRegion.geom(WRegion reg)</TT>
2875
2876 </DD>
2877 <DT><STRONG>Description:</STRONG></DT>
2878 <DD>Returns the geometry of <TT>reg</TT> within its parent; a table with fields
2879  <TT>x</TT>, <TT>y</TT>, <TT>w</TT> and <TT>h</TT>.
2880   
2881 </DD>
2882 </DL>
2883
2884 <P>
2885
2886   <DL>
2887 <DD><A NAME="fn:WRegion.get_configuration"></A>  
2888 </DD>
2889 <DT><STRONG>Synopsis:</STRONG></DT>
2890 <DD><TT>table WRegion.get_configuration(WRegion reg, bool clientwins)</TT>
2891
2892 </DD>
2893 <DT><STRONG>Description:</STRONG></DT>
2894 <DD>Get configuration tree. If <TT>clientwins</TT> is unset, client windows
2895  are filtered out.
2896   
2897 </DD>
2898 </DL>
2899
2900 <P>
2901
2902   <DL>
2903 <DD><A NAME="fn:WRegion.goto"></A>  
2904 </DD>
2905 <DT><STRONG>Synopsis:</STRONG></DT>
2906 <DD><TT>bool WRegion.goto(WRegion reg)</TT>
2907
2908 </DD>
2909 <DT><STRONG>Description:</STRONG></DT>
2910 <DD>Attempt to display <TT>reg</TT>, save region activity status and then
2911  warp to (or simply set focus to if warping is disabled) <TT>reg</TT>.
2912
2913 <P>
2914 Note that this function is asynchronous; the region will not
2915  actually have received the focus when this function returns.
2916   
2917 </DD>
2918 </DL>
2919
2920 <P>
2921
2922   <DL>
2923 <DD><A NAME="fn:WRegion.groupleader_of"></A>  
2924 </DD>
2925 <DT><STRONG>Synopsis:</STRONG></DT>
2926 <DD><TT>WRegion WRegion.groupleader_of(WRegion reg)</TT>
2927
2928 </DD>
2929 <DT><STRONG>Description:</STRONG></DT>
2930 <DD>Returns the group of <TT>reg</TT>, if <TT>reg</TT> is its bottom,
2931  and <TT>reg</TT> itself otherwise.
2932   
2933 </DD>
2934 </DL>
2935
2936 <P>
2937
2938   <DL>
2939 <DD><A NAME="fn:WRegion.is_active"></A>  
2940 </DD>
2941 <DT><STRONG>Synopsis:</STRONG></DT>
2942 <DD><TT>bool WRegion.is_active(WRegion reg)</TT>
2943
2944 </DD>
2945 <DT><STRONG>Description:</STRONG></DT>
2946 <DD>Is <TT>reg</TT> active/does it or one of it's children of focus?
2947   
2948 </DD>
2949 </DL>
2950
2951 <P>
2952
2953   <DL>
2954 <DD><A NAME="fn:WRegion.is_activity"></A>  
2955 </DD>
2956 <DT><STRONG>Synopsis:</STRONG></DT>
2957 <DD><TT>bool WRegion.is_activity(WRegion reg)</TT>
2958
2959 </DD>
2960 <DT><STRONG>Description:</STRONG></DT>
2961 <DD>Is activity notification set on <TT>reg</TT>.
2962   
2963 </DD>
2964 </DL>
2965
2966 <P>
2967
2968   <DL>
2969 <DD><A NAME="fn:WRegion.is_mapped"></A>  
2970 </DD>
2971 <DT><STRONG>Synopsis:</STRONG></DT>
2972 <DD><TT>bool WRegion.is_mapped(WRegion reg)</TT>
2973
2974 </DD>
2975 <DT><STRONG>Description:</STRONG></DT>
2976 <DD>Is <TT>reg</TT> visible/is it and all it's ancestors mapped?
2977   
2978 </DD>
2979 </DL>
2980
2981 <P>
2982
2983   <DL>
2984 <DD><A NAME="fn:WRegion.is_tagged"></A>  
2985 </DD>
2986 <DT><STRONG>Synopsis:</STRONG></DT>
2987 <DD><TT>bool WRegion.is_tagged(WRegion reg)</TT>
2988
2989 </DD>
2990 <DT><STRONG>Description:</STRONG></DT>
2991 <DD>Is <TT>reg</TT> tagged?
2992   
2993 </DD>
2994 </DL>
2995
2996 <P>
2997
2998   <DL>
2999 <DD><A NAME="fn:WRegion.manager"></A>  
3000 </DD>
3001 <DT><STRONG>Synopsis:</STRONG></DT>
3002 <DD><TT>WRegion WRegion.manager(WRegion reg)</TT>
3003
3004 </DD>
3005 <DT><STRONG>Description:</STRONG></DT>
3006 <DD>Returns the region that manages <TT>reg</TT>.
3007   
3008 </DD>
3009 </DL>
3010
3011 <P>
3012
3013   <DL>
3014 <DD><A NAME="fn:WRegion.name"></A>  
3015 </DD>
3016 <DT><STRONG>Synopsis:</STRONG></DT>
3017 <DD><TT>string WRegion.name(WRegion reg)</TT>
3018
3019 </DD>
3020 <DT><STRONG>Description:</STRONG></DT>
3021 <DD>Returns the name for <TT>reg</TT>.
3022   
3023 </DD>
3024 </DL>
3025
3026 <P>
3027
3028   <DL>
3029 <DD><A NAME="fn:WRegion.parent"></A>  
3030 </DD>
3031 <DT><STRONG>Synopsis:</STRONG></DT>
3032 <DD><TT>WWindow WRegion.parent(WRegion reg)</TT>
3033
3034 </DD>
3035 <DT><STRONG>Description:</STRONG></DT>
3036 <DD>Returns the parent region of <TT>reg</TT>.
3037   
3038 </DD>
3039 </DL>
3040
3041 <P>
3042
3043   <DL>
3044 <DD><A NAME="fn:WRegion.rootwin_of"></A>  
3045 </DD>
3046 <DT><STRONG>Synopsis:</STRONG></DT>
3047 <DD><TT>WRootWin WRegion.rootwin_of(WRegion reg)</TT>
3048
3049 </DD>
3050 <DT><STRONG>Description:</STRONG></DT>
3051 <DD>Returns the root window <TT>reg</TT> is on.
3052   
3053 </DD>
3054 </DL>
3055
3056 <P>
3057
3058   <DL>
3059 <DD><A NAME="fn:WRegion.rqclose"></A>  
3060 </DD>
3061 <DT><STRONG>Synopsis:</STRONG></DT>
3062 <DD><TT>void WRegion.rqclose(WRegion reg, bool relocate)</TT>
3063
3064 </DD>
3065 <DT><STRONG>Description:</STRONG></DT>
3066 <DD>Attempt to close/destroy <TT>reg</TT>. Whether this operation works
3067  depends on whether the particular type of region in question has
3068  implemented the feature and, in case of client windows, whether
3069  the client supports the <TT>WM_DELETE</TT> protocol (see also
3070  <A HREF="#fn:WClientWin.kill"><TT>WClientWin.kill</TT></A>). The region will not be destroyed when
3071  this function returns. To find out if and when it is destroyed,
3072  use the `<TT>deinit</TT>' notification. If <TT>relocate</TT> is not set, 
3073  and <TT>reg</TT> manages other regions, it will not be closed. Otherwise
3074  the managed regions will be attempted to be relocated.
3075   
3076 </DD>
3077 </DL>
3078
3079 <P>
3080
3081   <DL>
3082 <DD><A NAME="fn:WRegion.rqclose_propagate"></A>  
3083 </DD>
3084 <DT><STRONG>Synopsis:</STRONG></DT>
3085 <DD><TT>WRegion WRegion.rqclose_propagate(WRegion reg, WRegion maybe_sub)</TT>
3086
3087 </DD>
3088 <DT><STRONG>Description:</STRONG></DT>
3089 <DD>Recursively attempt to close a region or one of the regions managed by 
3090  it. If <TT>sub</TT> is set, it will be used as the managed region, otherwise
3091  <A HREF="#fn:WRegion.current"><TT>WRegion.current</TT></A><TT>(reg)</TT>. The object to be closed is
3092  returned, or NULL if nothing can be closed. For further details, see
3093  notes for <A HREF="#fn:WRegion.rqclose"><TT>WRegion.rqclose</TT></A>.
3094   
3095 </DD>
3096 </DL>
3097
3098 <P>
3099
3100   <DL>
3101 <DD><A NAME="fn:WRegion.rqgeom"></A>  
3102 </DD>
3103 <DT><STRONG>Synopsis:</STRONG></DT>
3104 <DD><TT>table WRegion.rqgeom(WRegion reg, table g)</TT>
3105
3106 </DD>
3107 <DT><STRONG>Description:</STRONG></DT>
3108 <DD>Attempt to resize and/or move <TT>reg</TT>. The table <TT>g</TT> is a usual
3109  geometry specification (fields <TT>x</TT>, <TT>y</TT>, <TT>w</TT> and <TT>h</TT>),
3110  but may contain missing fields, in which case, <TT>reg</TT>'s manager may
3111  attempt to leave that attribute unchanged.
3112   
3113 </DD>
3114 </DL>
3115
3116 <P>
3117
3118   <DL>
3119 <DD><A NAME="fn:WRegion.rqorder"></A>  
3120 </DD>
3121 <DT><STRONG>Synopsis:</STRONG></DT>
3122 <DD><TT>bool WRegion.rqorder(WRegion reg, string ord)</TT>
3123
3124 </DD>
3125 <DT><STRONG>Description:</STRONG></DT>
3126 <DD>Request ordering. Currently supported values for <TT>ord</TT>
3127  are `<TT>front</TT>' and `<TT>back</TT>'.
3128   
3129 </DD>
3130 </DL>
3131
3132 <P>
3133
3134   <DL>
3135 <DD><A NAME="fn:WRegion.screen_of"></A>  
3136 </DD>
3137 <DT><STRONG>Synopsis:</STRONG></DT>
3138 <DD><TT>WScreen WRegion.screen_of(WRegion reg)</TT>
3139
3140 </DD>
3141 <DT><STRONG>Description:</STRONG></DT>
3142 <DD>Returns the screen <TT>reg</TT> is on.
3143   
3144 </DD>
3145 </DL>
3146
3147 <P>
3148
3149   <DL>
3150 <DD><A NAME="fn:WRegion.set_activity"></A>  
3151 </DD>
3152 <DT><STRONG>Synopsis:</STRONG></DT>
3153 <DD><TT>bool WRegion.set_activity(WRegion reg, string how)</TT>
3154
3155 </DD>
3156 <DT><STRONG>Description:</STRONG></DT>
3157 <DD>Set activity flag of <TT>reg</TT>. The <TT>how</TT> parameter must be
3158  one of `<TT>set</TT>', `<TT>unset</TT>' or `<TT>toggle</TT>'.
3159   
3160 </DD>
3161 </DL>
3162
3163 <P>
3164
3165   <DL>
3166 <DD><A NAME="fn:WRegion.set_name"></A>  
3167 </DD>
3168 <DT><STRONG>Synopsis:</STRONG></DT>
3169 <DD><TT>bool WRegion.set_name(WRegion reg, string p)</TT>
3170
3171 </DD>
3172 <DT><STRONG>Description:</STRONG></DT>
3173 <DD>Set the name of <TT>reg</TT> to <TT>p</TT>. If the name is already in use,
3174  an instance number suffix `<TT>&lt;n&gt;</TT>' will be attempted. If <TT>p</TT> has
3175  such a suffix, it will be modified, otherwise such a suffix will be
3176  added. Setting <TT>p</TT> to nil will cause current name to be removed.
3177   
3178 </DD>
3179 </DL>
3180
3181 <P>
3182
3183   <DL>
3184 <DD><A NAME="fn:WRegion.set_name_exact"></A>  
3185 </DD>
3186 <DT><STRONG>Synopsis:</STRONG></DT>
3187 <DD><TT>bool WRegion.set_name_exact(WRegion reg, string p)</TT>
3188
3189 </DD>
3190 <DT><STRONG>Description:</STRONG></DT>
3191 <DD>Similar to <A HREF="#fn:WRegion.set_name"><TT>WRegion.set_name</TT></A> except if the name is already in use,
3192  other instance numbers will not be attempted. The string <TT>p</TT> should
3193  not contain a `<TT>&lt;n&gt;</TT>' suffix or this function will fail.
3194   
3195 </DD>
3196 </DL>
3197
3198 <P>
3199
3200   <DL>
3201 <DD><A NAME="fn:WRegion.set_tagged"></A>  
3202 </DD>
3203 <DT><STRONG>Synopsis:</STRONG></DT>
3204 <DD><TT>bool WRegion.set_tagged(WRegion reg, string how)</TT>
3205
3206 </DD>
3207 <DT><STRONG>Description:</STRONG></DT>
3208 <DD>Change tagging state of <TT>reg</TT> as defined by <TT>how</TT>
3209  (one of `<TT>set</TT>', `<TT>unset</TT>', or `<TT>toggle</TT>').
3210  The resulting state is returned.
3211   
3212 </DD>
3213 </DL>
3214
3215 <P>
3216
3217   <DL>
3218 <DD><A NAME="fn:WRegion.size_hints"></A>  
3219 </DD>
3220 <DT><STRONG>Synopsis:</STRONG></DT>
3221 <DD><TT>table WRegion.size_hints(WRegion reg)</TT>
3222
3223 </DD>
3224 <DT><STRONG>Description:</STRONG></DT>
3225 <DD>Returns size hints for <TT>reg</TT>. The returned table always contains the
3226  fields <TT>min_?</TT>, <TT>base_?</TT> and sometimes the fields <TT>max_?</TT>,
3227  <TT>base_?</TT> and <TT>inc_?</TT>, where <TT>?</TT>=<TT>w</TT>, <TT>h</TT>.
3228   
3229 </DD>
3230 </DL>
3231
3232 <P>
3233
3234 <H3><A NAME="SECTION007111000000000000000">
3235 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">11</SPAN> WRootWin functions</A>
3236 </H3>
3237
3238 <P>
3239
3240   <DL>
3241 <DD><A NAME="fn:WRootWin.current_scr"></A>  
3242 </DD>
3243 <DT><STRONG>Synopsis:</STRONG></DT>
3244 <DD><TT>WScreen WRootWin.current_scr(WRootWin rootwin)</TT>
3245
3246 </DD>
3247 <DT><STRONG>Description:</STRONG></DT>
3248 <DD>Returns previously active screen on root window <TT>rootwin</TT>.
3249   
3250 </DD>
3251 </DL>
3252
3253 <P>
3254
3255 <H3><A NAME="SECTION007112000000000000000">
3256 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">12</SPAN> WScreen functions</A>
3257 </H3>
3258
3259 <P>
3260
3261   <DL>
3262 <DD><A NAME="fn:WScreen.id"></A>  
3263 </DD>
3264 <DT><STRONG>Synopsis:</STRONG></DT>
3265 <DD><TT>integer WScreen.id(WScreen scr)</TT>
3266
3267 </DD>
3268 <DT><STRONG>Description:</STRONG></DT>
3269 <DD>Return the numerical id for screen <TT>scr</TT>.
3270   
3271 </DD>
3272 </DL>
3273
3274 <P>
3275
3276   <DL>
3277 <DD><A NAME="fn:WScreen.set_managed_offset"></A>  
3278 </DD>
3279 <DT><STRONG>Synopsis:</STRONG></DT>
3280 <DD><TT>bool WScreen.set_managed_offset(WScreen scr, table offset)</TT>
3281
3282 </DD>
3283 <DT><STRONG>Description:</STRONG></DT>
3284 <DD>Set offset of objects managed by the screen from actual screen geometry.
3285  The table <TT>offset</TT> should contain the entries <TT>x</TT>, <TT>y</TT>, 
3286  <TT>w</TT> and <TT>h</TT> indicating offsets of that component of screen 
3287  geometry.
3288   
3289 </DD>
3290 </DL>
3291
3292 <P>
3293
3294 <H3><A NAME="SECTION007113000000000000000">
3295 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">13</SPAN> WTimer functions</A>
3296 </H3>
3297
3298 <P>
3299
3300   <DL>
3301 <DD><A NAME="fn:WTimer.is_set"></A>  
3302 </DD>
3303 <DT><STRONG>Synopsis:</STRONG></DT>
3304 <DD><TT>bool WTimer.is_set(WTimer timer)</TT>
3305
3306 </DD>
3307 <DT><STRONG>Description:</STRONG></DT>
3308 <DD>Is timer set?
3309   
3310 </DD>
3311 </DL>
3312
3313 <P>
3314
3315   <DL>
3316 <DD><A NAME="fn:WTimer.reset"></A>  
3317 </DD>
3318 <DT><STRONG>Synopsis:</STRONG></DT>
3319 <DD><TT>void WTimer.reset(WTimer timer)</TT>
3320
3321 </DD>
3322 <DT><STRONG>Description:</STRONG></DT>
3323 <DD>Reset timer.
3324   
3325 </DD>
3326 </DL>
3327
3328 <P>
3329
3330   <DL>
3331 <DD><A NAME="fn:WTimer.set"></A>  
3332 </DD>
3333 <DT><STRONG>Synopsis:</STRONG></DT>
3334 <DD><TT>void WTimer.set(WTimer timer, integer msecs, function fn)</TT>
3335
3336 </DD>
3337 <DT><STRONG>Description:</STRONG></DT>
3338 <DD>Set <TT>timer</TT> to call <TT>fn</TT> in <TT>msecs</TT> milliseconds.
3339   
3340 </DD>
3341 </DL>
3342
3343 <P>
3344
3345 <H3><A NAME="SECTION007114000000000000000">
3346 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">14</SPAN> WWindow functions</A>
3347 </H3>
3348
3349 <P>
3350
3351   <DL>
3352 <DD><A NAME="fn:WWindow.p_move"></A>  
3353 </DD>
3354 <DT><STRONG>Synopsis:</STRONG></DT>
3355 <DD><TT>void WWindow.p_move(WWindow wwin)</TT>
3356
3357 </DD>
3358 <DT><STRONG>Description:</STRONG></DT>
3359 <DD>Start moving <TT>wwin</TT> with the mouse or other pointing device.
3360  This function should only be used by binding it to <SPAN  CLASS="textit">mpress</SPAN> or
3361  <SPAN  CLASS="textit">mdrag</SPAN> action.
3362   
3363 </DD>
3364 </DL>
3365
3366 <P>
3367
3368   <DL>
3369 <DD><A NAME="fn:WWindow.p_resize"></A>  
3370 </DD>
3371 <DT><STRONG>Synopsis:</STRONG></DT>
3372 <DD><TT>void WWindow.p_resize(WWindow wwin)</TT>
3373
3374 </DD>
3375 <DT><STRONG>Description:</STRONG></DT>
3376 <DD>Start resizing <TT>wwin</TT> with the mouse or other pointing device.
3377  This function should only be used by binding it to <SPAN  CLASS="textit">mpress</SPAN> or
3378  <SPAN  CLASS="textit">mdrag</SPAN> action.
3379   
3380 </DD>
3381 </DL>
3382
3383 <P>
3384
3385   <DL>
3386 <DD><A NAME="fn:WWindow.xid"></A>  
3387 </DD>
3388 <DT><STRONG>Synopsis:</STRONG></DT>
3389 <DD><TT>double WWindow.xid(WWindow wwin)</TT>
3390
3391 </DD>
3392 <DT><STRONG>Description:</STRONG></DT>
3393 <DD>Return the X window id for <TT>wwin</TT>.
3394   
3395 </DD>
3396 </DL>
3397
3398 <P>
3399
3400 <H3><A NAME="SECTION007115000000000000000">
3401 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">15</SPAN> global functions</A>
3402 </H3>
3403
3404 <P>
3405
3406   <DL>
3407 <DD><A NAME="fn:export"></A>  
3408 </DD>
3409 <DT><STRONG>Synopsis:</STRONG></DT>
3410 <DD><TT>export(lib, ...)</TT>
3411
3412 </DD>
3413 <DT><STRONG>Description:</STRONG></DT>
3414 <DD>Export a list of functions from <TT>lib</TT> into global namespace.
3415   
3416 </DD>
3417 </DL>
3418
3419 <P>
3420
3421 <H3><A NAME="SECTION007116000000000000000">
3422 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">16</SPAN> gr functions</A>
3423 </H3>
3424
3425 <P>
3426
3427   <DL>
3428 <DD><A NAME="fn:gr.read_config"></A>  
3429 </DD>
3430 <DT><STRONG>Synopsis:</STRONG></DT>
3431 <DD><TT>void gr.read_config()</TT>
3432
3433 </DD>
3434 <DT><STRONG>Description:</STRONG></DT>
3435 <DD>Read drawing engine configuration file <SPAN  CLASS="textit">look.lua</SPAN>.
3436   
3437 </DD>
3438 </DL>
3439
3440 <P>
3441
3442   <DL>
3443 <DD><A NAME="fn:gr.refresh"></A>  
3444 </DD>
3445 <DT><STRONG>Synopsis:</STRONG></DT>
3446 <DD><TT>void gr.refresh()</TT>
3447
3448 </DD>
3449 <DT><STRONG>Description:</STRONG></DT>
3450 <DD>Refresh objects' brushes to update them to use newly loaded style.
3451   
3452 </DD>
3453 </DL>
3454
3455 <P>
3456
3457   <DL>
3458 <DD><A NAME="fn:gr.select_engine"></A>  
3459 </DD>
3460 <DT><STRONG>Synopsis:</STRONG></DT>
3461 <DD><TT>bool gr.select_engine(string engine)</TT>
3462
3463 </DD>
3464 <DT><STRONG>Description:</STRONG></DT>
3465 <DD>Future requests for ``brushes'' are to be forwarded to the drawing engine
3466  <TT>engine</TT>. If no engine of such name is known, a module with that name
3467  is attempted to be loaded. This function is only intended to be called from
3468  colour scheme etc. configuration files and can not be used to change the
3469  look of existing objects; for that use <A HREF="#fn:gr.read_config"><TT>gr.read_config</TT></A>.
3470   
3471 </DD>
3472 </DL>
3473
3474 <P>
3475
3476 <H3><A NAME="SECTION007117000000000000000">
3477 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">17</SPAN> string functions</A>
3478 </H3>
3479
3480 <P>
3481
3482   <DL>
3483 <DD><A NAME="fn:string.shell_safe"></A>  
3484 </DD>
3485 <DT><STRONG>Synopsis:</STRONG></DT>
3486 <DD><TT>string.shell_safe(str)</TT>
3487
3488 </DD>
3489 <DT><STRONG>Description:</STRONG></DT>
3490 <DD>Make <TT>str</TT> shell-safe.
3491   
3492 </DD>
3493 </DL>
3494
3495 <P>
3496
3497 <H3><A NAME="SECTION007118000000000000000">
3498 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">18</SPAN> table functions</A>
3499 </H3>
3500
3501 <P>
3502
3503   <DL>
3504 <DD><A NAME="fn:table.append"></A>  
3505 </DD>
3506 <DT><STRONG>Synopsis:</STRONG></DT>
3507 <DD><TT>table.append(t1, t2)</TT>
3508
3509 </DD>
3510 <DT><STRONG>Description:</STRONG></DT>
3511 <DD>Add entries that do not exist in <TT>t1</TT> from <TT>t2</TT> to <TT>t1</TT>.
3512   
3513 </DD>
3514 </DL>
3515
3516 <P>
3517
3518   <DL>
3519 <DD><A NAME="fn:table.copy"></A>  
3520 </DD>
3521 <DT><STRONG>Synopsis:</STRONG></DT>
3522 <DD><TT>table.copy(t, deep)</TT>
3523
3524 </DD>
3525 <DT><STRONG>Description:</STRONG></DT>
3526 <DD>Make copy of <TT>table</TT>. If <TT>deep</TT> is unset, shallow one-level
3527  copy is made, otherwise a deep copy is made.
3528   
3529 </DD>
3530 </DL>
3531
3532 <P>
3533
3534   <DL>
3535 <DD><A NAME="fn:table.icat"></A>  
3536 </DD>
3537 <DT><STRONG>Synopsis:</STRONG></DT>
3538 <DD><TT>table.icat(t1, t2)</TT>
3539
3540 </DD>
3541 <DT><STRONG>Description:</STRONG></DT>
3542 <DD>Insert all positive integer entries from t2 into t1.
3543   
3544 </DD>
3545 </DL>
3546
3547 <P>
3548
3549   <DL>
3550 <DD><A NAME="fn:table.join"></A>  
3551 </DD>
3552 <DT><STRONG>Synopsis:</STRONG></DT>
3553 <DD><TT>table.join(t1, t2)</TT>
3554
3555 </DD>
3556 <DT><STRONG>Description:</STRONG></DT>
3557 <DD>Create a table containing all entries from <TT>t1</TT> and those from
3558  <TT>t2</TT> that are missing from <TT>t1</TT>.
3559   
3560 </DD>
3561 </DL>
3562
3563 <P>
3564
3565   <DL>
3566 <DD><A NAME="fn:table.map"></A>  
3567 </DD>
3568 <DT><STRONG>Synopsis:</STRONG></DT>
3569 <DD><TT>table.map(f, t)</TT>
3570
3571 </DD>
3572 <DT><STRONG>Description:</STRONG></DT>
3573 <DD>Map all entries of <TT>t</TT> by <TT>f</TT>.
3574   
3575 </DD>
3576 </DL>
3577
3578 <P>
3579
3580 <H2><A NAME="SECTION00720000000000000000"></A>
3581 <A NAME="sec:tilingref"></A>
3582 <BR>
3583 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN> Functions defined in <SPAN  CLASS="textit">mod_tiling</SPAN>
3584 </H2>
3585
3586   <DL>
3587 <DD><A NAME="fn:mod_tiling.get"></A>  
3588 </DD>
3589 <DT><STRONG>Synopsis:</STRONG></DT>
3590 <DD><TT>table mod_tiling.get()</TT>
3591
3592 </DD>
3593 <DT><STRONG>Description:</STRONG></DT>
3594 <DD>Get parameters. For details see <A HREF="#fn:mod_tiling.set"><TT>mod_tiling.set</TT></A>.
3595   
3596 </DD>
3597 </DL>
3598
3599 <P>
3600
3601   <DL>
3602 <DD><A NAME="fn:mod_tiling.mkbottom"></A>  
3603 </DD>
3604 <DT><STRONG>Synopsis:</STRONG></DT>
3605 <DD><TT>bool mod_tiling.mkbottom(WRegion reg)</TT>
3606
3607 </DD>
3608 <DT><STRONG>Description:</STRONG></DT>
3609 <DD>Create a new WTiling 'bottom' for the group of <TT>reg</TT>,
3610  consisting of <TT>reg</TT>.
3611   
3612 </DD>
3613 </DL>
3614
3615 <P>
3616
3617   <DL>
3618 <DD><A NAME="fn:mod_tiling.set"></A>  
3619 </DD>
3620 <DT><STRONG>Synopsis:</STRONG></DT>
3621 <DD><TT>void mod_tiling.set(table tab)</TT>
3622
3623 </DD>
3624 <DT><STRONG>Description:</STRONG></DT>
3625 <DD>Set parameters. Currently only <TT>raise_delay</TT> (in milliseconds)
3626  is supported.
3627   
3628 </DD>
3629 </DL>
3630
3631 <P>
3632
3633   <DL>
3634 <DD><A NAME="fn:mod_tiling.untile"></A>  
3635 </DD>
3636 <DT><STRONG>Synopsis:</STRONG></DT>
3637 <DD><TT>bool mod_tiling.untile(WTiling tiling)</TT>
3638
3639 </DD>
3640 <DT><STRONG>Description:</STRONG></DT>
3641 <DD>If <TT>tiling</TT> is managed by some group, float the frames in
3642  the tiling in that group, and dispose of <TT>tiling</TT>.
3643   
3644 </DD>
3645 </DL>
3646
3647 <P>
3648
3649 <H3><A NAME="SECTION00721000000000000000">
3650 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN> WSplit functions</A>
3651 </H3>
3652
3653 <P>
3654
3655   <DL>
3656 <DD><A NAME="fn:WSplit.geom"></A>  
3657 </DD>
3658 <DT><STRONG>Synopsis:</STRONG></DT>
3659 <DD><TT>table WSplit.geom(WSplit split)</TT>
3660
3661 </DD>
3662 <DT><STRONG>Description:</STRONG></DT>
3663 <DD>Returns the area of workspace used by the regions under <TT>split</TT>.
3664   
3665 </DD>
3666 </DL>
3667
3668 <P>
3669
3670   <DL>
3671 <DD><A NAME="fn:WSplit.parent"></A>  
3672 </DD>
3673 <DT><STRONG>Synopsis:</STRONG></DT>
3674 <DD><TT>WSplitInner WSplit.parent(WSplit split)</TT>
3675
3676 </DD>
3677 <DT><STRONG>Description:</STRONG></DT>
3678 <DD>Return parent split for <TT>split</TT>.
3679   
3680 </DD>
3681 </DL>
3682
3683 <P>
3684
3685   <DL>
3686 <DD><A NAME="fn:WSplit.rqgeom"></A>  
3687 </DD>
3688 <DT><STRONG>Synopsis:</STRONG></DT>
3689 <DD><TT>table WSplit.rqgeom(WSplit node, table g)</TT>
3690
3691 </DD>
3692 <DT><STRONG>Description:</STRONG></DT>
3693 <DD>Attempt to resize and/or move the split tree starting at <TT>node</TT>.
3694  Behaviour and the <TT>g</TT> parameter are as for <A HREF="#fn:WRegion.rqgeom"><TT>WRegion.rqgeom</TT></A> 
3695  operating on <TT>node</TT> (if it were a WRegion).
3696   
3697 </DD>
3698 </DL>
3699
3700 <P>
3701
3702   <DL>
3703 <DD><A NAME="fn:WSplit.transpose"></A>  
3704 </DD>
3705 <DT><STRONG>Synopsis:</STRONG></DT>
3706 <DD><TT>void WSplit.transpose(WSplit node)</TT>
3707
3708 </DD>
3709 <DT><STRONG>Description:</STRONG></DT>
3710 <DD>Transpose contents of <TT>node</TT>.
3711   
3712 </DD>
3713 </DL>
3714
3715 <P>
3716
3717 <H3><A NAME="SECTION00722000000000000000">
3718 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN> WSplitInner functions</A>
3719 </H3>
3720
3721 <P>
3722
3723   <DL>
3724 <DD><A NAME="fn:WSplitInner.current"></A>  
3725 </DD>
3726 <DT><STRONG>Synopsis:</STRONG></DT>
3727 <DD><TT>WSplit WSplitInner.current(WSplitInner node)</TT>
3728
3729 </DD>
3730 <DT><STRONG>Description:</STRONG></DT>
3731 <DD>Returns the most previously active child node of <TT>split</TT>.
3732   
3733 </DD>
3734 </DL>
3735
3736 <P>
3737
3738 <H3><A NAME="SECTION00723000000000000000">
3739 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">3</SPAN> WSplitRegion functions</A>
3740 </H3>
3741
3742 <P>
3743
3744   <DL>
3745 <DD><A NAME="fn:WSplitRegion.reg"></A>  
3746 </DD>
3747 <DT><STRONG>Synopsis:</STRONG></DT>
3748 <DD><TT>WRegion WSplitRegion.reg(WSplitRegion node)</TT>
3749
3750 </DD>
3751 <DT><STRONG>Description:</STRONG></DT>
3752 <DD>Returns the region contained in <TT>node</TT>.
3753   
3754 </DD>
3755 </DL>
3756
3757 <P>
3758
3759 <H3><A NAME="SECTION00724000000000000000">
3760 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">4</SPAN> WSplitSplit functions</A>
3761 </H3>
3762
3763 <P>
3764
3765   <DL>
3766 <DD><A NAME="fn:WSplitSplit.br"></A>  
3767 </DD>
3768 <DT><STRONG>Synopsis:</STRONG></DT>
3769 <DD><TT>WSplit WSplitSplit.br(WSplitSplit split)</TT>
3770
3771 </DD>
3772 <DT><STRONG>Description:</STRONG></DT>
3773 <DD>Returns the bottom or right child node of <TT>split</TT> depending
3774  on the direction of the split.
3775   
3776 </DD>
3777 </DL>
3778
3779 <P>
3780
3781   <DL>
3782 <DD><A NAME="fn:WSplitSplit.dir"></A>  
3783 </DD>
3784 <DT><STRONG>Synopsis:</STRONG></DT>
3785 <DD><TT>string WSplitSplit.dir(WSplitSplit split)</TT>
3786
3787 </DD>
3788 <DT><STRONG>Description:</STRONG></DT>
3789 <DD>Returns the direction of <TT>split</TT>; either `<TT>vertical</TT>' or
3790  `<TT>horizontal</TT>'.
3791   
3792 </DD>
3793 </DL>
3794
3795 <P>
3796
3797   <DL>
3798 <DD><A NAME="fn:WSplitSplit.flip"></A>  
3799 </DD>
3800 <DT><STRONG>Synopsis:</STRONG></DT>
3801 <DD><TT>void WSplitSplit.flip(WSplitSplit split)</TT>
3802
3803 </DD>
3804 <DT><STRONG>Description:</STRONG></DT>
3805 <DD>Flip contents of <TT>node</TT>.
3806   
3807 </DD>
3808 </DL>
3809
3810 <P>
3811
3812   <DL>
3813 <DD><A NAME="fn:WSplitSplit.tl"></A>  
3814 </DD>
3815 <DT><STRONG>Synopsis:</STRONG></DT>
3816 <DD><TT>WSplit WSplitSplit.tl(WSplitSplit split)</TT>
3817
3818 </DD>
3819 <DT><STRONG>Description:</STRONG></DT>
3820 <DD>Returns the top or left child node of <TT>split</TT> depending
3821  on the direction of the split.
3822   
3823 </DD>
3824 </DL>
3825
3826 <P>
3827
3828 <H3><A NAME="SECTION00725000000000000000">
3829 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">5</SPAN> WTiling functions</A>
3830 </H3>
3831
3832 <P>
3833
3834   <DL>
3835 <DD><A NAME="fn:WTiling.flip_at"></A>  
3836 </DD>
3837 <DT><STRONG>Synopsis:</STRONG></DT>
3838 <DD><TT>bool WTiling.flip_at(WTiling ws, WRegion reg)</TT>
3839
3840 </DD>
3841 <DT><STRONG>Description:</STRONG></DT>
3842 <DD>Flip <TT>ws</TT> at <TT>reg</TT> or root if nil.
3843   
3844 </DD>
3845 </DL>
3846
3847 <P>
3848
3849   <DL>
3850 <DD><A NAME="fn:WTiling.transpose_at"></A>  
3851 </DD>
3852 <DT><STRONG>Synopsis:</STRONG></DT>
3853 <DD><TT>bool WTiling.transpose_at(WTiling ws, WRegion reg)</TT>
3854
3855 </DD>
3856 <DT><STRONG>Description:</STRONG></DT>
3857 <DD>Transpose <TT>ws</TT> at <TT>reg</TT> or root if nil.
3858   
3859 </DD>
3860 </DL>
3861
3862 <P>
3863
3864   <DL>
3865 <DD><A NAME="fn:WTiling.farthest"></A>  
3866 </DD>
3867 <DT><STRONG>Synopsis:</STRONG></DT>
3868 <DD><TT>WRegion WTiling.farthest(WTiling ws, string dirstr, bool any)</TT>
3869
3870 </DD>
3871 <DT><STRONG>Description:</STRONG></DT>
3872 <DD>Return the most previously active region on <TT>ws</TT> with no
3873  other regions next to it in  direction <TT>dirstr</TT> 
3874  (`<TT>left</TT>', `<TT>right</TT>', `<TT>up</TT>', or `<TT>down</TT>'). 
3875  If <TT>any</TT> is not set, the status display is not considered.
3876   
3877 </DD>
3878 </DL>
3879
3880 <P>
3881
3882   <DL>
3883 <DD><A NAME="fn:WTiling.managed_i"></A>  
3884 </DD>
3885 <DT><STRONG>Synopsis:</STRONG></DT>
3886 <DD><TT>bool WTiling.managed_i(WTiling ws, function iterfn)</TT>
3887
3888 </DD>
3889 <DT><STRONG>Description:</STRONG></DT>
3890 <DD>Iterate over managed regions of <TT>ws</TT> until <TT>iterfn</TT> returns
3891  <TT>false</TT>.
3892  The function itself returns <TT>true</TT> if it reaches the end of list
3893  without this happening.
3894   
3895 </DD>
3896 </DL>
3897
3898 <P>
3899
3900   <DL>
3901 <DD><A NAME="fn:WTiling.nextto"></A>  
3902 </DD>
3903 <DT><STRONG>Synopsis:</STRONG></DT>
3904 <DD><TT>WRegion WTiling.nextto(WTiling ws, WRegion reg, string dirstr, bool any)</TT>
3905
3906 </DD>
3907 <DT><STRONG>Description:</STRONG></DT>
3908 <DD>Return the most previously active region next to <TT>reg</TT> in
3909  direction <TT>dirstr</TT> (`<TT>left</TT>', `<TT>right</TT>', `<TT>up</TT>',
3910  or `<TT>down</TT>'). The region <TT>reg</TT>
3911  must be managed by <TT>ws</TT>. If <TT>any</TT> is not set, the status display
3912  is not considered.
3913   
3914 </DD>
3915 </DL>
3916
3917 <P>
3918
3919   <DL>
3920 <DD><A NAME="fn:WTiling.node_of"></A>  
3921 </DD>
3922 <DT><STRONG>Synopsis:</STRONG></DT>
3923 <DD><TT>WSplitRegion WTiling.node_of(WTiling ws, WRegion reg)</TT>
3924
3925 </DD>
3926 <DT><STRONG>Description:</STRONG></DT>
3927 <DD>For region <TT>reg</TT> managed by <TT>ws</TT> return the WSplit
3928  a leaf of which <TT>reg</TT> is.
3929   
3930 </DD>
3931 </DL>
3932
3933 <P>
3934
3935   <DL>
3936 <DD><A NAME="fn:WTiling.set_floating_at"></A>  
3937 </DD>
3938 <DT><STRONG>Synopsis:</STRONG></DT>
3939 <DD><TT>bool WTiling.set_floating_at(WTiling ws, WRegion reg, string how, string dirstr)</TT>
3940
3941 </DD>
3942 <DT><STRONG>Description:</STRONG></DT>
3943 <DD>Toggle floating of the sides of a split containin <TT>reg</TT> as indicated 
3944  by the parameters <TT>how</TT> (`<TT>set</TT>', `<TT>unset</TT>', or 
3945  `<TT>toggle</TT>') and <TT>dirstr</TT> (`<TT>left</TT>', `<TT>right</TT>', 
3946  `<TT>up</TT>', or `<TT>down</TT>'). The new status is returned 
3947  (and <TT>false</TT> also on error).
3948   
3949 </DD>
3950 </DL>
3951
3952 <P>
3953
3954   <DL>
3955 <DD><A NAME="fn:WTiling.set_floating"></A>  
3956 </DD>
3957 <DT><STRONG>Synopsis:</STRONG></DT>
3958 <DD><TT>WSplitSplit WTiling.set_floating(WTiling ws, WSplitSplit split, string how)</TT>
3959
3960 </DD>
3961 <DT><STRONG>Description:</STRONG></DT>
3962 <DD>Toggle floating of a split's sides at <TT>split</TT> as indicated by the 
3963  parameter <TT>how</TT> (`<TT>set</TT>', `<TT>unset</TT>', or `<TT>toggle</TT>').
3964  A split of the appropriate is returned, if there was a change.
3965   
3966 </DD>
3967 </DL>
3968
3969 <P>
3970
3971   <DL>
3972 <DD><A NAME="fn:WTiling.split"></A>  
3973 </DD>
3974 <DT><STRONG>Synopsis:</STRONG></DT>
3975 <DD><TT>WFrame WTiling.split(WTiling ws, WSplit node, string dirstr)</TT>
3976
3977 </DD>
3978 <DT><STRONG>Description:</STRONG></DT>
3979 <DD>Create a new frame on <TT>ws</TT> `<TT>above</TT>', `<TT>below</TT>'
3980  `<TT>left</TT>' of, or `<TT>right</TT>' of <TT>node</TT> as indicated
3981   by <TT>dirstr</TT>. If <TT>dirstr</TT> is  prefixed with 
3982  `<TT>floating:</TT>' a floating split is created.
3983   
3984 </DD>
3985 </DL>
3986
3987 <P>
3988
3989   <DL>
3990 <DD><A NAME="fn:WTiling.split_at"></A>  
3991 </DD>
3992 <DT><STRONG>Synopsis:</STRONG></DT>
3993 <DD><TT>WFrame WTiling.split_at(WTiling ws, WFrame frame, string dirstr, bool attach_current)</TT>
3994
3995 </DD>
3996 <DT><STRONG>Description:</STRONG></DT>
3997 <DD>Split <TT>frame</TT> creating a new frame to direction <TT>dirstr</TT>
3998  (one of `<TT>left</TT>', `<TT>right</TT>', `<TT>top</TT>' or 
3999  `<TT>bottom</TT>') of <TT>frame</TT>.
4000  If <TT>attach_current</TT> is set, the region currently displayed in
4001  <TT>frame</TT>, if any, is moved to thenew frame.
4002  If <TT>dirstr</TT> is prefixed with `<TT>floating:</TT>', a floating
4003  split is created.
4004   
4005 </DD>
4006 </DL>
4007
4008 <P>
4009
4010   <DL>
4011 <DD><A NAME="fn:WTiling.split_top"></A>  
4012 </DD>
4013 <DT><STRONG>Synopsis:</STRONG></DT>
4014 <DD><TT>WFrame WTiling.split_top(WTiling ws, string dirstr)</TT>
4015
4016 </DD>
4017 <DT><STRONG>Description:</STRONG></DT>
4018 <DD>Same as <A HREF="#fn:WTiling.split"><TT>WTiling.split</TT></A> at the root of the split tree.
4019   
4020 </DD>
4021 </DL>
4022
4023 <P>
4024
4025   <DL>
4026 <DD><A NAME="fn:WTiling.split_tree"></A>  
4027 </DD>
4028 <DT><STRONG>Synopsis:</STRONG></DT>
4029 <DD><TT>WSplit WTiling.split_tree(WTiling ws)</TT>
4030
4031 </DD>
4032 <DT><STRONG>Description:</STRONG></DT>
4033 <DD>Returns the root of the split tree.
4034   
4035 </DD>
4036 </DL>
4037
4038 <P>
4039
4040   <DL>
4041 <DD><A NAME="fn:WTiling.unsplit_at"></A>  
4042 </DD>
4043 <DT><STRONG>Synopsis:</STRONG></DT>
4044 <DD><TT>void WTiling.unsplit_at(WTiling ws, WRegion reg)</TT>
4045
4046 </DD>
4047 <DT><STRONG>Description:</STRONG></DT>
4048 <DD>Try to relocate regions managed by <TT>reg</TT> to another frame
4049  and, if possible, destroy it.
4050   
4051 </DD>
4052 </DL>
4053
4054 <P>
4055
4056 <H2><A NAME="SECTION00730000000000000000"></A>
4057 <A NAME="sec:queryref"></A>
4058 <BR>
4059 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN> Functions defined in <SPAN  CLASS="textit">mod_query</SPAN>
4060 </H2>
4061
4062   <DL>
4063 <DD><A NAME="fn:mod_query.defcmd"></A>  
4064 </DD>
4065 <DT><STRONG>Synopsis:</STRONG></DT>
4066 <DD><TT>mod_query.defcmd(cmd, fn)</TT>
4067
4068 </DD>
4069 <DT><STRONG>Description:</STRONG></DT>
4070 <DD>Define a command override for the <A HREF="#fn:mod_query.query_exec"><TT>query_exec</TT></A> query.
4071   
4072 </DD>
4073 </DL>
4074
4075 <P>
4076
4077   <DL>
4078 <DD><A NAME="fn:mod_query.message"></A>  
4079 </DD>
4080 <DT><STRONG>Synopsis:</STRONG></DT>
4081 <DD><TT>mod_query.message(mplex, str)</TT>
4082
4083 </DD>
4084 <DT><STRONG>Description:</STRONG></DT>
4085 <DD>Display a message in <TT>mplex</TT>.
4086   
4087 </DD>
4088 </DL>
4089
4090 <P>
4091
4092   <DL>
4093 <DD><A NAME="fn:mod_query.get"></A>  
4094 </DD>
4095 <DT><STRONG>Synopsis:</STRONG></DT>
4096 <DD><TT>table mod_query.get()</TT>
4097
4098 </DD>
4099 <DT><STRONG>Description:</STRONG></DT>
4100 <DD>Get module configuration. For more information see
4101  <A HREF="#fn:mod_query.set"><TT>mod_query.set</TT></A>.
4102   
4103 </DD>
4104 </DL>
4105
4106 <P>
4107
4108   <DL>
4109 <DD><A NAME="fn:mod_query.history_clear"></A>  
4110 </DD>
4111 <DT><STRONG>Synopsis:</STRONG></DT>
4112 <DD><TT>void mod_query.history_clear()</TT>
4113
4114 </DD>
4115 <DT><STRONG>Description:</STRONG></DT>
4116 <DD>Clear line editor history.
4117   
4118 </DD>
4119 </DL>
4120
4121 <P>
4122
4123   <DL>
4124 <DD><A NAME="fn:mod_query.history_get"></A>  
4125 </DD>
4126 <DT><STRONG>Synopsis:</STRONG></DT>
4127 <DD><TT>string mod_query.history_get(integer n)</TT>
4128
4129 </DD>
4130 <DT><STRONG>Description:</STRONG></DT>
4131 <DD>Get entry at index <TT>n</TT> in line editor history, 0 being the latest.
4132   
4133 </DD>
4134 </DL>
4135
4136 <P>
4137
4138   <DL>
4139 <DD><A NAME="fn:mod_query.history_push"></A>  
4140 </DD>
4141 <DT><STRONG>Synopsis:</STRONG></DT>
4142 <DD><TT>bool mod_query.history_push(string str)</TT>
4143
4144 </DD>
4145 <DT><STRONG>Description:</STRONG></DT>
4146 <DD>Push an entry into line editor history.
4147   
4148 </DD>
4149 </DL>
4150
4151 <P>
4152
4153   <DL>
4154 <DD><A NAME="fn:mod_query.history_search"></A>  
4155 </DD>
4156 <DT><STRONG>Synopsis:</STRONG></DT>
4157 <DD><TT>integer mod_query.history_search(string s, integer from, bool bwd, bool exact)</TT>
4158
4159 </DD>
4160 <DT><STRONG>Description:</STRONG></DT>
4161 <DD>Try to find matching history entry. Returns -1 if none was
4162  found. The parameter <TT>from</TT> specifies where to start 
4163  searching from, and <TT>bwd</TT> causes backward search from
4164  that point. If <TT>exact</TT> is not set, <TT>s</TT> only required
4165  to be a prefix of the match.
4166   
4167 </DD>
4168 </DL>
4169
4170 <P>
4171
4172   <DL>
4173 <DD><A NAME="fn:mod_query.history_table"></A>  
4174 </DD>
4175 <DT><STRONG>Synopsis:</STRONG></DT>
4176 <DD><TT>table mod_query.history_table()</TT>
4177
4178 </DD>
4179 <DT><STRONG>Description:</STRONG></DT>
4180 <DD>Return table of history entries.
4181   
4182 </DD>
4183 </DL>
4184
4185 <P>
4186
4187   <DL>
4188 <DD><A NAME="fn:mod_query.set"></A>  
4189 </DD>
4190 <DT><STRONG>Synopsis:</STRONG></DT>
4191 <DD><TT>void mod_query.set(table tab)</TT>
4192
4193 </DD>
4194 <DT><STRONG>Description:</STRONG></DT>
4195 <DD>Set module configuration. The following are supported:
4196
4197 <P>
4198 <TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
4199 <TR><TD ALIGN="LEFT">Field</TD>
4200 <TD ALIGN="LEFT">Description</TD>
4201 </TR>
4202 <TR><TD ALIGN="LEFT"><TT>autoshowcompl</TT></TD>
4203 <TD ALIGN="LEFT">(boolean) Is auto-show-completions enabled?
4204       (default: true).</TD>
4205 </TR>
4206 <TR><TD ALIGN="LEFT"><TT>autoshowcompl_delay</TT></TD>
4207 <TD ALIGN="LEFT">(integer) auto-show-completions delay
4208       in milliseconds (default: 250).</TD>
4209 </TR>
4210 <TR><TD ALIGN="LEFT"><TT>caseicompl</TT></TD>
4211 <TD ALIGN="LEFT">(boolean) Turn some completions case-insensitive
4212       (default: false).</TD>
4213 </TR>
4214 </TABLE>
4215   
4216 </DD>
4217 </DL>
4218
4219 <P>
4220
4221   <DL>
4222 <DD><A NAME="fn:mod_query.popen_completions"></A>  
4223 </DD>
4224 <DT><STRONG>Synopsis:</STRONG></DT>
4225 <DD><TT>mod_query.popen_completions(cp, cmd, fn, reshnd)</TT>
4226
4227 </DD>
4228 <DT><STRONG>Description:</STRONG></DT>
4229 <DD>This function can be used to read completions from an external source.
4230  The parameter <TT>cp</TT> is the completion proxy to be used,
4231  and the string <TT>cmd</TT> the shell command to be executed. To its stdout, 
4232  the command should on the first line write the <TT>common_beg</TT> 
4233  parameter of <A HREF="#fn:WComplProxy.set_completions"><TT>WComplProxy.set_completions</TT></A> (which <TT>fn</TT> maybe used
4234  to override) and a single actual completion on each of the successive lines.
4235  The function <TT>reshnd</TT> may be used to override a result table
4236  building routine.
4237   
4238 </DD>
4239 </DL>
4240
4241 <P>
4242
4243   <DL>
4244 <DD><A NAME="fn:mod_query.query"></A>  
4245 </DD>
4246 <DT><STRONG>Synopsis:</STRONG></DT>
4247 <DD><TT>mod_query.query(mplex, prompt, initvalue, handler, completor,
4248                          context)</TT>
4249
4250 </DD>
4251 <DT><STRONG>Description:</STRONG></DT>
4252 <DD>Low-level query routine. <TT>mplex</TT> is the WMPlex to display
4253  the query in, <TT>prompt</TT> the prompt string, and <TT>initvalue</TT>
4254  the initial contents of the query box. <TT>handler</TT> is a function
4255  that receives (<TT>mplex</TT>, result string) as parameter when the
4256  query has been succesfully completed, <TT>completor</TT> the completor
4257  routine which receives a (<TT>cp</TT>, <TT>str</TT>, <TT>point</TT>) as parameters.
4258  The parameter <TT>str</TT> is the string to be completed and <TT>point</TT>
4259  cursor's location within it. Completions should be eventually,
4260  possibly asynchronously, set with <A HREF="#fn:WComplProxy.set_completions"><TT>WComplProxy.set_completions</TT></A> 
4261  on <TT>cp</TT>.
4262   
4263 </DD>
4264 </DL>
4265
4266 <P>
4267
4268   <DL>
4269 <DD><A NAME="fn:mod_query.query_attachclient"></A>  
4270 </DD>
4271 <DT><STRONG>Synopsis:</STRONG></DT>
4272 <DD><TT>mod_query.query_attachclient(mplex)</TT>
4273
4274 </DD>
4275 <DT><STRONG>Description:</STRONG></DT>
4276 <DD>This query asks for the name of a client window and attaches
4277  it to the frame the query was opened in. It uses the completion
4278  function <A HREF="#fn:ioncore.complete_clientwin"><TT>ioncore.complete_clientwin</TT></A>.
4279   
4280 </DD>
4281 </DL>
4282
4283 <P>
4284
4285   <DL>
4286 <DD><A NAME="fn:mod_query.query_editfile"></A>  
4287 </DD>
4288 <DT><STRONG>Synopsis:</STRONG></DT>
4289 <DD><TT>mod_query.query_editfile(mplex, script, prompt)</TT>
4290
4291 </DD>
4292 <DT><STRONG>Description:</STRONG></DT>
4293 <DD>Asks for a file to be edited. This script uses 
4294  <TT>run-mailcap -mode=edit</TT> by default, but you may provide an
4295  alternative script to use. The default prompt is "Edit file:" (translated).
4296   
4297 </DD>
4298 </DL>
4299
4300 <P>
4301
4302   <DL>
4303 <DD><A NAME="fn:mod_query.query_exec"></A>  
4304 </DD>
4305 <DT><STRONG>Synopsis:</STRONG></DT>
4306 <DD><TT>mod_query.query_exec(mplex)</TT>
4307
4308 </DD>
4309 <DT><STRONG>Description:</STRONG></DT>
4310 <DD>This function asks for a command to execute with <SPAN  CLASS="textit">/bin/sh</SPAN>.
4311  If the command is prefixed with a colon (':'), the command will
4312  be run in an XTerm (or other terminal emulator) using the script
4313  <SPAN  CLASS="textit">ion-runinxterm</SPAN>. Two colons ('::') will ask you to press 
4314  enter after the command has finished.
4315   
4316 </DD>
4317 </DL>
4318
4319 <P>
4320
4321   <DL>
4322 <DD><A NAME="fn:mod_query.query_gotoclient"></A>  
4323 </DD>
4324 <DT><STRONG>Synopsis:</STRONG></DT>
4325 <DD><TT>mod_query.query_gotoclient(mplex)</TT>
4326
4327 </DD>
4328 <DT><STRONG>Description:</STRONG></DT>
4329 <DD>This query asks for the name of a client window and switches
4330  focus to the one entered. It uses the completion function
4331  <A HREF="#fn:ioncore.complete_clientwin"><TT>ioncore.complete_clientwin</TT></A>.
4332   
4333 </DD>
4334 </DL>
4335
4336 <P>
4337
4338   <DL>
4339 <DD><A NAME="fn:mod_query.query_lua"></A>  
4340 </DD>
4341 <DT><STRONG>Synopsis:</STRONG></DT>
4342 <DD><TT>mod_query.query_lua(mplex)</TT>
4343
4344 </DD>
4345 <DT><STRONG>Description:</STRONG></DT>
4346 <DD>This query asks for Lua code to execute. It sets the variable '<TT>_</TT>'
4347  in the local environment of the string to point to the mplex where the
4348  query was created. It also sets the table <TT>arg</TT> in the local
4349  environment to <TT>{_, _:current()}</TT>.
4350   
4351 </DD>
4352 </DL>
4353
4354 <P>
4355
4356   <DL>
4357 <DD><A NAME="fn:mod_query.query_man"></A>  
4358 </DD>
4359 <DT><STRONG>Synopsis:</STRONG></DT>
4360 <DD><TT>mod_query.query_man(mplex, prog)</TT>
4361
4362 </DD>
4363 <DT><STRONG>Description:</STRONG></DT>
4364 <DD>This query asks for a manual page to display. By default it runs the
4365  <TT>man</TT> command in an <TT>xterm</TT> using <TT>ion-runinxterm</TT>,
4366  but it is possible to pass another program as the <TT>prog</TT> argument.
4367   
4368 </DD>
4369 </DL>
4370
4371 <P>
4372
4373   <DL>
4374 <DD><A NAME="fn:mod_query.query_menu"></A>  
4375 </DD>
4376 <DT><STRONG>Synopsis:</STRONG></DT>
4377 <DD><TT>mod_query.query_menu(mplex, sub, themenu, prompt)</TT>
4378
4379 </DD>
4380 <DT><STRONG>Description:</STRONG></DT>
4381 <DD>This query can be used to create a query of a defined menu.
4382   
4383 </DD>
4384 </DL>
4385
4386 <P>
4387
4388   <DL>
4389 <DD><A NAME="fn:mod_query.query_renameframe"></A>  
4390 </DD>
4391 <DT><STRONG>Synopsis:</STRONG></DT>
4392 <DD><TT>mod_query.query_renameframe(frame)</TT>
4393
4394 </DD>
4395 <DT><STRONG>Description:</STRONG></DT>
4396 <DD>This function asks for a name new for the frame where the query
4397  was created.
4398   
4399 </DD>
4400 </DL>
4401
4402 <P>
4403
4404   <DL>
4405 <DD><A NAME="fn:mod_query.query_renameworkspace"></A>  
4406 </DD>
4407 <DT><STRONG>Synopsis:</STRONG></DT>
4408 <DD><TT>mod_query.query_renameworkspace(mplex, ws)</TT>
4409
4410 </DD>
4411 <DT><STRONG>Description:</STRONG></DT>
4412 <DD>This function asks for a name new for the workspace <TT>ws</TT>,
4413  or the one on which <TT>mplex</TT> resides, if it is not set.
4414  If <TT>mplex</TT> is not set, one is looked for.
4415   
4416 </DD>
4417 </DL>
4418
4419 <P>
4420
4421   <DL>
4422 <DD><A NAME="fn:mod_query.query_restart"></A>  
4423 </DD>
4424 <DT><STRONG>Synopsis:</STRONG></DT>
4425 <DD><TT>mod_query.query_restart(mplex)</TT>
4426
4427 </DD>
4428 <DT><STRONG>Description:</STRONG></DT>
4429 <DD>This query asks whether the user wants restart Ioncore.
4430  If the answer is 'y', 'Y' or 'yes', so will happen.
4431   
4432 </DD>
4433 </DL>
4434
4435 <P>
4436
4437   <DL>
4438 <DD><A NAME="fn:mod_query.query_runfile"></A>  
4439 </DD>
4440 <DT><STRONG>Synopsis:</STRONG></DT>
4441 <DD><TT>mod_query.query_runfile(mplex, script, prompt)</TT>
4442
4443 </DD>
4444 <DT><STRONG>Description:</STRONG></DT>
4445 <DD>Asks for a file to be viewed. This script uses 
4446  <TT>run-mailcap -action=view</TT> by default, but you may provide an
4447  alternative script to use. The default prompt is "View file:" (translated).
4448   
4449 </DD>
4450 </DL>
4451
4452 <P>
4453
4454   <DL>
4455 <DD><A NAME="fn:mod_query.query_shutdown"></A>  
4456 </DD>
4457 <DT><STRONG>Synopsis:</STRONG></DT>
4458 <DD><TT>mod_query.query_shutdown(mplex)</TT>
4459
4460 </DD>
4461 <DT><STRONG>Description:</STRONG></DT>
4462 <DD>This query asks whether the user wants to exit Ion (no session manager)
4463  or close the session (running under a session manager that supports such
4464  requests). If the answer is 'y', 'Y' or 'yes', so will happen.
4465   
4466 </DD>
4467 </DL>
4468
4469 <P>
4470
4471   <DL>
4472 <DD><A NAME="fn:mod_query.query_ssh"></A>  
4473 </DD>
4474 <DT><STRONG>Synopsis:</STRONG></DT>
4475 <DD><TT>mod_query.query_ssh(mplex, ssh)</TT>
4476
4477 </DD>
4478 <DT><STRONG>Description:</STRONG></DT>
4479 <DD>This query asks for a host to connect to with SSH. 
4480  Hosts to tab-complete are read from <SPAN  CLASS="textit">~/.ssh/known_hosts</SPAN>.
4481   
4482 </DD>
4483 </DL>
4484
4485 <P>
4486
4487   <DL>
4488 <DD><A NAME="fn:mod_query.query_workspace"></A>  
4489 </DD>
4490 <DT><STRONG>Synopsis:</STRONG></DT>
4491 <DD><TT>mod_query.query_workspace(mplex)</TT>
4492
4493 </DD>
4494 <DT><STRONG>Description:</STRONG></DT>
4495 <DD>This query asks for the name of a workspace. If a workspace
4496  (an object inheriting WGroupWS) with such a name exists,
4497  it will be switched to. Otherwise a new workspace with the
4498  entered name will be created and the user will be queried for
4499  the type of the workspace.
4500   
4501 </DD>
4502 </DL>
4503
4504 <P>
4505
4506   <DL>
4507 <DD><A NAME="fn:mod_query.query_yesno"></A>  
4508 </DD>
4509 <DT><STRONG>Synopsis:</STRONG></DT>
4510 <DD><TT>mod_query.query_yesno(mplex, prompt, handler)</TT>
4511
4512 </DD>
4513 <DT><STRONG>Description:</STRONG></DT>
4514 <DD>This function query will display a query with prompt <TT>prompt</TT> in
4515  <TT>mplex</TT> and if the user answers affirmately, call <TT>handler</TT>
4516  with <TT>mplex</TT> as parameter.
4517   
4518 </DD>
4519 </DL>
4520
4521 <P>
4522
4523   <DL>
4524 <DD><A NAME="fn:mod_query.show_about_ion"></A>  
4525 </DD>
4526 <DT><STRONG>Synopsis:</STRONG></DT>
4527 <DD><TT>mod_query.show_about_ion(mplex)</TT>
4528
4529 </DD>
4530 <DT><STRONG>Description:</STRONG></DT>
4531 <DD>Display an "About Ion" message in <TT>mplex</TT>.
4532   
4533 </DD>
4534 </DL>
4535
4536 <P>
4537
4538   <DL>
4539 <DD><A NAME="fn:mod_query.show_tree"></A>  
4540 </DD>
4541 <DT><STRONG>Synopsis:</STRONG></DT>
4542 <DD><TT>mod_query.show_tree(mplex, reg, max_depth)</TT>
4543
4544 </DD>
4545 <DT><STRONG>Description:</STRONG></DT>
4546 <DD>Show information about a region tree
4547   
4548 </DD>
4549 </DL>
4550
4551 <P>
4552
4553   <DL>
4554 <DD><A NAME="fn:mod_query.warn"></A>  
4555 </DD>
4556 <DT><STRONG>Synopsis:</STRONG></DT>
4557 <DD><TT>mod_query.warn(mplex, str)</TT>
4558
4559 </DD>
4560 <DT><STRONG>Description:</STRONG></DT>
4561 <DD>Display an error message box in the multiplexer <TT>mplex</TT>.
4562   
4563 </DD>
4564 </DL>
4565
4566 <P>
4567
4568 <H3><A NAME="SECTION00731000000000000000">
4569 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">1</SPAN> WComplProxy functions</A>
4570 </H3>
4571
4572 <P>
4573
4574   <DL>
4575 <DD><A NAME="fn:WComplProxy.set_completions"></A>  
4576 </DD>
4577 <DT><STRONG>Synopsis:</STRONG></DT>
4578 <DD><TT>bool WComplProxy.set_completions(WComplProxy proxy, table compls)</TT>
4579
4580 </DD>
4581 <DT><STRONG>Description:</STRONG></DT>
4582 <DD>Set completion list of the WEdln that <TT>proxy</TT> refers to to
4583  <TT>compls</TT>, if it is still waiting for this completion run. The 
4584  numerical indexes of <TT>compls</TT> list the found completions. If the
4585  entry <TT>common_beg</TT> (<TT>common_end</TT>) exists, it gives an extra 
4586  common prefix (suffix) of all found completions.
4587   
4588 </DD>
4589 </DL>
4590
4591 <P>
4592
4593 <H3><A NAME="SECTION00732000000000000000">
4594 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN> WEdln functions</A>
4595 </H3>
4596
4597 <P>
4598
4599   <DL>
4600 <DD><A NAME="fn:WEdln.back"></A>  
4601 </DD>
4602 <DT><STRONG>Synopsis:</STRONG></DT>
4603 <DD><TT>void WEdln.back(WEdln wedln)</TT>
4604
4605 </DD>
4606 <DT><STRONG>Description:</STRONG></DT>
4607 <DD>Move backward one character.
4608   
4609 </DD>
4610 </DL>
4611
4612 <P>
4613
4614   <DL>
4615 <DD><A NAME="fn:WEdln.backspace"></A>  
4616 </DD>
4617 <DT><STRONG>Synopsis:</STRONG></DT>
4618 <DD><TT>void WEdln.backspace(WEdln wedln)</TT>
4619
4620 </DD>
4621 <DT><STRONG>Description:</STRONG></DT>
4622 <DD>Delete previous character.
4623   
4624 </DD>
4625 </DL>
4626
4627 <P>
4628
4629   <DL>
4630 <DD><A NAME="fn:WEdln.bkill_word"></A>  
4631 </DD>
4632 <DT><STRONG>Synopsis:</STRONG></DT>
4633 <DD><TT>void WEdln.bkill_word(WEdln wedln)</TT>
4634
4635 </DD>
4636 <DT><STRONG>Description:</STRONG></DT>
4637 <DD>Starting from the previous characters, delete possible whitespace and
4638  preceding alphanumeric characters until previous non-alphanumeric character.
4639   
4640 </DD>
4641 </DL>
4642
4643 <P>
4644
4645   <DL>
4646 <DD><A NAME="fn:WEdln.bol"></A>  
4647 </DD>
4648 <DT><STRONG>Synopsis:</STRONG></DT>
4649 <DD><TT>void WEdln.bol(WEdln wedln)</TT>
4650
4651 </DD>
4652 <DT><STRONG>Description:</STRONG></DT>
4653 <DD>Go to the beginning of line.
4654   
4655 </DD>
4656 </DL>
4657
4658 <P>
4659
4660   <DL>
4661 <DD><A NAME="fn:WEdln.bskip_word"></A>  
4662 </DD>
4663 <DT><STRONG>Synopsis:</STRONG></DT>
4664 <DD><TT>void WEdln.bskip_word(WEdln wedln)</TT>
4665
4666 </DD>
4667 <DT><STRONG>Description:</STRONG></DT>
4668 <DD>Go to to beginning of current sequence of alphanumeric characters
4669  followed by whitespace.
4670   
4671 </DD>
4672 </DL>
4673
4674 <P>
4675
4676   <DL>
4677 <DD><A NAME="fn:WEdln.clear_mark"></A>  
4678 </DD>
4679 <DT><STRONG>Synopsis:</STRONG></DT>
4680 <DD><TT>void WEdln.clear_mark(WEdln wedln)</TT>
4681
4682 </DD>
4683 <DT><STRONG>Description:</STRONG></DT>
4684 <DD>Clear <SPAN  CLASS="textit">mark</SPAN>.
4685   
4686 </DD>
4687 </DL>
4688
4689 <P>
4690
4691   <DL>
4692 <DD><A NAME="fn:WEdln.complete"></A>  
4693 </DD>
4694 <DT><STRONG>Synopsis:</STRONG></DT>
4695 <DD><TT>void WEdln.complete(WEdln wedln, string cycle, string mode)</TT>
4696
4697 </DD>
4698 <DT><STRONG>Description:</STRONG></DT>
4699 <DD>Call completion handler with the text between the beginning of line and
4700  current cursor position, or select next/previous completion from list if in
4701  auto-show-completions mode and <TT>cycle</TT> is set to `<TT>next</TT>' or 
4702  `<TT>prev</TT>', respectively. 
4703  The <TT>mode</TT> may be `<TT>history</TT>' or `<TT>normal</TT>'. If it is 
4704  not set, the previous mode is used. Normally next entry is not cycled to
4705  despite the setting of <TT>cycle</TT> if mode switch occurs. To override
4706  this, use `<TT>next-always</TT>' and `<TT>prev-always</TT>' for <TT>cycle</TT>.
4707   
4708 </DD>
4709 </DL>
4710
4711 <P>
4712
4713   <DL>
4714 <DD><A NAME="fn:WEdln.contents"></A>  
4715 </DD>
4716 <DT><STRONG>Synopsis:</STRONG></DT>
4717 <DD><TT>string WEdln.contents(WEdln wedln)</TT>
4718
4719 </DD>
4720 <DT><STRONG>Description:</STRONG></DT>
4721 <DD>Get line editor contents.
4722   
4723 </DD>
4724 </DL>
4725
4726 <P>
4727
4728   <DL>
4729 <DD><A NAME="fn:WEdln.context"></A>  
4730 </DD>
4731 <DT><STRONG>Synopsis:</STRONG></DT>
4732 <DD><TT>string WEdln.context(WEdln wedln)</TT>
4733
4734 </DD>
4735 <DT><STRONG>Description:</STRONG></DT>
4736 <DD>Get history context for <TT>wedln</TT>.
4737   
4738 </DD>
4739 </DL>
4740
4741 <P>
4742
4743   <DL>
4744 <DD><A NAME="fn:WEdln.copy"></A>  
4745 </DD>
4746 <DT><STRONG>Synopsis:</STRONG></DT>
4747 <DD><TT>void WEdln.copy(WEdln wedln)</TT>
4748
4749 </DD>
4750 <DT><STRONG>Description:</STRONG></DT>
4751 <DD>Copy text between <SPAN  CLASS="textit">mark</SPAN> and current cursor position to clipboard.
4752   
4753 </DD>
4754 </DL>
4755
4756 <P>
4757
4758   <DL>
4759 <DD><A NAME="fn:WEdln.cut"></A>  
4760 </DD>
4761 <DT><STRONG>Synopsis:</STRONG></DT>
4762 <DD><TT>void WEdln.cut(WEdln wedln)</TT>
4763
4764 </DD>
4765 <DT><STRONG>Description:</STRONG></DT>
4766 <DD>Copy text between <SPAN  CLASS="textit">mark</SPAN> and current cursor position to clipboard
4767  and then delete that sequence.
4768   
4769 </DD>
4770 </DL>
4771
4772 <P>
4773
4774   <DL>
4775 <DD><A NAME="fn:WEdln.delete"></A>  
4776 </DD>
4777 <DT><STRONG>Synopsis:</STRONG></DT>
4778 <DD><TT>void WEdln.delete(WEdln wedln)</TT>
4779
4780 </DD>
4781 <DT><STRONG>Description:</STRONG></DT>
4782 <DD>Delete current character.
4783   
4784 </DD>
4785 </DL>
4786
4787 <P>
4788
4789   <DL>
4790 <DD><A NAME="fn:WEdln.eol"></A>  
4791 </DD>
4792 <DT><STRONG>Synopsis:</STRONG></DT>
4793 <DD><TT>void WEdln.eol(WEdln wedln)</TT>
4794
4795 </DD>
4796 <DT><STRONG>Description:</STRONG></DT>
4797 <DD>Go to the end of line.
4798   
4799 </DD>
4800 </DL>
4801
4802 <P>
4803
4804   <DL>
4805 <DD><A NAME="fn:WEdln.finish"></A>  
4806 </DD>
4807 <DT><STRONG>Synopsis:</STRONG></DT>
4808 <DD><TT>void WEdln.finish(WEdln wedln)</TT>
4809
4810 </DD>
4811 <DT><STRONG>Description:</STRONG></DT>
4812 <DD>Close <TT>wedln</TT> and call any handlers.
4813   
4814 </DD>
4815 </DL>
4816
4817 <P>
4818
4819   <DL>
4820 <DD><A NAME="fn:WEdln.forward"></A>  
4821 </DD>
4822 <DT><STRONG>Synopsis:</STRONG></DT>
4823 <DD><TT>void WEdln.forward(WEdln wedln)</TT>
4824
4825 </DD>
4826 <DT><STRONG>Description:</STRONG></DT>
4827 <DD>Move forward one character.
4828   
4829 </DD>
4830 </DL>
4831
4832 <P>
4833
4834   <DL>
4835 <DD><A NAME="fn:WEdln.history_next"></A>  
4836 </DD>
4837 <DT><STRONG>Synopsis:</STRONG></DT>
4838 <DD><TT>void WEdln.history_next(WEdln wedln, bool match)</TT>
4839
4840 </DD>
4841 <DT><STRONG>Description:</STRONG></DT>
4842 <DD>Replace line editor contents with next entry in history if one exists.
4843  If <TT>match</TT> is <TT>true</TT>, the initial part of the history entry
4844  must match the current line from beginning to point.
4845   
4846 </DD>
4847 </DL>
4848
4849 <P>
4850
4851   <DL>
4852 <DD><A NAME="fn:WEdln.history_prev"></A>  
4853 </DD>
4854 <DT><STRONG>Synopsis:</STRONG></DT>
4855 <DD><TT>void WEdln.history_prev(WEdln wedln, bool match)</TT>
4856
4857 </DD>
4858 <DT><STRONG>Description:</STRONG></DT>
4859 <DD>Replace line editor contents with previous in history if one exists.
4860  If <TT>match</TT> is <TT>true</TT>, the initial part of the history entry
4861  must match the current line from beginning to point.
4862   
4863 </DD>
4864 </DL>
4865
4866 <P>
4867
4868   <DL>
4869 <DD><A NAME="fn:WEdln.insstr"></A>  
4870 </DD>
4871 <DT><STRONG>Synopsis:</STRONG></DT>
4872 <DD><TT>void WEdln.insstr(WEdln wedln, string str)</TT>
4873
4874 </DD>
4875 <DT><STRONG>Description:</STRONG></DT>
4876 <DD>Input <TT>str</TT> in wedln at current editing point.
4877   
4878 </DD>
4879 </DL>
4880
4881 <P>
4882
4883   <DL>
4884 <DD><A NAME="fn:WEdln.is_histcompl"></A>  
4885 </DD>
4886 <DT><STRONG>Synopsis:</STRONG></DT>
4887 <DD><TT>bool WEdln.is_histcompl(WEdln wedln)</TT>
4888
4889 </DD>
4890 <DT><STRONG>Description:</STRONG></DT>
4891 <DD>Get history completion mode.
4892   
4893 </DD>
4894 </DL>
4895
4896 <P>
4897
4898   <DL>
4899 <DD><A NAME="fn:WEdln.kill_line"></A>  
4900 </DD>
4901 <DT><STRONG>Synopsis:</STRONG></DT>
4902 <DD><TT>void WEdln.kill_line(WEdln wedln)</TT>
4903
4904 </DD>
4905 <DT><STRONG>Description:</STRONG></DT>
4906 <DD>Delete the whole line.
4907   
4908 </DD>
4909 </DL>
4910
4911 <P>
4912
4913   <DL>
4914 <DD><A NAME="fn:WEdln.kill_to_bol"></A>  
4915 </DD>
4916 <DT><STRONG>Synopsis:</STRONG></DT>
4917 <DD><TT>void WEdln.kill_to_bol(WEdln wedln)</TT>
4918
4919 </DD>
4920 <DT><STRONG>Description:</STRONG></DT>
4921 <DD>Delete all characters from previous to beginning of line.
4922   
4923 </DD>
4924 </DL>
4925
4926 <P>
4927
4928   <DL>
4929 <DD><A NAME="fn:WEdln.kill_to_eol"></A>  
4930 </DD>
4931 <DT><STRONG>Synopsis:</STRONG></DT>
4932 <DD><TT>void WEdln.kill_to_eol(WEdln wedln)</TT>
4933
4934 </DD>
4935 <DT><STRONG>Description:</STRONG></DT>
4936 <DD>Delete all characters from current to end of line.
4937   
4938 </DD>
4939 </DL>
4940
4941 <P>
4942
4943   <DL>
4944 <DD><A NAME="fn:WEdln.kill_word"></A>  
4945 </DD>
4946 <DT><STRONG>Synopsis:</STRONG></DT>
4947 <DD><TT>void WEdln.kill_word(WEdln wedln)</TT>
4948
4949 </DD>
4950 <DT><STRONG>Description:</STRONG></DT>
4951 <DD>Starting from the current point, delete possible whitespace and
4952  following alphanumeric characters until next non-alphanumeric character.
4953   
4954 </DD>
4955 </DL>
4956
4957 <P>
4958
4959   <DL>
4960 <DD><A NAME="fn:WEdln.mark"></A>  
4961 </DD>
4962 <DT><STRONG>Synopsis:</STRONG></DT>
4963 <DD><TT>integer WEdln.mark(WEdln wedln)</TT>
4964
4965 </DD>
4966 <DT><STRONG>Description:</STRONG></DT>
4967 <DD>Get current mark (start of selection) for <TT>wedln</TT>.
4968  Return value of -1 indicates that there is no mark, and
4969  0 is the beginning of the line.
4970   
4971 </DD>
4972 </DL>
4973
4974 <P>
4975
4976   <DL>
4977 <DD><A NAME="fn:WEdln.next_completion"></A>  
4978 </DD>
4979 <DT><STRONG>Synopsis:</STRONG></DT>
4980 <DD><TT>bool WEdln.next_completion(WEdln wedln)</TT>
4981
4982 </DD>
4983 <DT><STRONG>Description:</STRONG></DT>
4984 <DD>Select next completion.
4985   
4986 </DD>
4987 </DL>
4988
4989 <P>
4990
4991   <DL>
4992 <DD><A NAME="fn:WEdln.paste"></A>  
4993 </DD>
4994 <DT><STRONG>Synopsis:</STRONG></DT>
4995 <DD><TT>void WEdln.paste(WEdln wedln)</TT>
4996
4997 </DD>
4998 <DT><STRONG>Description:</STRONG></DT>
4999 <DD>Request selection from application holding such.
5000
5001 <P>
5002 Note that this function is asynchronous; the selection will not
5003  actually be inserted before Ion receives it. This will be no
5004  earlier than Ion return to its main loop.
5005   
5006 </DD>
5007 </DL>
5008
5009 <P>
5010
5011   <DL>
5012 <DD><A NAME="fn:WEdln.point"></A>  
5013 </DD>
5014 <DT><STRONG>Synopsis:</STRONG></DT>
5015 <DD><TT>integer WEdln.point(WEdln wedln)</TT>
5016
5017 </DD>
5018 <DT><STRONG>Description:</STRONG></DT>
5019 <DD>Get current editing point. 
5020  Beginning of the edited line is point 0.
5021   
5022 </DD>
5023 </DL>
5024
5025 <P>
5026
5027   <DL>
5028 <DD><A NAME="fn:WEdln.prev_completion"></A>  
5029 </DD>
5030 <DT><STRONG>Synopsis:</STRONG></DT>
5031 <DD><TT>bool WEdln.prev_completion(WEdln wedln)</TT>
5032
5033 </DD>
5034 <DT><STRONG>Description:</STRONG></DT>
5035 <DD>Select previous completion.
5036   
5037 </DD>
5038 </DL>
5039
5040 <P>
5041
5042   <DL>
5043 <DD><A NAME="fn:WEdln.set_context"></A>  
5044 </DD>
5045 <DT><STRONG>Synopsis:</STRONG></DT>
5046 <DD><TT>void WEdln.set_context(WEdln wedln, string context)</TT>
5047
5048 </DD>
5049 <DT><STRONG>Description:</STRONG></DT>
5050 <DD>Set history context for <TT>wedln</TT>.
5051   
5052 </DD>
5053 </DL>
5054
5055 <P>
5056
5057   <DL>
5058 <DD><A NAME="fn:WEdln.set_mark"></A>  
5059 </DD>
5060 <DT><STRONG>Synopsis:</STRONG></DT>
5061 <DD><TT>void WEdln.set_mark(WEdln wedln)</TT>
5062
5063 </DD>
5064 <DT><STRONG>Description:</STRONG></DT>
5065 <DD>Set <SPAN  CLASS="textit">mark</SPAN> to current cursor position.
5066   
5067 </DD>
5068 </DL>
5069
5070 <P>
5071
5072   <DL>
5073 <DD><A NAME="fn:WEdln.skip_word"></A>  
5074 </DD>
5075 <DT><STRONG>Synopsis:</STRONG></DT>
5076 <DD><TT>void WEdln.skip_word(WEdln wedln)</TT>
5077
5078 </DD>
5079 <DT><STRONG>Description:</STRONG></DT>
5080 <DD>Go to to end of current sequence of whitespace followed by alphanumeric
5081  characters..
5082   
5083 </DD>
5084 </DL>
5085
5086 <P>
5087
5088   <DL>
5089 <DD><A NAME="fn:WEdln.transpose_chars"></A>  
5090 </DD>
5091 <DT><STRONG>Synopsis:</STRONG></DT>
5092 <DD><TT>void WEdln.transpose_chars(WEdln wedln)</TT>
5093
5094 </DD>
5095 <DT><STRONG>Description:</STRONG></DT>
5096 <DD>Transpose characters.
5097   
5098 </DD>
5099 </DL>
5100
5101 <P>
5102
5103   <DL>
5104 <DD><A NAME="fn:WEdln.transpose_words"></A>  
5105 </DD>
5106 <DT><STRONG>Synopsis:</STRONG></DT>
5107 <DD><TT>void WEdln.transpose_words(WEdln wedln)</TT>
5108
5109 </DD>
5110 <DT><STRONG>Description:</STRONG></DT>
5111 <DD>Transpose words.
5112   
5113 </DD>
5114 </DL>
5115
5116 <P>
5117
5118 <H3><A NAME="SECTION00733000000000000000">
5119 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN> WInput functions</A>
5120 </H3>
5121
5122 <P>
5123
5124   <DL>
5125 <DD><A NAME="fn:WInput.cancel"></A>  
5126 </DD>
5127 <DT><STRONG>Synopsis:</STRONG></DT>
5128 <DD><TT>void WInput.cancel(WInput input)</TT>
5129
5130 </DD>
5131 <DT><STRONG>Description:</STRONG></DT>
5132 <DD>Close input not calling any possible finish handlers.
5133   
5134 </DD>
5135 </DL>
5136
5137 <P>
5138
5139   <DL>
5140 <DD><A NAME="fn:WInput.scrolldown"></A>  
5141 </DD>
5142 <DT><STRONG>Synopsis:</STRONG></DT>
5143 <DD><TT>void WInput.scrolldown(WInput input)</TT>
5144
5145 </DD>
5146 <DT><STRONG>Description:</STRONG></DT>
5147 <DD>Scroll input <TT>input</TT> text contents down.
5148   
5149 </DD>
5150 </DL>
5151
5152 <P>
5153
5154   <DL>
5155 <DD><A NAME="fn:WInput.scrollup"></A>  
5156 </DD>
5157 <DT><STRONG>Synopsis:</STRONG></DT>
5158 <DD><TT>void WInput.scrollup(WInput input)</TT>
5159
5160 </DD>
5161 <DT><STRONG>Description:</STRONG></DT>
5162 <DD>Scroll input <TT>input</TT> text contents up.
5163   
5164 </DD>
5165 </DL>
5166
5167 <P>
5168
5169 <H2><A NAME="SECTION00740000000000000000"></A>
5170 <A NAME="sec:menuref"></A>
5171 <BR>
5172 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">4</SPAN> Functions defined in <SPAN  CLASS="textit">mod_menu</SPAN>
5173 </H2>
5174
5175   <DL>
5176 <DD><A NAME="fn:mod_menu.grabmenu"></A>  
5177 </DD>
5178 <DT><STRONG>Synopsis:</STRONG></DT>
5179 <DD><TT>mod_menu.grabmenu(mplex, sub, menu_or_name, param)</TT>
5180
5181 </DD>
5182 <DT><STRONG>Description:</STRONG></DT>
5183 <DD>This function is similar to <A HREF="#fn:mod_menu.menu"><TT>mod_menu.menu</TT></A>, but input
5184  is grabbed and the key used to active the menu can be used to
5185  cycle through menu entries.
5186   
5187 </DD>
5188 </DL>
5189
5190 <P>
5191
5192   <DL>
5193 <DD><A NAME="fn:mod_menu.menu"></A>  
5194 </DD>
5195 <DT><STRONG>Synopsis:</STRONG></DT>
5196 <DD><TT>mod_menu.menu(mplex, sub, menu_or_name, param)</TT>
5197
5198 </DD>
5199 <DT><STRONG>Description:</STRONG></DT>
5200 <DD>Display a menu in the lower-left corner of <TT>mplex</TT>.
5201  The variable <TT>menu_or_name</TT> is either the name of a menu
5202  defined with <A HREF="#fn:mod_menu.defmenu"><TT>mod_menu.defmenu</TT></A> or directly a table similar
5203  to ones passesd to this function. When this function is
5204  called from a binding handler, <TT>sub</TT> should be set to
5205  the second argument of to the binding handler (<TT>_sub</TT>)
5206  so that the menu handler will get the same parameters as the
5207  binding handler. Extra options can be passed in the table
5208  <TT>param</TT>. The initial entry can be specified as the field
5209  <TT>initial</TT> as an integer starting from 1. Menus can be made
5210  to use a bigger style by setting the field <TT>big</TT> to <TT>true</TT>.
5211   
5212 </DD>
5213 </DL>
5214
5215 <P>
5216
5217   <DL>
5218 <DD><A NAME="fn:mod_menu.get"></A>  
5219 </DD>
5220 <DT><STRONG>Synopsis:</STRONG></DT>
5221 <DD><TT>table mod_menu.get()</TT>
5222
5223 </DD>
5224 <DT><STRONG>Description:</STRONG></DT>
5225 <DD>Get module basic settings. For details, see <A HREF="#fn:mod_menu.set"><TT>mod_menu.set</TT></A>.
5226   
5227 </DD>
5228 </DL>
5229
5230 <P>
5231
5232   <DL>
5233 <DD><A NAME="fn:mod_menu.set"></A>  
5234 </DD>
5235 <DT><STRONG>Synopsis:</STRONG></DT>
5236 <DD><TT>void mod_menu.set(table tab)</TT>
5237
5238 </DD>
5239 <DT><STRONG>Description:</STRONG></DT>
5240 <DD>Set module basic settings. The parameter table may contain the
5241  following fields:
5242
5243 <P>
5244 <TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
5245 <TR><TD ALIGN="LEFT">Field</TD>
5246 <TD ALIGN="LEFT">Description</TD>
5247 </TR>
5248 <TR><TD ALIGN="LEFT"><TT>scroll_amount</TT></TD>
5249 <TD ALIGN="LEFT">Number of pixels to scroll at a time 
5250                         pointer-controlled menus when one extends
5251                         beyond a border of the screen and the pointer
5252                         touches that border.</TD>
5253 </TR>
5254 <TR><TD ALIGN="LEFT"><TT>scroll_delay</TT></TD>
5255 <TD ALIGN="LEFT">Time between such scrolling events in 
5256                         milliseconds.</TD>
5257 </TR>
5258 </TABLE>
5259   
5260 </DD>
5261 </DL>
5262
5263 <P>
5264
5265   <DL>
5266 <DD><A NAME="fn:mod_menu.pmenu"></A>  
5267 </DD>
5268 <DT><STRONG>Synopsis:</STRONG></DT>
5269 <DD><TT>mod_menu.pmenu(win, sub, menu_or_name)</TT>
5270
5271 </DD>
5272 <DT><STRONG>Description:</STRONG></DT>
5273 <DD>This function displays a drop-down menu and should only
5274  be called from a mouse press handler. The parameters are
5275  similar to those of <A HREF="#fn:mod_menu.menu"><TT>mod_menu.menu</TT></A>.
5276   
5277 </DD>
5278 </DL>
5279
5280 <P>
5281
5282 <H3><A NAME="SECTION00741000000000000000">
5283 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN> WMenu functions</A>
5284 </H3>
5285
5286 <P>
5287
5288   <DL>
5289 <DD><A NAME="fn:WMenu.cancel"></A>  
5290 </DD>
5291 <DT><STRONG>Synopsis:</STRONG></DT>
5292 <DD><TT>void WMenu.cancel(WMenu menu)</TT>
5293
5294 </DD>
5295 <DT><STRONG>Description:</STRONG></DT>
5296 <DD>Close <TT>menu</TT> not calling any possible finish handlers.
5297   
5298 </DD>
5299 </DL>
5300
5301 <P>
5302
5303   <DL>
5304 <DD><A NAME="fn:WMenu.finish"></A>  
5305 </DD>
5306 <DT><STRONG>Synopsis:</STRONG></DT>
5307 <DD><TT>void WMenu.finish(WMenu menu)</TT>
5308
5309 </DD>
5310 <DT><STRONG>Description:</STRONG></DT>
5311 <DD>If selected entry is a submenu, display that.
5312  Otherwise destroy the menu and call handler for selected entry.
5313   
5314 </DD>
5315 </DL>
5316
5317 <P>
5318
5319   <DL>
5320 <DD><A NAME="fn:WMenu.select_next"></A>  
5321 </DD>
5322 <DT><STRONG>Synopsis:</STRONG></DT>
5323 <DD><TT>void WMenu.select_next(WMenu menu)</TT>
5324
5325 </DD>
5326 <DT><STRONG>Description:</STRONG></DT>
5327 <DD>Select next entry in menu.
5328   
5329 </DD>
5330 </DL>
5331
5332 <P>
5333
5334   <DL>
5335 <DD><A NAME="fn:WMenu.select_nth"></A>  
5336 </DD>
5337 <DT><STRONG>Synopsis:</STRONG></DT>
5338 <DD><TT>void WMenu.select_nth(WMenu menu, integer n)</TT>
5339
5340 </DD>
5341 <DT><STRONG>Description:</STRONG></DT>
5342 <DD>Select <TT>n</TT>:th entry in menu.
5343   
5344 </DD>
5345 </DL>
5346
5347 <P>
5348
5349   <DL>
5350 <DD><A NAME="fn:WMenu.select_prev"></A>  
5351 </DD>
5352 <DT><STRONG>Synopsis:</STRONG></DT>
5353 <DD><TT>void WMenu.select_prev(WMenu menu)</TT>
5354
5355 </DD>
5356 <DT><STRONG>Description:</STRONG></DT>
5357 <DD>Select previous entry in menu.
5358   
5359 </DD>
5360 </DL>
5361
5362 <P>
5363
5364   <DL>
5365 <DD><A NAME="fn:WMenu.typeahead_clear"></A>  
5366 </DD>
5367 <DT><STRONG>Synopsis:</STRONG></DT>
5368 <DD><TT>void WMenu.typeahead_clear(WMenu menu)</TT>
5369
5370 </DD>
5371 <DT><STRONG>Description:</STRONG></DT>
5372 <DD>Clear typeahead buffer.
5373   
5374 </DD>
5375 </DL>
5376
5377 <P>
5378
5379 <H2><A NAME="SECTION00750000000000000000"></A>
5380 <A NAME="sec:dockref"></A>
5381 <BR>
5382 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">5</SPAN> Functions defined in <SPAN  CLASS="textit">mod_dock</SPAN>
5383 </H2>
5384
5385   <DL>
5386 <DD><A NAME="fn:mod_dock.set_floating_shown_on"></A>  
5387 </DD>
5388 <DT><STRONG>Synopsis:</STRONG></DT>
5389 <DD><TT>void mod_dock.set_floating_shown_on(WMPlex mplex, string how)</TT>
5390
5391 </DD>
5392 <DT><STRONG>Description:</STRONG></DT>
5393 <DD>Toggle floating docks on <TT>mplex</TT>.
5394   
5395 </DD>
5396 </DL>
5397
5398 <P>
5399
5400 <H3><A NAME="SECTION00751000000000000000">
5401 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">1</SPAN> WDock functions</A>
5402 </H3>
5403
5404 <P>
5405
5406   <DL>
5407 <DD><A NAME="fn:WDock.attach"></A>  
5408 </DD>
5409 <DT><STRONG>Synopsis:</STRONG></DT>
5410 <DD><TT>bool WDock.attach(WDock dock, WRegion reg)</TT>
5411
5412 </DD>
5413 <DT><STRONG>Description:</STRONG></DT>
5414 <DD>Attach <TT>reg</TT> to <TT>dock</TT>.
5415   
5416 </DD>
5417 </DL>
5418
5419 <P>
5420
5421   <DL>
5422 <DD><A NAME="fn:WDock.get"></A>  
5423 </DD>
5424 <DT><STRONG>Synopsis:</STRONG></DT>
5425 <DD><TT>table WDock.get(WDock dock)</TT>
5426
5427 </DD>
5428 <DT><STRONG>Description:</STRONG></DT>
5429 <DD>Get <TT>dock</TT>'s configuration table. See <A HREF="#fn:WDock.set"><TT>WDock.set</TT></A> for a
5430  description of the table.
5431   
5432 </DD>
5433 </DL>
5434
5435 <P>
5436
5437   <DL>
5438 <DD><A NAME="fn:WDock.resize"></A>  
5439 </DD>
5440 <DT><STRONG>Synopsis:</STRONG></DT>
5441 <DD><TT>void WDock.resize(WDock dock)</TT>
5442
5443 </DD>
5444 <DT><STRONG>Description:</STRONG></DT>
5445 <DD>Resizes and refreshes <TT>dock</TT>.
5446   
5447 </DD>
5448 </DL>
5449
5450 <P>
5451
5452   <DL>
5453 <DD><A NAME="fn:WDock.set"></A>  
5454 </DD>
5455 <DT><STRONG>Synopsis:</STRONG></DT>
5456 <DD><TT>void WDock.set(WDock dock, table conftab)</TT>
5457
5458 </DD>
5459 <DT><STRONG>Description:</STRONG></DT>
5460 <DD>Configure <TT>dock</TT>. <TT>conftab</TT> is a table of key/value pairs:
5461
5462 <P>
5463 <TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
5464 <TR><TD ALIGN="LEFT">Key</TD>
5465 <TD ALIGN="LEFT">Values</TD>
5466 <TD ALIGN="LEFT">Description</TD>
5467 </TR>
5468 <TR><TD ALIGN="LEFT"><TT>name</TT></TD>
5469 <TD ALIGN="LEFT">string</TD>
5470 <TD ALIGN="LEFT">Name of dock</TD>
5471 </TR>
5472 <TR><TD ALIGN="LEFT"><TT>pos</TT></TD>
5473 <TD ALIGN="LEFT">string in <!-- MATH
5474  $\{t,m,b\}\times\{t,c,b\}$
5475  -->
5476 <SPAN CLASS="MATH"><IMG
5477  WIDTH="142" HEIGHT="36" ALIGN="MIDDLE" BORDER="0"
5478  SRC="img6.png"
5479  ALT="$\{t,m,b\}\times\{t,c,b\}$"></SPAN></TD>
5480 <TD ALIGN="LEFT">Dock position. 
5481        Can only be used in floating mode.</TD>
5482 </TR>
5483 <TR><TD ALIGN="LEFT"><TT>grow</TT></TD>
5484 <TD ALIGN="LEFT">up/down/left/right</TD>
5485 <TD ALIGN="LEFT">Growth direction where new dockapps are added. Also
5486        sets orientation for dock when working as WMPlex status
5487        display (see <A HREF="#fn:WMPlex.set_stdisp"><TT>WMPlex.set_stdisp</TT></A>).</TD>
5488 </TR>
5489 <TR><TD ALIGN="LEFT"><TT>is_auto</TT></TD>
5490 <TD ALIGN="LEFT">bool</TD>
5491 <TD ALIGN="LEFT">Should <TT>dock</TT> automatically manage new dockapps?</TD>
5492 </TR>
5493 </TABLE>
5494
5495 <P>
5496 Any parameters not explicitly set in <TT>conftab</TT> will be left unchanged.
5497   
5498 </DD>
5499 </DL>
5500
5501 <P>
5502
5503 <H2><A NAME="SECTION00760000000000000000"></A>
5504 <A NAME="sec:spref"></A>
5505 <BR>
5506 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">6</SPAN> Functions defined in <SPAN  CLASS="textit">mod_sp</SPAN>
5507 </H2>
5508
5509   <DL>
5510 <DD><A NAME="fn:mod_sp.set_shown"></A>  
5511 </DD>
5512 <DT><STRONG>Synopsis:</STRONG></DT>
5513 <DD><TT>bool mod_sp.set_shown(WFrame sp, string how)</TT>
5514
5515 </DD>
5516 <DT><STRONG>Description:</STRONG></DT>
5517 <DD>Toggle displayed status of <TT>sp</TT>.
5518  The parameter <TT>how</TT> is one of 
5519  `<TT>set</TT>', `<TT>unset</TT>', or `<TT>toggle</TT>'.
5520  The resulting status is returned.
5521   
5522 </DD>
5523 </DL>
5524
5525 <P>
5526
5527   <DL>
5528 <DD><A NAME="fn:mod_sp.set_shown_on"></A>  
5529 </DD>
5530 <DT><STRONG>Synopsis:</STRONG></DT>
5531 <DD><TT>bool mod_sp.set_shown_on(WMPlex mplex, string how)</TT>
5532
5533 </DD>
5534 <DT><STRONG>Description:</STRONG></DT>
5535 <DD>Change displayed status of some scratchpad on <TT>mplex</TT> if one is 
5536  found. The parameter <TT>how</TT> is one of 
5537  `<TT>set</TT>', `<TT>unset</TT>', or `<TT>toggle</TT>'.
5538  The resulting status is returned.
5539   
5540 </DD>
5541 </DL>
5542
5543 <P>
5544
5545 <H2><A NAME="SECTION00770000000000000000"></A>
5546 <A NAME="sec:statusbarref"></A>
5547 <BR>
5548 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">7</SPAN> Functions defined in <SPAN  CLASS="textit">mod_statusbar</SPAN>
5549 </H2>
5550
5551   <DL>
5552 <DD><A NAME="fn:mod_statusbar.create"></A>  
5553 </DD>
5554 <DT><STRONG>Synopsis:</STRONG></DT>
5555 <DD><TT>mod_statusbar.create(param)</TT>
5556
5557 </DD>
5558 <DT><STRONG>Description:</STRONG></DT>
5559 <DD>Create a statusbar. The possible parameters in the
5560  table <TT>param</TT> are:
5561
5562 <P>
5563 <TABLE CELLPADDING=3 WIDTH="100%">
5564 <TR><TD ALIGN="LEFT">Variable</TD>
5565 <TD ALIGN="LEFT">Type</TD>
5566 <TD ALIGN="LEFT">Description</TD>
5567 </TR>
5568 <TR><TD ALIGN="LEFT"><TT>template</TT></TD>
5569 <TD ALIGN="LEFT">string</TD>
5570 <TD ALIGN="LEFT">The template; see
5571                              Section <A HREF="node4.html#sec:statusbar">3.6</A>.</TD>
5572 </TR>
5573 <TR><TD ALIGN="LEFT"><TT>pos</TT></TD>
5574 <TD ALIGN="LEFT">string</TD>
5575 <TD ALIGN="LEFT">Position: <TT>"tl"</TT>, <TT>"tr"</TT>, 
5576                         <TT>"bl"</TT> or <TT>"br"</TT>
5577                         (for the obvious combinations of 
5578                         top/left/bottom/right).</TD>
5579 </TR>
5580 <TR><TD ALIGN="LEFT"><TT>screen</TT></TD>
5581 <TD ALIGN="LEFT">integer</TD>
5582 <TD ALIGN="LEFT">Screen number to create the statusbar on.</TD>
5583 </TR>
5584 <TR><TD ALIGN="LEFT"><TT>fullsize</TT></TD>
5585 <TD ALIGN="LEFT">boolean</TD>
5586 <TD ALIGN="LEFT">If set, the statusbar will waste
5587                               space instead of adapting to layout.</TD>
5588 </TR>
5589 <TR><TD ALIGN="LEFT"><TT>systray</TT></TD>
5590 <TD ALIGN="LEFT">boolaen</TD>
5591 <TD ALIGN="LEFT">Swallow (KDE protocol) systray icons.</TD>
5592 </TR>
5593 </TABLE>
5594   
5595 </DD>
5596 </DL>
5597
5598 <P>
5599
5600   <DL>
5601 <DD><A NAME="fn:mod_statusbar.inform"></A>  
5602 </DD>
5603 <DT><STRONG>Synopsis:</STRONG></DT>
5604 <DD><TT>mod_statusbar.inform(name, value)</TT>
5605
5606 </DD>
5607 <DT><STRONG>Description:</STRONG></DT>
5608 <DD>Inform of a value.
5609   
5610 </DD>
5611 </DL>
5612
5613 <P>
5614
5615   <DL>
5616 <DD><A NAME="fn:mod_statusbar.launch_statusd"></A>  
5617 </DD>
5618 <DT><STRONG>Synopsis:</STRONG></DT>
5619 <DD><TT>mod_statusbar.launch_statusd(cfg)</TT>
5620
5621 </DD>
5622 <DT><STRONG>Description:</STRONG></DT>
5623 <DD>Load modules and launch <SPAN  CLASS="textit">ion-statusd</SPAN> with configuration 
5624  table <TT>cfg</TT>. The options for each <SPAN  CLASS="textit">ion-statusd</SPAN> monitor
5625  script should be contained in the corresponding sub-table of <TT>cfg</TT>.
5626   
5627 </DD>
5628 </DL>
5629
5630 <P>
5631
5632   <DL>
5633 <DD><A NAME="fn:mod_statusbar.statusbars"></A>  
5634 </DD>
5635 <DT><STRONG>Synopsis:</STRONG></DT>
5636 <DD><TT>table mod_statusbar.statusbars()</TT>
5637
5638 </DD>
5639 <DT><STRONG>Description:</STRONG></DT>
5640 <DD>Returns a list of all statusbars.
5641   
5642 </DD>
5643 </DL>
5644
5645 <P>
5646
5647   <DL>
5648 <DD><A NAME="fn:mod_statusbar.update"></A>  
5649 </DD>
5650 <DT><STRONG>Synopsis:</STRONG></DT>
5651 <DD><TT>mod_statusbar.update(update_templates)</TT>
5652
5653 </DD>
5654 <DT><STRONG>Description:</STRONG></DT>
5655 <DD>Update statusbar contents. To be called after series
5656  of <A HREF="#fn:mod_statusbar.inform"><TT>mod_statusbar.inform</TT></A> calls.
5657   
5658 </DD>
5659 </DL>
5660
5661 <P>
5662
5663 <H3><A NAME="SECTION00771000000000000000">
5664 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">7</SPAN>.<SPAN CLASS="arabic">1</SPAN> WStatusBar functions</A>
5665 </H3>
5666
5667 <P>
5668
5669   <DL>
5670 <DD><A NAME="fn:WStatusBar.get_template_table"></A>  
5671 </DD>
5672 <DT><STRONG>Synopsis:</STRONG></DT>
5673 <DD><TT>table WStatusBar.get_template_table(WStatusBar sb)</TT>
5674
5675 </DD>
5676 <DT><STRONG>Description:</STRONG></DT>
5677 <DD>Get statusbar template as table.
5678   
5679 </DD>
5680 </DL>
5681
5682 <P>
5683
5684   <DL>
5685 <DD><A NAME="fn:WStatusBar.is_systray"></A>  
5686 </DD>
5687 <DT><STRONG>Synopsis:</STRONG></DT>
5688 <DD><TT>bool WStatusBar.is_systray(WStatusBar sb)</TT>
5689
5690 </DD>
5691 <DT><STRONG>Description:</STRONG></DT>
5692 <DD>Is <TT>sb</TT> used as a systray?
5693   
5694 </DD>
5695 </DL>
5696
5697 <P>
5698
5699   <DL>
5700 <DD><A NAME="fn:WStatusBar.set_systray"></A>  
5701 </DD>
5702 <DT><STRONG>Synopsis:</STRONG></DT>
5703 <DD><TT>bool WStatusBar.set_systray(WStatusBar sb, string how)</TT>
5704
5705 </DD>
5706 <DT><STRONG>Description:</STRONG></DT>
5707 <DD>Enable or disable use of <TT>sb</TT> as systray.
5708  The parameter <TT>how</TT> can be one of 
5709  `<TT>set</TT>', `<TT>unset</TT>', or `<TT>toggle</TT>'.
5710  Resulting state is returned.
5711   
5712 </DD>
5713 </DL>
5714
5715 <P>
5716
5717   <DL>
5718 <DD><A NAME="fn:WStatusBar.set_template"></A>  
5719 </DD>
5720 <DT><STRONG>Synopsis:</STRONG></DT>
5721 <DD><TT>void WStatusBar.set_template(WStatusBar sb, string tmpl)</TT>
5722
5723 </DD>
5724 <DT><STRONG>Description:</STRONG></DT>
5725 <DD>Set statusbar template.
5726   
5727 </DD>
5728 </DL>
5729
5730 <P>
5731
5732   <DL>
5733 <DD><A NAME="fn:WStatusBar.set_template_table"></A>  
5734 </DD>
5735 <DT><STRONG>Synopsis:</STRONG></DT>
5736 <DD><TT>void WStatusBar.set_template_table(WStatusBar sb, table t)</TT>
5737
5738 </DD>
5739 <DT><STRONG>Description:</STRONG></DT>
5740 <DD>Set statusbar template as table.
5741   
5742 </DD>
5743 </DL>
5744
5745 <P>
5746
5747   <DL>
5748 <DD><A NAME="fn:WStatusBar.update"></A>  
5749 </DD>
5750 <DT><STRONG>Synopsis:</STRONG></DT>
5751 <DD><TT>void WStatusBar.update(WStatusBar sb, table t)</TT>
5752
5753 </DD>
5754 <DT><STRONG>Description:</STRONG></DT>
5755 <DD>Set statusbar template.
5756   
5757 </DD>
5758 </DL>
5759
5760 <P>
5761
5762 <H2><A NAME="SECTION00780000000000000000"></A>
5763 <A NAME="sec:deref"></A>
5764 <BR>
5765 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">8</SPAN> Functions defined in <SPAN  CLASS="textit">de</SPAN>
5766 </H2>
5767
5768   <DL>
5769 <DD><A NAME="fn:de.defstyle"></A>  
5770 </DD>
5771 <DT><STRONG>Synopsis:</STRONG></DT>
5772 <DD><TT>bool de.defstyle(string name, table tab)</TT>
5773
5774 </DD>
5775 <DT><STRONG>Description:</STRONG></DT>
5776 <DD>Define a style.
5777   
5778 </DD>
5779 </DL>
5780
5781 <P>
5782
5783   <DL>
5784 <DD><A NAME="fn:de.defstyle_rootwin"></A>  
5785 </DD>
5786 <DT><STRONG>Synopsis:</STRONG></DT>
5787 <DD><TT>bool de.defstyle_rootwin(WRootWin rootwin, string name, table tab)</TT>
5788
5789 </DD>
5790 <DT><STRONG>Description:</STRONG></DT>
5791 <DD>Define a style for the root window <TT>rootwin</TT>.
5792   
5793 </DD>
5794 </DL>
5795
5796 <P>
5797
5798   <DL>
5799 <DD><A NAME="fn:de.reset"></A>  
5800 </DD>
5801 <DT><STRONG>Synopsis:</STRONG></DT>
5802 <DD><TT>void de.reset()</TT>
5803
5804 </DD>
5805 <DT><STRONG>Description:</STRONG></DT>
5806 <DD>Clear all styles from drawing engine memory.
5807   
5808 </DD>
5809 </DL>
5810
5811 <P>
5812
5813   <DL>
5814 <DD><A NAME="fn:de.substyle"></A>  
5815 </DD>
5816 <DT><STRONG>Synopsis:</STRONG></DT>
5817 <DD><TT>table de.substyle(string pattern, table tab)</TT>
5818
5819 </DD>
5820 <DT><STRONG>Description:</STRONG></DT>
5821 <DD>Define a substyle.
5822   
5823 </DD>
5824 </DL>
5825
5826 <P>
5827
5828 <H2><A NAME="SECTION00790000000000000000"></A>
5829 <A NAME="sec:hookref"></A>
5830 <BR>
5831 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">9</SPAN> Hooks
5832 </H2>
5833
5834 <P>
5835
5836   <DL>
5837 <DD><A NAME="8232"></A>
5838
5839 </DD>
5840 <DT><STRONG>Hook name:</STRONG></DT>
5841 <DD><A NAME="clientwin_do_manage_alt"></A><TT>clientwin_do_manage_alt</TT>
5842
5843 </DD>
5844 <DT><STRONG>Parameters:</STRONG></DT>
5845 <DD><TT>(WClientWin, table)</TT>
5846
5847 </DD>
5848 <DT><STRONG>Description:</STRONG></DT>
5849 <DD>Called when we want to manage a new client window.
5850       The table argument contains the following fields:
5851
5852 <P>
5853 <TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
5854 <TR><TD ALIGN="LEFT">Field</TD>
5855 <TD ALIGN="LEFT">Type</TD>
5856 <TD ALIGN="LEFT">Description</TD>
5857 </TR>
5858 <TR><TD ALIGN="LEFT"><TT>switchto</TT></TD>
5859 <TD ALIGN="LEFT">bool</TD>
5860 <TD ALIGN="LEFT">Do we want to switch to the client window.</TD>
5861 </TR>
5862 <TR><TD ALIGN="LEFT"><TT>jumpto</TT></TD>
5863 <TD ALIGN="LEFT">bool</TD>
5864 <TD ALIGN="LEFT">Do we want to jump to the client window.</TD>
5865 </TR>
5866 <TR><TD ALIGN="LEFT"><TT>userpos</TT></TD>
5867 <TD ALIGN="LEFT">bool</TD>
5868 <TD ALIGN="LEFT">Geometry set by user.</TD>
5869 </TR>
5870 <TR><TD ALIGN="LEFT"><TT>dockapp</TT></TD>
5871 <TD ALIGN="LEFT">bool</TD>
5872 <TD ALIGN="LEFT">Client window is a dock-app.</TD>
5873 </TR>
5874 <TR><TD ALIGN="LEFT"><TT>maprq</TT></TD>
5875 <TD ALIGN="LEFT">bool</TD>
5876 <TD ALIGN="LEFT">Map request (and not initialisation scan).</TD>
5877 </TR>
5878 <TR><TD ALIGN="LEFT"><TT>gravity</TT></TD>
5879 <TD ALIGN="LEFT">number</TD>
5880 <TD ALIGN="LEFT">Window gravity.</TD>
5881 </TR>
5882 <TR><TD ALIGN="LEFT"><TT>geom</TT></TD>
5883 <TD ALIGN="LEFT">table</TD>
5884 <TD ALIGN="LEFT">Requested geometry; <TT>x</TT>, <TT>y</TT>, <TT>w</TT>, <TT>h</TT>.</TD>
5885 </TR>
5886 <TR><TD ALIGN="LEFT"><TT>tfor</TT></TD>
5887 <TD ALIGN="LEFT">WClientWin</TD>
5888 <TD ALIGN="LEFT">Transient for window.</TD>
5889 </TR>
5890 </TABLE>
5891
5892 <P>
5893 This hook is not called in protected mode and can be used for
5894       arbitrary placement policies (deciding in which workspace a new
5895       WClientWin should go). In this case, you can call
5896 <PRE>
5897 reg:attach(cwin)
5898 </PRE>
5899       where <TT>reg</TT> is the region where the window should go, and
5900       <TT>cwin</TT> is the first argument of the function added to the
5901       hook.
5902       
5903 </DD>
5904 </DL>
5905
5906 <P>
5907
5908   <DL>
5909 <DD><A NAME="8233"></A>
5910
5911 </DD>
5912 <DT><STRONG>Hook name:</STRONG></DT>
5913 <DD><A NAME="clientwin_mapped_hook"></A><TT>clientwin_mapped_hook</TT>
5914
5915 </DD>
5916 <DT><STRONG>Parameters:</STRONG></DT>
5917 <DD><TT>WClientWin</TT>
5918
5919 </DD>
5920 <DT><STRONG>Description:</STRONG></DT>
5921 <DD>Called when we have started to manage a client window.
5922       
5923 </DD>
5924 </DL>
5925
5926 <P>
5927
5928   <DL>
5929 <DD><A NAME="8234"></A>
5930
5931 </DD>
5932 <DT><STRONG>Hook name:</STRONG></DT>
5933 <DD><A NAME="clientwin_property_change_hook"></A><TT>clientwin_property_change_hook</TT>
5934
5935 </DD>
5936 <DT><STRONG>Parameters:</STRONG></DT>
5937 <DD><TT>(WClientWin, integer)</TT>
5938
5939 </DD>
5940 <DT><STRONG>Description:</STRONG></DT>
5941 <DD>Called when the property identified by the parameter atom id
5942       (integer) has changed on a client window.
5943       
5944 </DD>
5945 </DL>
5946
5947 <P>
5948
5949   <DL>
5950 <DD><A NAME="8235"></A>
5951
5952 </DD>
5953 <DT><STRONG>Hook name:</STRONG></DT>
5954 <DD><A NAME="clientwin_unmapped_hook"></A><TT>clientwin_unmapped_hook</TT>
5955
5956 </DD>
5957 <DT><STRONG>Parameters:</STRONG></DT>
5958 <DD><TT>number</TT>
5959
5960 </DD>
5961 <DT><STRONG>Description:</STRONG></DT>
5962 <DD>Called when we no longer manage a client window. The parameter
5963       is the X ID of the window; see <A HREF="#fn:WClientWin.xid"><TT>WClientWin.xid</TT></A>.
5964       
5965 </DD>
5966 </DL>
5967
5968 <P>
5969
5970   <DL>
5971 <DD><A NAME="8236"></A>
5972
5973 </DD>
5974 <DT><STRONG>Hook name:</STRONG></DT>
5975 <DD><A NAME="frame_managed_changed_hook"></A><TT>frame_managed_changed_hook</TT>
5976
5977 </DD>
5978 <DT><STRONG>Parameters:</STRONG></DT>
5979 <DD><TT>table</TT>
5980
5981 </DD>
5982 <DT><STRONG>Description:</STRONG></DT>
5983 <DD>Called when there are changes in the objects managed by a frame
5984       or their order. The table parameter has the following fields:
5985
5986 <P>
5987 <TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
5988 <TR><TD ALIGN="LEFT">Field</TD>
5989 <TD ALIGN="LEFT">Type</TD>
5990 <TD ALIGN="LEFT">Description</TD>
5991 </TR>
5992 <TR><TD ALIGN="LEFT"><TT>reg</TT></TD>
5993 <TD ALIGN="LEFT">WFrame</TD>
5994 <TD ALIGN="LEFT">The frame in question</TD>
5995 </TR>
5996 <TR><TD ALIGN="LEFT"><TT>mode</TT></TD>
5997 <TD ALIGN="LEFT">string</TD>
5998 <TD ALIGN="LEFT">`<TT>switchonly</TT>', `<TT>reorder</TT>',
5999                                 `<TT>add</TT>' or `<TT>remove</TT>'</TD>
6000 </TR>
6001 <TR><TD ALIGN="LEFT"><TT>sw</TT></TD>
6002 <TD ALIGN="LEFT">bool</TD>
6003 <TD ALIGN="LEFT">Switch occurred</TD>
6004 </TR>
6005 <TR><TD ALIGN="LEFT"><TT>sub</TT></TD>
6006 <TD ALIGN="LEFT">WRegion</TD>
6007 <TD ALIGN="LEFT">The managed region (primarily) affected</TD>
6008 </TR>
6009 </TABLE>
6010       
6011 </DD>
6012 </DL>
6013
6014 <P>
6015
6016   <DL>
6017 <DD><A NAME="8237"></A>
6018
6019 </DD>
6020 <DT><STRONG>Hook name:</STRONG></DT>
6021 <DD><A NAME="ioncore_sigchld_hook"></A><TT>ioncore_sigchld_hook</TT>
6022
6023 </DD>
6024 <DT><STRONG>Parameters:</STRONG></DT>
6025 <DD><TT>integer</TT>
6026
6027 </DD>
6028 <DT><STRONG>Description:</STRONG></DT>
6029 <DD>Called when a child process has exited. The parameter
6030       is the PID of the process.
6031       
6032 </DD>
6033 </DL>
6034
6035 <P>
6036
6037   <DL>
6038 <DD><A NAME="8238"></A>
6039
6040 </DD>
6041 <DT><STRONG>Hook name:</STRONG></DT>
6042 <DD><A NAME="ioncore_deinit_hook"></A><TT>ioncore_deinit_hook</TT>
6043
6044 </DD>
6045 <DT><STRONG>Parameters:</STRONG></DT>
6046 <DD><TT>()</TT>
6047
6048 </DD>
6049 <DT><STRONG>Description:</STRONG></DT>
6050 <DD>Called when Ion is deinitialising and about to quit.
6051       
6052 </DD>
6053 </DL>
6054
6055 <P>
6056
6057   <DL>
6058 <DD><A NAME="8239"></A>
6059
6060 </DD>
6061 <DT><STRONG>Hook name:</STRONG></DT>
6062 <DD><A NAME="ioncore_post_layout_setup_hook"></A><TT>ioncore_post_layout_setup_hook</TT>
6063
6064 </DD>
6065 <DT><STRONG>Parameters:</STRONG></DT>
6066 <DD><TT>()</TT>
6067
6068 </DD>
6069 <DT><STRONG>Description:</STRONG></DT>
6070 <DD>Called when Ion has done all initialisation and is almost ready to
6071       enter the main-loop, except no windows are yet being managed.
6072       
6073 </DD>
6074 </DL>
6075
6076 <P>
6077
6078   <DL>
6079 <DD><A NAME="8240"></A>
6080
6081 </DD>
6082 <DT><STRONG>Hook name:</STRONG></DT>
6083 <DD><A NAME="ioncore_snapshot_hook"></A><TT>ioncore_snapshot_hook</TT>
6084
6085 </DD>
6086 <DT><STRONG>Parameters:</STRONG></DT>
6087 <DD><TT>()</TT>
6088
6089 </DD>
6090 <DT><STRONG>Description:</STRONG></DT>
6091 <DD>Called to signal scripts and modules to save their state (if any).
6092       
6093 </DD>
6094 </DL>
6095
6096 <P>
6097
6098   <DL>
6099 <DD><A NAME="8241"></A>
6100
6101 </DD>
6102 <DT><STRONG>Hook name:</STRONG></DT>
6103 <DD><A NAME="ioncore_submap_ungrab_hook"></A><TT>ioncore_submap_ungrab_hook</TT>
6104
6105 </DD>
6106 <DT><STRONG>Parameters:</STRONG></DT>
6107 <DD><TT>()</TT>
6108
6109 </DD>
6110 <DT><STRONG>Description:</STRONG></DT>
6111 <DD>This hook is used to signal whenever Ion leaves the submap grab mode.
6112       
6113 </DD>
6114 </DL>
6115
6116 <P>
6117
6118   <DL>
6119 <DD><A NAME="8242"></A>
6120
6121 </DD>
6122 <DT><STRONG>Hook name:</STRONG></DT>
6123 <DD><A NAME="tiling_placement_alt"></A><TT>tiling_placement_alt</TT>
6124
6125 </DD>
6126 <DT><STRONG>Parameters:</STRONG></DT>
6127 <DD><TT>table</TT>
6128
6129 </DD>
6130 <DT><STRONG>Description:</STRONG></DT>
6131 <DD>Called when a client window is about to be managed by a WTiling
6132       to allow for alternative placement policies. The table has the
6133       following fields:
6134       <TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
6135 <TR><TD ALIGN="LEFT">Field</TD>
6136 <TD ALIGN="LEFT">Type</TD>
6137 <TD ALIGN="LEFT">Description</TD>
6138 </TR>
6139 <TR><TD ALIGN="LEFT"><TT>tiling</TT></TD>
6140 <TD ALIGN="LEFT">WTiling</TD>
6141 <TD ALIGN="LEFT">The tiling</TD>
6142 </TR>
6143 <TR><TD ALIGN="LEFT"><TT>reg</TT></TD>
6144 <TD ALIGN="LEFT">WRegion</TD>
6145 <TD ALIGN="LEFT">The region (always a WClientWin at 
6146               the moment) to be placed</TD>
6147 </TR>
6148 <TR><TD ALIGN="LEFT"><TT>mp</TT></TD>
6149 <TD ALIGN="LEFT">table</TD>
6150 <TD ALIGN="LEFT">This table contains the same fields as
6151             the parameter of <A HREF="#fn:clientwin_do_manage_alt"><TT>clientwin_do_manage_alt</TT></A></TD>
6152 </TR>
6153 <TR><TD ALIGN="LEFT"><TT>res_frame</TT></TD>
6154 <TD ALIGN="LEFT">WFrame</TD>
6155 <TD ALIGN="LEFT">A successful handler should 
6156             return the target frame here.</TD>
6157 </TR>
6158 </TABLE>
6159       This hook is just for placing within a given workspace after the
6160       workspace has been decided by the default workspace selection
6161       policy. It is called in protected mode. For arbitrary placement
6162       policies, <A HREF="#fn:clientwin_do_manage_alt"><TT>clientwin_do_manage_alt</TT></A> should be used; it
6163       isn't called in protected mode,
6164       
6165 </DD>
6166 </DL>
6167
6168 <P>
6169
6170   <DL>
6171 <DD><A NAME="8243"></A>
6172
6173 </DD>
6174 <DT><STRONG>Hook name:</STRONG></DT>
6175 <DD><A NAME="region_do_warp_alt"></A><TT>region_do_warp_alt</TT>
6176
6177 </DD>
6178 <DT><STRONG>Parameters:</STRONG></DT>
6179 <DD><TT>WRegion</TT>
6180
6181 </DD>
6182 <DT><STRONG>Description:</STRONG></DT>
6183 <DD>This alt-hook exist to allow for alternative pointer warping
6184       implementations.
6185       
6186 </DD>
6187 </DL>
6188
6189 <P>
6190
6191   <DL>
6192 <DD><A NAME="8244"></A>
6193
6194 </DD>
6195 <DT><STRONG>Hook name:</STRONG></DT>
6196 <DD><A NAME="screen_managed_changed_hook"></A><TT>screen_managed_changed_hook</TT>
6197
6198 </DD>
6199 <DT><STRONG>Parameters:</STRONG></DT>
6200 <DD><TT>table</TT>
6201
6202 </DD>
6203 <DT><STRONG>Description:</STRONG></DT>
6204 <DD>Called when there are changes in the objects managed by a screen
6205       or their order. The table parameter is similar to that of
6206       <A HREF="#fn:frame_managed_changed_hook"><TT>frame_managed_changed_hook</TT></A>.
6207       
6208 </DD>
6209 </DL>
6210
6211 <P>
6212
6213   <DL>
6214 <DD><A NAME="8245"></A>
6215
6216 </DD>
6217 <DT><STRONG>Hook name:</STRONG></DT>
6218 <DD><A NAME="region_notify_hook"></A><TT>region_notify_hook</TT>
6219
6220 </DD>
6221 <DT><STRONG>Parameters:</STRONG></DT>
6222 <DD><TT>(WRegion, string)</TT>
6223
6224 </DD>
6225 <DT><STRONG>Description:</STRONG></DT>
6226 <DD>Signalled when something (minor) has changed in relation to 
6227       the first parameter region. The string argument gives the
6228       change:
6229
6230 <P>
6231 <TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
6232 <TR><TD ALIGN="LEFT">String</TD>
6233 <TD ALIGN="LEFT">Description</TD>
6234 </TR>
6235 <TR><TD ALIGN="LEFT"><TT>deinit</TT></TD>
6236 <TD ALIGN="LEFT">The region is about to be deinitialised.</TD>
6237 </TR>
6238 <TR><TD ALIGN="LEFT"><TT>activated</TT></TD>
6239 <TD ALIGN="LEFT">The region has received focus.</TD>
6240 </TR>
6241 <TR><TD ALIGN="LEFT"><TT>inactivated</TT></TD>
6242 <TD ALIGN="LEFT">The region has lost focus.</TD>
6243 </TR>
6244 <TR><TD ALIGN="LEFT"><TT>activity</TT></TD>
6245 <TD ALIGN="LEFT">There's been activity in the region itself.</TD>
6246 </TR>
6247 <TR><TD ALIGN="LEFT"><TT>sub_activity</TT></TD>
6248 <TD ALIGN="LEFT">There's been activity in some sub-region.</TD>
6249 </TR>
6250 <TR><TD ALIGN="LEFT"><TT>name</TT></TD>
6251 <TD ALIGN="LEFT">The name of the region has changed.</TD>
6252 </TR>
6253 <TR><TD ALIGN="LEFT"><TT>unset_manager</TT></TD>
6254 <TD ALIGN="LEFT">The region no longer has a manager.</TD>
6255 </TR>
6256 <TR><TD ALIGN="LEFT"><TT>set_manager</TT></TD>
6257 <TD ALIGN="LEFT">The region now has a manager.</TD>
6258 </TR>
6259 <TR><TD ALIGN="LEFT"><TT>tag</TT></TD>
6260 <TD ALIGN="LEFT">Tagging state has changed.</TD>
6261 </TR>
6262 <TR><TD ALIGN="LEFT"><TT>pseudoactivated</TT></TD>
6263 <TD ALIGN="LEFT">The region has become pseudo-active
6264                       (see below).</TD>
6265 </TR>
6266 <TR><TD ALIGN="LEFT"><TT>pseudoinactivated</TT></TD>
6267 <TD ALIGN="LEFT">The region is no longer pseudo-active.</TD>
6268 </TR>
6269 </TABLE>
6270
6271 <P>
6272 A region is pseudo-active, when a) it is itself not active (does
6273       not not have the focus, and may not even have a window that could
6274       have it), but b) some region managed by it is active.
6275       
6276 </DD>
6277 </DL>
6278
6279 <P>
6280
6281 <P>
6282
6283 <H2><A NAME="SECTION007100000000000000000"></A>
6284 <A NAME="sec:miscref"></A>
6285 <BR>
6286 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">10</SPAN> Miscellaneous
6287 </H2>
6288
6289 <P>
6290
6291 <H3><A NAME="SECTION007101000000000000000"></A>
6292 <A NAME="sec:sizepolicies"></A>
6293 <BR>
6294 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">10</SPAN>.<SPAN CLASS="arabic">1</SPAN> Size policies
6295 </H3>
6296
6297 <P>
6298 Some functions accept a <TT>sizepolicy</TT> parameter. The possible
6299 values are: 
6300
6301 <P>
6302 <DIV ALIGN="LEFT">
6303 `<TT>default</TT>',
6304 `<TT>full</TT>',
6305 `<TT>full_bounds</TT>',
6306 `<TT>free</TT>',
6307 `<TT>free_glue</TT>',
6308 `<TT>northwest</TT>',
6309 `<TT>north</TT>',
6310 `<TT>northeast</TT>',
6311 `<TT>west</TT>',
6312 `<TT>center</TT>',
6313 `<TT>east</TT>',
6314 `<TT>southwest</TT>',
6315 `<TT>south</TT>',
6316 `<TT>southeast</TT>',
6317 `<TT>stretch_top</TT>',
6318 `<TT>stretch_bottom</TT>',
6319 `<TT>stretch_left</TT>',
6320 `<TT>stretch_right</TT>',
6321 `<TT>free_glue_northwest</TT>',
6322 `<TT>free_glue_north</TT>',
6323 `<TT>free_glue_northeast</TT>',
6324 `<TT>free_glue_west</TT>',
6325 `<TT>free_glue_center</TT>',
6326 `<TT>free_glue_east</TT>',
6327 `<TT>free_glue_southwest</TT>',
6328 `<TT>free_glue_south</TT>', and
6329 `<TT>free_glue_southeast</TT>'.
6330
6331 </DIV>
6332
6333 <P>
6334 The ``free'' policies allow the managed
6335 object to be moved around, whereas the other versions do not. 
6336 The ``glue'' policies glue the object to some border, while allowing
6337 it to be moved away from it by user action, but not automatically.
6338 The ``stretch'' policies stretch the object along the given border,
6339 while the coordinate-based policies simply place the object along 
6340 that border.
6341
6342 <P>
6343
6344 <P>
6345
6346 <DIV CLASS="navigation"><HR>
6347 <!--Navigation Panel-->
6348 <A NAME="tex2html383"
6349   HREF="node8.html">
6350 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
6351 <A NAME="tex2html377"
6352   HREF="ionconf.html">
6353 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
6354 <A NAME="tex2html371"
6355   HREF="node6.html">
6356 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
6357 <A NAME="tex2html379"
6358   HREF="node1.html">
6359 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
6360 <A NAME="tex2html381"
6361   HREF="node11.html">
6362 <IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
6363 <BR>
6364 <B> Next:</B> <A NAME="tex2html384"
6365   HREF="node8.html">A. The GNU General</A>
6366 <B> Up:</B> <A NAME="tex2html378"
6367   HREF="ionconf.html">Configuring and extending Ion3</A>
6368 <B> Previous:</B> <A NAME="tex2html372"
6369   HREF="node6.html">5. Scripting</A>
6370  &nbsp; <B>  <A NAME="tex2html380"
6371   HREF="node1.html">Contents</A></B> 
6372  &nbsp; <B>  <A NAME="tex2html382"
6373   HREF="node11.html">Index</A></B> </DIV>
6374 <!--End of Navigation Panel-->
6375
6376 </BODY>
6377 </HTML>