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