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