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