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