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