1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
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 -->
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">
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">
20 <LINK REL="STYLESHEET" HREF="ionconf.css">
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">
30 <DIV CLASS="navigation"><!--Navigation Panel-->
33 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
36 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
39 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
42 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
45 <IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A>
47 <B> Next:</B> <A NAME="tex2html356"
48 HREF="node8.html">A. The GNU General</A>
49 <B> Up:</B> <A NAME="tex2html350"
50 HREF="ionconf.html">Configuring and extending Ion3</A>
51 <B> Previous:</B> <A NAME="tex2html344"
52 HREF="node6.html">5. Scripting</A>
53 <B> <A NAME="tex2html352"
54 HREF="node1.html">Contents</A></B>
55 <B> <A NAME="tex2html354"
56 HREF="node11.html">Index</A></B>
59 <!--End of Navigation Panel-->
60 <!--Table of Child-Links-->
61 <A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
63 <UL CLASS="ChildLinks">
64 <LI><A NAME="tex2html357"
65 HREF="node7.html#SECTION00710000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN> Functions defined in <SPAN CLASS="textit">ioncore</SPAN></A>
67 <LI><A NAME="tex2html358"
68 HREF="node7.html#SECTION00711000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN> WClientWin functions</A>
69 <LI><A NAME="tex2html359"
70 HREF="node7.html#SECTION00712000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">2</SPAN> WFrame functions</A>
71 <LI><A NAME="tex2html360"
72 HREF="node7.html#SECTION00713000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">3</SPAN> WGroup functions</A>
73 <LI><A NAME="tex2html361"
74 HREF="node7.html#SECTION00714000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">4</SPAN> WGroupCW functions</A>
75 <LI><A NAME="tex2html362"
76 HREF="node7.html#SECTION00715000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">5</SPAN> WGroupWS functions</A>
77 <LI><A NAME="tex2html363"
78 HREF="node7.html#SECTION00716000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">6</SPAN> WInfoWin functions</A>
79 <LI><A NAME="tex2html364"
80 HREF="node7.html#SECTION00717000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">7</SPAN> WMPlex functions</A>
81 <LI><A NAME="tex2html365"
82 HREF="node7.html#SECTION00718000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">8</SPAN> WMoveresMode functions</A>
83 <LI><A NAME="tex2html366"
84 HREF="node7.html#SECTION00719000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN> WRegion functions</A>
85 <LI><A NAME="tex2html367"
86 HREF="node7.html#SECTION007110000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">10</SPAN> WRootWin functions</A>
87 <LI><A NAME="tex2html368"
88 HREF="node7.html#SECTION007111000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">11</SPAN> WScreen functions</A>
89 <LI><A NAME="tex2html369"
90 HREF="node7.html#SECTION007112000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">12</SPAN> WWindow functions</A>
91 <LI><A NAME="tex2html370"
92 HREF="node7.html#SECTION007113000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">13</SPAN> global functions</A>
93 <LI><A NAME="tex2html371"
94 HREF="node7.html#SECTION007114000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">14</SPAN> gr functions</A>
95 <LI><A NAME="tex2html372"
96 HREF="node7.html#SECTION007115000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">15</SPAN> string functions</A>
97 <LI><A NAME="tex2html373"
98 HREF="node7.html#SECTION007116000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">16</SPAN> table functions</A>
101 <LI><A NAME="tex2html374"
102 HREF="node7.html#SECTION00720000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN> Functions defined in <SPAN CLASS="textit">mod_tiling</SPAN></A>
104 <LI><A NAME="tex2html375"
105 HREF="node7.html#SECTION00721000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN> WSplit functions</A>
106 <LI><A NAME="tex2html376"
107 HREF="node7.html#SECTION00722000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN> WSplitInner functions</A>
108 <LI><A NAME="tex2html377"
109 HREF="node7.html#SECTION00723000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">3</SPAN> WSplitRegion functions</A>
110 <LI><A NAME="tex2html378"
111 HREF="node7.html#SECTION00724000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">4</SPAN> WSplitSplit functions</A>
112 <LI><A NAME="tex2html379"
113 HREF="node7.html#SECTION00725000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">5</SPAN> WTiling functions</A>
116 <LI><A NAME="tex2html380"
117 HREF="node7.html#SECTION00730000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN> Functions defined in <SPAN CLASS="textit">mod_query</SPAN></A>
119 <LI><A NAME="tex2html381"
120 HREF="node7.html#SECTION00731000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">1</SPAN> WComplProxy functions</A>
121 <LI><A NAME="tex2html382"
122 HREF="node7.html#SECTION00732000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN> WEdln functions</A>
123 <LI><A NAME="tex2html383"
124 HREF="node7.html#SECTION00733000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN> WInput functions</A>
127 <LI><A NAME="tex2html384"
128 HREF="node7.html#SECTION00740000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">4</SPAN> Functions defined in <SPAN CLASS="textit">mod_menu</SPAN></A>
130 <LI><A NAME="tex2html385"
131 HREF="node7.html#SECTION00741000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN> WMenu functions</A>
134 <LI><A NAME="tex2html386"
135 HREF="node7.html#SECTION00750000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">5</SPAN> Functions defined in <SPAN CLASS="textit">mod_dock</SPAN></A>
137 <LI><A NAME="tex2html387"
138 HREF="node7.html#SECTION00751000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">1</SPAN> WDock functions</A>
141 <LI><A NAME="tex2html388"
142 HREF="node7.html#SECTION00760000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">6</SPAN> Functions defined in <SPAN CLASS="textit">mod_sp</SPAN></A>
143 <LI><A NAME="tex2html389"
144 HREF="node7.html#SECTION00770000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">7</SPAN> Functions defined in <SPAN CLASS="textit">mod_statusbar</SPAN></A>
146 <LI><A NAME="tex2html390"
147 HREF="node7.html#SECTION00771000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">7</SPAN>.<SPAN CLASS="arabic">1</SPAN> WStatusBar functions</A>
150 <LI><A NAME="tex2html391"
151 HREF="node7.html#SECTION00780000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">8</SPAN> Functions defined in <SPAN CLASS="textit">de</SPAN></A>
152 <LI><A NAME="tex2html392"
153 HREF="node7.html#SECTION00790000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">9</SPAN> Hooks</A>
155 <!--End of Table of Child-Links-->
158 <H1><A NAME="SECTION00700000000000000000"></A>
159 <A NAME="sec:exports"></A>
161 <SPAN CLASS="arabic">6</SPAN>. Function reference
166 <H2><A NAME="SECTION00710000000000000000"></A>
167 <A NAME="sec:ioncoreref"></A>
169 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN> Functions defined in <SPAN CLASS="textit">ioncore</SPAN>
173 <DD><A NAME="4362"></A>
175 <A NAME="fn:ioncore.TR"></A>
177 <DT><STRONG>Synopsis:</STRONG></DT>
178 <DD><TT>ioncore.TR(s, ...)</TT>
181 <DT><STRONG>Description:</STRONG></DT>
182 <DD>gettext+string.format
190 <DD><A NAME="4364"></A>
192 <A NAME="fn:ioncore.bdoc"></A>
194 <DT><STRONG>Synopsis:</STRONG></DT>
195 <DD><TT>ioncore.bdoc(text)</TT>
198 <DT><STRONG>Description:</STRONG></DT>
199 <DD>Used to enter documentation among bindings so that other programs
200 can read it. Does nothing.
208 <DD><A NAME="4366"></A>
210 <A NAME="fn:ioncore.chdir_for"></A>
212 <DT><STRONG>Synopsis:</STRONG></DT>
213 <DD><TT>ioncore.chdir_for(reg, dir)</TT>
216 <DT><STRONG>Description:</STRONG></DT>
217 <DD>Change default working directory for new programs started in <TT>reg</TT>.
225 <DD><A NAME="4368"></A>
227 <A NAME="fn:ioncore.compile_cmd"></A>
229 <DT><STRONG>Synopsis:</STRONG></DT>
230 <DD><TT>ioncore.compile_cmd(cmd, guard)</TT>
233 <DT><STRONG>Description:</STRONG></DT>
234 <DD>Compile string <TT>cmd</TT> into a bindable function. Within <TT>cmd</TT>, the
235 variable ''<TT>_</TT>'' (underscore) can be used to refer to the object
236 that was selecting for the bound action and chosen to handle it.
237 The variable ''<TT>_sub</TT>'' refers to a ''currently active'' sub-object
238 of <TT>_</TT>, or a sub-object where the action loading to the binding
239 being called actually occured.
242 The string <TT>guard</TT> maybe set to pose limits on <TT>_sub</TT>. Currently
243 supported guards are <TT>_sub:non-nil</TT> and <TT>_sub:WFoobar</TT>, where
252 <DD><A NAME="4370"></A>
254 <A NAME="fn:ioncore.create_ws"></A>
256 <DT><STRONG>Synopsis:</STRONG></DT>
257 <DD><TT>ioncore.create_ws(scr, tmpl, layout)</TT>
260 <DT><STRONG>Description:</STRONG></DT>
261 <DD>Create new workspace on screen <TT>scr</TT>. The table <TT>tmpl</TT>
262 may be used to override parts of the layout named with <TT>layout</TT>.
263 If no <TT>layout</TT> is given, "default" is used.
271 <DD><A NAME="4372"></A>
273 <A NAME="fn:ioncore.defbindings"></A>
275 <DT><STRONG>Synopsis:</STRONG></DT>
276 <DD><TT>ioncore.defbindings(context, bindings)</TT>
279 <DT><STRONG>Description:</STRONG></DT>
280 <DD>Define bindings for context <TT>context</TT>. Here <TT>binding</TT> is
281 a table composed of entries created with <A HREF="#fn:ioncore.kpress"><TT>ioncore.kpress</TT></A>,
282 etc.; see section <A HREF="node4.html#sec:bindings">3.3</A> for details.
290 <DD><A NAME="4374"></A>
292 <A NAME="fn:ioncore.defctxmenu"></A>
294 <DT><STRONG>Synopsis:</STRONG></DT>
295 <DD><TT>ioncore.defctxmenu(ctx, ...)</TT>
298 <DT><STRONG>Description:</STRONG></DT>
299 <DD>Define context menu for context <TT>ctx</TT>, <TT>tab</TT> being a table
308 <DD><A NAME="4376"></A>
310 <A NAME="fn:ioncore.deflayout"></A>
312 <DT><STRONG>Synopsis:</STRONG></DT>
313 <DD><TT>ioncore.deflayout(name, tab)</TT>
316 <DT><STRONG>Description:</STRONG></DT>
317 <DD>Define a new workspace layout with name <TT>name</TT>, and
318 attach/creation parameters given in <TT>tab</TT>. The layout
319 "empty" may not be defined.
327 <DD><A NAME="4378"></A>
329 <A NAME="fn:ioncore.defmenu"></A>
331 <DT><STRONG>Synopsis:</STRONG></DT>
332 <DD><TT>ioncore.defmenu(name, tab)</TT>
335 <DT><STRONG>Description:</STRONG></DT>
336 <DD>Define a new menu with <TT>name</TT> being the menu's name and <TT>tab</TT>
337 being a table of menu entries. If <TT>tab.append</TT> is set, the entries
338 are appended to previously-defined ones, if possible.
346 <DD><A NAME="4380"></A>
348 <A NAME="fn:ioncore.defwinprop"></A>
350 <DT><STRONG>Synopsis:</STRONG></DT>
351 <DD><TT>ioncore.defwinprop(list)</TT>
354 <DT><STRONG>Description:</STRONG></DT>
355 <DD>Define a winprop. For more information, see section <A HREF="node4.html#sec:winprops">3.5</A>.
363 <DD><A NAME="4382"></A>
365 <A NAME="fn:ioncore.exec_on"></A>
367 <DT><STRONG>Synopsis:</STRONG></DT>
368 <DD><TT>ioncore.exec_on(reg, cmd, merr_internal)</TT>
371 <DT><STRONG>Description:</STRONG></DT>
372 <DD>Run <TT>cmd</TT> with the environment variable DISPLAY set to point to the
373 root window of the X screen <TT>reg</TT> is on. If <TT>cmd</TT> is prefixed
374 by a colon (<TT>:</TT>), the following command is executed in an xterm
375 (or other terminal emulator) with the help of the <TT>ion-runinxterm</TT>
376 script. If the command is prefixed by two colons, <TT>ion-runinxterm</TT>
377 will ask you to press enter after the command is finished, even if it
386 <DD><A NAME="4384"></A>
388 <A NAME="fn:ioncore.read_savefile"></A>
390 <DT><STRONG>Synopsis:</STRONG></DT>
391 <DD><TT>table ioncore.read_savefile(string basename)</TT>
394 <DT><STRONG>Description:</STRONG></DT>
403 <DD><A NAME="4386"></A>
405 <A NAME="fn:ioncore.get_savefile"></A>
407 <DT><STRONG>Synopsis:</STRONG></DT>
408 <DD><TT>string ioncore.get_savefile(string basename)</TT>
411 <DT><STRONG>Description:</STRONG></DT>
412 <DD>Get a file name to save (session) data in. The string <TT>basename</TT>
413 should contain no path or extension components.
421 <DD><A NAME="4388"></A>
423 <A NAME="fn:ioncore.lookup_script"></A>
425 <DT><STRONG>Synopsis:</STRONG></DT>
426 <DD><TT>string ioncore.lookup_script(string file, string sp)</TT>
429 <DT><STRONG>Description:</STRONG></DT>
430 <DD>Lookup script <TT>file</TT>. If <TT>try_in_dir</TT> is set, it is tried
431 before the standard search path.
439 <DD><A NAME="4390"></A>
441 <A NAME="fn:ioncore.write_savefile"></A>
443 <DT><STRONG>Synopsis:</STRONG></DT>
444 <DD><TT>bool ioncore.write_savefile(string basename, table tab)</TT>
447 <DT><STRONG>Description:</STRONG></DT>
448 <DD>Write <TT>tab</TT> in file with basename <TT>basename</TT> in the
457 <DD><A NAME="4392"></A>
459 <A NAME="fn:ioncore.find_manager"></A>
461 <DT><STRONG>Synopsis:</STRONG></DT>
462 <DD><TT>ioncore.find_manager(obj, t)</TT>
465 <DT><STRONG>Description:</STRONG></DT>
466 <DD>Find an object with type name <TT>t</TT> managing <TT>obj</TT> or one of
475 <DD><A NAME="4394"></A>
477 <A NAME="fn:ioncore.get_dir_for"></A>
479 <DT><STRONG>Synopsis:</STRONG></DT>
480 <DD><TT>ioncore.get_dir_for(reg)</TT>
483 <DT><STRONG>Description:</STRONG></DT>
484 <DD>Get default working directory for new programs started in <TT>reg</TT>.
492 <DD><A NAME="4396"></A>
494 <A NAME="fn:ioncore.getbindings"></A>
496 <DT><STRONG>Synopsis:</STRONG></DT>
497 <DD><TT>ioncore.getbindings(maybe_context)</TT>
500 <DT><STRONG>Description:</STRONG></DT>
501 <DD>Get a table of all bindings.
509 <DD><A NAME="4398"></A>
511 <A NAME="fn:ioncore.getctxmenu"></A>
513 <DT><STRONG>Synopsis:</STRONG></DT>
514 <DD><TT>ioncore.getctxmenu(name)</TT>
517 <DT><STRONG>Description:</STRONG></DT>
518 <DD>Returns a context menu defined with <A HREF="#fn:ioncore.defctxmenu"><TT>ioncore.defctxmenu</TT></A>.
526 <DD><A NAME="4400"></A>
528 <A NAME="fn:ioncore.getlayout"></A>
530 <DT><STRONG>Synopsis:</STRONG></DT>
531 <DD><TT>ioncore.getlayout(name, all)</TT>
534 <DT><STRONG>Description:</STRONG></DT>
535 <DD>Get named layout (or all of the latter parameter is set,
536 but this is for internal use only).
544 <DD><A NAME="4402"></A>
546 <A NAME="fn:ioncore.getmenu"></A>
548 <DT><STRONG>Synopsis:</STRONG></DT>
549 <DD><TT>ioncore.getmenu(name)</TT>
552 <DT><STRONG>Description:</STRONG></DT>
553 <DD>Returns a menu defined with <A HREF="#fn:ioncore.defmenu"><TT>ioncore.defmenu</TT></A>.
561 <DD><A NAME="4404"></A>
563 <A NAME="fn:ioncore.getwinprop"></A>
565 <DT><STRONG>Synopsis:</STRONG></DT>
566 <DD><TT>ioncore.getwinprop(cwin)</TT>
569 <DT><STRONG>Description:</STRONG></DT>
570 <DD>Find winprop table for <TT>cwin</TT>.
578 <DD><A NAME="4406"></A>
580 <A NAME="fn:ioncore.aboutmsg"></A>
582 <DT><STRONG>Synopsis:</STRONG></DT>
583 <DD><TT>string ioncore.aboutmsg()</TT>
586 <DT><STRONG>Description:</STRONG></DT>
587 <DD>Returns an about message (version, author, copyright notice).
595 <DD><A NAME="4408"></A>
597 <A NAME="fn:ioncore.activity_first"></A>
599 <DT><STRONG>Synopsis:</STRONG></DT>
600 <DD><TT>WRegion ioncore.activity_first()</TT>
603 <DT><STRONG>Description:</STRONG></DT>
604 <DD>Return first regio non activity list.
612 <DD><A NAME="4410"></A>
614 <A NAME="fn:ioncore.activity_i"></A>
616 <DT><STRONG>Synopsis:</STRONG></DT>
617 <DD><TT>bool ioncore.activity_i(function iterfn)</TT>
620 <DT><STRONG>Description:</STRONG></DT>
621 <DD>Iterate over activity list until <TT>iterfn</TT> returns <TT>false</TT>.
622 The function itself returns <TT>true</TT> if it reaches the end of list
623 without this happening.
631 <DD><A NAME="4412"></A>
633 <A NAME="fn:ioncore.clientwin_i"></A>
635 <DT><STRONG>Synopsis:</STRONG></DT>
636 <DD><TT>bool ioncore.clientwin_i(function fn)</TT>
639 <DT><STRONG>Description:</STRONG></DT>
640 <DD>Iterate over client windows until <TT>iterfn</TT> returns <TT>false</TT>.
641 The function itself returns <TT>true</TT> if it reaches the end of list
642 without this happening.
650 <DD><A NAME="4414"></A>
652 <A NAME="fn:ioncore.current"></A>
654 <DT><STRONG>Synopsis:</STRONG></DT>
655 <DD><TT>WRegion ioncore.current()</TT>
658 <DT><STRONG>Description:</STRONG></DT>
659 <DD>Returns the currently focused region, if any.
667 <DD><A NAME="4416"></A>
669 <A NAME="fn:ioncore.defshortening"></A>
671 <DT><STRONG>Synopsis:</STRONG></DT>
672 <DD><TT>bool ioncore.defshortening(string rx, string rule, bool always)</TT>
675 <DT><STRONG>Description:</STRONG></DT>
676 <DD>Add a rule describing how too long titles should be shortened to fit in tabs.
677 The regular expression <TT>rx</TT> (POSIX, not Lua!) is used to match titles
678 and when <TT>rx</TT> matches, <TT>rule</TT> is attempted to use as a replacement
679 for title. If <TT>always</TT> is set, the rule is used even if no shortening
683 Similarly to sed's 's' command, <TT>rule</TT> may contain characters that are
684 inserted in the resulting string and specials as follows:
687 <TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
688 <TR><TD ALIGN="LEFT">Special</TD>
689 <TD ALIGN="LEFT">Description</TD>
691 <TR><TD ALIGN="LEFT">$0</TD>
692 <TD ALIGN="LEFT">Place the original string here.</TD>
694 <TR><TD ALIGN="LEFT">$1 to $9</TD>
695 <TD ALIGN="LEFT">Insert n:th capture here (as usual,captures are surrounded
696 by parentheses in the regex).</TD>
698 <TR><TD ALIGN="LEFT">$|</TD>
699 <TD ALIGN="LEFT">Alternative shortening separator. The shortening described
700 before the first this kind of separator is tried first and
701 if it fails to make the string short enough, the next is
702 tried, and so on.</TD>
704 <TR><TD ALIGN="LEFT">$<</TD>
705 <TD ALIGN="LEFT">Remove characters on the left of this marker to shorten the
708 <TR><TD ALIGN="LEFT">$></TD>
709 <TD ALIGN="LEFT">Remove characters on the right of this marker to shorten the
710 string. Only the first $< or $> within an alternative
711 shortening is used.</TD>
721 <DD><A NAME="4418"></A>
723 <A NAME="fn:ioncore.detach"></A>
725 <DT><STRONG>Synopsis:</STRONG></DT>
726 <DD><TT>bool ioncore.detach(WRegion reg, string how)</TT>
729 <DT><STRONG>Description:</STRONG></DT>
730 <DD>Detach or reattach <TT>reg</TT>, depending on whether <TT>how</TT>
731 is 'set'/'unset'/'toggle'. (Detaching means making <TT>reg</TT>
732 managed by its nearest ancestor WGroup, framed if <TT>reg</TT> is
733 not itself WFrame. Reattaching means making it managed where
734 it used to be managed, if a return-placeholder exists.)
735 If <TT>reg</TT> is the 'bottom' of some group, the whole group is
736 detached. If <TT>reg</TT> is a WWindow, it is put into a
745 <DD><A NAME="4420"></A>
747 <A NAME="fn:ioncore.exec"></A>
749 <DT><STRONG>Synopsis:</STRONG></DT>
750 <DD><TT>integer ioncore.exec(string cmd)</TT>
753 <DT><STRONG>Description:</STRONG></DT>
754 <DD>Run <TT>cmd</TT> with the environment variable DISPLAY set to point to the
755 X display the WM is running on. No specific screen is set unlike with
756 <A HREF="#fn:WRootWin.exec_on"><TT>WRootWin.exec_on</TT></A>. The PID of the (shell executing the) new
765 <DD><A NAME="4422"></A>
767 <A NAME="fn:ioncore.find_screen_id"></A>
769 <DT><STRONG>Synopsis:</STRONG></DT>
770 <DD><TT>WScreen ioncore.find_screen_id(integer id)</TT>
773 <DT><STRONG>Description:</STRONG></DT>
774 <DD>Find the screen with numerical id <TT>id</TT>.
782 <DD><A NAME="4424"></A>
784 <A NAME="fn:ioncore.focushistory_i"></A>
786 <DT><STRONG>Synopsis:</STRONG></DT>
787 <DD><TT>bool ioncore.focushistory_i(function iterfn)</TT>
790 <DT><STRONG>Description:</STRONG></DT>
791 <DD>Iterate over focus history until <TT>iterfn</TT> returns <TT>false</TT>.
792 The function itself returns <TT>true</TT> if it reaches the end of list
793 without this happening.
801 <DD><A NAME="4426"></A>
803 <A NAME="fn:ioncore.get"></A>
805 <DT><STRONG>Synopsis:</STRONG></DT>
806 <DD><TT>table ioncore.get()</TT>
809 <DT><STRONG>Description:</STRONG></DT>
810 <DD>Get ioncore basic settings. For details see <A HREF="#fn:ioncore.set"><TT>ioncore.set</TT></A>.
818 <DD><A NAME="4428"></A>
820 <A NAME="fn:ioncore.get_paths"></A>
822 <DT><STRONG>Synopsis:</STRONG></DT>
823 <DD><TT>table ioncore.get_paths(table tab)</TT>
826 <DT><STRONG>Description:</STRONG></DT>
827 <DD>Get important directories (userdir, sessiondir, searchpath).
835 <DD><A NAME="4430"></A>
837 <A NAME="fn:ioncore.goto_activity"></A>
839 <DT><STRONG>Synopsis:</STRONG></DT>
840 <DD><TT>bool ioncore.goto_activity()</TT>
843 <DT><STRONG>Description:</STRONG></DT>
844 <DD>Go to first region on activity list.
852 <DD><A NAME="4432"></A>
854 <A NAME="fn:ioncore.goto_first"></A>
856 <DT><STRONG>Synopsis:</STRONG></DT>
857 <DD><TT>WRegion ioncore.goto_first(WRegion reg, string dirstr, table param)</TT>
860 <DT><STRONG>Description:</STRONG></DT>
861 <DD>Go to first region within <TT>reg</TT> in direction <TT>dirstr</TT>
862 (up/down/left/right/beg/end/any). For information on <TT>param</TT>,
863 see <A HREF="#fn:ioncore.navi_next"><TT>ioncore.navi_next</TT></A>. Additionally this function supports
864 the boolean <TT>nofront</TT> field, for not bringing the object to
873 <DD><A NAME="4434"></A>
875 <A NAME="fn:ioncore.goto_next"></A>
877 <DT><STRONG>Synopsis:</STRONG></DT>
878 <DD><TT>WRegion ioncore.goto_next(WRegion reg, string dirstr, table param)</TT>
881 <DT><STRONG>Description:</STRONG></DT>
882 <DD>Go to region next from <TT>reg</TT> in direction <TT>dirstr</TT>
883 (up/down/left/right/next/prev/any). For information on <TT>param</TT>,
884 see <A HREF="#fn:ioncore.navi_next"><TT>ioncore.navi_next</TT></A>. Additionally this function supports
885 the boolean <TT>nofront</TT> field, for not bringing the object to
894 <DD><A NAME="4436"></A>
896 <A NAME="fn:ioncore.goto_next_screen"></A>
898 <DT><STRONG>Synopsis:</STRONG></DT>
899 <DD><TT>WScreen ioncore.goto_next_screen()</TT>
902 <DT><STRONG>Description:</STRONG></DT>
903 <DD>Switch focus to the next screen and return it.
906 Note that this function is asynchronous; the screen will not
907 actually have received the focus when this function returns.
915 <DD><A NAME="4438"></A>
917 <A NAME="fn:ioncore.goto_nth_screen"></A>
919 <DT><STRONG>Synopsis:</STRONG></DT>
920 <DD><TT>WScreen ioncore.goto_nth_screen(integer id)</TT>
923 <DT><STRONG>Description:</STRONG></DT>
924 <DD>Switch focus to the screen with id <TT>id</TT> and return it.
927 Note that this function is asynchronous; the screen will not
928 actually have received the focus when this function returns.
936 <DD><A NAME="4440"></A>
938 <A NAME="fn:ioncore.goto_prev_screen"></A>
940 <DT><STRONG>Synopsis:</STRONG></DT>
941 <DD><TT>WScreen ioncore.goto_prev_screen()</TT>
944 <DT><STRONG>Description:</STRONG></DT>
945 <DD>Switch focus to the previous screen and return it.
948 Note that this function is asynchronous; the screen will not
949 actually have received the focus when this function returns.
957 <DD><A NAME="4442"></A>
959 <A NAME="fn:ioncore.goto_previous"></A>
961 <DT><STRONG>Synopsis:</STRONG></DT>
962 <DD><TT>WRegion ioncore.goto_previous()</TT>
965 <DT><STRONG>Description:</STRONG></DT>
966 <DD>Go to and return to a previously active region (if any).
969 Note that this function is asynchronous; the region will not
970 actually have received the focus when this function returns.
978 <DD><A NAME="4444"></A>
980 <A NAME="fn:ioncore.is_i18n"></A>
982 <DT><STRONG>Synopsis:</STRONG></DT>
983 <DD><TT>bool ioncore.is_i18n()</TT>
986 <DT><STRONG>Description:</STRONG></DT>
987 <DD>Is Ion supporting locale-specifically multibyte-encoded strings?
995 <DD><A NAME="4446"></A>
997 <A NAME="fn:ioncore.load_module"></A>
999 <DT><STRONG>Synopsis:</STRONG></DT>
1000 <DD><TT>bool ioncore.load_module(string modname)</TT>
1003 <DT><STRONG>Description:</STRONG></DT>
1004 <DD>Attempt to load a C-side module.
1012 <DD><A NAME="4448"></A>
1014 <A NAME="fn:ioncore.lookup_clientwin"></A>
1016 <DT><STRONG>Synopsis:</STRONG></DT>
1017 <DD><TT>WClientWin ioncore.lookup_clientwin(string name)</TT>
1020 <DT><STRONG>Description:</STRONG></DT>
1021 <DD>Attempt to find a client window with name <TT>name</TT>.
1029 <DD><A NAME="4450"></A>
1031 <A NAME="fn:ioncore.lookup_region"></A>
1033 <DT><STRONG>Synopsis:</STRONG></DT>
1034 <DD><TT>WRegion ioncore.lookup_region(string name, string typenam)</TT>
1037 <DT><STRONG>Description:</STRONG></DT>
1038 <DD>Attempt to find a non-client window region with name <TT>name</TT> and type
1039 inheriting <TT>typenam</TT>.
1047 <DD><A NAME="4452"></A>
1049 <A NAME="fn:ioncore.navi_first"></A>
1051 <DT><STRONG>Synopsis:</STRONG></DT>
1052 <DD><TT>WRegion ioncore.navi_first(WRegion reg, string dirstr, table param)</TT>
1055 <DT><STRONG>Description:</STRONG></DT>
1056 <DD>Find first region within <TT>reg</TT> in direction <TT>dirstr</TT>
1057 (up/down/left/right/beg/end/any). For information on <TT>param</TT>,
1058 see <A HREF="#fn:ioncore.navi_next"><TT>ioncore.navi_next</TT></A>.
1066 <DD><A NAME="4454"></A>
1068 <A NAME="fn:ioncore.navi_next"></A>
1070 <DT><STRONG>Synopsis:</STRONG></DT>
1071 <DD><TT>WRegion ioncore.navi_next(WRegion reg, string dirstr, table param)</TT>
1074 <DT><STRONG>Description:</STRONG></DT>
1075 <DD>Find region next from <TT>reg</TT> in direction <TT>dirstr</TT>
1076 (up/down/left/right/next/prev/any). The table <TT>param</TT> may
1077 contain the boolean field <TT>nowrap</TT>, instructing not to wrap
1078 around, and the WRegions <TT>no_ascend</TT> and <TT>no_descend</TT>,
1079 and boolean functions <TT>ascend_filter</TT> and <TT>descend_filter</TT>
1080 on <TT>WRegion</TT> pairs (<TT>to</TT>, <TT>from</TT>), are used to decide when
1081 to descend or ascend into another region.
1089 <DD><A NAME="4456"></A>
1091 <A NAME="fn:ioncore.popen_bgread"></A>
1093 <DT><STRONG>Synopsis:</STRONG></DT>
1094 <DD><TT>integer ioncore.popen_bgread(string cmd, function h, function errh)</TT>
1097 <DT><STRONG>Description:</STRONG></DT>
1098 <DD>Run <TT>cmd</TT> with a read pipe connected to its stdout.
1099 When data is received through the pipe, <TT>handler</TT> is called
1108 <DD><A NAME="4458"></A>
1110 <A NAME="fn:ioncore.progname"></A>
1112 <DT><STRONG>Synopsis:</STRONG></DT>
1113 <DD><TT>string ioncore.progname()</TT>
1116 <DT><STRONG>Description:</STRONG></DT>
1117 <DD>Returns the name of program using Ioncore.
1125 <DD><A NAME="4460"></A>
1127 <A NAME="fn:ioncore.region_i"></A>
1129 <DT><STRONG>Synopsis:</STRONG></DT>
1130 <DD><TT>bool ioncore.region_i(function fn, string typenam)</TT>
1133 <DT><STRONG>Description:</STRONG></DT>
1134 <DD>Iterate over all non-client window regions with (inherited) class
1135 <TT>typenam</TT> until <TT>iterfn</TT> returns <TT>false</TT>.
1136 The function itself returns <TT>true</TT> if it reaches the end of list
1137 without this happening.
1145 <DD><A NAME="4462"></A>
1147 <A NAME="fn:ioncore.request_selection"></A>
1149 <DT><STRONG>Synopsis:</STRONG></DT>
1150 <DD><TT>void ioncore.request_selection(function fn)</TT>
1153 <DT><STRONG>Description:</STRONG></DT>
1154 <DD>Request (string) selection. The function <TT>fn</TT> will be called
1155 with the selection when and if it is received.
1163 <DD><A NAME="4464"></A>
1165 <A NAME="fn:ioncore.resign"></A>
1167 <DT><STRONG>Synopsis:</STRONG></DT>
1168 <DD><TT>void ioncore.resign()</TT>
1171 <DT><STRONG>Description:</STRONG></DT>
1172 <DD>Causes the window manager to simply exit without saving
1181 <DD><A NAME="4466"></A>
1183 <A NAME="fn:ioncore.restart"></A>
1185 <DT><STRONG>Synopsis:</STRONG></DT>
1186 <DD><TT>void ioncore.restart()</TT>
1189 <DT><STRONG>Description:</STRONG></DT>
1190 <DD>Restart, saving session first.
1198 <DD><A NAME="4468"></A>
1200 <A NAME="fn:ioncore.restart_other"></A>
1202 <DT><STRONG>Synopsis:</STRONG></DT>
1203 <DD><TT>void ioncore.restart_other(string cmd)</TT>
1206 <DT><STRONG>Description:</STRONG></DT>
1207 <DD>Attempt to restart another window manager <TT>cmd</TT>.
1215 <DD><A NAME="4470"></A>
1217 <A NAME="fn:ioncore.set"></A>
1219 <DT><STRONG>Synopsis:</STRONG></DT>
1220 <DD><TT>void ioncore.set(table tab)</TT>
1223 <DT><STRONG>Description:</STRONG></DT>
1224 <DD>Set ioncore basic settings. The table <TT>tab</TT> may contain the
1228 <TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
1229 <TR><TD ALIGN="LEFT">Field</TD>
1230 <TD ALIGN="LEFT">Description</TD>
1232 <TR><TD ALIGN="LEFT"><TT>opaque_resize</TT></TD>
1233 <TD ALIGN="LEFT">(boolean) Controls whether interactive move and
1234 resize operations simply draw a rubberband during
1235 the operation (false) or immediately affect the
1236 object in question at every step (true).</TD>
1238 <TR><TD ALIGN="LEFT"><TT>warp</TT></TD>
1239 <TD ALIGN="LEFT">(boolean) Should focusing operations move the
1240 pointer to the object to be focused?</TD>
1242 <TR><TD ALIGN="LEFT"><TT>switchto</TT></TD>
1243 <TD ALIGN="LEFT">(boolean) Should a managing WMPlex switch
1244 to a newly mapped client window?</TD>
1246 <TR><TD ALIGN="LEFT"><TT>screen_notify</TT></TD>
1247 <TD ALIGN="LEFT">(boolean) Should notification tooltips be displayed
1248 for hidden workspaces with activity?</TD>
1250 <TR><TD ALIGN="LEFT"><TT>frame_default_index</TT></TD>
1251 <TD ALIGN="LEFT">(string) Specifies where to add new regions
1252 on the mutually exclusive list of a frame. One of
1253 ''last'', ''next'' (for after current), ''next-act''
1254 (for after current and anything with activity right
1257 <TR><TD ALIGN="LEFT"><TT>dblclick_delay</TT></TD>
1258 <TD ALIGN="LEFT">(integer) Delay between clicks of a double click.</TD>
1260 <TR><TD ALIGN="LEFT"><TT>kbresize_delay</TT></TD>
1261 <TD ALIGN="LEFT">(integer) Delay in milliseconds for ending keyboard
1262 resize mode after inactivity.</TD>
1264 <TR><TD ALIGN="LEFT"><TT>kbresize_t_max</TT></TD>
1265 <TD ALIGN="LEFT">(integer) Controls keyboard resize acceleration.
1266 See description below for details.</TD>
1268 <TR><TD ALIGN="LEFT"><TT>kbresize_t_min</TT></TD>
1269 <TD ALIGN="LEFT">(integer) See below.</TD>
1271 <TR><TD ALIGN="LEFT"><TT>kbresize_step</TT></TD>
1272 <TD ALIGN="LEFT">(floating point) See below.</TD>
1274 <TR><TD ALIGN="LEFT"><TT>kbresize_maxacc</TT></TD>
1275 <TD ALIGN="LEFT">(floating point) See below.</TD>
1277 <TR><TD ALIGN="LEFT"><TT>framed_transients</TT></TD>
1278 <TD ALIGN="LEFT">(boolean) Put transients in nested frames.</TD>
1280 <TR><TD ALIGN="LEFT"><TT>float_placement_method</TT></TD>
1281 <TD ALIGN="LEFT">(string) How to place floating frames.
1282 One of ''udlr'' (up-down, then left-right),
1283 ''lrud'' (left-right, then up-down) or ''random''.</TD>
1285 <TR><TD ALIGN="LEFT"><TT>mousefocus</TT></TD>
1286 <TD ALIGN="LEFT">String: ''disable'' or ''sloppy''.</TD>
1288 <TR><TD ALIGN="LEFT"><TT>unsqueeze</TT></TD>
1289 <TD ALIGN="LEFT">(boolean) Auto-unsqueeze transients/menus/queries/etc.</TD>
1291 <TR><TD ALIGN="LEFT"><TT>autoraise</TT></TD>
1292 <TD ALIGN="LEFT">(boolean) Autoraise regions in groups on goto.</TD>
1297 When a keyboard resize function is called, and at most <TT>kbresize_t_max</TT>
1298 milliseconds has passed from a previous call, acceleration factor is reset
1299 to 1.0. Otherwise, if at least <TT>kbresize_t_min</TT> milliseconds have
1300 passed from the from previous acceleration update or reset the squere root
1301 of the acceleration factor is incremented by <TT>kbresize_step</TT>. The
1302 maximum acceleration factor (pixels/call modulo size hints) is given by
1303 <TT>kbresize_maxacc</TT>. The default values are (200, 50, 30, 100).
1311 <DD><A NAME="4472"></A>
1313 <A NAME="fn:ioncore.set_paths"></A>
1315 <DT><STRONG>Synopsis:</STRONG></DT>
1316 <DD><TT>bool ioncore.set_paths(table tab)</TT>
1319 <DT><STRONG>Description:</STRONG></DT>
1320 <DD>Set important directories (sessiondir, searchpath).
1328 <DD><A NAME="4474"></A>
1330 <A NAME="fn:ioncore.set_selection"></A>
1332 <DT><STRONG>Synopsis:</STRONG></DT>
1333 <DD><TT>void ioncore.set_selection(string p)</TT>
1336 <DT><STRONG>Description:</STRONG></DT>
1337 <DD>Set primary selection and cutbuffer0 to <TT>p</TT>.
1345 <DD><A NAME="4476"></A>
1347 <A NAME="fn:ioncore.shutdown"></A>
1349 <DT><STRONG>Synopsis:</STRONG></DT>
1350 <DD><TT>void ioncore.shutdown()</TT>
1353 <DT><STRONG>Description:</STRONG></DT>
1354 <DD>End session saving it first.
1362 <DD><A NAME="4478"></A>
1364 <A NAME="fn:ioncore.snapshot"></A>
1366 <DT><STRONG>Synopsis:</STRONG></DT>
1367 <DD><TT>void ioncore.snapshot()</TT>
1370 <DT><STRONG>Description:</STRONG></DT>
1379 <DD><A NAME="4480"></A>
1381 <A NAME="fn:ioncore.tagged_clear"></A>
1383 <DT><STRONG>Synopsis:</STRONG></DT>
1384 <DD><TT>void ioncore.tagged_clear()</TT>
1387 <DT><STRONG>Description:</STRONG></DT>
1388 <DD>Untag all regions.
1396 <DD><A NAME="4482"></A>
1398 <A NAME="fn:ioncore.tagged_first"></A>
1400 <DT><STRONG>Synopsis:</STRONG></DT>
1401 <DD><TT>WRegion ioncore.tagged_first(bool untag)</TT>
1404 <DT><STRONG>Description:</STRONG></DT>
1405 <DD>Returns first tagged object, untagging it as well if <TT>untag</TT>is set.
1413 <DD><A NAME="4484"></A>
1415 <A NAME="fn:ioncore.tagged_i"></A>
1417 <DT><STRONG>Synopsis:</STRONG></DT>
1418 <DD><TT>bool ioncore.tagged_i(function iterfn)</TT>
1421 <DT><STRONG>Description:</STRONG></DT>
1422 <DD>Iterate over tagged regions until <TT>iterfn</TT> returns <TT>false</TT>.
1423 The function itself returns <TT>true</TT> if it reaches the end of list
1424 without this happening.
1432 <DD><A NAME="4486"></A>
1434 <A NAME="fn:ioncore.unsqueeze"></A>
1436 <DT><STRONG>Synopsis:</STRONG></DT>
1437 <DD><TT>void ioncore.unsqueeze(WRegion reg, bool override)</TT>
1440 <DT><STRONG>Description:</STRONG></DT>
1441 <DD>Try to detach <TT>reg</TT> if it fits poorly in its
1442 current location. This function does not do anything,
1443 unless <TT>override</TT> is set or the <TT>unsqueeze</TT> option
1444 of <A HREF="#fn:ioncore.set"><TT>ioncore.set</TT></A> is set.
1452 <DD><A NAME="4488"></A>
1454 <A NAME="fn:ioncore.version"></A>
1456 <DT><STRONG>Synopsis:</STRONG></DT>
1457 <DD><TT>string ioncore.version()</TT>
1460 <DT><STRONG>Description:</STRONG></DT>
1461 <DD>Returns Ioncore version string.
1469 <DD><A NAME="4490"></A>
1471 <A NAME="fn:ioncore.warn"></A>
1473 <DT><STRONG>Synopsis:</STRONG></DT>
1474 <DD><TT>void ioncore.warn(string str)</TT>
1477 <DT><STRONG>Description:</STRONG></DT>
1478 <DD>Issue a warning. How the message is displayed depends on the current
1487 <DD><A NAME="4492"></A>
1489 <A NAME="fn:ioncore.warn_traced"></A>
1491 <DT><STRONG>Synopsis:</STRONG></DT>
1492 <DD><TT>void ioncore.warn_traced(string str)</TT>
1495 <DT><STRONG>Description:</STRONG></DT>
1496 <DD>Similar to <A HREF="#fn:ioncore.warn"><TT>ioncore.warn</TT></A>, but also print Lua stack trace.
1504 <DD><A NAME="4494"></A>
1506 <A NAME="fn:ioncore.x_change_property"></A>
1508 <DT><STRONG>Synopsis:</STRONG></DT>
1509 <DD><TT>void ioncore.x_change_property(integer win, integer atom, integer atom_type, integer format, string mode, table tab)</TT>
1512 <DT><STRONG>Description:</STRONG></DT>
1513 <DD>Modify a window property. The <TT>mode</TT> is one of
1514 <TT>"replace"</TT>, <TT>"prepend"</TT> or <TT>"append"</TT>, and format
1515 is either 8, 16 or 32. Also see <A HREF="#fn:ioncore.x_get_window_property"><TT>ioncore.x_get_window_property</TT></A>
1516 and the <TT>XChangeProperty</TT>(3) manual page.
1524 <DD><A NAME="4496"></A>
1526 <A NAME="fn:ioncore.x_delete_property"></A>
1528 <DT><STRONG>Synopsis:</STRONG></DT>
1529 <DD><TT>void ioncore.x_delete_property(integer win, integer atom)</TT>
1532 <DT><STRONG>Description:</STRONG></DT>
1533 <DD>Delete a window property.
1541 <DD><A NAME="4498"></A>
1543 <A NAME="fn:ioncore.x_get_atom_name"></A>
1545 <DT><STRONG>Synopsis:</STRONG></DT>
1546 <DD><TT>string ioncore.x_get_atom_name(integer atom)</TT>
1549 <DT><STRONG>Description:</STRONG></DT>
1550 <DD>Get the name of an atom. See <TT>XGetAtomName</TT>(3) manual page for
1559 <DD><A NAME="4500"></A>
1561 <A NAME="fn:ioncore.x_get_text_property"></A>
1563 <DT><STRONG>Synopsis:</STRONG></DT>
1564 <DD><TT>table ioncore.x_get_text_property(integer win, integer atom)</TT>
1567 <DT><STRONG>Description:</STRONG></DT>
1568 <DD>Get a text property for a window (<TT>STRING</TT>, <TT>COMPOUND_TEXT</TT>,
1569 or <TT>UTF8_STRING</TT> property converted). The fields in the returned
1570 table (starting from 1) are the null-separated parts of the property.
1571 See the <TT>XGetTextProperty</TT>(3) manual page for more information.
1579 <DD><A NAME="4502"></A>
1581 <A NAME="fn:ioncore.x_get_window_property"></A>
1583 <DT><STRONG>Synopsis:</STRONG></DT>
1584 <DD><TT>table ioncore.x_get_window_property(integer win, integer atom, integer atom_type, integer n32expected, bool more)</TT>
1587 <DT><STRONG>Description:</STRONG></DT>
1588 <DD>Get a property <TT>atom</TT> of type <TT>atom_type</TT> for window <TT>win</TT>.
1589 The <TT>n32expected</TT> parameter indicates the expected number of 32bit
1590 words, and <TT>more</TT> indicates whether all or just this amount of data
1591 should be fetched. Each 8, 16 or 32bit element of the property, as
1592 deciphered from <TT>atom_type</TT> is a field in the returned table.
1593 See <TT>XGetWindowProperty</TT>(3) manual page for more information.
1601 <DD><A NAME="4504"></A>
1603 <A NAME="fn:ioncore.x_intern_atom"></A>
1605 <DT><STRONG>Synopsis:</STRONG></DT>
1606 <DD><TT>integer ioncore.x_intern_atom(string name, bool only_if_exists)</TT>
1609 <DT><STRONG>Description:</STRONG></DT>
1610 <DD>Create a new atom. See <TT>XInternAtom</TT>(3) manual page for details.
1618 <DD><A NAME="4506"></A>
1620 <A NAME="fn:ioncore.x_set_text_property"></A>
1622 <DT><STRONG>Synopsis:</STRONG></DT>
1623 <DD><TT>void ioncore.x_set_text_property(integer win, integer atom, table tab)</TT>
1626 <DT><STRONG>Description:</STRONG></DT>
1627 <DD>Set a text property for a window. The fields of <TT>tab</TT> starting from
1628 1 should be the different null-separated parts of the property.
1629 See the <TT>XSetTextProperty</TT>(3) manual page for more information.
1637 <DD><A NAME="4508"></A>
1639 <A NAME="fn:ioncore.kpress"></A>
1641 <DT><STRONG>Synopsis:</STRONG></DT>
1642 <DD><TT>ioncore.kpress(keyspec, cmd, guard)</TT>
1645 <DT><STRONG>Description:</STRONG></DT>
1646 <DD>Creates a binding description table for the action of pressing a key given
1647 by <TT>keyspec</TT> (with possible modifiers) to the function <TT>func</TT>.
1648 For more information on bindings, see section <A HREF="node4.html#sec:bindings">3.3</A>.
1656 <DD><A NAME="4510"></A>
1658 <A NAME="fn:ioncore.kpress_wait"></A>
1660 <DT><STRONG>Synopsis:</STRONG></DT>
1661 <DD><TT>ioncore.kpress_wait(keyspec, cmd, guard)</TT>
1664 <DT><STRONG>Description:</STRONG></DT>
1665 <DD>This is similar to <A HREF="#fn:kpress"><TT>kpress</TT></A> but after calling <TT>cmd</TT>,
1666 Ioncore waits for all modifiers to be released before processing
1667 any further actions.
1668 For more information on bindings, see section <A HREF="node4.html#sec:bindings">3.3</A>.
1676 <DD><A NAME="4512"></A>
1678 <A NAME="fn:ioncore.match_winprop_name"></A>
1680 <DT><STRONG>Synopsis:</STRONG></DT>
1681 <DD><TT>ioncore.match_winprop_name(prop, cwin)</TT>
1684 <DT><STRONG>Description:</STRONG></DT>
1685 <DD>The basic name-based winprop matching criteria.
1693 <DD><A NAME="4514"></A>
1695 <A NAME="fn:ioncore.mclick"></A>
1697 <DT><STRONG>Synopsis:</STRONG></DT>
1698 <DD><TT>ioncore.mclick(buttonspec, cmd, guard)</TT>
1701 <DT><STRONG>Description:</STRONG></DT>
1702 <DD>Creates a binding description table for the action of clicking a mouse
1703 button while possible modifier keys are pressed,
1704 both given by <TT>buttonspec</TT>, to the function <TT>func</TT>.
1705 For more information, see section <A HREF="node4.html#sec:bindings">3.3</A>.
1713 <DD><A NAME="4516"></A>
1715 <A NAME="fn:ioncore.mdblclick"></A>
1717 <DT><STRONG>Synopsis:</STRONG></DT>
1718 <DD><TT>ioncore.mdblclick(buttonspec, cmd, guard)</TT>
1721 <DT><STRONG>Description:</STRONG></DT>
1722 <DD>Similar to <A HREF="#fn:mclick"><TT>mclick</TT></A> but for double-click.
1723 Also see section <A HREF="node4.html#sec:bindings">3.3</A>.
1731 <DD><A NAME="4518"></A>
1733 <A NAME="fn:ioncore.mdrag"></A>
1735 <DT><STRONG>Synopsis:</STRONG></DT>
1736 <DD><TT>ioncore.mdrag(buttonspec, cmd, guard)</TT>
1739 <DT><STRONG>Description:</STRONG></DT>
1740 <DD>Creates a binding description table for the action of moving the mouse
1741 (or other pointing device) while the button given by <TT>buttonspec</TT>
1742 is held pressed and the modifiers given by <TT>buttonspec</TT> were pressed
1743 when the button was initially pressed.
1744 Also see section <A HREF="node4.html#sec:bindings">3.3</A>.
1752 <DD><A NAME="4520"></A>
1754 <A NAME="fn:ioncore.menuentry"></A>
1756 <DT><STRONG>Synopsis:</STRONG></DT>
1757 <DD><TT>ioncore.menuentry(name, cmd, guard_or_opts)</TT>
1760 <DT><STRONG>Description:</STRONG></DT>
1761 <DD>Use this function to define normal menu entries. The string <TT>name</TT>
1762 is the string shown in the visual representation of menu. The
1763 parameter <TT>cmd</TT> and <TT>guard_or_opts</TT> (when string) are similar
1764 to those of <A HREF="#fn:ioncore.defbindings"><TT>ioncore.defbindings</TT></A>. If <TT>guard_or_opts</TT> is
1765 a table, it may contains the <TT>guard</TT> field, and the <TT>priority</TT>
1766 field, for controlling positioning of entries in context menus.
1767 (The default priority is 1 for most entries, and -1 for auto-generated
1776 <DD><A NAME="4522"></A>
1778 <A NAME="fn:ioncore.mpress"></A>
1780 <DT><STRONG>Synopsis:</STRONG></DT>
1781 <DD><TT>ioncore.mpress(buttonspec, cmd, guard)</TT>
1784 <DT><STRONG>Description:</STRONG></DT>
1785 <DD>Similar to <A HREF="#fn:mclick"><TT>mclick</TT></A> but for just pressing the mouse button.
1786 Also see section <A HREF="node4.html#sec:bindings">3.3</A>.
1794 <DD><A NAME="4524"></A>
1796 <A NAME="fn:ioncore.refresh_stylelist"></A>
1798 <DT><STRONG>Synopsis:</STRONG></DT>
1799 <DD><TT>ioncore.refresh_stylelist()</TT>
1802 <DT><STRONG>Description:</STRONG></DT>
1803 <DD>Refresh list of known style files.
1811 <DD><A NAME="4526"></A>
1813 <A NAME="fn:ioncore.submap"></A>
1815 <DT><STRONG>Synopsis:</STRONG></DT>
1816 <DD><TT>ioncore.submap(kcb_, list)</TT>
1819 <DT><STRONG>Description:</STRONG></DT>
1820 <DD>Returns a function that creates a submap binding description table.
1821 When the key press action <TT>keyspec</TT> occurs, Ioncore will wait for
1822 a further key presse and act according to the submap.
1823 For details, see section <A HREF="node4.html#sec:bindings">3.3</A>.
1831 <DD><A NAME="4528"></A>
1833 <A NAME="fn:ioncore.submenu"></A>
1835 <DT><STRONG>Synopsis:</STRONG></DT>
1836 <DD><TT>ioncore.submenu(name, sub_or_name, options)</TT>
1839 <DT><STRONG>Description:</STRONG></DT>
1840 <DD>Use this function to define menu entries for submenus. The parameter
1841 <A HREF="#fn:sub_or_name"><TT>sub_or_name</TT></A> is either a table of menu entries or the name
1842 of an already defined menu. The initial menu entry to highlight can be
1843 specified by <TT>options.initial</TT> as either an integer starting from 1,
1844 or a function that returns such a number. Another option supported is
1845 <TT>options.noautoexpand</TT> that will cause <A HREF="#fn:mod_query.query_menu"><TT>mod_query.query_menu</TT></A>
1846 to not automatically expand this submenu.
1854 <DD><A NAME="4530"></A>
1856 <A NAME="fn:ioncore.tagged_attach"></A>
1858 <DT><STRONG>Synopsis:</STRONG></DT>
1859 <DD><TT>ioncore.tagged_attach(reg, param)</TT>
1862 <DT><STRONG>Description:</STRONG></DT>
1863 <DD>Attach tagged regions to <TT>reg</TT>. The method of attach
1864 depends on the types of attached regions and whether <TT>reg</TT>
1865 implements <TT>attach_framed</TT> and <TT>attach</TT>. If <TT>param</TT>
1866 is not set, the default of <code>{switchto=true}</code> is used.
1873 <H3><A NAME="SECTION00711000000000000000">
1874 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN> WClientWin functions</A>
1880 <DD><A NAME="4533"></A>
1882 <A NAME="fn:WClientWin.get_ident"></A>
1884 <DT><STRONG>Synopsis:</STRONG></DT>
1885 <DD><TT>table WClientWin.get_ident(WClientWin cwin)</TT>
1888 <DT><STRONG>Description:</STRONG></DT>
1889 <DD>Returns a table containing the properties <TT>WM_CLASS</TT> (table entries
1890 <TT>instance</TT> and <TT>class</TT>) and <TT>WM_WINDOW_ROLE</TT> (<TT>role</TT>)
1891 properties for <TT>cwin</TT>. If a property is not set, the corresponding
1892 field(s) are unset in the table.
1900 <DD><A NAME="4535"></A>
1902 <A NAME="fn:WClientWin.kill"></A>
1904 <DT><STRONG>Synopsis:</STRONG></DT>
1905 <DD><TT>void WClientWin.kill(WClientWin cwin)</TT>
1908 <DT><STRONG>Description:</STRONG></DT>
1909 <DD>Attempt to kill (with XKillWindow) the client that owns the X
1910 window correspoding to <TT>cwin</TT>.
1918 <DD><A NAME="4537"></A>
1920 <A NAME="fn:WClientWin.nudge"></A>
1922 <DT><STRONG>Synopsis:</STRONG></DT>
1923 <DD><TT>void WClientWin.nudge(WClientWin cwin)</TT>
1926 <DT><STRONG>Description:</STRONG></DT>
1927 <DD>Attempts to fix window size problems with non-ICCCM compliant
1936 <DD><A NAME="4539"></A>
1938 <A NAME="fn:WClientWin.quote_next"></A>
1940 <DT><STRONG>Synopsis:</STRONG></DT>
1941 <DD><TT>void WClientWin.quote_next(WClientWin cwin)</TT>
1944 <DT><STRONG>Description:</STRONG></DT>
1945 <DD>Send next key press directly to <TT>cwin</TT>.
1953 <DD><A NAME="4541"></A>
1955 <A NAME="fn:WClientWin.xid"></A>
1957 <DT><STRONG>Synopsis:</STRONG></DT>
1958 <DD><TT>double WClientWin.xid(WClientWin cwin)</TT>
1961 <DT><STRONG>Description:</STRONG></DT>
1962 <DD>Return the X window id for the client window.
1969 <H3><A NAME="SECTION00712000000000000000">
1970 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">2</SPAN> WFrame functions</A>
1976 <DD><A NAME="4544"></A>
1978 <A NAME="fn:WFrame.is_shaded"></A>
1980 <DT><STRONG>Synopsis:</STRONG></DT>
1981 <DD><TT>bool WFrame.is_shaded(WFrame frame)</TT>
1984 <DT><STRONG>Description:</STRONG></DT>
1985 <DD>Is <TT>frame</TT> shaded?
1993 <DD><A NAME="4546"></A>
1995 <A NAME="fn:WFrame.maximize_horiz"></A>
1997 <DT><STRONG>Synopsis:</STRONG></DT>
1998 <DD><TT>void WFrame.maximize_horiz(WFrame frame)</TT>
2001 <DT><STRONG>Description:</STRONG></DT>
2002 <DD>Attempt to toggle horizontal maximisation of <TT>frame</TT>.
2010 <DD><A NAME="4548"></A>
2012 <A NAME="fn:WFrame.maximize_vert"></A>
2014 <DT><STRONG>Synopsis:</STRONG></DT>
2015 <DD><TT>void WFrame.maximize_vert(WFrame frame)</TT>
2018 <DT><STRONG>Description:</STRONG></DT>
2019 <DD>Attempt to toggle vertical maximisation of <TT>frame</TT>.
2027 <DD><A NAME="4550"></A>
2029 <A NAME="fn:WFrame.mode"></A>
2031 <DT><STRONG>Synopsis:</STRONG></DT>
2032 <DD><TT>string WFrame.mode(WFrame frame)</TT>
2035 <DT><STRONG>Description:</STRONG></DT>
2044 <DD><A NAME="4552"></A>
2046 <A NAME="fn:WFrame.p_switch_tab"></A>
2048 <DT><STRONG>Synopsis:</STRONG></DT>
2049 <DD><TT>void WFrame.p_switch_tab(WFrame frame)</TT>
2052 <DT><STRONG>Description:</STRONG></DT>
2053 <DD>Display the region corresponding to the tab that the user pressed on.
2054 This function should only be used by binding it to a mouse action.
2062 <DD><A NAME="4554"></A>
2064 <A NAME="fn:WFrame.p_tabdrag"></A>
2066 <DT><STRONG>Synopsis:</STRONG></DT>
2067 <DD><TT>void WFrame.p_tabdrag(WFrame frame)</TT>
2070 <DT><STRONG>Description:</STRONG></DT>
2071 <DD>Start dragging the tab that the user pressed on with the pointing device.
2072 This function should only be used by binding it to <SPAN CLASS="textit">mpress</SPAN> or
2073 <SPAN CLASS="textit">mdrag</SPAN> action with area ''tab''.
2081 <DD><A NAME="4556"></A>
2083 <A NAME="fn:WFrame.set_mode"></A>
2085 <DT><STRONG>Synopsis:</STRONG></DT>
2086 <DD><TT>bool WFrame.set_mode(WFrame frame, string modestr)</TT>
2089 <DT><STRONG>Description:</STRONG></DT>
2098 <DD><A NAME="4558"></A>
2100 <A NAME="fn:WFrame.set_numbers"></A>
2102 <DT><STRONG>Synopsis:</STRONG></DT>
2103 <DD><TT>bool WFrame.set_numbers(WFrame frame, string how)</TT>
2106 <DT><STRONG>Description:</STRONG></DT>
2107 <DD>Control whether tabs show numbers (set/unset/toggle).
2108 Resulting state is returned, which may not be what was
2117 <DD><A NAME="4560"></A>
2119 <A NAME="fn:WFrame.set_shaded"></A>
2121 <DT><STRONG>Synopsis:</STRONG></DT>
2122 <DD><TT>bool WFrame.set_shaded(WFrame frame, string how)</TT>
2125 <DT><STRONG>Description:</STRONG></DT>
2126 <DD>Set shading state according to the parameter <TT>how</TT>
2127 (set/unset/toggle). Resulting state is returned, which may not be
2135 <H3><A NAME="SECTION00713000000000000000">
2136 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">3</SPAN> WGroup functions</A>
2142 <DD><A NAME="4563"></A>
2144 <A NAME="fn:WGroup.attach"></A>
2146 <DT><STRONG>Synopsis:</STRONG></DT>
2147 <DD><TT>WRegion WGroup.attach(WGroup ws, WRegion reg, table param)</TT>
2150 <DT><STRONG>Description:</STRONG></DT>
2151 <DD>Attach and reparent existing region <TT>reg</TT> to <TT>ws</TT>.
2152 The table <TT>param</TT> may contain the fields <TT>index</TT> and
2153 <TT>switchto</TT> that are interpreted as for <A HREF="#fn:WMPlex.attach_new"><TT>WMPlex.attach_new</TT></A>.
2161 <DD><A NAME="4565"></A>
2163 <A NAME="fn:WGroup.attach_new"></A>
2165 <DT><STRONG>Synopsis:</STRONG></DT>
2166 <DD><TT>WRegion WGroup.attach_new(WGroup ws, table param)</TT>
2169 <DT><STRONG>Description:</STRONG></DT>
2170 <DD>Create a new region to be managed by <TT>ws</TT>. At least the following
2171 fields in <TT>param</TT> are understood:
2174 <TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
2175 <TR><TD ALIGN="LEFT">Field</TD>
2176 <TD ALIGN="LEFT">Description</TD>
2178 <TR><TD ALIGN="LEFT"><TT>type</TT></TD>
2179 <TD ALIGN="LEFT">Class name (a string) of the object to be created. Mandatory.</TD>
2181 <TR><TD ALIGN="LEFT"><TT>name</TT></TD>
2182 <TD ALIGN="LEFT">Name of the object to be created (a string). Optional.</TD>
2184 <TR><TD ALIGN="LEFT"><TT>switchto</TT></TD>
2185 <TD ALIGN="LEFT">Should the region be switched to (boolean)? Optional.</TD>
2187 <TR><TD ALIGN="LEFT"><TT>level</TT></TD>
2188 <TD ALIGN="LEFT">Stacking level; default is 1.</TD>
2190 <TR><TD ALIGN="LEFT"><TT>modal</TT></TD>
2191 <TD ALIGN="LEFT">Make object modal; ignored if level is set.</TD>
2193 <TR><TD ALIGN="LEFT"><TT>sizepolicy</TT></TD>
2194 <TD ALIGN="LEFT">Size policy.</TD>
2199 In addition parameters to the region to be created are passed in this
2208 <DD><A NAME="4567"></A>
2210 <A NAME="fn:WGroup.bottom"></A>
2212 <DT><STRONG>Synopsis:</STRONG></DT>
2213 <DD><TT>WRegion WGroup.bottom(WGroup ws)</TT>
2216 <DT><STRONG>Description:</STRONG></DT>
2217 <DD>Returns the 'bottom' of <TT>ws</TT>.
2225 <DD><A NAME="4569"></A>
2227 <A NAME="fn:WGroup.is_fullscreen"></A>
2229 <DT><STRONG>Synopsis:</STRONG></DT>
2230 <DD><TT>bool WGroup.is_fullscreen(WGroup grp)</TT>
2233 <DT><STRONG>Description:</STRONG></DT>
2234 <DD>Is <TT>reg</TT> in full screen mode?
2242 <DD><A NAME="4571"></A>
2244 <A NAME="fn:WGroup.managed_i"></A>
2246 <DT><STRONG>Synopsis:</STRONG></DT>
2247 <DD><TT>bool WGroup.managed_i(WGroup ws, function iterfn)</TT>
2250 <DT><STRONG>Description:</STRONG></DT>
2251 <DD>Iterate over managed regions of <TT>ws</TT> until <TT>iterfn</TT> returns
2253 The function itself returns <TT>true</TT> if it reaches the end of list
2254 without this happening.
2262 <DD><A NAME="4573"></A>
2264 <A NAME="fn:WGroup.set_bottom"></A>
2266 <DT><STRONG>Synopsis:</STRONG></DT>
2267 <DD><TT>bool WGroup.set_bottom(WGroup ws, WRegion reg)</TT>
2270 <DT><STRONG>Description:</STRONG></DT>
2271 <DD>Sets the 'bottom' of <TT>ws</TT>. The region <TT>reg</TT> must already
2272 be managed by <TT>ws</TT>, unless <TT>nil</TT>.
2280 <DD><A NAME="4575"></A>
2282 <A NAME="fn:WGroup.set_fullscreen"></A>
2284 <DT><STRONG>Synopsis:</STRONG></DT>
2285 <DD><TT>bool WGroup.set_fullscreen(WGroup grp, string how)</TT>
2288 <DT><STRONG>Description:</STRONG></DT>
2289 <DD>Set client window <TT>reg</TT> full screen state according to the
2290 parameter <TT>how</TT> (set/unset/toggle). Resulting state is returned,
2291 which may not be what was requested.
2298 <H3><A NAME="SECTION00714000000000000000">
2299 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">4</SPAN> WGroupCW functions</A>
2304 <H3><A NAME="SECTION00715000000000000000">
2305 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">5</SPAN> WGroupWS functions</A>
2311 <DD><A NAME="4579"></A>
2313 <A NAME="fn:WGroupWS.attach_framed"></A>
2315 <DT><STRONG>Synopsis:</STRONG></DT>
2316 <DD><TT>bool WGroupWS.attach_framed(WGroupWS ws, WRegion reg, table t)</TT>
2319 <DT><STRONG>Description:</STRONG></DT>
2320 <DD>Attach region <TT>reg</TT> on <TT>ws</TT>.
2321 At least the following fields in <TT>t</TT> are supported:
2324 <TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
2325 <TR><TD ALIGN="LEFT">Field</TD>
2326 <TD ALIGN="LEFT">Description</TD>
2328 <TR><TD ALIGN="LEFT"><TT>switchto</TT></TD>
2329 <TD ALIGN="LEFT">Should the region be switched to (boolean)? Optional.</TD>
2331 <TR><TD ALIGN="LEFT"><TT>geom</TT></TD>
2332 <TD ALIGN="LEFT">Geometry; <TT>x</TT> and <TT>y</TT>, if set, indicates top-left of
2333 the frame to be created while <TT>width</TT> and <TT>height</TT>, if set, indicate
2334 the size of the client window within that frame. Optional.</TD>
2343 <H3><A NAME="SECTION00716000000000000000">
2344 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">6</SPAN> WInfoWin functions</A>
2350 <DD><A NAME="4582"></A>
2352 <A NAME="fn:WInfoWin.set_text"></A>
2354 <DT><STRONG>Synopsis:</STRONG></DT>
2355 <DD><TT>void WInfoWin.set_text(WInfoWin p, string str, integer maxw)</TT>
2358 <DT><STRONG>Description:</STRONG></DT>
2359 <DD>Set contents of the info window.
2366 <H3><A NAME="SECTION00717000000000000000">
2367 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">7</SPAN> WMPlex functions</A>
2373 <DD><A NAME="4585"></A>
2375 <A NAME="fn:WMPlex.attach"></A>
2377 <DT><STRONG>Synopsis:</STRONG></DT>
2378 <DD><TT>WRegion WMPlex.attach(WMPlex mplex, WRegion reg, table param)</TT>
2381 <DT><STRONG>Description:</STRONG></DT>
2382 <DD>Attach and reparent existing region <TT>reg</TT> to <TT>mplex</TT>.
2383 The table <TT>param</TT> may contain the fields <TT>index</TT> and
2384 <TT>switchto</TT> that are interpreted as for <A HREF="#fn:WMPlex.attach_new"><TT>WMPlex.attach_new</TT></A>.
2392 <DD><A NAME="4587"></A>
2394 <A NAME="fn:WMPlex.attach_new"></A>
2396 <DT><STRONG>Synopsis:</STRONG></DT>
2397 <DD><TT>WRegion WMPlex.attach_new(WMPlex mplex, table param)</TT>
2400 <DT><STRONG>Description:</STRONG></DT>
2401 <DD>Create a new region to be managed by <TT>mplex</TT>. At least the following
2402 fields in <TT>param</TT> are understood (all but <TT>type</TT> are optional).
2405 <TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
2406 <TR><TD ALIGN="LEFT">Field</TD>
2407 <TD ALIGN="LEFT">Description</TD>
2409 <TR><TD ALIGN="LEFT"><TT>type</TT></TD>
2410 <TD ALIGN="LEFT">(string) Class name (a string) of the object to be created.</TD>
2412 <TR><TD ALIGN="LEFT"><TT>name</TT></TD>
2413 <TD ALIGN="LEFT">(string) Name of the object to be created (a string).</TD>
2415 <TR><TD ALIGN="LEFT"><TT>switchto</TT></TD>
2416 <TD ALIGN="LEFT">(boolean) Should the region be switched to (boolean)?</TD>
2418 <TR><TD ALIGN="LEFT"><TT>unnumbered</TT></TD>
2419 <TD ALIGN="LEFT">(boolean) Do not put on the numbered mutually
2420 exclusive list.</TD>
2422 <TR><TD ALIGN="LEFT"><TT>index</TT></TD>
2423 <TD ALIGN="LEFT">(integer) Index on this list, same as for
2424 <A HREF="#fn:WMPlex.set_index"><TT>WMPlex.set_index</TT></A>.</TD>
2426 <TR><TD ALIGN="LEFT"><TT>level</TT></TD>
2427 <TD ALIGN="LEFT">(integer) Stacking level.</TD>
2429 <TR><TD ALIGN="LEFT"><TT>modal</TT></TD>
2430 <TD ALIGN="LEFT">(boolean) Shortcut for modal stacking level.</TD>
2432 <TR><TD ALIGN="LEFT"><TT>hidden</TT></TD>
2433 <TD ALIGN="LEFT">(boolean) Attach hidden, if not prevented
2434 by e.g. the mutually exclusive list being empty.
2435 This option overrides <TT>switchto</TT>.</TD>
2437 <TR><TD ALIGN="LEFT"><TT>sizepolicy</TT></TD>
2438 <TD ALIGN="LEFT">(integer) Size policy.</TD>
2440 <TR><TD ALIGN="LEFT"><TT>geom</TT></TD>
2441 <TD ALIGN="LEFT">(table) Geometry specification.</TD>
2446 In addition parameters to the region to be created are passed in this
2455 <DD><A NAME="4589"></A>
2457 <A NAME="fn:WMPlex.dec_index"></A>
2459 <DT><STRONG>Synopsis:</STRONG></DT>
2460 <DD><TT>void WMPlex.dec_index(WMPlex mplex, WRegion r)</TT>
2463 <DT><STRONG>Description:</STRONG></DT>
2464 <DD>Move <TT>r</TT> ''right'' within objects managed by <TT>mplex</TT> on list 1.
2472 <DD><A NAME="4591"></A>
2474 <A NAME="fn:WMPlex.get_index"></A>
2476 <DT><STRONG>Synopsis:</STRONG></DT>
2477 <DD><TT>integer WMPlex.get_index(WMPlex mplex, WRegion reg)</TT>
2480 <DT><STRONG>Description:</STRONG></DT>
2481 <DD>Get index of <TT>reg</TT> on the mutually exclusive list of <TT>mplex</TT>.
2482 The indices begin from zero.. If <TT>reg</TT> is not on the list,
2491 <DD><A NAME="4593"></A>
2493 <A NAME="fn:WMPlex.get_stdisp"></A>
2495 <DT><STRONG>Synopsis:</STRONG></DT>
2496 <DD><TT>table WMPlex.get_stdisp(WMPlex mplex)</TT>
2499 <DT><STRONG>Description:</STRONG></DT>
2500 <DD>Get status display information. See <A HREF="#fn:WMPlex.get_stdisp"><TT>WMPlex.get_stdisp</TT></A> for
2501 information on the fields.
2509 <DD><A NAME="4595"></A>
2511 <A NAME="fn:WMPlex.inc_index"></A>
2513 <DT><STRONG>Synopsis:</STRONG></DT>
2514 <DD><TT>void WMPlex.inc_index(WMPlex mplex, WRegion r)</TT>
2517 <DT><STRONG>Description:</STRONG></DT>
2518 <DD>Move <TT>r</TT> ''right'' within objects managed by <TT>mplex</TT> on list 1.
2526 <DD><A NAME="4597"></A>
2528 <A NAME="fn:WMPlex.is_hidden"></A>
2530 <DT><STRONG>Synopsis:</STRONG></DT>
2531 <DD><TT>bool WMPlex.is_hidden(WMPlex mplex, WRegion reg)</TT>
2534 <DT><STRONG>Description:</STRONG></DT>
2535 <DD>Is <TT>reg</TT> on within <TT>mplex</TT> and hidden?
2543 <DD><A NAME="4599"></A>
2545 <A NAME="fn:WMPlex.managed_i"></A>
2547 <DT><STRONG>Synopsis:</STRONG></DT>
2548 <DD><TT>bool WMPlex.managed_i(WMPlex mplex, function iterfn)</TT>
2551 <DT><STRONG>Description:</STRONG></DT>
2552 <DD>Iterate over managed regions of <TT>mplex</TT> until <TT>iterfn</TT> returns
2554 The function itself returns <TT>true</TT> if it reaches the end of list
2555 without this happening.
2563 <DD><A NAME="4601"></A>
2565 <A NAME="fn:WMPlex.mx_count"></A>
2567 <DT><STRONG>Synopsis:</STRONG></DT>
2568 <DD><TT>integer WMPlex.mx_count(WMPlex mplex)</TT>
2571 <DT><STRONG>Description:</STRONG></DT>
2572 <DD>Returns the number of objects on the mutually exclusive list of <TT>mplex</TT>.
2580 <DD><A NAME="4603"></A>
2582 <A NAME="fn:WMPlex.mx_current"></A>
2584 <DT><STRONG>Synopsis:</STRONG></DT>
2585 <DD><TT>WRegion WMPlex.mx_current(WMPlex mplex)</TT>
2588 <DT><STRONG>Description:</STRONG></DT>
2589 <DD>Returns the managed object currently active within the mutually exclusive
2590 list of <TT>mplex</TT>.
2598 <DD><A NAME="4605"></A>
2600 <A NAME="fn:WMPlex.mx_i"></A>
2602 <DT><STRONG>Synopsis:</STRONG></DT>
2603 <DD><TT>bool WMPlex.mx_i(WMPlex mplex, function iterfn)</TT>
2606 <DT><STRONG>Description:</STRONG></DT>
2607 <DD>Iterate over numbered/mutually exclusive region list of <TT>mplex</TT>
2608 until <TT>iterfn</TT> returns <TT>false</TT>.
2609 The function itself returns <TT>true</TT> if it reaches the end of list
2610 without this happening.
2618 <DD><A NAME="4607"></A>
2620 <A NAME="fn:WMPlex.mx_nth"></A>
2622 <DT><STRONG>Synopsis:</STRONG></DT>
2623 <DD><TT>WRegion WMPlex.mx_nth(WMPlex mplex, integer n)</TT>
2626 <DT><STRONG>Description:</STRONG></DT>
2627 <DD>Returns the <TT>n</TT>:th object managed by <TT>mplex</TT> on the
2628 <TT>l</TT>:th layer.
2636 <DD><A NAME="4609"></A>
2638 <A NAME="fn:WMPlex.set_hidden"></A>
2640 <DT><STRONG>Synopsis:</STRONG></DT>
2641 <DD><TT>bool WMPlex.set_hidden(WMPlex mplex, WRegion reg, string how)</TT>
2644 <DT><STRONG>Description:</STRONG></DT>
2645 <DD>Set the visibility of the region <TT>reg</TT> on <TT>mplex</TT>
2646 as specified with the parameter <TT>how</TT> (set/unset/toggle).
2647 The resulting state is returned.
2655 <DD><A NAME="4611"></A>
2657 <A NAME="fn:WMPlex.set_index"></A>
2659 <DT><STRONG>Synopsis:</STRONG></DT>
2660 <DD><TT>void WMPlex.set_index(WMPlex mplex, WRegion reg, integer index)</TT>
2663 <DT><STRONG>Description:</STRONG></DT>
2664 <DD>Set index of <TT>reg</TT> to <TT>index</TT> within the mutually exclusive
2665 list of <TT>mplex</TT>. Special values for <TT>index</TT> are:
2666 <TABLE CELLPADDING=3 WIDTH="100%">
2667 <TR><TD ALIGN="LEFT"><SPAN CLASS="MATH"></SPAN></TD>
2668 <TD ALIGN="LEFT">Last.</TD>
2670 <TR><TD ALIGN="LEFT"><SPAN CLASS="MATH"></SPAN></TD>
2671 <TD ALIGN="LEFT">After <A HREF="#fn:WMPlex.mx_current"><TT>WMPlex.mx_current</TT></A>.</TD>
2681 <DD><A NAME="4613"></A>
2683 <A NAME="fn:WMPlex.set_stdisp"></A>
2685 <DT><STRONG>Synopsis:</STRONG></DT>
2686 <DD><TT>WRegion WMPlex.set_stdisp(WMPlex mplex, table t)</TT>
2689 <DT><STRONG>Description:</STRONG></DT>
2690 <DD>Set/create status display for <TT>mplex</TT>. Table is a standard
2691 description of the object to be created (as passed to e.g.
2692 <A HREF="#fn:WMPlex.attach_new"><TT>WMPlex.attach_new</TT></A>). In addition, the following fields are
2696 <TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
2697 <TR><TD ALIGN="LEFT">Field</TD>
2698 <TD ALIGN="LEFT">Description</TD>
2700 <TR><TD ALIGN="LEFT"><TT>pos</TT></TD>
2701 <TD ALIGN="LEFT">The corner of the screen to place the status display
2702 in. One of <TT>tl</TT>, <TT>tr</TT>, <TT>bl</TT> or <TT>br</TT>.</TD>
2704 <TR><TD ALIGN="LEFT"><TT>action</TT></TD>
2705 <TD ALIGN="LEFT">If this field is set to <TT>keep</TT>, <TT>corner</TT>
2706 and <TT>orientation</TT> are changed for the existing
2707 status display. If this field is set to <TT>remove</TT>,
2708 the existing status display is removed. If this
2709 field is not set or is set to <TT>replace</TT>, a
2710 new status display is created and the old, if any,
2721 <DD><A NAME="4615"></A>
2723 <A NAME="fn:WMPlex.switch_next"></A>
2725 <DT><STRONG>Synopsis:</STRONG></DT>
2726 <DD><TT>void WMPlex.switch_next(WMPlex mplex)</TT>
2729 <DT><STRONG>Description:</STRONG></DT>
2730 <DD>Have <TT>mplex</TT> display next (wrt. currently selected) object managed
2739 <DD><A NAME="4617"></A>
2741 <A NAME="fn:WMPlex.switch_nth"></A>
2743 <DT><STRONG>Synopsis:</STRONG></DT>
2744 <DD><TT>void WMPlex.switch_nth(WMPlex mplex, integer n)</TT>
2747 <DT><STRONG>Description:</STRONG></DT>
2748 <DD>Have <TT>mplex</TT> display the <TT>n</TT>:th object managed by it.
2756 <DD><A NAME="4619"></A>
2758 <A NAME="fn:WMPlex.switch_prev"></A>
2760 <DT><STRONG>Synopsis:</STRONG></DT>
2761 <DD><TT>void WMPlex.switch_prev(WMPlex mplex)</TT>
2764 <DT><STRONG>Description:</STRONG></DT>
2765 <DD>Have <TT>mplex</TT> display previous (wrt. currently selected) object
2773 <H3><A NAME="SECTION00718000000000000000">
2774 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">8</SPAN> WMoveresMode functions</A>
2780 <DD><A NAME="4622"></A>
2782 <A NAME="fn:WMoveresMode.cancel"></A>
2784 <DT><STRONG>Synopsis:</STRONG></DT>
2785 <DD><TT>void WMoveresMode.cancel(WMoveresMode mode)</TT>
2788 <DT><STRONG>Description:</STRONG></DT>
2789 <DD>Return from move/resize cancelling changes if opaque
2790 move/resize has not been enabled.
2798 <DD><A NAME="4624"></A>
2800 <A NAME="fn:WMoveresMode.finish"></A>
2802 <DT><STRONG>Synopsis:</STRONG></DT>
2803 <DD><TT>void WMoveresMode.finish(WMoveresMode mode)</TT>
2806 <DT><STRONG>Description:</STRONG></DT>
2807 <DD>Return from move/resize mode and apply changes unless opaque
2808 move/resize is enabled.
2816 <DD><A NAME="4626"></A>
2818 <A NAME="fn:WMoveresMode.geom"></A>
2820 <DT><STRONG>Synopsis:</STRONG></DT>
2821 <DD><TT>table WMoveresMode.geom(WMoveresMode mode)</TT>
2824 <DT><STRONG>Description:</STRONG></DT>
2825 <DD>Returns current geometry.
2833 <DD><A NAME="4628"></A>
2835 <A NAME="fn:WMoveresMode.move"></A>
2837 <DT><STRONG>Synopsis:</STRONG></DT>
2838 <DD><TT>void WMoveresMode.move(WMoveresMode mode, integer horizmul, integer vertmul)</TT>
2841 <DT><STRONG>Description:</STRONG></DT>
2842 <DD>Move resize mode target one step:
2845 <TABLE CELLPADDING=3 BORDER="1">
2846 <TR><TD ALIGN="RIGHT"><TT>horizmul</TT>/<TT>vertmul</TT></TD>
2847 <TD ALIGN="LEFT">effect</TD>
2849 <TR><TD ALIGN="RIGHT">-1</TD>
2850 <TD ALIGN="LEFT">Move left/up</TD>
2852 <TR><TD ALIGN="RIGHT">0</TD>
2853 <TD ALIGN="LEFT">No effect</TD>
2855 <TR><TD ALIGN="RIGHT">1</TD>
2856 <TD ALIGN="LEFT">Move right/down</TD>
2866 <DD><A NAME="4630"></A>
2868 <A NAME="fn:WMoveresMode.resize"></A>
2870 <DT><STRONG>Synopsis:</STRONG></DT>
2871 <DD><TT>void WMoveresMode.resize(WMoveresMode mode, integer left, integer right, integer top, integer bottom)</TT>
2874 <DT><STRONG>Description:</STRONG></DT>
2875 <DD>Shrink or grow resize mode target one step in each direction.
2876 Acceptable values for the parameters <TT>left</TT>, <TT>right</TT>, <TT>top</TT>
2877 and <TT>bottom</TT> are as follows: -1: shrink along,
2878 0: do not change, 1: grow along corresponding border.
2886 <DD><A NAME="4632"></A>
2888 <A NAME="fn:WMoveresMode.rqgeom"></A>
2890 <DT><STRONG>Synopsis:</STRONG></DT>
2891 <DD><TT>table WMoveresMode.rqgeom(WMoveresMode mode, table g)</TT>
2894 <DT><STRONG>Description:</STRONG></DT>
2895 <DD>Request exact geometry in move/resize mode. For details on parameters,
2896 see <A HREF="#fn:WRegion.rqgeom"><TT>WRegion.rqgeom</TT></A>.
2903 <H3><A NAME="SECTION00719000000000000000">
2904 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN> WRegion functions</A>
2910 <DD><A NAME="4635"></A>
2912 <A NAME="fn:WRegion.begin_kbresize"></A>
2914 <DT><STRONG>Synopsis:</STRONG></DT>
2915 <DD><TT>WMoveresMode WRegion.begin_kbresize(WRegion reg)</TT>
2918 <DT><STRONG>Description:</STRONG></DT>
2919 <DD>Enter move/resize mode for <TT>reg</TT>. The bindings set with
2920 <A HREF="#fn:ioncore.set_bindings"><TT>ioncore.set_bindings</TT></A> for WMoveresMode are used in
2921 this mode. Of the functions exported by the Ion C core, only
2922 <A HREF="#fn:WMoveresMode.resize"><TT>WMoveresMode.resize</TT></A>, <A HREF="#fn:WMoveresMode.move"><TT>WMoveresMode.move</TT></A>,
2923 <A HREF="#fn:WMoveresMode.cancel"><TT>WMoveresMode.cancel</TT></A> and <A HREF="#fn:WMoveresMode.end"><TT>WMoveresMode.end</TT></A> are
2924 allowed to be called while in this mode.
2932 <DD><A NAME="4637"></A>
2934 <A NAME="fn:WRegion.current"></A>
2936 <DT><STRONG>Synopsis:</STRONG></DT>
2937 <DD><TT>WRegion WRegion.current(WRegion mgr)</TT>
2940 <DT><STRONG>Description:</STRONG></DT>
2941 <DD>Return the object, if any, that is considered ''currently active''
2942 within the objects managed by <TT>mplex</TT>.
2950 <DD><A NAME="4639"></A>
2952 <A NAME="fn:WRegion.geom"></A>
2954 <DT><STRONG>Synopsis:</STRONG></DT>
2955 <DD><TT>table WRegion.geom(WRegion reg)</TT>
2958 <DT><STRONG>Description:</STRONG></DT>
2959 <DD>Returns the geometry of <TT>reg</TT> within its parent; a table with fields
2960 <TT>x</TT>, <TT>y</TT>, <TT>w</TT> and <TT>h</TT>.
2968 <DD><A NAME="4641"></A>
2970 <A NAME="fn:WRegion.get_configuration"></A>
2972 <DT><STRONG>Synopsis:</STRONG></DT>
2973 <DD><TT>table WRegion.get_configuration(WRegion reg, bool clientwins)</TT>
2976 <DT><STRONG>Description:</STRONG></DT>
2977 <DD>Get configuration tree. If <TT>clientwins</TT> is unset, client windows
2986 <DD><A NAME="4643"></A>
2988 <A NAME="fn:WRegion.goto"></A>
2990 <DT><STRONG>Synopsis:</STRONG></DT>
2991 <DD><TT>bool WRegion.goto(WRegion reg)</TT>
2994 <DT><STRONG>Description:</STRONG></DT>
2995 <DD>Attempt to display <TT>reg</TT>, save region activity status and then
2996 warp to (or simply set focus to if warping is disabled) <TT>reg</TT>.
2999 Note that this function is asynchronous; the region will not
3000 actually have received the focus when this function returns.
3008 <DD><A NAME="4645"></A>
3010 <A NAME="fn:WRegion.groupleader_of"></A>
3012 <DT><STRONG>Synopsis:</STRONG></DT>
3013 <DD><TT>WRegion WRegion.groupleader_of(WRegion reg)</TT>
3016 <DT><STRONG>Description:</STRONG></DT>
3017 <DD>Returns the group of <TT>reg</TT>, if <TT>reg</TT> is its bottom,
3018 and <TT>reg</TT> itself otherwise.
3026 <DD><A NAME="4647"></A>
3028 <A NAME="fn:WRegion.is_active"></A>
3030 <DT><STRONG>Synopsis:</STRONG></DT>
3031 <DD><TT>bool WRegion.is_active(WRegion reg)</TT>
3034 <DT><STRONG>Description:</STRONG></DT>
3035 <DD>Is <TT>reg</TT> active/does it or one of it's children of focus?
3043 <DD><A NAME="4649"></A>
3045 <A NAME="fn:WRegion.is_activity"></A>
3047 <DT><STRONG>Synopsis:</STRONG></DT>
3048 <DD><TT>bool WRegion.is_activity(WRegion reg)</TT>
3051 <DT><STRONG>Description:</STRONG></DT>
3052 <DD>Is activity notification set on <TT>reg</TT>.
3060 <DD><A NAME="4651"></A>
3062 <A NAME="fn:WRegion.is_mapped"></A>
3064 <DT><STRONG>Synopsis:</STRONG></DT>
3065 <DD><TT>bool WRegion.is_mapped(WRegion reg)</TT>
3068 <DT><STRONG>Description:</STRONG></DT>
3069 <DD>Is <TT>reg</TT> visible/is it and all it's ancestors mapped?
3077 <DD><A NAME="4653"></A>
3079 <A NAME="fn:WRegion.is_tagged"></A>
3081 <DT><STRONG>Synopsis:</STRONG></DT>
3082 <DD><TT>bool WRegion.is_tagged(WRegion reg)</TT>
3085 <DT><STRONG>Description:</STRONG></DT>
3086 <DD>Is <TT>reg</TT> tagged?
3094 <DD><A NAME="4655"></A>
3096 <A NAME="fn:WRegion.manager"></A>
3098 <DT><STRONG>Synopsis:</STRONG></DT>
3099 <DD><TT>WRegion WRegion.manager(WRegion reg)</TT>
3102 <DT><STRONG>Description:</STRONG></DT>
3103 <DD>Returns the region that manages <TT>reg</TT>.
3111 <DD><A NAME="4657"></A>
3113 <A NAME="fn:WRegion.name"></A>
3115 <DT><STRONG>Synopsis:</STRONG></DT>
3116 <DD><TT>string WRegion.name(WRegion reg)</TT>
3119 <DT><STRONG>Description:</STRONG></DT>
3120 <DD>Returns the name for <TT>reg</TT>.
3128 <DD><A NAME="4659"></A>
3130 <A NAME="fn:WRegion.parent"></A>
3132 <DT><STRONG>Synopsis:</STRONG></DT>
3133 <DD><TT>WWindow WRegion.parent(WRegion reg)</TT>
3136 <DT><STRONG>Description:</STRONG></DT>
3137 <DD>Returns the parent region of <TT>reg</TT>.
3145 <DD><A NAME="4661"></A>
3147 <A NAME="fn:WRegion.rootwin_of"></A>
3149 <DT><STRONG>Synopsis:</STRONG></DT>
3150 <DD><TT>WRootWin WRegion.rootwin_of(WRegion reg)</TT>
3153 <DT><STRONG>Description:</STRONG></DT>
3154 <DD>Returns the root window <TT>reg</TT> is on.
3162 <DD><A NAME="4663"></A>
3164 <A NAME="fn:WRegion.rqclose"></A>
3166 <DT><STRONG>Synopsis:</STRONG></DT>
3167 <DD><TT>void WRegion.rqclose(WRegion reg, bool relocate)</TT>
3170 <DT><STRONG>Description:</STRONG></DT>
3171 <DD>Attempt to close/destroy <TT>reg</TT>. Whether this operation works
3172 depends on whether the particular type of region in question has
3173 implemented the feature and, in case of client windows, whether
3174 the client supports the <TT>WM_DELETE</TT> protocol (see also
3175 <A HREF="#fn:WClientWin.kill"><TT>WClientWin.kill</TT></A>). The region will not be destroyed when
3176 this function returns. To find out if and when it is destroyed,
3177 use the "deinit" notification. If <TT>relocate</TT> is not set, and
3178 <TT>reg</TT> manages other regions, it will not be closed. Otherwise
3179 the managed regions will be attempted to be relocated.
3187 <DD><A NAME="4665"></A>
3189 <A NAME="fn:WRegion.rqclose_propagate"></A>
3191 <DT><STRONG>Synopsis:</STRONG></DT>
3192 <DD><TT>WRegion WRegion.rqclose_propagate(WRegion reg, WRegion maybe_sub)</TT>
3195 <DT><STRONG>Description:</STRONG></DT>
3196 <DD>Recursively attempt to close a region or one of the regions managed by
3197 it. If <TT>sub</TT> is set, it will be used as the managed region, otherwise
3198 <A HREF="#fn:WRegion.current"><TT>WRegion.current</TT></A><TT>(reg)</TT>. The object to be closed is
3199 returned, or NULL if nothing can be closed. For further details, see
3200 notes for <A HREF="#fn:WRegion.rqclose"><TT>WRegion.rqclose</TT></A>.
3208 <DD><A NAME="4667"></A>
3210 <A NAME="fn:WRegion.rqgeom"></A>
3212 <DT><STRONG>Synopsis:</STRONG></DT>
3213 <DD><TT>table WRegion.rqgeom(WRegion reg, table g)</TT>
3216 <DT><STRONG>Description:</STRONG></DT>
3217 <DD>Attempt to resize and/or move <TT>reg</TT>. The table <TT>g</TT> is a usual
3218 geometry specification (fields <TT>x</TT>, <TT>y</TT>, <TT>w</TT> and <TT>h</TT>),
3219 but may contain missing fields, in which case, <TT>reg</TT>'s manager may
3220 attempt to leave that attribute unchanged.
3228 <DD><A NAME="4669"></A>
3230 <A NAME="fn:WRegion.rqorder"></A>
3232 <DT><STRONG>Synopsis:</STRONG></DT>
3233 <DD><TT>bool WRegion.rqorder(WRegion reg, string ord)</TT>
3236 <DT><STRONG>Description:</STRONG></DT>
3237 <DD>Request ordering. Currently supported values for <TT>ord</TT>
3238 are 'front' and 'back'.
3246 <DD><A NAME="4671"></A>
3248 <A NAME="fn:WRegion.screen_of"></A>
3250 <DT><STRONG>Synopsis:</STRONG></DT>
3251 <DD><TT>WScreen WRegion.screen_of(WRegion reg)</TT>
3254 <DT><STRONG>Description:</STRONG></DT>
3255 <DD>Returns the screen <TT>reg</TT> is on.
3263 <DD><A NAME="4673"></A>
3265 <A NAME="fn:WRegion.set_activity"></A>
3267 <DT><STRONG>Synopsis:</STRONG></DT>
3268 <DD><TT>bool WRegion.set_activity(WRegion reg, string how)</TT>
3271 <DT><STRONG>Description:</STRONG></DT>
3272 <DD>Set activity flag of <TT>reg</TT>. The <TT>how</TT> parameter most be
3273 one of (set/unset/toggle).
3281 <DD><A NAME="4675"></A>
3283 <A NAME="fn:WRegion.set_name"></A>
3285 <DT><STRONG>Synopsis:</STRONG></DT>
3286 <DD><TT>bool WRegion.set_name(WRegion reg, string p)</TT>
3289 <DT><STRONG>Description:</STRONG></DT>
3290 <DD>Set the name of <TT>reg</TT> to <TT>p</TT>. If the name is already in use,
3291 an instance number suffix <TT><n></TT> will be attempted. If <TT>p</TT> has
3292 such a suffix, it will be modified, otherwise such a suffix will be
3293 added. Setting <TT>p</TT> to nil will cause current name to be removed.
3301 <DD><A NAME="4677"></A>
3303 <A NAME="fn:WRegion.set_name_exact"></A>
3305 <DT><STRONG>Synopsis:</STRONG></DT>
3306 <DD><TT>bool WRegion.set_name_exact(WRegion reg, string p)</TT>
3309 <DT><STRONG>Description:</STRONG></DT>
3310 <DD>Similar to <A HREF="#fn:WRegion.set_name"><TT>WRegion.set_name</TT></A> except if the name is already in use,
3311 other instance numbers will not be attempted. The string <TT>p</TT> should
3312 not contain a <TT><n></TT> suffix or this function will fail.
3320 <DD><A NAME="4679"></A>
3322 <A NAME="fn:WRegion.set_tagged"></A>
3324 <DT><STRONG>Synopsis:</STRONG></DT>
3325 <DD><TT>bool WRegion.set_tagged(WRegion reg, string how)</TT>
3328 <DT><STRONG>Description:</STRONG></DT>
3329 <DD>Change tagging state of <TT>reg</TT> as defined by <TT>how</TT>
3330 (set/unset/toggle). Resulting state is returned.
3338 <DD><A NAME="4681"></A>
3340 <A NAME="fn:WRegion.size_hints"></A>
3342 <DT><STRONG>Synopsis:</STRONG></DT>
3343 <DD><TT>table WRegion.size_hints(WRegion reg)</TT>
3346 <DT><STRONG>Description:</STRONG></DT>
3347 <DD>Returns size hints for <TT>reg</TT>. The returned table always contains the
3348 fields <TT>min_?</TT>, <TT>base_?</TT> and sometimes the fields <TT>max_?</TT>,
3349 <TT>base_?</TT> and <TT>inc_?</TT>, where <TT>?</TT>=<TT>w</TT>, <TT>h</TT>.
3356 <H3><A NAME="SECTION007110000000000000000">
3357 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">10</SPAN> WRootWin functions</A>
3363 <DD><A NAME="4684"></A>
3365 <A NAME="fn:WRootWin.current_scr"></A>
3367 <DT><STRONG>Synopsis:</STRONG></DT>
3368 <DD><TT>WScreen WRootWin.current_scr(WRootWin rootwin)</TT>
3371 <DT><STRONG>Description:</STRONG></DT>
3372 <DD>Returns previously active screen on root window <TT>rootwin</TT>.
3379 <H3><A NAME="SECTION007111000000000000000">
3380 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">11</SPAN> WScreen functions</A>
3386 <DD><A NAME="4687"></A>
3388 <A NAME="fn:WScreen.id"></A>
3390 <DT><STRONG>Synopsis:</STRONG></DT>
3391 <DD><TT>integer WScreen.id(WScreen scr)</TT>
3394 <DT><STRONG>Description:</STRONG></DT>
3395 <DD>Return the numerical id for screen <TT>scr</TT>.
3403 <DD><A NAME="4689"></A>
3405 <A NAME="fn:WScreen.set_managed_offset"></A>
3407 <DT><STRONG>Synopsis:</STRONG></DT>
3408 <DD><TT>bool WScreen.set_managed_offset(WScreen scr, table offset)</TT>
3411 <DT><STRONG>Description:</STRONG></DT>
3412 <DD>Set offset of objects managed by the screen from actual screen geometry.
3413 The table <TT>offset</TT> should contain the entries <TT>x</TT>, <TT>y</TT>,
3414 <TT>w</TT> and <TT>h</TT> indicating offsets of that component of screen
3422 <H3><A NAME="SECTION007112000000000000000">
3423 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">12</SPAN> WWindow functions</A>
3429 <DD><A NAME="4692"></A>
3431 <A NAME="fn:WWindow.p_move"></A>
3433 <DT><STRONG>Synopsis:</STRONG></DT>
3434 <DD><TT>void WWindow.p_move(WWindow wwin)</TT>
3437 <DT><STRONG>Description:</STRONG></DT>
3438 <DD>Start moving <TT>wwin</TT> with the mouse or other pointing device.
3439 This function should only be used by binding it to <SPAN CLASS="textit">mpress</SPAN> or
3440 <SPAN CLASS="textit">mdrag</SPAN> action.
3448 <DD><A NAME="4694"></A>
3450 <A NAME="fn:WWindow.p_resize"></A>
3452 <DT><STRONG>Synopsis:</STRONG></DT>
3453 <DD><TT>void WWindow.p_resize(WWindow wwin)</TT>
3456 <DT><STRONG>Description:</STRONG></DT>
3457 <DD>Start resizing <TT>wwin</TT> with the mouse or other pointing device.
3458 This function should only be used by binding it to <SPAN CLASS="textit">mpress</SPAN> or
3459 <SPAN CLASS="textit">mdrag</SPAN> action.
3467 <DD><A NAME="4696"></A>
3469 <A NAME="fn:WWindow.xid"></A>
3471 <DT><STRONG>Synopsis:</STRONG></DT>
3472 <DD><TT>double WWindow.xid(WWindow wwin)</TT>
3475 <DT><STRONG>Description:</STRONG></DT>
3476 <DD>Return the X window id for <TT>wwin</TT>.
3483 <H3><A NAME="SECTION007113000000000000000">
3484 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">13</SPAN> global functions</A>
3490 <DD><A NAME="4699"></A>
3491 <A NAME="fn:export"></A>
3493 <DT><STRONG>Synopsis:</STRONG></DT>
3494 <DD><TT>export(lib, ...)</TT>
3497 <DT><STRONG>Description:</STRONG></DT>
3498 <DD>Export a list of functions from <TT>lib</TT> into global namespace.
3505 <H3><A NAME="SECTION007114000000000000000">
3506 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">14</SPAN> gr functions</A>
3512 <DD><A NAME="4701"></A>
3514 <A NAME="fn:gr.read_config"></A>
3516 <DT><STRONG>Synopsis:</STRONG></DT>
3517 <DD><TT>void gr.read_config()</TT>
3520 <DT><STRONG>Description:</STRONG></DT>
3521 <DD>Read drawing engine configuration file <SPAN CLASS="textit">draw.lua</SPAN>.
3529 <DD><A NAME="4703"></A>
3531 <A NAME="fn:gr.refresh"></A>
3533 <DT><STRONG>Synopsis:</STRONG></DT>
3534 <DD><TT>void gr.refresh()</TT>
3537 <DT><STRONG>Description:</STRONG></DT>
3538 <DD>Refresh objects' brushes to update them to use newly loaded style.
3546 <DD><A NAME="4705"></A>
3548 <A NAME="fn:gr.select_engine"></A>
3550 <DT><STRONG>Synopsis:</STRONG></DT>
3551 <DD><TT>bool gr.select_engine(string engine)</TT>
3554 <DT><STRONG>Description:</STRONG></DT>
3555 <DD>Future requests for ''brushes'' are to be forwarded to the drawing engine
3556 <TT>engine</TT>. If no engine of such name is known, a module with that name
3557 is attempted to be loaded. This function is only intended to be called from
3558 colour scheme etc. configuration files and can not be used to change the
3559 look of existing objects; for that use <A HREF="#fn:gr.read_config"><TT>gr.read_config</TT></A>.
3566 <H3><A NAME="SECTION007115000000000000000">
3567 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">15</SPAN> string functions</A>
3573 <DD><A NAME="4708"></A>
3575 <A NAME="fn:string.shell_safe"></A>
3577 <DT><STRONG>Synopsis:</STRONG></DT>
3578 <DD><TT>string.shell_safe(str)</TT>
3581 <DT><STRONG>Description:</STRONG></DT>
3582 <DD>Make <TT>str</TT> shell-safe.
3589 <H3><A NAME="SECTION007116000000000000000">
3590 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">16</SPAN> table functions</A>
3596 <DD><A NAME="4711"></A>
3598 <A NAME="fn:table.append"></A>
3600 <DT><STRONG>Synopsis:</STRONG></DT>
3601 <DD><TT>table.append(t1, t2)</TT>
3604 <DT><STRONG>Description:</STRONG></DT>
3605 <DD>Add entries that do not exist in <TT>t1</TT> from <TT>t2</TT> to <TT>t1</TT>.
3613 <DD><A NAME="4713"></A>
3615 <A NAME="fn:table.copy"></A>
3617 <DT><STRONG>Synopsis:</STRONG></DT>
3618 <DD><TT>table.copy(t, deep)</TT>
3621 <DT><STRONG>Description:</STRONG></DT>
3622 <DD>Make copy of <TT>table</TT>. If <TT>deep</TT> is unset, shallow one-level
3623 copy is made, otherwise a deep copy is made.
3631 <DD><A NAME="4715"></A>
3633 <A NAME="fn:table.icat"></A>
3635 <DT><STRONG>Synopsis:</STRONG></DT>
3636 <DD><TT>table.icat(t1, t2)</TT>
3639 <DT><STRONG>Description:</STRONG></DT>
3640 <DD>Insert all positive integer entries from t2 into t1.
3648 <DD><A NAME="4717"></A>
3650 <A NAME="fn:table.join"></A>
3652 <DT><STRONG>Synopsis:</STRONG></DT>
3653 <DD><TT>table.join(t1, t2)</TT>
3656 <DT><STRONG>Description:</STRONG></DT>
3657 <DD>Create a table containing all entries from <TT>t1</TT> and those from
3658 <TT>t2</TT> that are missing from <TT>t1</TT>.
3666 <DD><A NAME="4719"></A>
3668 <A NAME="fn:table.map"></A>
3670 <DT><STRONG>Synopsis:</STRONG></DT>
3671 <DD><TT>table.map(f, t)</TT>
3674 <DT><STRONG>Description:</STRONG></DT>
3675 <DD>Map all entries of <TT>t</TT> by <TT>f</TT>.
3682 <H2><A NAME="SECTION00720000000000000000"></A>
3683 <A NAME="sec:tilingref"></A>
3685 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN> Functions defined in <SPAN CLASS="textit">mod_tiling</SPAN>
3689 <DD><A NAME="7110"></A>
3691 <A NAME="fn:mod_tiling.get"></A>
3693 <DT><STRONG>Synopsis:</STRONG></DT>
3694 <DD><TT>table mod_tiling.get()</TT>
3697 <DT><STRONG>Description:</STRONG></DT>
3698 <DD>Get parameters. For details see <A HREF="#fn:mod_tiling.set"><TT>mod_tiling.set</TT></A>.
3706 <DD><A NAME="7112"></A>
3708 <A NAME="fn:mod_tiling.mkbottom"></A>
3710 <DT><STRONG>Synopsis:</STRONG></DT>
3711 <DD><TT>bool mod_tiling.mkbottom(WRegion reg)</TT>
3714 <DT><STRONG>Description:</STRONG></DT>
3715 <DD>Create a new WTiling 'bottom' for the group of <TT>reg</TT>,
3716 consisting of <TT>reg</TT>.
3724 <DD><A NAME="7114"></A>
3726 <A NAME="fn:mod_tiling.set"></A>
3728 <DT><STRONG>Synopsis:</STRONG></DT>
3729 <DD><TT>void mod_tiling.set(table tab)</TT>
3732 <DT><STRONG>Description:</STRONG></DT>
3733 <DD>Set parameters. Currently only <TT>raise_delay</TT> (in milliseconds)
3742 <DD><A NAME="7116"></A>
3744 <A NAME="fn:mod_tiling.untile"></A>
3746 <DT><STRONG>Synopsis:</STRONG></DT>
3747 <DD><TT>bool mod_tiling.untile(WTiling tiling)</TT>
3750 <DT><STRONG>Description:</STRONG></DT>
3751 <DD>If <TT>tiling</TT> is managed by some group, float the frames in
3752 the tiling in that group, and dispose of <TT>tiling</TT>.
3759 <H3><A NAME="SECTION00721000000000000000">
3760 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN> WSplit functions</A>
3766 <DD><A NAME="7119"></A>
3768 <A NAME="fn:WSplit.geom"></A>
3770 <DT><STRONG>Synopsis:</STRONG></DT>
3771 <DD><TT>table WSplit.geom(WSplit split)</TT>
3774 <DT><STRONG>Description:</STRONG></DT>
3775 <DD>Returns the area of workspace used by the regions under <TT>split</TT>.
3783 <DD><A NAME="7121"></A>
3785 <A NAME="fn:WSplit.parent"></A>
3787 <DT><STRONG>Synopsis:</STRONG></DT>
3788 <DD><TT>WSplitInner WSplit.parent(WSplit split)</TT>
3791 <DT><STRONG>Description:</STRONG></DT>
3792 <DD>Return parent split for <TT>split</TT>.
3800 <DD><A NAME="7123"></A>
3802 <A NAME="fn:WSplit.rqgeom"></A>
3804 <DT><STRONG>Synopsis:</STRONG></DT>
3805 <DD><TT>table WSplit.rqgeom(WSplit node, table g)</TT>
3808 <DT><STRONG>Description:</STRONG></DT>
3809 <DD>Attempt to resize and/or move the split tree starting at <TT>node</TT>.
3810 Behaviour and the <TT>g</TT> parameter are as for <A HREF="#fn:WRegion.rqgeom"><TT>WRegion.rqgeom</TT></A>
3811 operating on <TT>node</TT> (if it were a WRegion).
3819 <DD><A NAME="7125"></A>
3821 <A NAME="fn:WSplit.transpose"></A>
3823 <DT><STRONG>Synopsis:</STRONG></DT>
3824 <DD><TT>void WSplit.transpose(WSplit node)</TT>
3827 <DT><STRONG>Description:</STRONG></DT>
3828 <DD>Transpose contents of <TT>node</TT>.
3835 <H3><A NAME="SECTION00722000000000000000">
3836 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN> WSplitInner functions</A>
3842 <DD><A NAME="7128"></A>
3844 <A NAME="fn:WSplitInner.current"></A>
3846 <DT><STRONG>Synopsis:</STRONG></DT>
3847 <DD><TT>WSplit WSplitInner.current(WSplitInner node)</TT>
3850 <DT><STRONG>Description:</STRONG></DT>
3851 <DD>Returns the most previously active child node of <TT>split</TT>.
3858 <H3><A NAME="SECTION00723000000000000000">
3859 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">3</SPAN> WSplitRegion functions</A>
3865 <DD><A NAME="7131"></A>
3867 <A NAME="fn:WSplitRegion.reg"></A>
3869 <DT><STRONG>Synopsis:</STRONG></DT>
3870 <DD><TT>WRegion WSplitRegion.reg(WSplitRegion node)</TT>
3873 <DT><STRONG>Description:</STRONG></DT>
3874 <DD>Returns the region contained in <TT>node</TT>.
3881 <H3><A NAME="SECTION00724000000000000000">
3882 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">4</SPAN> WSplitSplit functions</A>
3888 <DD><A NAME="7134"></A>
3890 <A NAME="fn:WSplitSplit.br"></A>
3892 <DT><STRONG>Synopsis:</STRONG></DT>
3893 <DD><TT>WSplit WSplitSplit.br(WSplitSplit split)</TT>
3896 <DT><STRONG>Description:</STRONG></DT>
3897 <DD>Returns the bottom or right child node of <TT>split</TT> depending
3898 on the direction of the split.
3906 <DD><A NAME="7136"></A>
3908 <A NAME="fn:WSplitSplit.dir"></A>
3910 <DT><STRONG>Synopsis:</STRONG></DT>
3911 <DD><TT>string WSplitSplit.dir(WSplitSplit split)</TT>
3914 <DT><STRONG>Description:</STRONG></DT>
3915 <DD>Returns the direction of <TT>split</TT>; either ''vertical'' or
3924 <DD><A NAME="7138"></A>
3926 <A NAME="fn:WSplitSplit.flip"></A>
3928 <DT><STRONG>Synopsis:</STRONG></DT>
3929 <DD><TT>void WSplitSplit.flip(WSplitSplit split)</TT>
3932 <DT><STRONG>Description:</STRONG></DT>
3933 <DD>Flip contents of <TT>node</TT>.
3941 <DD><A NAME="7140"></A>
3943 <A NAME="fn:WSplitSplit.tl"></A>
3945 <DT><STRONG>Synopsis:</STRONG></DT>
3946 <DD><TT>WSplit WSplitSplit.tl(WSplitSplit split)</TT>
3949 <DT><STRONG>Description:</STRONG></DT>
3950 <DD>Returns the top or left child node of <TT>split</TT> depending
3951 on the direction of the split.
3958 <H3><A NAME="SECTION00725000000000000000">
3959 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">5</SPAN> WTiling functions</A>
3965 <DD><A NAME="7143"></A>
3967 <A NAME="fn:WTiling.flip_at"></A>
3969 <DT><STRONG>Synopsis:</STRONG></DT>
3970 <DD><TT>bool WTiling.flip_at(WTiling ws, WRegion reg)</TT>
3973 <DT><STRONG>Description:</STRONG></DT>
3974 <DD>Flip <TT>ws</TT> at <TT>reg</TT> or root if nil.
3982 <DD><A NAME="7145"></A>
3984 <A NAME="fn:WTiling.transpose_at"></A>
3986 <DT><STRONG>Synopsis:</STRONG></DT>
3987 <DD><TT>bool WTiling.transpose_at(WTiling ws, WRegion reg)</TT>
3990 <DT><STRONG>Description:</STRONG></DT>
3991 <DD>Transpose <TT>ws</TT> at <TT>reg</TT> or root if nil.
3999 <DD><A NAME="7147"></A>
4001 <A NAME="fn:WTiling.farthest"></A>
4003 <DT><STRONG>Synopsis:</STRONG></DT>
4004 <DD><TT>WRegion WTiling.farthest(WTiling ws, string dirstr, bool any)</TT>
4007 <DT><STRONG>Description:</STRONG></DT>
4008 <DD>Return the most previously active region on <TT>ws</TT> with no
4009 other regions next to it in direction <TT>dirstr</TT>
4010 (left/right/up/down). If <TT>any</TT> is not set, the status
4011 display is not considered.
4019 <DD><A NAME="7149"></A>
4021 <A NAME="fn:WTiling.managed_i"></A>
4023 <DT><STRONG>Synopsis:</STRONG></DT>
4024 <DD><TT>bool WTiling.managed_i(WTiling ws, function iterfn)</TT>
4027 <DT><STRONG>Description:</STRONG></DT>
4028 <DD>Iterate over managed regions of <TT>ws</TT> until <TT>iterfn</TT> returns
4030 The function itself returns <TT>true</TT> if it reaches the end of list
4031 without this happening.
4039 <DD><A NAME="7151"></A>
4041 <A NAME="fn:WTiling.nextto"></A>
4043 <DT><STRONG>Synopsis:</STRONG></DT>
4044 <DD><TT>WRegion WTiling.nextto(WTiling ws, WRegion reg, string dirstr, bool any)</TT>
4047 <DT><STRONG>Description:</STRONG></DT>
4048 <DD>Return the most previously active region next to <TT>reg</TT> in
4049 direction <TT>dirstr</TT> (left/right/up/down). The region <TT>reg</TT>
4050 must be managed by <TT>ws</TT>. If <TT>any</TT> is not set, the status display
4059 <DD><A NAME="7153"></A>
4061 <A NAME="fn:WTiling.node_of"></A>
4063 <DT><STRONG>Synopsis:</STRONG></DT>
4064 <DD><TT>WSplitRegion WTiling.node_of(WTiling ws, WRegion reg)</TT>
4067 <DT><STRONG>Description:</STRONG></DT>
4068 <DD>For region <TT>reg</TT> managed by <TT>ws</TT> return the WSplit
4069 a leaf of which <TT>reg</TT> is.
4077 <DD><A NAME="7155"></A>
4079 <A NAME="fn:WTiling.set_floating_at"></A>
4081 <DT><STRONG>Synopsis:</STRONG></DT>
4082 <DD><TT>bool WTiling.set_floating_at(WTiling ws, WRegion reg, string how, string dirstr)</TT>
4085 <DT><STRONG>Description:</STRONG></DT>
4086 <DD>Toggle floating of the sides of a split containin <TT>reg</TT> as indicated
4087 by the parameters <TT>how</TT> (set/unset/toggle) and <TT>dirstr</TT>
4088 (left/right/up/down/any). The new status is returned (and <TT>false</TT>
4097 <DD><A NAME="7157"></A>
4099 <A NAME="fn:WTiling.set_floating"></A>
4101 <DT><STRONG>Synopsis:</STRONG></DT>
4102 <DD><TT>WSplitSplit WTiling.set_floating(WTiling ws, WSplitSplit split, string how)</TT>
4105 <DT><STRONG>Description:</STRONG></DT>
4106 <DD>Toggle floating of a split's sides at <TT>split</TT> as indicated by the
4107 parameter <TT>how</TT> (set/unset/toggle). A split of the appropriate is
4108 returned, if there was a change.
4116 <DD><A NAME="7159"></A>
4118 <A NAME="fn:WTiling.split"></A>
4120 <DT><STRONG>Synopsis:</STRONG></DT>
4121 <DD><TT>WFrame WTiling.split(WTiling ws, WSplit node, string dirstr)</TT>
4124 <DT><STRONG>Description:</STRONG></DT>
4125 <DD>Create a new frame on <TT>ws</TT> above/below/left of/right of
4126 <TT>node</TT> as indicated by <TT>dirstr</TT>. If <TT>dirstr</TT> is
4127 prefixed with ''floating:'' a floating split is created.
4135 <DD><A NAME="7161"></A>
4137 <A NAME="fn:WTiling.split_at"></A>
4139 <DT><STRONG>Synopsis:</STRONG></DT>
4140 <DD><TT>WFrame WTiling.split_at(WTiling ws, WFrame frame, string dirstr, bool attach_current)</TT>
4143 <DT><STRONG>Description:</STRONG></DT>
4144 <DD>Split <TT>frame</TT> creating a new frame to direction <TT>dirstr</TT>
4145 (one of ''left'', ''right'', ''top'' or ''bottom'') of <TT>frame</TT>.
4146 If <TT>attach_current</TT> is set, the region currently displayed in
4147 <TT>frame</TT>, if any, is moved to thenew frame.
4148 If <TT>dirstr</TT> is prefixed with ''floating:'' a floating split is
4157 <DD><A NAME="7163"></A>
4159 <A NAME="fn:WTiling.split_top"></A>
4161 <DT><STRONG>Synopsis:</STRONG></DT>
4162 <DD><TT>WFrame WTiling.split_top(WTiling ws, string dirstr)</TT>
4165 <DT><STRONG>Description:</STRONG></DT>
4166 <DD>Same as <A HREF="#fn:WTiling.split"><TT>WTiling.split</TT></A> at the root of the split tree.
4174 <DD><A NAME="7165"></A>
4176 <A NAME="fn:WTiling.split_tree"></A>
4178 <DT><STRONG>Synopsis:</STRONG></DT>
4179 <DD><TT>WSplit WTiling.split_tree(WTiling ws)</TT>
4182 <DT><STRONG>Description:</STRONG></DT>
4183 <DD>Returns the root of the split tree.
4191 <DD><A NAME="7167"></A>
4193 <A NAME="fn:WTiling.unsplit_at"></A>
4195 <DT><STRONG>Synopsis:</STRONG></DT>
4196 <DD><TT>void WTiling.unsplit_at(WTiling ws, WRegion reg)</TT>
4199 <DT><STRONG>Description:</STRONG></DT>
4200 <DD>Try to relocate regions managed by <TT>reg</TT> to another frame
4201 and, if possible, destroy it.
4208 <H2><A NAME="SECTION00730000000000000000"></A>
4209 <A NAME="sec:queryref"></A>
4211 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN> Functions defined in <SPAN CLASS="textit">mod_query</SPAN>
4215 <DD><A NAME="8171"></A>
4217 <A NAME="fn:mod_query.defcmd"></A>
4219 <DT><STRONG>Synopsis:</STRONG></DT>
4220 <DD><TT>mod_query.defcmd(cmd, fn)</TT>
4223 <DT><STRONG>Description:</STRONG></DT>
4224 <DD>Define a command override for the <A HREF="#fn:mod_query.query_exec"><TT>query_exec</TT></A> query.
4232 <DD><A NAME="8173"></A>
4234 <A NAME="fn:mod_query.message"></A>
4236 <DT><STRONG>Synopsis:</STRONG></DT>
4237 <DD><TT>mod_query.message(mplex, str)</TT>
4240 <DT><STRONG>Description:</STRONG></DT>
4241 <DD>Display a message in <TT>mplex</TT>.
4249 <DD><A NAME="8175"></A>
4251 <A NAME="fn:mod_query.get"></A>
4253 <DT><STRONG>Synopsis:</STRONG></DT>
4254 <DD><TT>table mod_query.get()</TT>
4257 <DT><STRONG>Description:</STRONG></DT>
4258 <DD>Get module configuration. For more information see
4259 <A HREF="#fn:mod_query.set"><TT>mod_query.set</TT></A>.
4267 <DD><A NAME="8177"></A>
4269 <A NAME="fn:mod_query.history_clear"></A>
4271 <DT><STRONG>Synopsis:</STRONG></DT>
4272 <DD><TT>void mod_query.history_clear()</TT>
4275 <DT><STRONG>Description:</STRONG></DT>
4276 <DD>Clear line editor history.
4284 <DD><A NAME="8179"></A>
4286 <A NAME="fn:mod_query.history_get"></A>
4288 <DT><STRONG>Synopsis:</STRONG></DT>
4289 <DD><TT>string mod_query.history_get(integer n)</TT>
4292 <DT><STRONG>Description:</STRONG></DT>
4293 <DD>Get entry at index <TT>n</TT> in line editor history, 0 being the latest.
4301 <DD><A NAME="8181"></A>
4303 <A NAME="fn:mod_query.history_push"></A>
4305 <DT><STRONG>Synopsis:</STRONG></DT>
4306 <DD><TT>bool mod_query.history_push(string str)</TT>
4309 <DT><STRONG>Description:</STRONG></DT>
4310 <DD>Push an entry into line editor history.
4318 <DD><A NAME="8183"></A>
4320 <A NAME="fn:mod_query.history_search"></A>
4322 <DT><STRONG>Synopsis:</STRONG></DT>
4323 <DD><TT>integer mod_query.history_search(string s, integer from, bool bwd, bool exact)</TT>
4326 <DT><STRONG>Description:</STRONG></DT>
4327 <DD>Try to find matching history entry. Returns -1 if none was
4328 found. The parameter <TT>from</TT> specifies where to start
4329 searching from, and <TT>bwd</TT> causes backward search from
4330 that point. If <TT>exact</TT> is not set, <TT>s</TT> only required
4331 to be a prefix of the match.
4339 <DD><A NAME="8185"></A>
4341 <A NAME="fn:mod_query.history_table"></A>
4343 <DT><STRONG>Synopsis:</STRONG></DT>
4344 <DD><TT>table mod_query.history_table()</TT>
4347 <DT><STRONG>Description:</STRONG></DT>
4348 <DD>Return table of history entries.
4356 <DD><A NAME="8187"></A>
4358 <A NAME="fn:mod_query.set"></A>
4360 <DT><STRONG>Synopsis:</STRONG></DT>
4361 <DD><TT>void mod_query.set(table tab)</TT>
4364 <DT><STRONG>Description:</STRONG></DT>
4365 <DD>Set module configuration. The following are supported:
4368 <TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
4369 <TR><TD ALIGN="LEFT">Field</TD>
4370 <TD ALIGN="LEFT">Description</TD>
4372 <TR><TD ALIGN="LEFT"><TT>autoshowcompl</TT></TD>
4373 <TD ALIGN="LEFT">(boolean) Is auto-show-completions enabled?
4374 (default: true).</TD>
4376 <TR><TD ALIGN="LEFT"><TT>autoshowcompl_delay</TT></TD>
4377 <TD ALIGN="LEFT">(integer) auto-show-completions delay
4378 in milliseconds (default: 250).</TD>
4380 <TR><TD ALIGN="LEFT"><TT>caseicompl</TT></TD>
4381 <TD ALIGN="LEFT">(boolean) Turn some completions case-insensitive
4382 (default: false).</TD>
4392 <DD><A NAME="8189"></A>
4394 <A NAME="fn:mod_query.popen_completions"></A>
4396 <DT><STRONG>Synopsis:</STRONG></DT>
4397 <DD><TT>mod_query.popen_completions(cp, cmd, fn, reshnd)</TT>
4400 <DT><STRONG>Description:</STRONG></DT>
4401 <DD>This function can be used to read completions from an external source.
4402 The parameter <TT>cp</TT> is the completion proxy to be used,
4403 and the string <TT>cmd</TT> the shell command to be executed. To its stdout,
4404 the command should on the first line write the <TT>common_beg</TT>
4405 parameter of <A HREF="#fn:WComplProxy.set_completions"><TT>WComplProxy.set_completions</TT></A> (which <TT>fn</TT> maybe used
4406 to override) and a single actual completion on each of the successive lines.
4407 The function <TT>reshnd</TT> may be used to override a result table
4416 <DD><A NAME="8191"></A>
4418 <A NAME="fn:mod_query.query"></A>
4420 <DT><STRONG>Synopsis:</STRONG></DT>
4421 <DD><TT>mod_query.query(mplex, prompt, initvalue, handler, completor,
4425 <DT><STRONG>Description:</STRONG></DT>
4426 <DD>Low-level query routine. <TT>mplex</TT> is the WMPlex to display
4427 the query in, <TT>prompt</TT> the prompt string, and <TT>initvalue</TT>
4428 the initial contents of the query box. <TT>handler</TT> is a function
4429 that receives (<TT>mplex</TT>, result string) as parameter when the
4430 query has been succesfully completed, <TT>completor</TT> the completor
4431 routine which receives a (<TT>cp</TT>, <TT>str</TT>, <TT>point</TT>) as parameters.
4432 The parameter <TT>str</TT> is the string to be completed and <TT>point</TT>
4433 cursor's location within it. Completions should be eventually,
4434 possibly asynchronously, set with <A HREF="#fn:WComplProxy.set_completions"><TT>WComplProxy.set_completions</TT></A>
4443 <DD><A NAME="8193"></A>
4445 <A NAME="fn:mod_query.query_attachclient"></A>
4447 <DT><STRONG>Synopsis:</STRONG></DT>
4448 <DD><TT>mod_query.query_attachclient(mplex)</TT>
4451 <DT><STRONG>Description:</STRONG></DT>
4452 <DD>This query asks for the name of a client window and switches
4453 focus to the one entered. It uses the completion function
4454 <A HREF="#fn:ioncore.complete_clientwin"><TT>ioncore.complete_clientwin</TT></A>.
4462 <DD><A NAME="8195"></A>
4464 <A NAME="fn:mod_query.query_editfile"></A>
4466 <DT><STRONG>Synopsis:</STRONG></DT>
4467 <DD><TT>mod_query.query_editfile(mplex, script, prompt)</TT>
4470 <DT><STRONG>Description:</STRONG></DT>
4471 <DD>Asks for a file to be edited. This script uses
4472 <TT>run-mailcap -mode=edit</TT> by default, but you may provide an
4473 alternative script to use. The default prompt is "Edit file:" (translated).
4481 <DD><A NAME="8197"></A>
4483 <A NAME="fn:mod_query.query_exec"></A>
4485 <DT><STRONG>Synopsis:</STRONG></DT>
4486 <DD><TT>mod_query.query_exec(mplex)</TT>
4489 <DT><STRONG>Description:</STRONG></DT>
4490 <DD>This function asks for a command to execute with <SPAN CLASS="textit">/bin/sh</SPAN>.
4491 If the command is prefixed with a colon (':'), the command will
4492 be run in an XTerm (or other terminal emulator) using the script
4493 <SPAN CLASS="textit">ion-runinxterm</SPAN>. Two colons ('::') will ask you to press
4494 enter after the command has finished.
4502 <DD><A NAME="8199"></A>
4504 <A NAME="fn:mod_query.query_gotoclient"></A>
4506 <DT><STRONG>Synopsis:</STRONG></DT>
4507 <DD><TT>mod_query.query_gotoclient(mplex)</TT>
4510 <DT><STRONG>Description:</STRONG></DT>
4511 <DD>This query asks for the name of a client window and attaches
4512 it to the frame the query was opened in. It uses the completion
4513 function <A HREF="#fn:ioncore.complete_clientwin"><TT>ioncore.complete_clientwin</TT></A>.
4521 <DD><A NAME="8201"></A>
4523 <A NAME="fn:mod_query.query_lua"></A>
4525 <DT><STRONG>Synopsis:</STRONG></DT>
4526 <DD><TT>mod_query.query_lua(mplex)</TT>
4529 <DT><STRONG>Description:</STRONG></DT>
4530 <DD>This query asks for Lua code to execute. It sets the variable '<TT>_</TT>'
4531 in the local environment of the string to point to the mplex where the
4532 query was created. It also sets the table <TT>arg</TT> in the local
4533 environment to <TT>{_, _:current()}</TT>.
4541 <DD><A NAME="8203"></A>
4543 <A NAME="fn:mod_query.query_man"></A>
4545 <DT><STRONG>Synopsis:</STRONG></DT>
4546 <DD><TT>mod_query.query_man(mplex, prog)</TT>
4549 <DT><STRONG>Description:</STRONG></DT>
4550 <DD>This query asks for a manual page to display. By default it runs the
4551 <TT>man</TT> command in an <TT>xterm</TT> using <TT>ion-runinxterm</TT>,
4552 but it is possible to pass another program as the <TT>prog</TT> argument.
4560 <DD><A NAME="8205"></A>
4562 <A NAME="fn:mod_query.query_menu"></A>
4564 <DT><STRONG>Synopsis:</STRONG></DT>
4565 <DD><TT>mod_query.query_menu(mplex, sub, themenu, prompt)</TT>
4568 <DT><STRONG>Description:</STRONG></DT>
4569 <DD>This query can be used to create a query of a defined menu.
4577 <DD><A NAME="8207"></A>
4579 <A NAME="fn:mod_query.query_renameframe"></A>
4581 <DT><STRONG>Synopsis:</STRONG></DT>
4582 <DD><TT>mod_query.query_renameframe(frame)</TT>
4585 <DT><STRONG>Description:</STRONG></DT>
4586 <DD>This function asks for a name new for the frame where the query
4595 <DD><A NAME="8209"></A>
4597 <A NAME="fn:mod_query.query_renameworkspace"></A>
4599 <DT><STRONG>Synopsis:</STRONG></DT>
4600 <DD><TT>mod_query.query_renameworkspace(mplex, ws)</TT>
4603 <DT><STRONG>Description:</STRONG></DT>
4604 <DD>This function asks for a name new for the workspace <TT>ws</TT>,
4605 or the one on which <TT>mplex</TT> resides, if it is not set.
4606 If <TT>mplex</TT> is not set, one is looked for.
4614 <DD><A NAME="8211"></A>
4616 <A NAME="fn:mod_query.query_restart"></A>
4618 <DT><STRONG>Synopsis:</STRONG></DT>
4619 <DD><TT>mod_query.query_restart(mplex)</TT>
4622 <DT><STRONG>Description:</STRONG></DT>
4623 <DD>This query asks whether the user wants restart Ioncore.
4624 If the answer is 'y', 'Y' or 'yes', so will happen.
4632 <DD><A NAME="8213"></A>
4634 <A NAME="fn:mod_query.query_runfile"></A>
4636 <DT><STRONG>Synopsis:</STRONG></DT>
4637 <DD><TT>mod_query.query_runfile(mplex, script, prompt)</TT>
4640 <DT><STRONG>Description:</STRONG></DT>
4641 <DD>Asks for a file to be viewed. This script uses
4642 <TT>run-mailcap -action=view</TT> by default, but you may provide an
4643 alternative script to use. The default prompt is "View file:" (translated).
4651 <DD><A NAME="8215"></A>
4653 <A NAME="fn:mod_query.query_shutdown"></A>
4655 <DT><STRONG>Synopsis:</STRONG></DT>
4656 <DD><TT>mod_query.query_shutdown(mplex)</TT>
4659 <DT><STRONG>Description:</STRONG></DT>
4660 <DD>This query asks whether the user wants to exit Ion (no session manager)
4661 or close the session (running under a session manager that supports such
4662 requests). If the answer is 'y', 'Y' or 'yes', so will happen.
4670 <DD><A NAME="8217"></A>
4672 <A NAME="fn:mod_query.query_ssh"></A>
4674 <DT><STRONG>Synopsis:</STRONG></DT>
4675 <DD><TT>mod_query.query_ssh(mplex, ssh)</TT>
4678 <DT><STRONG>Description:</STRONG></DT>
4679 <DD>This query asks for a host to connect to with SSH.
4680 Hosts to tab-complete are read from <SPAN CLASS="textit">~/.ssh/known_hosts</SPAN>.
4688 <DD><A NAME="8220"></A>
4690 <A NAME="fn:mod_query.query_workspace"></A>
4692 <DT><STRONG>Synopsis:</STRONG></DT>
4693 <DD><TT>mod_query.query_workspace(mplex)</TT>
4696 <DT><STRONG>Description:</STRONG></DT>
4697 <DD>This query asks for the name of a workspace. If a workspace
4698 (an object inheriting WGroupWS) with such a name exists,
4699 it will be switched to. Otherwise a new workspace with the
4700 entered name will be created and the user will be queried for
4701 the type of the workspace.
4709 <DD><A NAME="8222"></A>
4711 <A NAME="fn:mod_query.query_yesno"></A>
4713 <DT><STRONG>Synopsis:</STRONG></DT>
4714 <DD><TT>mod_query.query_yesno(mplex, prompt, handler)</TT>
4717 <DT><STRONG>Description:</STRONG></DT>
4718 <DD>This function query will display a query with prompt <TT>prompt</TT> in
4719 <TT>mplex</TT> and if the user answers affirmately, call <TT>handler</TT>
4720 with <TT>mplex</TT> as parameter.
4728 <DD><A NAME="8224"></A>
4730 <A NAME="fn:mod_query.show_about_ion"></A>
4732 <DT><STRONG>Synopsis:</STRONG></DT>
4733 <DD><TT>mod_query.show_about_ion(mplex)</TT>
4736 <DT><STRONG>Description:</STRONG></DT>
4737 <DD>Display an "About Ion" message in <TT>mplex</TT>.
4745 <DD><A NAME="8226"></A>
4747 <A NAME="fn:mod_query.show_tree"></A>
4749 <DT><STRONG>Synopsis:</STRONG></DT>
4750 <DD><TT>mod_query.show_tree(mplex, reg, max_depth)</TT>
4753 <DT><STRONG>Description:</STRONG></DT>
4754 <DD>Show information about a region tree
4762 <DD><A NAME="8228"></A>
4764 <A NAME="fn:mod_query.warn"></A>
4766 <DT><STRONG>Synopsis:</STRONG></DT>
4767 <DD><TT>mod_query.warn(mplex, str)</TT>
4770 <DT><STRONG>Description:</STRONG></DT>
4771 <DD>Display an error message box in the multiplexer <TT>mplex</TT>.
4778 <H3><A NAME="SECTION00731000000000000000">
4779 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">1</SPAN> WComplProxy functions</A>
4785 <DD><A NAME="8231"></A>
4787 <A NAME="fn:WComplProxy.set_completions"></A>
4789 <DT><STRONG>Synopsis:</STRONG></DT>
4790 <DD><TT>bool WComplProxy.set_completions(WComplProxy proxy, table compls)</TT>
4793 <DT><STRONG>Description:</STRONG></DT>
4794 <DD>Set completion list of the WEdln that <TT>proxy</TT> refers to to
4795 <TT>compls</TT>, if it is still waiting for this completion run. The
4796 numerical indexes of <TT>compls</TT> list the found completions. If the
4797 entry <TT>common_beg</TT> (<TT>common_end</TT>) exists, it gives an extra
4798 common prefix (suffix) of all found completions.
4805 <H3><A NAME="SECTION00732000000000000000">
4806 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN> WEdln functions</A>
4812 <DD><A NAME="8234"></A>
4814 <A NAME="fn:WEdln.back"></A>
4816 <DT><STRONG>Synopsis:</STRONG></DT>
4817 <DD><TT>void WEdln.back(WEdln wedln)</TT>
4820 <DT><STRONG>Description:</STRONG></DT>
4821 <DD>Move backward one character.
4829 <DD><A NAME="8236"></A>
4831 <A NAME="fn:WEdln.backspace"></A>
4833 <DT><STRONG>Synopsis:</STRONG></DT>
4834 <DD><TT>void WEdln.backspace(WEdln wedln)</TT>
4837 <DT><STRONG>Description:</STRONG></DT>
4838 <DD>Delete previous character.
4846 <DD><A NAME="8238"></A>
4848 <A NAME="fn:WEdln.bkill_word"></A>
4850 <DT><STRONG>Synopsis:</STRONG></DT>
4851 <DD><TT>void WEdln.bkill_word(WEdln wedln)</TT>
4854 <DT><STRONG>Description:</STRONG></DT>
4855 <DD>Starting from the previous characters, delete possible whitespace and
4856 preceding alphanumeric characters until previous non-alphanumeric character.
4864 <DD><A NAME="8240"></A>
4866 <A NAME="fn:WEdln.bol"></A>
4868 <DT><STRONG>Synopsis:</STRONG></DT>
4869 <DD><TT>void WEdln.bol(WEdln wedln)</TT>
4872 <DT><STRONG>Description:</STRONG></DT>
4873 <DD>Go to the beginning of line.
4881 <DD><A NAME="8242"></A>
4883 <A NAME="fn:WEdln.bskip_word"></A>
4885 <DT><STRONG>Synopsis:</STRONG></DT>
4886 <DD><TT>void WEdln.bskip_word(WEdln wedln)</TT>
4889 <DT><STRONG>Description:</STRONG></DT>
4890 <DD>Go to to beginning of current sequence of alphanumeric characters
4891 followed by whitespace.
4899 <DD><A NAME="8244"></A>
4901 <A NAME="fn:WEdln.clear_mark"></A>
4903 <DT><STRONG>Synopsis:</STRONG></DT>
4904 <DD><TT>void WEdln.clear_mark(WEdln wedln)</TT>
4907 <DT><STRONG>Description:</STRONG></DT>
4908 <DD>Clear <SPAN CLASS="textit">mark</SPAN>.
4916 <DD><A NAME="8246"></A>
4918 <A NAME="fn:WEdln.complete"></A>
4920 <DT><STRONG>Synopsis:</STRONG></DT>
4921 <DD><TT>void WEdln.complete(WEdln wedln, string cycle, string mode)</TT>
4924 <DT><STRONG>Description:</STRONG></DT>
4925 <DD>Call completion handler with the text between the beginning of line and
4926 current cursor position, or select next/previous completion from list if in
4927 auto-show-completions mode and <TT>cycle</TT> is set to ``next'' or ``prev'',
4928 respectively. The <TT>mode</TT> may be ``history'' or ``normal''. If it is
4929 not set, the previous mode is used. Normally next entry is not cycled to
4930 despite the setting of <TT>cycle</TT> if mode switch occurs. To override
4931 this, use ``next-always'' and ``prev-always'' for <TT>cycle</TT>.
4939 <DD><A NAME="8248"></A>
4941 <A NAME="fn:WEdln.contents"></A>
4943 <DT><STRONG>Synopsis:</STRONG></DT>
4944 <DD><TT>string WEdln.contents(WEdln wedln)</TT>
4947 <DT><STRONG>Description:</STRONG></DT>
4948 <DD>Get line editor contents.
4956 <DD><A NAME="8250"></A>
4958 <A NAME="fn:WEdln.context"></A>
4960 <DT><STRONG>Synopsis:</STRONG></DT>
4961 <DD><TT>string WEdln.context(WEdln wedln)</TT>
4964 <DT><STRONG>Description:</STRONG></DT>
4965 <DD>Get history context for <TT>wedln</TT>.
4973 <DD><A NAME="8252"></A>
4975 <A NAME="fn:WEdln.copy"></A>
4977 <DT><STRONG>Synopsis:</STRONG></DT>
4978 <DD><TT>void WEdln.copy(WEdln wedln)</TT>
4981 <DT><STRONG>Description:</STRONG></DT>
4982 <DD>Copy text between <SPAN CLASS="textit">mark</SPAN> and current cursor position to clipboard.
4990 <DD><A NAME="8254"></A>
4992 <A NAME="fn:WEdln.cut"></A>
4994 <DT><STRONG>Synopsis:</STRONG></DT>
4995 <DD><TT>void WEdln.cut(WEdln wedln)</TT>
4998 <DT><STRONG>Description:</STRONG></DT>
4999 <DD>Copy text between <SPAN CLASS="textit">mark</SPAN> and current cursor position to clipboard
5000 and then delete that sequence.
5008 <DD><A NAME="8256"></A>
5010 <A NAME="fn:WEdln.delete"></A>
5012 <DT><STRONG>Synopsis:</STRONG></DT>
5013 <DD><TT>void WEdln.delete(WEdln wedln)</TT>
5016 <DT><STRONG>Description:</STRONG></DT>
5017 <DD>Delete current character.
5025 <DD><A NAME="8258"></A>
5027 <A NAME="fn:WEdln.eol"></A>
5029 <DT><STRONG>Synopsis:</STRONG></DT>
5030 <DD><TT>void WEdln.eol(WEdln wedln)</TT>
5033 <DT><STRONG>Description:</STRONG></DT>
5034 <DD>Go to the end of line.
5042 <DD><A NAME="8260"></A>
5044 <A NAME="fn:WEdln.finish"></A>
5046 <DT><STRONG>Synopsis:</STRONG></DT>
5047 <DD><TT>void WEdln.finish(WEdln wedln)</TT>
5050 <DT><STRONG>Description:</STRONG></DT>
5051 <DD>Close <TT>wedln</TT> and call any handlers.
5059 <DD><A NAME="8262"></A>
5061 <A NAME="fn:WEdln.forward"></A>
5063 <DT><STRONG>Synopsis:</STRONG></DT>
5064 <DD><TT>void WEdln.forward(WEdln wedln)</TT>
5067 <DT><STRONG>Description:</STRONG></DT>
5068 <DD>Move forward one character.
5076 <DD><A NAME="8264"></A>
5078 <A NAME="fn:WEdln.history_next"></A>
5080 <DT><STRONG>Synopsis:</STRONG></DT>
5081 <DD><TT>void WEdln.history_next(WEdln wedln, bool match)</TT>
5084 <DT><STRONG>Description:</STRONG></DT>
5085 <DD>Replace line editor contents with next entry in history if one exists.
5086 If <TT>match</TT> is <TT>true</TT>, the initial part of the history entry
5087 must match the current line from beginning to point.
5095 <DD><A NAME="8266"></A>
5097 <A NAME="fn:WEdln.history_prev"></A>
5099 <DT><STRONG>Synopsis:</STRONG></DT>
5100 <DD><TT>void WEdln.history_prev(WEdln wedln, bool match)</TT>
5103 <DT><STRONG>Description:</STRONG></DT>
5104 <DD>Replace line editor contents with previous in history if one exists.
5105 If <TT>match</TT> is <TT>true</TT>, the initial part of the history entry
5106 must match the current line from beginning to point.
5114 <DD><A NAME="8268"></A>
5116 <A NAME="fn:WEdln.insstr"></A>
5118 <DT><STRONG>Synopsis:</STRONG></DT>
5119 <DD><TT>void WEdln.insstr(WEdln wedln, string str)</TT>
5122 <DT><STRONG>Description:</STRONG></DT>
5123 <DD>Input <TT>str</TT> in wedln at current editing point.
5131 <DD><A NAME="8270"></A>
5133 <A NAME="fn:WEdln.is_histcompl"></A>
5135 <DT><STRONG>Synopsis:</STRONG></DT>
5136 <DD><TT>bool WEdln.is_histcompl(WEdln wedln)</TT>
5139 <DT><STRONG>Description:</STRONG></DT>
5140 <DD>Get history completion mode.
5148 <DD><A NAME="8272"></A>
5150 <A NAME="fn:WEdln.kill_line"></A>
5152 <DT><STRONG>Synopsis:</STRONG></DT>
5153 <DD><TT>void WEdln.kill_line(WEdln wedln)</TT>
5156 <DT><STRONG>Description:</STRONG></DT>
5157 <DD>Delete the whole line.
5165 <DD><A NAME="8274"></A>
5167 <A NAME="fn:WEdln.kill_to_bol"></A>
5169 <DT><STRONG>Synopsis:</STRONG></DT>
5170 <DD><TT>void WEdln.kill_to_bol(WEdln wedln)</TT>
5173 <DT><STRONG>Description:</STRONG></DT>
5174 <DD>Delete all characters from previous to beginning of line.
5182 <DD><A NAME="8276"></A>
5184 <A NAME="fn:WEdln.kill_to_eol"></A>
5186 <DT><STRONG>Synopsis:</STRONG></DT>
5187 <DD><TT>void WEdln.kill_to_eol(WEdln wedln)</TT>
5190 <DT><STRONG>Description:</STRONG></DT>
5191 <DD>Delete all characters from current to end of line.
5199 <DD><A NAME="8278"></A>
5201 <A NAME="fn:WEdln.kill_word"></A>
5203 <DT><STRONG>Synopsis:</STRONG></DT>
5204 <DD><TT>void WEdln.kill_word(WEdln wedln)</TT>
5207 <DT><STRONG>Description:</STRONG></DT>
5208 <DD>Starting from the current point, delete possible whitespace and
5209 following alphanumeric characters until next non-alphanumeric character.
5217 <DD><A NAME="8280"></A>
5219 <A NAME="fn:WEdln.mark"></A>
5221 <DT><STRONG>Synopsis:</STRONG></DT>
5222 <DD><TT>integer WEdln.mark(WEdln wedln)</TT>
5225 <DT><STRONG>Description:</STRONG></DT>
5226 <DD>Get current mark (start of selection) for <TT>wedln</TT>.
5227 Return value of -1 indicates that there is no mark, and
5228 0 is the beginning of the line.
5236 <DD><A NAME="8282"></A>
5238 <A NAME="fn:WEdln.next_completion"></A>
5240 <DT><STRONG>Synopsis:</STRONG></DT>
5241 <DD><TT>bool WEdln.next_completion(WEdln wedln)</TT>
5244 <DT><STRONG>Description:</STRONG></DT>
5245 <DD>Select next completion.
5253 <DD><A NAME="8284"></A>
5255 <A NAME="fn:WEdln.paste"></A>
5257 <DT><STRONG>Synopsis:</STRONG></DT>
5258 <DD><TT>void WEdln.paste(WEdln wedln)</TT>
5261 <DT><STRONG>Description:</STRONG></DT>
5262 <DD>Request selection from application holding such.
5265 Note that this function is asynchronous; the selection will not
5266 actually be inserted before Ion receives it. This will be no
5267 earlier than Ion return to its main loop.
5275 <DD><A NAME="8286"></A>
5277 <A NAME="fn:WEdln.point"></A>
5279 <DT><STRONG>Synopsis:</STRONG></DT>
5280 <DD><TT>integer WEdln.point(WEdln wedln)</TT>
5283 <DT><STRONG>Description:</STRONG></DT>
5284 <DD>Get current editing point.
5285 Beginning of the edited line is point 0.
5293 <DD><A NAME="8288"></A>
5295 <A NAME="fn:WEdln.prev_completion"></A>
5297 <DT><STRONG>Synopsis:</STRONG></DT>
5298 <DD><TT>bool WEdln.prev_completion(WEdln wedln)</TT>
5301 <DT><STRONG>Description:</STRONG></DT>
5302 <DD>Select previous completion.
5310 <DD><A NAME="8290"></A>
5312 <A NAME="fn:WEdln.set_context"></A>
5314 <DT><STRONG>Synopsis:</STRONG></DT>
5315 <DD><TT>void WEdln.set_context(WEdln wedln, string context)</TT>
5318 <DT><STRONG>Description:</STRONG></DT>
5319 <DD>Set history context for <TT>wedln</TT>.
5327 <DD><A NAME="8292"></A>
5329 <A NAME="fn:WEdln.set_mark"></A>
5331 <DT><STRONG>Synopsis:</STRONG></DT>
5332 <DD><TT>void WEdln.set_mark(WEdln wedln)</TT>
5335 <DT><STRONG>Description:</STRONG></DT>
5336 <DD>Set <SPAN CLASS="textit">mark</SPAN> to current cursor position.
5344 <DD><A NAME="8294"></A>
5346 <A NAME="fn:WEdln.skip_word"></A>
5348 <DT><STRONG>Synopsis:</STRONG></DT>
5349 <DD><TT>void WEdln.skip_word(WEdln wedln)</TT>
5352 <DT><STRONG>Description:</STRONG></DT>
5353 <DD>Go to to end of current sequence of whitespace followed by alphanumeric
5362 <DD><A NAME="8296"></A>
5364 <A NAME="fn:WEdln.transpose_chars"></A>
5366 <DT><STRONG>Synopsis:</STRONG></DT>
5367 <DD><TT>void WEdln.transpose_chars(WEdln wedln)</TT>
5370 <DT><STRONG>Description:</STRONG></DT>
5371 <DD>Transpose characters.
5379 <DD><A NAME="8298"></A>
5381 <A NAME="fn:WEdln.transpose_words"></A>
5383 <DT><STRONG>Synopsis:</STRONG></DT>
5384 <DD><TT>void WEdln.transpose_words(WEdln wedln)</TT>
5387 <DT><STRONG>Description:</STRONG></DT>
5388 <DD>Transpose words.
5395 <H3><A NAME="SECTION00733000000000000000">
5396 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN> WInput functions</A>
5402 <DD><A NAME="8301"></A>
5404 <A NAME="fn:WInput.cancel"></A>
5406 <DT><STRONG>Synopsis:</STRONG></DT>
5407 <DD><TT>void WInput.cancel(WInput input)</TT>
5410 <DT><STRONG>Description:</STRONG></DT>
5411 <DD>Close input not calling any possible finish handlers.
5419 <DD><A NAME="8303"></A>
5421 <A NAME="fn:WInput.scrolldown"></A>
5423 <DT><STRONG>Synopsis:</STRONG></DT>
5424 <DD><TT>void WInput.scrolldown(WInput input)</TT>
5427 <DT><STRONG>Description:</STRONG></DT>
5428 <DD>Scroll input <TT>input</TT> text contents down.
5436 <DD><A NAME="8305"></A>
5438 <A NAME="fn:WInput.scrollup"></A>
5440 <DT><STRONG>Synopsis:</STRONG></DT>
5441 <DD><TT>void WInput.scrollup(WInput input)</TT>
5444 <DT><STRONG>Description:</STRONG></DT>
5445 <DD>Scroll input <TT>input</TT> text contents up.
5452 <H2><A NAME="SECTION00740000000000000000"></A>
5453 <A NAME="sec:menuref"></A>
5455 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">4</SPAN> Functions defined in <SPAN CLASS="textit">mod_menu</SPAN>
5459 <DD><A NAME="9122"></A>
5461 <A NAME="fn:mod_menu.grabmenu"></A>
5463 <DT><STRONG>Synopsis:</STRONG></DT>
5464 <DD><TT>mod_menu.grabmenu(mplex, sub, menu_or_name, param)</TT>
5467 <DT><STRONG>Description:</STRONG></DT>
5468 <DD>This function is similar to <A HREF="#fn:mod_menu.menu"><TT>mod_menu.menu</TT></A>, but input
5469 is grabbed and the key used to active the menu can be used to
5470 cycle through menu entries.
5478 <DD><A NAME="9124"></A>
5480 <A NAME="fn:mod_menu.menu"></A>
5482 <DT><STRONG>Synopsis:</STRONG></DT>
5483 <DD><TT>mod_menu.menu(mplex, sub, menu_or_name, param)</TT>
5486 <DT><STRONG>Description:</STRONG></DT>
5487 <DD>Display a menu in the lower-left corner of <TT>mplex</TT>.
5488 The variable <TT>menu_or_name</TT> is either the name of a menu
5489 defined with <A HREF="#fn:mod_menu.defmenu"><TT>mod_menu.defmenu</TT></A> or directly a table similar
5490 to ones passesd to this function. When this function is
5491 called from a binding handler, <TT>sub</TT> should be set to
5492 the second argument of to the binding handler (<TT>_sub</TT>)
5493 so that the menu handler will get the same parameters as the
5494 binding handler. Extra options can be passed in the table
5495 <TT>param</TT>. The initial entry can be specified as the field
5496 <TT>initial</TT> as an integer starting from 1. Menus can be made
5497 to use a bigger style by setting the field <TT>big</TT> to <TT>true</TT>.
5505 <DD><A NAME="9126"></A>
5507 <A NAME="fn:mod_menu.get"></A>
5509 <DT><STRONG>Synopsis:</STRONG></DT>
5510 <DD><TT>table mod_menu.get()</TT>
5513 <DT><STRONG>Description:</STRONG></DT>
5514 <DD>Get module basic settings. For details, see <A HREF="#fn:mod_menu.set"><TT>mod_menu.set</TT></A>.
5522 <DD><A NAME="9128"></A>
5524 <A NAME="fn:mod_menu.set"></A>
5526 <DT><STRONG>Synopsis:</STRONG></DT>
5527 <DD><TT>void mod_menu.set(table tab)</TT>
5530 <DT><STRONG>Description:</STRONG></DT>
5531 <DD>Set module basic settings. The parameter table may contain the
5535 <TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
5536 <TR><TD ALIGN="LEFT">Field</TD>
5537 <TD ALIGN="LEFT">Description</TD>
5539 <TR><TD ALIGN="LEFT"><TT>scroll_amount</TT></TD>
5540 <TD ALIGN="LEFT">Number of pixels to scroll at a time
5541 pointer-controlled menus when one extends
5542 beyond a border of the screen and the pointer
5543 touches that border.</TD>
5545 <TR><TD ALIGN="LEFT"><TT>scroll_delay</TT></TD>
5546 <TD ALIGN="LEFT">Time between such scrolling events in
5557 <DD><A NAME="9130"></A>
5559 <A NAME="fn:mod_menu.pmenu"></A>
5561 <DT><STRONG>Synopsis:</STRONG></DT>
5562 <DD><TT>mod_menu.pmenu(win, sub, menu_or_name)</TT>
5565 <DT><STRONG>Description:</STRONG></DT>
5566 <DD>This function displays a drop-down menu and should only
5567 be called from a mouse press handler. The parameters are
5568 similar to those of <A HREF="#fn:mod_menu.menu"><TT>mod_menu.menu</TT></A>.
5575 <H3><A NAME="SECTION00741000000000000000">
5576 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN> WMenu functions</A>
5582 <DD><A NAME="9133"></A>
5584 <A NAME="fn:WMenu.cancel"></A>
5586 <DT><STRONG>Synopsis:</STRONG></DT>
5587 <DD><TT>void WMenu.cancel(WMenu menu)</TT>
5590 <DT><STRONG>Description:</STRONG></DT>
5591 <DD>Close <TT>menu</TT> not calling any possible finish handlers.
5599 <DD><A NAME="9135"></A>
5601 <A NAME="fn:WMenu.finish"></A>
5603 <DT><STRONG>Synopsis:</STRONG></DT>
5604 <DD><TT>void WMenu.finish(WMenu menu)</TT>
5607 <DT><STRONG>Description:</STRONG></DT>
5608 <DD>If selected entry is a submenu, display that.
5609 Otherwise destroy the menu and call handler for selected entry.
5617 <DD><A NAME="9137"></A>
5619 <A NAME="fn:WMenu.select_next"></A>
5621 <DT><STRONG>Synopsis:</STRONG></DT>
5622 <DD><TT>void WMenu.select_next(WMenu menu)</TT>
5625 <DT><STRONG>Description:</STRONG></DT>
5626 <DD>Select next entry in menu.
5634 <DD><A NAME="9139"></A>
5636 <A NAME="fn:WMenu.select_nth"></A>
5638 <DT><STRONG>Synopsis:</STRONG></DT>
5639 <DD><TT>void WMenu.select_nth(WMenu menu, integer n)</TT>
5642 <DT><STRONG>Description:</STRONG></DT>
5643 <DD>Select <TT>n</TT>:th entry in menu.
5651 <DD><A NAME="9141"></A>
5653 <A NAME="fn:WMenu.select_prev"></A>
5655 <DT><STRONG>Synopsis:</STRONG></DT>
5656 <DD><TT>void WMenu.select_prev(WMenu menu)</TT>
5659 <DT><STRONG>Description:</STRONG></DT>
5660 <DD>Select previous entry in menu.
5668 <DD><A NAME="9143"></A>
5670 <A NAME="fn:WMenu.typeahead_clear"></A>
5672 <DT><STRONG>Synopsis:</STRONG></DT>
5673 <DD><TT>void WMenu.typeahead_clear(WMenu menu)</TT>
5676 <DT><STRONG>Description:</STRONG></DT>
5677 <DD>Clear typeahead buffer.
5684 <H2><A NAME="SECTION00750000000000000000"></A>
5685 <A NAME="sec:dockref"></A>
5687 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">5</SPAN> Functions defined in <SPAN CLASS="textit">mod_dock</SPAN>
5691 <DD><A NAME="9342"></A>
5693 <A NAME="fn:mod_dock.set_floating_shown_on"></A>
5695 <DT><STRONG>Synopsis:</STRONG></DT>
5696 <DD><TT>void mod_dock.set_floating_shown_on(WMPlex mplex, string how)</TT>
5699 <DT><STRONG>Description:</STRONG></DT>
5700 <DD>Toggle floating docks on <TT>mplex</TT>.
5707 <H3><A NAME="SECTION00751000000000000000">
5708 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">1</SPAN> WDock functions</A>
5714 <DD><A NAME="9345"></A>
5716 <A NAME="fn:WDock.attach"></A>
5718 <DT><STRONG>Synopsis:</STRONG></DT>
5719 <DD><TT>bool WDock.attach(WDock dock, WRegion reg)</TT>
5722 <DT><STRONG>Description:</STRONG></DT>
5723 <DD>Attach <TT>reg</TT> to <TT>dock</TT>.
5731 <DD><A NAME="9347"></A>
5733 <A NAME="fn:WDock.get"></A>
5735 <DT><STRONG>Synopsis:</STRONG></DT>
5736 <DD><TT>table WDock.get(WDock dock)</TT>
5739 <DT><STRONG>Description:</STRONG></DT>
5740 <DD>Get <TT>dock</TT>'s configuration table. See <A HREF="#fn:WDock.set"><TT>WDock.set</TT></A> for a
5741 description of the table.
5749 <DD><A NAME="9349"></A>
5751 <A NAME="fn:WDock.resize"></A>
5753 <DT><STRONG>Synopsis:</STRONG></DT>
5754 <DD><TT>void WDock.resize(WDock dock)</TT>
5757 <DT><STRONG>Description:</STRONG></DT>
5758 <DD>Resizes and refreshes <TT>dock</TT>.
5766 <DD><A NAME="9351"></A>
5768 <A NAME="fn:WDock.set"></A>
5770 <DT><STRONG>Synopsis:</STRONG></DT>
5771 <DD><TT>void WDock.set(WDock dock, table conftab)</TT>
5774 <DT><STRONG>Description:</STRONG></DT>
5775 <DD>Configure <TT>dock</TT>. <TT>conftab</TT> is a table of key/value pairs:
5778 <TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
5779 <TR><TD ALIGN="LEFT">Key</TD>
5780 <TD ALIGN="LEFT">Values</TD>
5781 <TD ALIGN="LEFT">Description</TD>
5783 <TR><TD ALIGN="LEFT"><TT>name</TT></TD>
5784 <TD ALIGN="LEFT">string</TD>
5785 <TD ALIGN="LEFT">Name of dock</TD>
5787 <TR><TD ALIGN="LEFT"><TT>pos</TT></TD>
5788 <TD ALIGN="LEFT">string in <!-- MATH
5789 $\{t,m,b\}\times\{t,c,b\}$
5791 <SPAN CLASS="MATH"></SPAN></TD>
5792 <TD ALIGN="LEFT">Dock position.
5793 Can only be used in floating mode.</TD>
5795 <TR><TD ALIGN="LEFT"><TT>grow</TT></TD>
5796 <TD ALIGN="LEFT">up/down/left/right</TD>
5797 <TD ALIGN="LEFT">Growth direction where new dockapps are added. Also
5798 sets orientation for dock when working as WMPlex status
5799 display (see <A HREF="#fn:WMPlex.set_stdisp"><TT>WMPlex.set_stdisp</TT></A>).</TD>
5801 <TR><TD ALIGN="LEFT"><TT>is_auto</TT></TD>
5802 <TD ALIGN="LEFT">bool</TD>
5803 <TD ALIGN="LEFT">Should <TT>dock</TT> automatically manage new dockapps?</TD>
5808 Any parameters not explicitly set in <TT>conftab</TT> will be left unchanged.
5815 <H2><A NAME="SECTION00760000000000000000"></A>
5816 <A NAME="sec:spref"></A>
5818 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">6</SPAN> Functions defined in <SPAN CLASS="textit">mod_sp</SPAN>
5822 <DD><A NAME="9451"></A>
5824 <A NAME="fn:mod_sp.set_shown"></A>
5826 <DT><STRONG>Synopsis:</STRONG></DT>
5827 <DD><TT>bool mod_sp.set_shown(WFrame sp, string how)</TT>
5830 <DT><STRONG>Description:</STRONG></DT>
5831 <DD>Toggle displayed status of <TT>sp</TT>.
5832 The parameter <TT>how</TT> is one of (set/unset/toggle).
5840 <DD><A NAME="9453"></A>
5842 <A NAME="fn:mod_sp.set_shown_on"></A>
5844 <DT><STRONG>Synopsis:</STRONG></DT>
5845 <DD><TT>bool mod_sp.set_shown_on(WMPlex mplex, string how)</TT>
5848 <DT><STRONG>Description:</STRONG></DT>
5849 <DD>Change displayed status of some scratchpad on <TT>mplex</TT> if one is
5850 found. The parameter <TT>how</TT> is one of (set/unset/toggle).
5857 <H2><A NAME="SECTION00770000000000000000"></A>
5858 <A NAME="sec:statusbarref"></A>
5860 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">7</SPAN> Functions defined in <SPAN CLASS="textit">mod_statusbar</SPAN>
5864 <DD><A NAME="9548"></A>
5866 <A NAME="fn:mod_statusbar.statusbars"></A>
5868 <DT><STRONG>Synopsis:</STRONG></DT>
5869 <DD><TT>table mod_statusbar.statusbars()</TT>
5872 <DT><STRONG>Description:</STRONG></DT>
5873 <DD>Returns a list of all statusbars.
5880 <H3><A NAME="SECTION00771000000000000000">
5881 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">7</SPAN>.<SPAN CLASS="arabic">1</SPAN> WStatusBar functions</A>
5887 <DD><A NAME="9551"></A>
5889 <A NAME="fn:WStatusBar.get_template_table"></A>
5891 <DT><STRONG>Synopsis:</STRONG></DT>
5892 <DD><TT>table WStatusBar.get_template_table(WStatusBar sb)</TT>
5895 <DT><STRONG>Description:</STRONG></DT>
5896 <DD>Get statusbar template as table.
5904 <DD><A NAME="9553"></A>
5906 <A NAME="fn:WStatusBar.is_systray_extl"></A>
5908 <DT><STRONG>Synopsis:</STRONG></DT>
5909 <DD><TT>bool WStatusBar.is_systray_extl(WStatusBar sb)</TT>
5912 <DT><STRONG>Description:</STRONG></DT>
5913 <DD>Is <TT>sb</TT> used as a systray?
5921 <DD><A NAME="9555"></A>
5923 <A NAME="fn:WStatusBar.set_systray"></A>
5925 <DT><STRONG>Synopsis:</STRONG></DT>
5926 <DD><TT>bool WStatusBar.set_systray(WStatusBar sb, string how)</TT>
5929 <DT><STRONG>Description:</STRONG></DT>
5930 <DD>Enable or disable use of <TT>sb</TT> as systray.
5931 The parameter <TT>how</TT> can be one of (set/unset/toggle).
5932 Resulting state is returned.
5940 <DD><A NAME="9557"></A>
5942 <A NAME="fn:WStatusBar.set_template"></A>
5944 <DT><STRONG>Synopsis:</STRONG></DT>
5945 <DD><TT>void WStatusBar.set_template(WStatusBar sb, string tmpl)</TT>
5948 <DT><STRONG>Description:</STRONG></DT>
5949 <DD>Set statusbar template.
5957 <DD><A NAME="9559"></A>
5959 <A NAME="fn:WStatusBar.set_template_table"></A>
5961 <DT><STRONG>Synopsis:</STRONG></DT>
5962 <DD><TT>void WStatusBar.set_template_table(WStatusBar sb, table t)</TT>
5965 <DT><STRONG>Description:</STRONG></DT>
5966 <DD>Set statusbar template as table.
5974 <DD><A NAME="9561"></A>
5976 <A NAME="fn:WStatusBar.update"></A>
5978 <DT><STRONG>Synopsis:</STRONG></DT>
5979 <DD><TT>void WStatusBar.update(WStatusBar sb, table t)</TT>
5982 <DT><STRONG>Description:</STRONG></DT>
5983 <DD>Set statusbar template.
5990 <H2><A NAME="SECTION00780000000000000000"></A>
5991 <A NAME="sec:deref"></A>
5993 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">8</SPAN> Functions defined in <SPAN CLASS="textit">de</SPAN>
5997 <DD><A NAME="9672"></A>
5999 <A NAME="fn:de.defstyle"></A>
6001 <DT><STRONG>Synopsis:</STRONG></DT>
6002 <DD><TT>bool de.defstyle(string name, table tab)</TT>
6005 <DT><STRONG>Description:</STRONG></DT>
6014 <DD><A NAME="9674"></A>
6016 <A NAME="fn:de.defstyle_rootwin"></A>
6018 <DT><STRONG>Synopsis:</STRONG></DT>
6019 <DD><TT>bool de.defstyle_rootwin(WRootWin rootwin, string name, table tab)</TT>
6022 <DT><STRONG>Description:</STRONG></DT>
6023 <DD>Define a style for the root window <TT>rootwin</TT>.
6031 <DD><A NAME="9676"></A>
6033 <A NAME="fn:de.reset"></A>
6035 <DT><STRONG>Synopsis:</STRONG></DT>
6036 <DD><TT>void de.reset()</TT>
6039 <DT><STRONG>Description:</STRONG></DT>
6040 <DD>Clear all styles from drawing engine memory.
6048 <DD><A NAME="9678"></A>
6050 <A NAME="fn:de.substyle"></A>
6052 <DT><STRONG>Synopsis:</STRONG></DT>
6053 <DD><TT>table de.substyle(string pattern, table tab)</TT>
6056 <DT><STRONG>Description:</STRONG></DT>
6057 <DD>Define a substyle.
6064 <H2><A NAME="SECTION00790000000000000000"></A>
6065 <A NAME="sec:hookref"></A>
6067 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">9</SPAN> Hooks
6073 <DD><A NAME="9877"></A>
6076 <DT><STRONG>Hook name:</STRONG></DT>
6077 <DD><A NAME="clientwin_do_manage_alt"></A><TT>clientwin_do_manage_alt</TT>
6080 <DT><STRONG>Parameters:</STRONG></DT>
6081 <DD><TT>(WClientWin, table)</TT>
6084 <DT><STRONG>Description:</STRONG></DT>
6085 <DD>Called when we want to manage a new client window.
6086 The table argument contains the following fields:
6089 <TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
6090 <TR><TD ALIGN="LEFT">Field</TD>
6091 <TD ALIGN="LEFT">Type</TD>
6092 <TD ALIGN="LEFT">Description</TD>
6094 <TR><TD ALIGN="LEFT"><TT>switchto</TT></TD>
6095 <TD ALIGN="LEFT">bool</TD>
6096 <TD ALIGN="LEFT">Do we want to switch to the client window.</TD>
6098 <TR><TD ALIGN="LEFT"><TT>jumpto</TT></TD>
6099 <TD ALIGN="LEFT">bool</TD>
6100 <TD ALIGN="LEFT">Do we want to jump to the client window.</TD>
6102 <TR><TD ALIGN="LEFT"><TT>userpos</TT></TD>
6103 <TD ALIGN="LEFT">bool</TD>
6104 <TD ALIGN="LEFT">Geometry set by user.</TD>
6106 <TR><TD ALIGN="LEFT"><TT>dockapp</TT></TD>
6107 <TD ALIGN="LEFT">bool</TD>
6108 <TD ALIGN="LEFT">Client window is a dockapp.</TD>
6110 <TR><TD ALIGN="LEFT"><TT>maprq</TT></TD>
6111 <TD ALIGN="LEFT">bool</TD>
6112 <TD ALIGN="LEFT">Map request (and not initialisation scan).</TD>
6114 <TR><TD ALIGN="LEFT"><TT>gravity</TT></TD>
6115 <TD ALIGN="LEFT">number</TD>
6116 <TD ALIGN="LEFT">Window gravity.</TD>
6118 <TR><TD ALIGN="LEFT"><TT>geom</TT></TD>
6119 <TD ALIGN="LEFT">table</TD>
6120 <TD ALIGN="LEFT">Requested geometry; <TT>x</TT>, <TT>y</TT>, <TT>w</TT>, <TT>h</TT>.</TD>
6122 <TR><TD ALIGN="LEFT"><TT>tfor</TT></TD>
6123 <TD ALIGN="LEFT">WClientWin</TD>
6124 <TD ALIGN="LEFT">Transient for window.</TD>
6129 This hook is not called in protected mode and can be used for
6130 arbitrary placement policies (deciding in which workspace a new
6131 WClientWin should go). In this case, you can call
6135 where <TT>reg</TT> is the region where the window should go, and
6136 <TT>cwin</TT> is the first argument of the function added to the
6145 <DD><A NAME="9878"></A>
6148 <DT><STRONG>Hook name:</STRONG></DT>
6149 <DD><A NAME="clientwin_mapped_hook"></A><TT>clientwin_mapped_hook</TT>
6152 <DT><STRONG>Parameters:</STRONG></DT>
6153 <DD><TT>WClientWin</TT>
6156 <DT><STRONG>Description:</STRONG></DT>
6157 <DD>Called when we have started to manage a client window.
6165 <DD><A NAME="9879"></A>
6168 <DT><STRONG>Hook name:</STRONG></DT>
6169 <DD><A NAME="clientwin_property_change_hook"></A><TT>clientwin_property_change_hook</TT>
6172 <DT><STRONG>Parameters:</STRONG></DT>
6173 <DD><TT>(WClientWin, integer)</TT>
6176 <DT><STRONG>Description:</STRONG></DT>
6177 <DD>Called when the property identified by the parameter atom id
6178 (integer) has changed on a client window.
6186 <DD><A NAME="9880"></A>
6189 <DT><STRONG>Hook name:</STRONG></DT>
6190 <DD><A NAME="clientwin_unmapped_hook"></A><TT>clientwin_unmapped_hook</TT>
6193 <DT><STRONG>Parameters:</STRONG></DT>
6197 <DT><STRONG>Description:</STRONG></DT>
6198 <DD>Called when we no longer manage a client window. The parameter
6199 is the X ID of the window; see <A HREF="#fn:WClientWin.xid"><TT>WClientWin.xid</TT></A>.
6207 <DD><A NAME="9881"></A>
6210 <DT><STRONG>Hook name:</STRONG></DT>
6211 <DD><A NAME="frame_managed_changed_hook"></A><TT>frame_managed_changed_hook</TT>
6214 <DT><STRONG>Parameters:</STRONG></DT>
6218 <DT><STRONG>Description:</STRONG></DT>
6219 <DD>Called when there are changes in the objects managed by a frame
6220 or their order. The table parameter has the following fields:
6223 <TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
6224 <TR><TD ALIGN="LEFT">Field</TD>
6225 <TD ALIGN="LEFT">Type</TD>
6226 <TD ALIGN="LEFT">Description</TD>
6228 <TR><TD ALIGN="LEFT"><TT>reg</TT></TD>
6229 <TD ALIGN="LEFT">WFrame</TD>
6230 <TD ALIGN="LEFT">The frame in question</TD>
6232 <TR><TD ALIGN="LEFT"><TT>mode</TT></TD>
6233 <TD ALIGN="LEFT">string</TD>
6234 <TD ALIGN="LEFT"><TT>"switchonly"</TT>, <TT>"reorder"</TT>,
6235 <TT>"add"</TT> or <TT>"remove"</TT></TD>
6237 <TR><TD ALIGN="LEFT"><TT>sw</TT></TD>
6238 <TD ALIGN="LEFT">bool</TD>
6239 <TD ALIGN="LEFT">Switch occured</TD>
6241 <TR><TD ALIGN="LEFT"><TT>sub</TT></TD>
6242 <TD ALIGN="LEFT">WRegion</TD>
6243 <TD ALIGN="LEFT">The managed region (primarily) affected</TD>
6253 <DD><A NAME="9882"></A>
6256 <DT><STRONG>Hook name:</STRONG></DT>
6257 <DD><A NAME="ioncore_sigchld_hook"></A><TT>ioncore_sigchld_hook</TT>
6260 <DT><STRONG>Parameters:</STRONG></DT>
6261 <DD><TT>integer</TT>
6264 <DT><STRONG>Description:</STRONG></DT>
6265 <DD>Called when a child process has exited. The parameter
6266 is the PID of the process.
6274 <DD><A NAME="9883"></A>
6277 <DT><STRONG>Hook name:</STRONG></DT>
6278 <DD><A NAME="ioncore_deinit_hook"></A><TT>ioncore_deinit_hook</TT>
6281 <DT><STRONG>Parameters:</STRONG></DT>
6285 <DT><STRONG>Description:</STRONG></DT>
6286 <DD>Called when Ion is deinitialising and about to quit.
6294 <DD><A NAME="9884"></A>
6297 <DT><STRONG>Hook name:</STRONG></DT>
6298 <DD><A NAME="ioncore_post_layout_setup_hook"></A><TT>ioncore_post_layout_setup_hook</TT>
6301 <DT><STRONG>Parameters:</STRONG></DT>
6305 <DT><STRONG>Description:</STRONG></DT>
6306 <DD>Called when Ion has done all initialisation and is almost ready to
6307 enter the mainloop, except no windows are yet being managed.
6315 <DD><A NAME="9885"></A>
6318 <DT><STRONG>Hook name:</STRONG></DT>
6319 <DD><A NAME="ioncore_snapshot_hook"></A><TT>ioncore_snapshot_hook</TT>
6322 <DT><STRONG>Parameters:</STRONG></DT>
6326 <DT><STRONG>Description:</STRONG></DT>
6327 <DD>Called to signal scripts and modules to save their state (if any).
6335 <DD><A NAME="9886"></A>
6338 <DT><STRONG>Hook name:</STRONG></DT>
6339 <DD><A NAME="tiling_placement_alt"></A><TT>tiling_placement_alt</TT>
6342 <DT><STRONG>Parameters:</STRONG></DT>
6346 <DT><STRONG>Description:</STRONG></DT>
6347 <DD>Called when a client window is about to be managed by a WTiling
6348 to allow for alternative placement policies. The table has the
6350 <TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
6351 <TR><TD ALIGN="LEFT">Field</TD>
6352 <TD ALIGN="LEFT">Type</TD>
6353 <TD ALIGN="LEFT">Description</TD>
6355 <TR><TD ALIGN="LEFT"><TT>tiling</TT></TD>
6356 <TD ALIGN="LEFT">WTiling</TD>
6357 <TD ALIGN="LEFT">The tiling</TD>
6359 <TR><TD ALIGN="LEFT"><TT>reg</TT></TD>
6360 <TD ALIGN="LEFT">WRegion</TD>
6361 <TD ALIGN="LEFT">The region (always a WClientWin at
6362 the moment) to be placed</TD>
6364 <TR><TD ALIGN="LEFT"><TT>mp</TT></TD>
6365 <TD ALIGN="LEFT">table</TD>
6366 <TD ALIGN="LEFT">This table contains the same fields as
6367 the parameter of <A HREF="#fn:clientwin_do_manage_alt"><TT>clientwin_do_manage_alt</TT></A></TD>
6369 <TR><TD ALIGN="LEFT"><TT>res_frame</TT></TD>
6370 <TD ALIGN="LEFT">WFrame</TD>
6371 <TD ALIGN="LEFT">A succesfull handler should
6372 return the target frame here.</TD>
6375 This hook is just for placing within a given workspace after the
6376 workspace has been decided by the default workspace selection
6377 policy. It is called in protected mode. For arbitrary placement
6378 policies, <A HREF="#fn:clientwin_do_manage_alt"><TT>clientwin_do_manage_alt</TT></A> should be used; it
6379 isn't called in protected mode,
6387 <DD><A NAME="9887"></A>
6390 <DT><STRONG>Hook name:</STRONG></DT>
6391 <DD><A NAME="region_do_warp_alt"></A><TT>region_do_warp_alt</TT>
6394 <DT><STRONG>Parameters:</STRONG></DT>
6395 <DD><TT>WRegion</TT>
6398 <DT><STRONG>Description:</STRONG></DT>
6399 <DD>This alt-hook exist to allow for alternative pointer warping
6408 <DD><A NAME="9888"></A>
6411 <DT><STRONG>Hook name:</STRONG></DT>
6412 <DD><A NAME="screen_managed_changed_hook"></A><TT>screen_managed_changed_hook</TT>
6415 <DT><STRONG>Parameters:</STRONG></DT>
6419 <DT><STRONG>Description:</STRONG></DT>
6420 <DD>Called when there are changes in the objects managed by a screen
6421 or their order. The table parameter is similar to that of
6422 <A HREF="#fn:frame_managed_changed_hook"><TT>frame_managed_changed_hook</TT></A>.
6430 <DD><A NAME="9889"></A>
6433 <DT><STRONG>Hook name:</STRONG></DT>
6434 <DD><A NAME="region_notify_hook"></A><TT>region_notify_hook</TT>
6437 <DT><STRONG>Parameters:</STRONG></DT>
6438 <DD><TT>(WRegion, string)</TT>
6441 <DT><STRONG>Description:</STRONG></DT>
6442 <DD>Signalled when something (minor) has changed in relation to
6443 the first parameter region. The string argument gives the
6447 <TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
6448 <TR><TD ALIGN="LEFT">String</TD>
6449 <TD ALIGN="LEFT">Description</TD>
6451 <TR><TD ALIGN="LEFT"><TT>deinit</TT></TD>
6452 <TD ALIGN="LEFT">The region is about to be deinitialised.</TD>
6454 <TR><TD ALIGN="LEFT"><TT>activated</TT></TD>
6455 <TD ALIGN="LEFT">The region has received focus.</TD>
6457 <TR><TD ALIGN="LEFT"><TT>inactivated</TT></TD>
6458 <TD ALIGN="LEFT">The region has lost focus.</TD>
6460 <TR><TD ALIGN="LEFT"><TT>activity</TT></TD>
6461 <TD ALIGN="LEFT">There's been activity in the region itself.</TD>
6463 <TR><TD ALIGN="LEFT"><TT>sub_activity</TT></TD>
6464 <TD ALIGN="LEFT">There's been activity in some sub-region.</TD>
6466 <TR><TD ALIGN="LEFT"><TT>name</TT></TD>
6467 <TD ALIGN="LEFT">The name of the region has changed.</TD>
6469 <TR><TD ALIGN="LEFT"><TT>unset_manager</TT></TD>
6470 <TD ALIGN="LEFT">The region no longer has a manager.</TD>
6472 <TR><TD ALIGN="LEFT"><TT>set_manager</TT></TD>
6473 <TD ALIGN="LEFT">The region now has a manager.</TD>
6475 <TR><TD ALIGN="LEFT"><TT>tag</TT></TD>
6476 <TD ALIGN="LEFT">Tagging state has changed.</TD>
6478 <TR><TD ALIGN="LEFT"><TT>pseudoactivated</TT></TD>
6479 <TD ALIGN="LEFT">The region has become pseudoactive
6482 <TR><TD ALIGN="LEFT"><TT>pseudoinactivated</TT></TD>
6483 <TD ALIGN="LEFT">The region is no longer pseudoactive.</TD>
6488 A region is pseudoactive, when a) it is itself not active (does
6489 not not have the focus, and may not even have a window that could
6490 have it), but b) some region managed by it is active.
6501 <DIV CLASS="navigation"><HR>
6502 <!--Navigation Panel-->
6503 <A NAME="tex2html355"
6505 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
6506 <A NAME="tex2html349"
6507 HREF="ionconf.html">
6508 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
6509 <A NAME="tex2html343"
6511 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
6512 <A NAME="tex2html351"
6514 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
6515 <A NAME="tex2html353"
6517 <IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A>
6519 <B> Next:</B> <A NAME="tex2html356"
6520 HREF="node8.html">A. The GNU General</A>
6521 <B> Up:</B> <A NAME="tex2html350"
6522 HREF="ionconf.html">Configuring and extending Ion3</A>
6523 <B> Previous:</B> <A NAME="tex2html344"
6524 HREF="node6.html">5. Scripting</A>
6525 <B> <A NAME="tex2html352"
6526 HREF="node1.html">Contents</A></B>
6527 <B> <A NAME="tex2html354"
6528 HREF="node11.html">Index</A></B> </DIV>
6529 <!--End of Navigation Panel-->