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