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