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="tex2html349"
48 HREF="node8.html">A. The GNU General</A>
49 <B> Up:</B> <A NAME="tex2html343"
50 HREF="ionconf.html">Configuring and extending Ion3</A>
51 <B> Previous:</B> <A NAME="tex2html337"
52 HREF="node6.html">5. Scripting</A>
53 <B> <A NAME="tex2html345"
54 HREF="node1.html">Contents</A></B>
55 <B> <A NAME="tex2html347"
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="tex2html350"
65 HREF="node7.html#SECTION00710000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN> Functions defined in <SPAN CLASS="textit">ioncore</SPAN></A>
67 <LI><A NAME="tex2html351"
68 HREF="node7.html#SECTION00711000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN> WClientWin functions</A>
69 <LI><A NAME="tex2html352"
70 HREF="node7.html#SECTION00712000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">2</SPAN> WFrame functions</A>
71 <LI><A NAME="tex2html353"
72 HREF="node7.html#SECTION00713000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">3</SPAN> WGroup functions</A>
73 <LI><A NAME="tex2html354"
74 HREF="node7.html#SECTION00714000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">4</SPAN> WGroupCW functions</A>
75 <LI><A NAME="tex2html355"
76 HREF="node7.html#SECTION00715000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">5</SPAN> WGroupWS functions</A>
77 <LI><A NAME="tex2html356"
78 HREF="node7.html#SECTION00716000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">6</SPAN> WInfoWin functions</A>
79 <LI><A NAME="tex2html357"
80 HREF="node7.html#SECTION00717000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">7</SPAN> WMPlex functions</A>
81 <LI><A NAME="tex2html358"
82 HREF="node7.html#SECTION00718000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">8</SPAN> WMoveresMode functions</A>
83 <LI><A NAME="tex2html359"
84 HREF="node7.html#SECTION00719000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN> WRegion functions</A>
85 <LI><A NAME="tex2html360"
86 HREF="node7.html#SECTION007110000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">10</SPAN> WRootWin functions</A>
87 <LI><A NAME="tex2html361"
88 HREF="node7.html#SECTION007111000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">11</SPAN> WScreen functions</A>
89 <LI><A NAME="tex2html362"
90 HREF="node7.html#SECTION007112000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">12</SPAN> WWindow functions</A>
91 <LI><A NAME="tex2html363"
92 HREF="node7.html#SECTION007113000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">13</SPAN> global functions</A>
93 <LI><A NAME="tex2html364"
94 HREF="node7.html#SECTION007114000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">14</SPAN> gr functions</A>
95 <LI><A NAME="tex2html365"
96 HREF="node7.html#SECTION007115000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">15</SPAN> string functions</A>
97 <LI><A NAME="tex2html366"
98 HREF="node7.html#SECTION007116000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">16</SPAN> table functions</A>
101 <LI><A NAME="tex2html367"
102 HREF="node7.html#SECTION00720000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN> Functions defined in <SPAN CLASS="textit">mod_tiling</SPAN></A>
104 <LI><A NAME="tex2html368"
105 HREF="node7.html#SECTION00721000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN> WSplit functions</A>
106 <LI><A NAME="tex2html369"
107 HREF="node7.html#SECTION00722000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN> WSplitInner functions</A>
108 <LI><A NAME="tex2html370"
109 HREF="node7.html#SECTION00723000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">3</SPAN> WSplitRegion functions</A>
110 <LI><A NAME="tex2html371"
111 HREF="node7.html#SECTION00724000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">4</SPAN> WSplitSplit functions</A>
112 <LI><A NAME="tex2html372"
113 HREF="node7.html#SECTION00725000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">5</SPAN> WTiling functions</A>
116 <LI><A NAME="tex2html373"
117 HREF="node7.html#SECTION00730000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN> Functions defined in <SPAN CLASS="textit">mod_query</SPAN></A>
119 <LI><A NAME="tex2html374"
120 HREF="node7.html#SECTION00731000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">1</SPAN> WComplProxy functions</A>
121 <LI><A NAME="tex2html375"
122 HREF="node7.html#SECTION00732000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN> WEdln functions</A>
123 <LI><A NAME="tex2html376"
124 HREF="node7.html#SECTION00733000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN> WInput functions</A>
127 <LI><A NAME="tex2html377"
128 HREF="node7.html#SECTION00740000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">4</SPAN> Functions defined in <SPAN CLASS="textit">mod_menu</SPAN></A>
130 <LI><A NAME="tex2html378"
131 HREF="node7.html#SECTION00741000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN> WMenu functions</A>
134 <LI><A NAME="tex2html379"
135 HREF="node7.html#SECTION00750000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">5</SPAN> Functions defined in <SPAN CLASS="textit">mod_dock</SPAN></A>
137 <LI><A NAME="tex2html380"
138 HREF="node7.html#SECTION00751000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">1</SPAN> WDock functions</A>
141 <LI><A NAME="tex2html381"
142 HREF="node7.html#SECTION00760000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">6</SPAN> Functions defined in <SPAN CLASS="textit">mod_sp</SPAN></A>
143 <LI><A NAME="tex2html382"
144 HREF="node7.html#SECTION00770000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">7</SPAN> Functions defined in <SPAN CLASS="textit">de</SPAN></A>
145 <LI><A NAME="tex2html383"
146 HREF="node7.html#SECTION00780000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">8</SPAN> Hooks</A>
148 <!--End of Table of Child-Links-->
151 <H1><A NAME="SECTION00700000000000000000"></A>
152 <A NAME="sec:exports"></A>
154 <SPAN CLASS="arabic">6</SPAN>. Function reference
159 <H2><A NAME="SECTION00710000000000000000"></A>
160 <A NAME="sec:ioncoreref"></A>
162 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN> Functions defined in <SPAN CLASS="textit">ioncore</SPAN>
166 <DD><A NAME="4188"></A>
168 <A NAME="fn:ioncore.TR"></A>
170 <DT><STRONG>Synopsis:</STRONG></DT>
171 <DD><TT>ioncore.TR(s, ...)</TT>
174 <DT><STRONG>Description:</STRONG></DT>
175 <DD>gettext+string.format
183 <DD><A NAME="4190"></A>
185 <A NAME="fn:ioncore.bdoc"></A>
187 <DT><STRONG>Synopsis:</STRONG></DT>
188 <DD><TT>ioncore.bdoc(text)</TT>
191 <DT><STRONG>Description:</STRONG></DT>
192 <DD>Used to enter documentation among bindings so that other programs
193 can read it. Does nothing.
201 <DD><A NAME="4192"></A>
203 <A NAME="fn:ioncore.chdir_for"></A>
205 <DT><STRONG>Synopsis:</STRONG></DT>
206 <DD><TT>ioncore.chdir_for(reg, dir)</TT>
209 <DT><STRONG>Description:</STRONG></DT>
210 <DD>Change default working directory for new programs started in <TT>reg</TT>.
218 <DD><A NAME="4194"></A>
220 <A NAME="fn:ioncore.compile_cmd"></A>
222 <DT><STRONG>Synopsis:</STRONG></DT>
223 <DD><TT>ioncore.compile_cmd(cmd, guard)</TT>
226 <DT><STRONG>Description:</STRONG></DT>
227 <DD>Compile string <TT>cmd</TT> into a bindable function. Within <TT>cmd</TT>, the
228 variable ''<TT>_</TT>'' (underscore) can be used to refer to the object
229 that was selecting for the bound action and chosen to handle it.
230 The variable ''<TT>_sub</TT>'' refers to a ''currently active'' sub-object
231 of <TT>_</TT>, or a sub-object where the action loading to the binding
232 being called actually occured.
235 The string <TT>guard</TT> maybe set to pose limits on <TT>_sub</TT>. Currently
236 supported guards are <TT>_sub:non-nil</TT> and <TT>_sub:WFoobar</TT>, where
245 <DD><A NAME="4196"></A>
247 <A NAME="fn:ioncore.create_ws"></A>
249 <DT><STRONG>Synopsis:</STRONG></DT>
250 <DD><TT>ioncore.create_ws(scr, tmpl, no_default)</TT>
253 <DT><STRONG>Description:</STRONG></DT>
254 <DD>Create new workspace on screen <TT>scr</TT>. The table <TT>tmpl</TT>
255 may be used to override parts of <TT>default_ws_params</TT>,
256 and <TT>no_default</TT> may be set to <TT>true</TT> to complete ignore it.
264 <DD><A NAME="4198"></A>
266 <A NAME="fn:ioncore.defbindings"></A>
268 <DT><STRONG>Synopsis:</STRONG></DT>
269 <DD><TT>ioncore.defbindings(context, bindings)</TT>
272 <DT><STRONG>Description:</STRONG></DT>
273 <DD>Define bindings for context <TT>context</TT>. Here <TT>binding</TT> is
274 a table composed of entries created with <A HREF="#fn:ioncore.kpress"><TT>ioncore.kpress</TT></A>,
275 etc.; see section <A HREF="node4.html#sec:bindings">3.3</A> for details.
283 <DD><A NAME="4200"></A>
285 <A NAME="fn:ioncore.defctxmenu"></A>
287 <DT><STRONG>Synopsis:</STRONG></DT>
288 <DD><TT>ioncore.defctxmenu(ctx, ...)</TT>
291 <DT><STRONG>Description:</STRONG></DT>
292 <DD>Define context menu for context <TT>ctx</TT>, <TT>tab</TT> being a table
301 <DD><A NAME="4202"></A>
303 <A NAME="fn:ioncore.defmenu"></A>
305 <DT><STRONG>Synopsis:</STRONG></DT>
306 <DD><TT>ioncore.defmenu(name, tab)</TT>
309 <DT><STRONG>Description:</STRONG></DT>
310 <DD>Define a new menu with <TT>name</TT> being the menu's name and <TT>tab</TT>
311 being a table of menu entries. If <TT>tab.append</TT> is set, the entries
312 are appended to previously-defined ones, if possible.
320 <DD><A NAME="4204"></A>
322 <A NAME="fn:ioncore.defwinprop"></A>
324 <DT><STRONG>Synopsis:</STRONG></DT>
325 <DD><TT>ioncore.defwinprop(list)</TT>
328 <DT><STRONG>Description:</STRONG></DT>
329 <DD>Define a winprop. For more information, see section <A HREF="node4.html#sec:winprops">3.5</A>.
337 <DD><A NAME="4206"></A>
339 <A NAME="fn:ioncore.exec_on"></A>
341 <DT><STRONG>Synopsis:</STRONG></DT>
342 <DD><TT>ioncore.exec_on(reg, cmd, merr_internal)</TT>
345 <DT><STRONG>Description:</STRONG></DT>
346 <DD>Run <TT>cmd</TT> with the environment variable DISPLAY set to point to the
347 root window of the X screen <TT>reg</TT> is on. If <TT>cmd</TT> is prefixed
348 by a colon (<TT>:</TT>), the following command is executed in an xterm
349 (or other terminal emulator) with the help of the <TT>ion-runinxterm</TT>
350 script. If the command is prefixed by two colons, <TT>ion-runinxterm</TT>
351 will ask you to press enter after the command is finished, even if it
360 <DD><A NAME="4208"></A>
362 <A NAME="fn:ioncore.read_savefile"></A>
364 <DT><STRONG>Synopsis:</STRONG></DT>
365 <DD><TT>table ioncore.read_savefile(string basename)</TT>
368 <DT><STRONG>Description:</STRONG></DT>
377 <DD><A NAME="4210"></A>
379 <A NAME="fn:ioncore.get_savefile"></A>
381 <DT><STRONG>Synopsis:</STRONG></DT>
382 <DD><TT>string ioncore.get_savefile(string basename)</TT>
385 <DT><STRONG>Description:</STRONG></DT>
386 <DD>Get a file name to save (session) data in. The string <TT>basename</TT>
387 should contain no path or extension components.
395 <DD><A NAME="4212"></A>
397 <A NAME="fn:ioncore.lookup_script"></A>
399 <DT><STRONG>Synopsis:</STRONG></DT>
400 <DD><TT>string ioncore.lookup_script(string file, string sp)</TT>
403 <DT><STRONG>Description:</STRONG></DT>
404 <DD>Lookup script <TT>file</TT>. If <TT>try_in_dir</TT> is set, it is tried
405 before the standard search path.
413 <DD><A NAME="4214"></A>
415 <A NAME="fn:ioncore.write_savefile"></A>
417 <DT><STRONG>Synopsis:</STRONG></DT>
418 <DD><TT>bool ioncore.write_savefile(string basename, table tab)</TT>
421 <DT><STRONG>Description:</STRONG></DT>
422 <DD>Write <TT>tab</TT> in file with basename <TT>basename</TT> in the
431 <DD><A NAME="4216"></A>
433 <A NAME="fn:ioncore.find_manager"></A>
435 <DT><STRONG>Synopsis:</STRONG></DT>
436 <DD><TT>ioncore.find_manager(obj, t)</TT>
439 <DT><STRONG>Description:</STRONG></DT>
440 <DD>Find an object with type name <TT>t</TT> managing <TT>obj</TT> or one of
449 <DD><A NAME="4218"></A>
451 <A NAME="fn:ioncore.get_dir_for"></A>
453 <DT><STRONG>Synopsis:</STRONG></DT>
454 <DD><TT>ioncore.get_dir_for(reg)</TT>
457 <DT><STRONG>Description:</STRONG></DT>
458 <DD>Get default working directory for new programs started in <TT>reg</TT>.
466 <DD><A NAME="4220"></A>
468 <A NAME="fn:ioncore.getbindings"></A>
470 <DT><STRONG>Synopsis:</STRONG></DT>
471 <DD><TT>ioncore.getbindings(maybe_context)</TT>
474 <DT><STRONG>Description:</STRONG></DT>
475 <DD>Get a table of all bindings.
483 <DD><A NAME="4222"></A>
485 <A NAME="fn:ioncore.getctxmenu"></A>
487 <DT><STRONG>Synopsis:</STRONG></DT>
488 <DD><TT>ioncore.getctxmenu(name)</TT>
491 <DT><STRONG>Description:</STRONG></DT>
492 <DD>Returns a context menu defined with <A HREF="#fn:ioncore.defctxmenu"><TT>ioncore.defctxmenu</TT></A>.
500 <DD><A NAME="4224"></A>
502 <A NAME="fn:ioncore.getmenu"></A>
504 <DT><STRONG>Synopsis:</STRONG></DT>
505 <DD><TT>ioncore.getmenu(name)</TT>
508 <DT><STRONG>Description:</STRONG></DT>
509 <DD>Returns a menu defined with <A HREF="#fn:ioncore.defmenu"><TT>ioncore.defmenu</TT></A>.
517 <DD><A NAME="4226"></A>
519 <A NAME="fn:ioncore.getwinprop"></A>
521 <DT><STRONG>Synopsis:</STRONG></DT>
522 <DD><TT>ioncore.getwinprop(cwin)</TT>
525 <DT><STRONG>Description:</STRONG></DT>
526 <DD>Find winprop table for <TT>cwin</TT>.
534 <DD><A NAME="4228"></A>
536 <A NAME="fn:ioncore.aboutmsg"></A>
538 <DT><STRONG>Synopsis:</STRONG></DT>
539 <DD><TT>string ioncore.aboutmsg()</TT>
542 <DT><STRONG>Description:</STRONG></DT>
543 <DD>Returns an about message (version, author, copyright notice).
551 <DD><A NAME="4230"></A>
553 <A NAME="fn:ioncore.activity_first"></A>
555 <DT><STRONG>Synopsis:</STRONG></DT>
556 <DD><TT>WRegion ioncore.activity_first()</TT>
559 <DT><STRONG>Description:</STRONG></DT>
560 <DD>Return first regio non activity list.
568 <DD><A NAME="4232"></A>
570 <A NAME="fn:ioncore.activity_list"></A>
572 <DT><STRONG>Synopsis:</STRONG></DT>
573 <DD><TT>table ioncore.activity_list()</TT>
576 <DT><STRONG>Description:</STRONG></DT>
577 <DD>Return list of regions with activity/urgency bit set.
585 <DD><A NAME="4234"></A>
587 <A NAME="fn:ioncore.clear_tags"></A>
589 <DT><STRONG>Synopsis:</STRONG></DT>
590 <DD><TT>void ioncore.clear_tags()</TT>
593 <DT><STRONG>Description:</STRONG></DT>
594 <DD>Untag all regions.
602 <DD><A NAME="4236"></A>
604 <A NAME="fn:ioncore.clientwin_list"></A>
606 <DT><STRONG>Synopsis:</STRONG></DT>
607 <DD><TT>table ioncore.clientwin_list()</TT>
610 <DT><STRONG>Description:</STRONG></DT>
611 <DD>Return a list of all client windows.
619 <DD><A NAME="4238"></A>
621 <A NAME="fn:ioncore.current"></A>
623 <DT><STRONG>Synopsis:</STRONG></DT>
624 <DD><TT>WRegion ioncore.current()</TT>
627 <DT><STRONG>Description:</STRONG></DT>
628 <DD>Returns the currently focused region, if any.
636 <DD><A NAME="4240"></A>
638 <A NAME="fn:ioncore.defshortening"></A>
640 <DT><STRONG>Synopsis:</STRONG></DT>
641 <DD><TT>bool ioncore.defshortening(string rx, string rule, bool always)</TT>
644 <DT><STRONG>Description:</STRONG></DT>
645 <DD>Add a rule describing how too long titles should be shortened to fit in tabs.
646 The regular expression <TT>rx</TT> (POSIX, not Lua!) is used to match titles
647 and when <TT>rx</TT> matches, <TT>rule</TT> is attempted to use as a replacement
648 for title. If <TT>always</TT> is set, the rule is used even if no shortening
652 Similarly to sed's 's' command, <TT>rule</TT> may contain characters that are
653 inserted in the resulting string and specials as follows:
656 <TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
657 <TR><TD ALIGN="LEFT">Special</TD>
658 <TD ALIGN="LEFT">Description</TD>
660 <TR><TD ALIGN="LEFT">$0</TD>
661 <TD ALIGN="LEFT">Place the original string here.</TD>
663 <TR><TD ALIGN="LEFT">$1 to $9</TD>
664 <TD ALIGN="LEFT">Insert n:th capture here (as usual,captures are surrounded
665 by parentheses in the regex).</TD>
667 <TR><TD ALIGN="LEFT">$|</TD>
668 <TD ALIGN="LEFT">Alternative shortening separator. The shortening described
669 before the first this kind of separator is tried first and
670 if it fails to make the string short enough, the next is
671 tried, and so on.</TD>
673 <TR><TD ALIGN="LEFT">$<</TD>
674 <TD ALIGN="LEFT">Remove characters on the left of this marker to shorten the
677 <TR><TD ALIGN="LEFT">$></TD>
678 <TD ALIGN="LEFT">Remove characters on the right of this marker to shorten the
679 string. Only the first $< or $> within an alternative
680 shortening is used.</TD>
690 <DD><A NAME="4242"></A>
692 <A NAME="fn:ioncore.exec"></A>
694 <DT><STRONG>Synopsis:</STRONG></DT>
695 <DD><TT>integer ioncore.exec(string cmd)</TT>
698 <DT><STRONG>Description:</STRONG></DT>
699 <DD>Run <TT>cmd</TT> with the environment variable DISPLAY set to point to the
700 X display the WM is running on. No specific screen is set unlike with
701 <A HREF="#fn:WRootWin.exec_on"><TT>WRootWin.exec_on</TT></A>. The PID of the (shell executing the) new
710 <DD><A NAME="4244"></A>
712 <A NAME="fn:ioncore.find_screen_id"></A>
714 <DT><STRONG>Synopsis:</STRONG></DT>
715 <DD><TT>WScreen ioncore.find_screen_id(integer id)</TT>
718 <DT><STRONG>Description:</STRONG></DT>
719 <DD>Find the screen with numerical id <TT>id</TT>. If Xinerama is
720 not present, <TT>id</TT> corresponds to X screen numbers. Otherwise
721 the ids are some arbitrary ordering of Xinerama rootwins.
722 If <TT>id</TT> is <SPAN CLASS="MATH"></SPAN>, the screen with the highest id is returned.
730 <DD><A NAME="4246"></A>
732 <A NAME="fn:ioncore.get"></A>
734 <DT><STRONG>Synopsis:</STRONG></DT>
735 <DD><TT>table ioncore.get()</TT>
738 <DT><STRONG>Description:</STRONG></DT>
739 <DD>Get ioncore basic settings. For details see <A HREF="#fn:ioncore.set"><TT>ioncore.set</TT></A>.
747 <DD><A NAME="4248"></A>
749 <A NAME="fn:ioncore.get_paths"></A>
751 <DT><STRONG>Synopsis:</STRONG></DT>
752 <DD><TT>table ioncore.get_paths(table tab)</TT>
755 <DT><STRONG>Description:</STRONG></DT>
756 <DD>Get important directories (userdir, sessiondir, searchpath).
764 <DD><A NAME="4250"></A>
766 <A NAME="fn:ioncore.goto_activity"></A>
768 <DT><STRONG>Synopsis:</STRONG></DT>
769 <DD><TT>bool ioncore.goto_activity()</TT>
772 <DT><STRONG>Description:</STRONG></DT>
773 <DD>Go to first region on activity list.
781 <DD><A NAME="4252"></A>
783 <A NAME="fn:ioncore.goto_first"></A>
785 <DT><STRONG>Synopsis:</STRONG></DT>
786 <DD><TT>WRegion ioncore.goto_first(WRegion reg, string dirstr, table param)</TT>
789 <DT><STRONG>Description:</STRONG></DT>
790 <DD>Go to first region within <TT>reg</TT> in direction <TT>dirstr</TT>
791 (up/down/left/right/beg/end/any). For information on <TT>param</TT>,
792 see <A HREF="#fn:ioncore.navi_next"><TT>ioncore.navi_next</TT></A>. Additionally this function supports
793 the boolean <TT>nofront</TT> field, for not bringing the object to
802 <DD><A NAME="4254"></A>
804 <A NAME="fn:ioncore.goto_next"></A>
806 <DT><STRONG>Synopsis:</STRONG></DT>
807 <DD><TT>WRegion ioncore.goto_next(WRegion reg, string dirstr, table param)</TT>
810 <DT><STRONG>Description:</STRONG></DT>
811 <DD>Go to region next from <TT>reg</TT> in direction <TT>dirstr</TT>
812 (up/down/left/right/next/prev/any). For information on <TT>param</TT>,
813 see <A HREF="#fn:ioncore.navi_next"><TT>ioncore.navi_next</TT></A>. Additionally this function supports
814 the boolean <TT>nofront</TT> field, for not bringing the object to
823 <DD><A NAME="4256"></A>
825 <A NAME="fn:ioncore.goto_next_screen"></A>
827 <DT><STRONG>Synopsis:</STRONG></DT>
828 <DD><TT>WScreen ioncore.goto_next_screen()</TT>
831 <DT><STRONG>Description:</STRONG></DT>
832 <DD>Switch focus to the next screen and return it.
835 Note that this function is asynchronous; the screen will not
836 actually have received the focus when this function returns.
844 <DD><A NAME="4258"></A>
846 <A NAME="fn:ioncore.goto_nth_screen"></A>
848 <DT><STRONG>Synopsis:</STRONG></DT>
849 <DD><TT>WScreen ioncore.goto_nth_screen(integer id)</TT>
852 <DT><STRONG>Description:</STRONG></DT>
853 <DD>Switch focus to the screen with id <TT>id</TT> and return it.
856 Note that this function is asynchronous; the screen will not
857 actually have received the focus when this function returns.
865 <DD><A NAME="4260"></A>
867 <A NAME="fn:ioncore.goto_prev_screen"></A>
869 <DT><STRONG>Synopsis:</STRONG></DT>
870 <DD><TT>WScreen ioncore.goto_prev_screen()</TT>
873 <DT><STRONG>Description:</STRONG></DT>
874 <DD>Switch focus to the previous screen and return it.
877 Note that this function is asynchronous; the screen will not
878 actually have received the focus when this function returns.
886 <DD><A NAME="4262"></A>
888 <A NAME="fn:ioncore.goto_previous"></A>
890 <DT><STRONG>Synopsis:</STRONG></DT>
891 <DD><TT>WRegion ioncore.goto_previous()</TT>
894 <DT><STRONG>Description:</STRONG></DT>
895 <DD>Go to and return to a previously active region (if any).
898 Note that this function is asynchronous; the region will not
899 actually have received the focus when this function returns.
907 <DD><A NAME="4264"></A>
909 <A NAME="fn:ioncore.is_i18n"></A>
911 <DT><STRONG>Synopsis:</STRONG></DT>
912 <DD><TT>bool ioncore.is_i18n()</TT>
915 <DT><STRONG>Description:</STRONG></DT>
916 <DD>Is Ion supporting locale-specifically multibyte-encoded strings?
924 <DD><A NAME="4266"></A>
926 <A NAME="fn:ioncore.load_module"></A>
928 <DT><STRONG>Synopsis:</STRONG></DT>
929 <DD><TT>bool ioncore.load_module(string modname)</TT>
932 <DT><STRONG>Description:</STRONG></DT>
933 <DD>Attempt to load a C-side module.
941 <DD><A NAME="4268"></A>
943 <A NAME="fn:ioncore.lookup_clientwin"></A>
945 <DT><STRONG>Synopsis:</STRONG></DT>
946 <DD><TT>WClientWin ioncore.lookup_clientwin(string name)</TT>
949 <DT><STRONG>Description:</STRONG></DT>
950 <DD>Attempt to find a client window with name <TT>name</TT>.
958 <DD><A NAME="4270"></A>
960 <A NAME="fn:ioncore.lookup_region"></A>
962 <DT><STRONG>Synopsis:</STRONG></DT>
963 <DD><TT>WRegion ioncore.lookup_region(string name, string typenam)</TT>
966 <DT><STRONG>Description:</STRONG></DT>
967 <DD>Attempt to find a non-client window region with name <TT>name</TT> and type
968 inheriting <TT>typenam</TT>.
976 <DD><A NAME="4272"></A>
978 <A NAME="fn:ioncore.navi_first"></A>
980 <DT><STRONG>Synopsis:</STRONG></DT>
981 <DD><TT>WRegion ioncore.navi_first(WRegion reg, string dirstr, table param)</TT>
984 <DT><STRONG>Description:</STRONG></DT>
985 <DD>Find first region within <TT>reg</TT> in direction <TT>dirstr</TT>
986 (up/down/left/right/beg/end/any). For information on <TT>param</TT>,
987 see <A HREF="#fn:ioncore.navi_next"><TT>ioncore.navi_next</TT></A>.
995 <DD><A NAME="4274"></A>
997 <A NAME="fn:ioncore.navi_next"></A>
999 <DT><STRONG>Synopsis:</STRONG></DT>
1000 <DD><TT>WRegion ioncore.navi_next(WRegion reg, string dirstr, table param)</TT>
1003 <DT><STRONG>Description:</STRONG></DT>
1004 <DD>Find region next from <TT>reg</TT> in direction <TT>dirstr</TT>
1005 (up/down/left/right/next/prev/any). The table param may
1006 contain the boolean field <TT>nowrap</TT>, instructing not to wrap
1007 around, and the WRegions <TT>no_ascend</TT> and <TT>no_descend</TT>,
1008 and functions <TT>ascend_filter</TT> and <TT>descend_filter</TT> from
1009 <TT>WRegion</TT>s (<TT>to</TT>, <TT>from</TT>), used to decide when to descend
1010 or ascend into another region. (TODO: more detailed explanation.)
1018 <DD><A NAME="4276"></A>
1020 <A NAME="fn:ioncore.popen_bgread"></A>
1022 <DT><STRONG>Synopsis:</STRONG></DT>
1023 <DD><TT>integer ioncore.popen_bgread(string cmd, function h, function errh)</TT>
1026 <DT><STRONG>Description:</STRONG></DT>
1027 <DD>Run <TT>cmd</TT> with a read pipe connected to its stdout.
1028 When data is received through the pipe, <TT>handler</TT> is called
1037 <DD><A NAME="4278"></A>
1039 <A NAME="fn:ioncore.progname"></A>
1041 <DT><STRONG>Synopsis:</STRONG></DT>
1042 <DD><TT>string ioncore.progname()</TT>
1045 <DT><STRONG>Description:</STRONG></DT>
1046 <DD>Returns the name of program using Ioncore.
1054 <DD><A NAME="4280"></A>
1056 <A NAME="fn:ioncore.region_list"></A>
1058 <DT><STRONG>Synopsis:</STRONG></DT>
1059 <DD><TT>table ioncore.region_list(string typenam)</TT>
1062 <DT><STRONG>Description:</STRONG></DT>
1063 <DD>Find all non-client window regions inheriting <TT>typenam</TT>.
1071 <DD><A NAME="4282"></A>
1073 <A NAME="fn:ioncore.request_selection"></A>
1075 <DT><STRONG>Synopsis:</STRONG></DT>
1076 <DD><TT>void ioncore.request_selection(function fn)</TT>
1079 <DT><STRONG>Description:</STRONG></DT>
1080 <DD>Request (string) selection. The function <TT>fn</TT> will be called
1081 with the selection when and if it is received.
1089 <DD><A NAME="4284"></A>
1091 <A NAME="fn:ioncore.resign"></A>
1093 <DT><STRONG>Synopsis:</STRONG></DT>
1094 <DD><TT>void ioncore.resign()</TT>
1097 <DT><STRONG>Description:</STRONG></DT>
1098 <DD>Causes the window manager to simply exit without saving
1107 <DD><A NAME="4286"></A>
1109 <A NAME="fn:ioncore.restart"></A>
1111 <DT><STRONG>Synopsis:</STRONG></DT>
1112 <DD><TT>void ioncore.restart()</TT>
1115 <DT><STRONG>Description:</STRONG></DT>
1116 <DD>Restart, saving session first.
1124 <DD><A NAME="4288"></A>
1126 <A NAME="fn:ioncore.restart_other"></A>
1128 <DT><STRONG>Synopsis:</STRONG></DT>
1129 <DD><TT>void ioncore.restart_other(string cmd)</TT>
1132 <DT><STRONG>Description:</STRONG></DT>
1133 <DD>Attempt to restart another window manager <TT>cmd</TT>.
1141 <DD><A NAME="4290"></A>
1143 <A NAME="fn:ioncore.set"></A>
1145 <DT><STRONG>Synopsis:</STRONG></DT>
1146 <DD><TT>void ioncore.set(table tab)</TT>
1149 <DT><STRONG>Description:</STRONG></DT>
1150 <DD>Set ioncore basic settings. The table <TT>tab</TT> may contain the
1154 <TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
1155 <TR><TD ALIGN="LEFT">Field</TD>
1156 <TD ALIGN="LEFT">Description</TD>
1158 <TR><TD ALIGN="LEFT"><TT>opaque_resize</TT></TD>
1159 <TD ALIGN="LEFT">(boolean) Controls whether interactive move and
1160 resize operations simply draw a rubberband during
1161 the operation (false) or immediately affect the
1162 object in question at every step (true).</TD>
1164 <TR><TD ALIGN="LEFT"><TT>warp</TT></TD>
1165 <TD ALIGN="LEFT">(boolean) Should focusing operations move the
1166 pointer to the object to be focused?</TD>
1168 <TR><TD ALIGN="LEFT"><TT>switchto</TT></TD>
1169 <TD ALIGN="LEFT">(boolean) Should a managing WMPlex switch
1170 to a newly mapped client window?</TD>
1172 <TR><TD ALIGN="LEFT"><TT>screen_notify</TT></TD>
1173 <TD ALIGN="LEFT">(boolean) Should notification tooltips be displayed
1174 for hidden workspaces with activity?</TD>
1176 <TR><TD ALIGN="LEFT"><TT>frame_default_index</TT></TD>
1177 <TD ALIGN="LEFT">(string) Specifies where to add new regions
1178 on the mutually exclusive list of a frame. One of
1179 ''last'', ''next'' (for after current), ''next-act''
1180 (for after current and anything with activity right
1183 <TR><TD ALIGN="LEFT"><TT>dblclick_delay</TT></TD>
1184 <TD ALIGN="LEFT">(integer) Delay between clicks of a double click.</TD>
1186 <TR><TD ALIGN="LEFT"><TT>kbresize_delay</TT></TD>
1187 <TD ALIGN="LEFT">(integer) Delay in milliseconds for ending keyboard
1188 resize mode after inactivity.</TD>
1190 <TR><TD ALIGN="LEFT"><TT>kbresize_t_max</TT></TD>
1191 <TD ALIGN="LEFT">(integer) Controls keyboard resize acceleration.
1192 See description below for details.</TD>
1194 <TR><TD ALIGN="LEFT"><TT>kbresize_t_min</TT></TD>
1195 <TD ALIGN="LEFT">(integer) See below.</TD>
1197 <TR><TD ALIGN="LEFT"><TT>kbresize_step</TT></TD>
1198 <TD ALIGN="LEFT">(floating point) See below.</TD>
1200 <TR><TD ALIGN="LEFT"><TT>kbresize_maxacc</TT></TD>
1201 <TD ALIGN="LEFT">(floating point) See below.</TD>
1203 <TR><TD ALIGN="LEFT"><TT>framed_transients</TT></TD>
1204 <TD ALIGN="LEFT">(boolean) Put transients in nested frames.</TD>
1206 <TR><TD ALIGN="LEFT"><TT>float_placement_method</TT></TD>
1207 <TD ALIGN="LEFT">(string) How to place floating frames.
1208 One of ''udlr'' (up-down, then left-right),
1209 ''lrud'' (left-right, then up-down) or ''random''.</TD>
1211 <TR><TD ALIGN="LEFT"><TT>default_ws_params</TT></TD>
1212 <TD ALIGN="LEFT">(table) Default workspace layout; the
1213 attach/creation parameters for a WGroup.</TD>
1218 When a keyboard resize function is called, and at most <TT>kbresize_t_max</TT>
1219 milliseconds has passed from a previous call, acceleration factor is reset
1220 to 1.0. Otherwise, if at least <TT>kbresize_t_min</TT> milliseconds have
1221 passed from the from previous acceleration update or reset the squere root
1222 of the acceleration factor is incremented by <TT>kbresize_step</TT>. The
1223 maximum acceleration factor (pixels/call modulo size hints) is given by
1224 <TT>kbresize_maxacc</TT>. The default values are (200, 50, 30, 100).
1232 <DD><A NAME="4292"></A>
1234 <A NAME="fn:ioncore.set_get_winprop_fn"></A>
1236 <DT><STRONG>Synopsis:</STRONG></DT>
1237 <DD><TT>void ioncore.set_get_winprop_fn(function fn)</TT>
1240 <DT><STRONG>Description:</STRONG></DT>
1241 <DD>Set function used to look up winprops.
1249 <DD><A NAME="4294"></A>
1251 <A NAME="fn:ioncore.set_paths"></A>
1253 <DT><STRONG>Synopsis:</STRONG></DT>
1254 <DD><TT>bool ioncore.set_paths(table tab)</TT>
1257 <DT><STRONG>Description:</STRONG></DT>
1258 <DD>Set important directories (sessiondir, searchpath).
1266 <DD><A NAME="4296"></A>
1268 <A NAME="fn:ioncore.set_selection"></A>
1270 <DT><STRONG>Synopsis:</STRONG></DT>
1271 <DD><TT>void ioncore.set_selection(string p)</TT>
1274 <DT><STRONG>Description:</STRONG></DT>
1275 <DD>Set primary selection and cutbuffer0 to <TT>p</TT>.
1283 <DD><A NAME="4298"></A>
1285 <A NAME="fn:ioncore.shutdown"></A>
1287 <DT><STRONG>Synopsis:</STRONG></DT>
1288 <DD><TT>void ioncore.shutdown()</TT>
1291 <DT><STRONG>Description:</STRONG></DT>
1292 <DD>End session saving it first.
1300 <DD><A NAME="4300"></A>
1302 <A NAME="fn:ioncore.snapshot"></A>
1304 <DT><STRONG>Synopsis:</STRONG></DT>
1305 <DD><TT>void ioncore.snapshot()</TT>
1308 <DT><STRONG>Description:</STRONG></DT>
1317 <DD><A NAME="4302"></A>
1319 <A NAME="fn:ioncore.tagged_list"></A>
1321 <DT><STRONG>Synopsis:</STRONG></DT>
1322 <DD><TT>table ioncore.tagged_list()</TT>
1325 <DT><STRONG>Description:</STRONG></DT>
1326 <DD>Returns a list of tagged regions.
1334 <DD><A NAME="4304"></A>
1336 <A NAME="fn:ioncore.tags_first"></A>
1338 <DT><STRONG>Synopsis:</STRONG></DT>
1339 <DD><TT>WRegion ioncore.tags_first()</TT>
1342 <DT><STRONG>Description:</STRONG></DT>
1343 <DD>Returns first tagged object.
1351 <DD><A NAME="4306"></A>
1353 <A NAME="fn:ioncore.version"></A>
1355 <DT><STRONG>Synopsis:</STRONG></DT>
1356 <DD><TT>string ioncore.version()</TT>
1359 <DT><STRONG>Description:</STRONG></DT>
1360 <DD>Returns Ioncore version string.
1368 <DD><A NAME="4308"></A>
1370 <A NAME="fn:ioncore.warn"></A>
1372 <DT><STRONG>Synopsis:</STRONG></DT>
1373 <DD><TT>void ioncore.warn(string str)</TT>
1376 <DT><STRONG>Description:</STRONG></DT>
1377 <DD>Issue a warning. How the message is displayed depends on the current
1386 <DD><A NAME="4310"></A>
1388 <A NAME="fn:ioncore.warn_traced"></A>
1390 <DT><STRONG>Synopsis:</STRONG></DT>
1391 <DD><TT>void ioncore.warn_traced(string str)</TT>
1394 <DT><STRONG>Description:</STRONG></DT>
1395 <DD>Similar to <A HREF="#fn:ioncore.warn"><TT>ioncore.warn</TT></A>, but also print Lua stack trace.
1403 <DD><A NAME="4312"></A>
1405 <A NAME="fn:ioncore.x_change_property"></A>
1407 <DT><STRONG>Synopsis:</STRONG></DT>
1408 <DD><TT>void ioncore.x_change_property(integer win, integer atom, integer atom_type, integer format, string mode, table tab)</TT>
1411 <DT><STRONG>Description:</STRONG></DT>
1412 <DD>Modify a window property. The <TT>mode</TT> is one of
1413 <TT>"replace"</TT>, <TT>"prepend"</TT> or <TT>"append"</TT>, and format
1414 is either 8, 16 or 32. Also see <A HREF="#fn:ioncore.x_get_window_property"><TT>ioncore.x_get_window_property</TT></A>
1415 and the <TT>XChangeProperty</TT>(3) manual page.
1423 <DD><A NAME="4314"></A>
1425 <A NAME="fn:ioncore.x_delete_property"></A>
1427 <DT><STRONG>Synopsis:</STRONG></DT>
1428 <DD><TT>void ioncore.x_delete_property(integer win, integer atom)</TT>
1431 <DT><STRONG>Description:</STRONG></DT>
1432 <DD>Delete a window property.
1440 <DD><A NAME="4316"></A>
1442 <A NAME="fn:ioncore.x_get_atom_name"></A>
1444 <DT><STRONG>Synopsis:</STRONG></DT>
1445 <DD><TT>string ioncore.x_get_atom_name(integer atom)</TT>
1448 <DT><STRONG>Description:</STRONG></DT>
1449 <DD>Get the name of an atom. See <TT>XGetAtomName</TT>(3) manual page for
1458 <DD><A NAME="4318"></A>
1460 <A NAME="fn:ioncore.x_get_text_property"></A>
1462 <DT><STRONG>Synopsis:</STRONG></DT>
1463 <DD><TT>table ioncore.x_get_text_property(integer win, integer atom)</TT>
1466 <DT><STRONG>Description:</STRONG></DT>
1467 <DD>Get a text property for a window (<TT>STRING</TT>, <TT>COMPOUND_TEXT</TT>,
1468 or <TT>UTF8_STRING</TT> property converted). The fields in the returned
1469 table (starting from 1) are the null-separated parts of the property.
1470 See the <TT>XGetTextProperty</TT>(3) manual page for more information.
1478 <DD><A NAME="4320"></A>
1480 <A NAME="fn:ioncore.x_get_window_property"></A>
1482 <DT><STRONG>Synopsis:</STRONG></DT>
1483 <DD><TT>table ioncore.x_get_window_property(integer win, integer atom, integer atom_type, integer n32expected, bool more)</TT>
1486 <DT><STRONG>Description:</STRONG></DT>
1487 <DD>Get a property <TT>atom</TT> of type <TT>atom_type</TT> for window <TT>win</TT>.
1488 The <TT>n32expected</TT> parameter indicates the expected number of 32bit
1489 words, and <TT>more</TT> indicates whether all or just this amount of data
1490 should be fetched. Each 8, 16 or 32bit element of the property, as
1491 deciphered from <TT>atom_type</TT> is a field in the returned table.
1492 See <TT>XGetWindowProperty</TT>(3) manual page for more information.
1500 <DD><A NAME="4322"></A>
1502 <A NAME="fn:ioncore.x_intern_atom"></A>
1504 <DT><STRONG>Synopsis:</STRONG></DT>
1505 <DD><TT>integer ioncore.x_intern_atom(string name, bool only_if_exists)</TT>
1508 <DT><STRONG>Description:</STRONG></DT>
1509 <DD>Create a new atom. See <TT>XInternAtom</TT>(3) manual page for details.
1517 <DD><A NAME="4324"></A>
1519 <A NAME="fn:ioncore.x_set_text_property"></A>
1521 <DT><STRONG>Synopsis:</STRONG></DT>
1522 <DD><TT>void ioncore.x_set_text_property(integer win, integer atom, table tab)</TT>
1525 <DT><STRONG>Description:</STRONG></DT>
1526 <DD>Set a text property for a window. The fields of <TT>tab</TT> starting from
1527 1 should be the different null-separated parts of the property.
1528 See the <TT>XSetTextProperty</TT>(3) manual page for more information.
1536 <DD><A NAME="4326"></A>
1538 <A NAME="fn:ioncore.kpress"></A>
1540 <DT><STRONG>Synopsis:</STRONG></DT>
1541 <DD><TT>ioncore.kpress(keyspec, cmd, guard)</TT>
1544 <DT><STRONG>Description:</STRONG></DT>
1545 <DD>Creates a binding description table for the action of pressing a key given
1546 by <TT>keyspec</TT> (with possible modifiers) to the function <TT>func</TT>.
1547 For more information on bindings, see section <A HREF="node4.html#sec:bindings">3.3</A>.
1555 <DD><A NAME="4328"></A>
1557 <A NAME="fn:ioncore.kpress_wait"></A>
1559 <DT><STRONG>Synopsis:</STRONG></DT>
1560 <DD><TT>ioncore.kpress_wait(keyspec, cmd, guard)</TT>
1563 <DT><STRONG>Description:</STRONG></DT>
1564 <DD>This is similar to <A HREF="#fn:kpress"><TT>kpress</TT></A> but after calling <TT>cmd</TT>,
1565 Ioncore waits for all modifiers to be released before processing
1566 any further actions.
1567 For more information on bindings, see section <A HREF="node4.html#sec:bindings">3.3</A>.
1575 <DD><A NAME="4330"></A>
1577 <A NAME="fn:ioncore.match_winprop_name"></A>
1579 <DT><STRONG>Synopsis:</STRONG></DT>
1580 <DD><TT>ioncore.match_winprop_name(prop, cwin)</TT>
1583 <DT><STRONG>Description:</STRONG></DT>
1584 <DD>The basic name-based winprop matching criteria.
1592 <DD><A NAME="4332"></A>
1594 <A NAME="fn:ioncore.mclick"></A>
1596 <DT><STRONG>Synopsis:</STRONG></DT>
1597 <DD><TT>ioncore.mclick(buttonspec, cmd, guard)</TT>
1600 <DT><STRONG>Description:</STRONG></DT>
1601 <DD>Creates a binding description table for the action of clicking a mouse
1602 button while possible modifier keys are pressed,
1603 both given by <TT>buttonspec</TT>, to the function <TT>func</TT>.
1604 For more information, see section <A HREF="node4.html#sec:bindings">3.3</A>.
1612 <DD><A NAME="4334"></A>
1614 <A NAME="fn:ioncore.mdblclick"></A>
1616 <DT><STRONG>Synopsis:</STRONG></DT>
1617 <DD><TT>ioncore.mdblclick(buttonspec, cmd, guard)</TT>
1620 <DT><STRONG>Description:</STRONG></DT>
1621 <DD>Similar to <A HREF="#fn:mclick"><TT>mclick</TT></A> but for double-click.
1622 Also see section <A HREF="node4.html#sec:bindings">3.3</A>.
1630 <DD><A NAME="4336"></A>
1632 <A NAME="fn:ioncore.mdrag"></A>
1634 <DT><STRONG>Synopsis:</STRONG></DT>
1635 <DD><TT>ioncore.mdrag(buttonspec, cmd, guard)</TT>
1638 <DT><STRONG>Description:</STRONG></DT>
1639 <DD>Creates a binding description table for the action of moving the mouse
1640 (or other pointing device) while the button given by <TT>buttonspec</TT>
1641 is held pressed and the modifiers given by <TT>buttonspec</TT> were pressed
1642 when the button was initially pressed.
1643 Also see section <A HREF="node4.html#sec:bindings">3.3</A>.
1651 <DD><A NAME="4338"></A>
1653 <A NAME="fn:ioncore.menuentry"></A>
1655 <DT><STRONG>Synopsis:</STRONG></DT>
1656 <DD><TT>ioncore.menuentry(name, cmd, guard)</TT>
1659 <DT><STRONG>Description:</STRONG></DT>
1660 <DD>Use this function to define normal menu entries. The string <TT>name</TT>
1661 is the string shown in the visual representation of menu, and the
1662 parameter <TT>cmd</TT> and <TT>guard</TT> are similar to those of
1663 <A HREF="#fn:ioncore.defbindings"><TT>ioncore.defbindings</TT></A>.
1671 <DD><A NAME="4340"></A>
1673 <A NAME="fn:ioncore.mpress"></A>
1675 <DT><STRONG>Synopsis:</STRONG></DT>
1676 <DD><TT>ioncore.mpress(buttonspec, cmd, guard)</TT>
1679 <DT><STRONG>Description:</STRONG></DT>
1680 <DD>Similar to <A HREF="#fn:mclick"><TT>mclick</TT></A> but for just pressing the mouse button.
1681 Also see section <A HREF="node4.html#sec:bindings">3.3</A>.
1689 <DD><A NAME="4342"></A>
1691 <A NAME="fn:ioncore.refresh_stylelist"></A>
1693 <DT><STRONG>Synopsis:</STRONG></DT>
1694 <DD><TT>ioncore.refresh_stylelist()</TT>
1697 <DT><STRONG>Description:</STRONG></DT>
1698 <DD>Refresh list of known style files.
1706 <DD><A NAME="4344"></A>
1708 <A NAME="fn:ioncore.submap"></A>
1710 <DT><STRONG>Synopsis:</STRONG></DT>
1711 <DD><TT>ioncore.submap(kcb_, list)</TT>
1714 <DT><STRONG>Description:</STRONG></DT>
1715 <DD>Returns a function that creates a submap binding description table.
1716 When the key press action <TT>keyspec</TT> occurs, Ioncore will wait for
1717 a further key presse and act according to the submap.
1718 For details, see section <A HREF="node4.html#sec:bindings">3.3</A>.
1726 <DD><A NAME="4346"></A>
1728 <A NAME="fn:ioncore.submenu"></A>
1730 <DT><STRONG>Synopsis:</STRONG></DT>
1731 <DD><TT>ioncore.submenu(name, sub_or_name, options)</TT>
1734 <DT><STRONG>Description:</STRONG></DT>
1735 <DD>Use this function to define menu entries for submenus. The parameter
1736 <A HREF="#fn:sub_or_name"><TT>sub_or_name</TT></A> is either a table of menu entries or the name
1737 of an already defined menu. The initial menu entry to highlight can be
1738 specified by <TT>options.initial</TT> as either an integer starting from 1,
1739 or a function that returns such a number. Another option supported is
1740 <TT>options.noautoexpand</TT> that will cause <A HREF="#fn:mod_query.query_menu"><TT>mod_query.query_menu</TT></A>
1741 to not automatically expand this submenu.
1748 <H3><A NAME="SECTION00711000000000000000">
1749 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN> WClientWin functions</A>
1755 <DD><A NAME="4349"></A>
1757 <A NAME="fn:WClientWin.get_ident"></A>
1759 <DT><STRONG>Synopsis:</STRONG></DT>
1760 <DD><TT>table WClientWin.get_ident(WClientWin cwin)</TT>
1763 <DT><STRONG>Description:</STRONG></DT>
1764 <DD>Returns a table containing the properties <TT>WM_CLASS</TT> (table entries
1765 <TT>instance</TT> and <TT>class</TT>) and <TT>WM_WINDOW_ROLE</TT> (<TT>role</TT>)
1766 properties for <TT>cwin</TT>. If a property is not set, the corresponding
1767 field(s) are unset in the table.
1775 <DD><A NAME="4351"></A>
1777 <A NAME="fn:WClientWin.is_fullscreen"></A>
1779 <DT><STRONG>Synopsis:</STRONG></DT>
1780 <DD><TT>bool WClientWin.is_fullscreen(WClientWin cwin)</TT>
1783 <DT><STRONG>Description:</STRONG></DT>
1784 <DD>Is <TT>cwin</TT> in full screen mode?
1792 <DD><A NAME="4353"></A>
1794 <A NAME="fn:WClientWin.kill"></A>
1796 <DT><STRONG>Synopsis:</STRONG></DT>
1797 <DD><TT>void WClientWin.kill(WClientWin cwin)</TT>
1800 <DT><STRONG>Description:</STRONG></DT>
1801 <DD>Attempt to kill (with XKillWindow) the client that owns the X
1802 window correspoding to <TT>cwin</TT>.
1810 <DD><A NAME="4355"></A>
1812 <A NAME="fn:WClientWin.nudge"></A>
1814 <DT><STRONG>Synopsis:</STRONG></DT>
1815 <DD><TT>void WClientWin.nudge(WClientWin cwin)</TT>
1818 <DT><STRONG>Description:</STRONG></DT>
1819 <DD>Attempts to fix window size problems with non-ICCCM compliant
1828 <DD><A NAME="4357"></A>
1830 <A NAME="fn:WClientWin.quote_next"></A>
1832 <DT><STRONG>Synopsis:</STRONG></DT>
1833 <DD><TT>void WClientWin.quote_next(WClientWin cwin)</TT>
1836 <DT><STRONG>Description:</STRONG></DT>
1837 <DD>Send next key press directly to <TT>cwin</TT>.
1845 <DD><A NAME="4359"></A>
1847 <A NAME="fn:WClientWin.set_fullscreen"></A>
1849 <DT><STRONG>Synopsis:</STRONG></DT>
1850 <DD><TT>bool WClientWin.set_fullscreen(WClientWin cwin, string how)</TT>
1853 <DT><STRONG>Description:</STRONG></DT>
1854 <DD>Set client window <TT>cwin</TT> full screen state according to the
1855 parameter <TT>how</TT> (set/unset/toggle). Resulting state is returned,
1856 which may not be what was requested.
1864 <DD><A NAME="4361"></A>
1866 <A NAME="fn:WClientWin.xid"></A>
1868 <DT><STRONG>Synopsis:</STRONG></DT>
1869 <DD><TT>double WClientWin.xid(WClientWin cwin)</TT>
1872 <DT><STRONG>Description:</STRONG></DT>
1873 <DD>Return the X window id for the client window.
1880 <H3><A NAME="SECTION00712000000000000000">
1881 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">2</SPAN> WFrame functions</A>
1887 <DD><A NAME="4364"></A>
1889 <A NAME="fn:WFrame.is_shaded"></A>
1891 <DT><STRONG>Synopsis:</STRONG></DT>
1892 <DD><TT>bool WFrame.is_shaded(WFrame frame)</TT>
1895 <DT><STRONG>Description:</STRONG></DT>
1896 <DD>Is <TT>frame</TT> shaded?
1904 <DD><A NAME="4366"></A>
1906 <A NAME="fn:WFrame.maximize_horiz"></A>
1908 <DT><STRONG>Synopsis:</STRONG></DT>
1909 <DD><TT>void WFrame.maximize_horiz(WFrame frame)</TT>
1912 <DT><STRONG>Description:</STRONG></DT>
1913 <DD>Attempt to toggle horizontal maximisation of <TT>frame</TT>.
1921 <DD><A NAME="4368"></A>
1923 <A NAME="fn:WFrame.maximize_vert"></A>
1925 <DT><STRONG>Synopsis:</STRONG></DT>
1926 <DD><TT>void WFrame.maximize_vert(WFrame frame)</TT>
1929 <DT><STRONG>Description:</STRONG></DT>
1930 <DD>Attempt to toggle vertical maximisation of <TT>frame</TT>.
1938 <DD><A NAME="4370"></A>
1940 <A NAME="fn:WFrame.mode"></A>
1942 <DT><STRONG>Synopsis:</STRONG></DT>
1943 <DD><TT>string WFrame.mode(WFrame frame)</TT>
1946 <DT><STRONG>Description:</STRONG></DT>
1955 <DD><A NAME="4372"></A>
1957 <A NAME="fn:WFrame.p_switch_tab"></A>
1959 <DT><STRONG>Synopsis:</STRONG></DT>
1960 <DD><TT>void WFrame.p_switch_tab(WFrame frame)</TT>
1963 <DT><STRONG>Description:</STRONG></DT>
1964 <DD>Display the region corresponding to the tab that the user pressed on.
1965 This function should only be used by binding it to a mouse action.
1973 <DD><A NAME="4374"></A>
1975 <A NAME="fn:WFrame.p_tabdrag"></A>
1977 <DT><STRONG>Synopsis:</STRONG></DT>
1978 <DD><TT>void WFrame.p_tabdrag(WFrame frame)</TT>
1981 <DT><STRONG>Description:</STRONG></DT>
1982 <DD>Start dragging the tab that the user pressed on with the pointing device.
1983 This function should only be used by binding it to <SPAN CLASS="textit">mpress</SPAN> or
1984 <SPAN CLASS="textit">mdrag</SPAN> action with area ''tab''.
1992 <DD><A NAME="4376"></A>
1994 <A NAME="fn:WFrame.set_mode"></A>
1996 <DT><STRONG>Synopsis:</STRONG></DT>
1997 <DD><TT>bool WFrame.set_mode(WFrame frame, string modestr)</TT>
2000 <DT><STRONG>Description:</STRONG></DT>
2009 <DD><A NAME="4378"></A>
2011 <A NAME="fn:WFrame.set_numbers"></A>
2013 <DT><STRONG>Synopsis:</STRONG></DT>
2014 <DD><TT>bool WFrame.set_numbers(WFrame frame, string how)</TT>
2017 <DT><STRONG>Description:</STRONG></DT>
2018 <DD>Control whether tabs show numbers (set/unset/toggle).
2019 Resulting state is returned, which may not be what was
2028 <DD><A NAME="4380"></A>
2030 <A NAME="fn:WFrame.set_shaded"></A>
2032 <DT><STRONG>Synopsis:</STRONG></DT>
2033 <DD><TT>bool WFrame.set_shaded(WFrame frame, string how)</TT>
2036 <DT><STRONG>Description:</STRONG></DT>
2037 <DD>Set shading state according to the parameter <TT>how</TT>
2038 (set/unset/toggle). Resulting state is returned, which may not be
2046 <H3><A NAME="SECTION00713000000000000000">
2047 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">3</SPAN> WGroup functions</A>
2053 <DD><A NAME="4383"></A>
2055 <A NAME="fn:WGroup.attach"></A>
2057 <DT><STRONG>Synopsis:</STRONG></DT>
2058 <DD><TT>WRegion WGroup.attach(WGroup ws, WRegion reg, table param)</TT>
2061 <DT><STRONG>Description:</STRONG></DT>
2062 <DD>Attach and reparent existing region <TT>reg</TT> to <TT>ws</TT>.
2063 The table <TT>param</TT> may contain the fields <TT>index</TT> and
2064 <TT>switchto</TT> that are interpreted as for <A HREF="#fn:WMPlex.attach_new"><TT>WMPlex.attach_new</TT></A>.
2072 <DD><A NAME="4385"></A>
2074 <A NAME="fn:WGroup.attach_new"></A>
2076 <DT><STRONG>Synopsis:</STRONG></DT>
2077 <DD><TT>WRegion WGroup.attach_new(WGroup ws, table param)</TT>
2080 <DT><STRONG>Description:</STRONG></DT>
2081 <DD>Create a new region to be managed by <TT>ws</TT>. At least the following
2082 fields in <TT>param</TT> are understood:
2085 <TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
2086 <TR><TD ALIGN="LEFT">Field</TD>
2087 <TD ALIGN="LEFT">Description</TD>
2089 <TR><TD ALIGN="LEFT"><TT>type</TT></TD>
2090 <TD ALIGN="LEFT">Class name (a string) of the object to be created. Mandatory.</TD>
2092 <TR><TD ALIGN="LEFT"><TT>name</TT></TD>
2093 <TD ALIGN="LEFT">Name of the object to be created (a string). Optional.</TD>
2095 <TR><TD ALIGN="LEFT"><TT>switchto</TT></TD>
2096 <TD ALIGN="LEFT">Should the region be switched to (boolean)? Optional.</TD>
2098 <TR><TD ALIGN="LEFT"><TT>level</TT></TD>
2099 <TD ALIGN="LEFT">Stacking level; default is 1.</TD>
2101 <TR><TD ALIGN="LEFT"><TT>modal</TT></TD>
2102 <TD ALIGN="LEFT">Make object modal; ignored if level is set.</TD>
2104 <TR><TD ALIGN="LEFT"><TT>sizepolicy</TT></TD>
2105 <TD ALIGN="LEFT">Size policy.</TD>
2110 In addition parameters to the region to be created are passed in this
2119 <DD><A NAME="4387"></A>
2121 <A NAME="fn:WGroup.bottom"></A>
2123 <DT><STRONG>Synopsis:</STRONG></DT>
2124 <DD><TT>WRegion WGroup.bottom(WGroup ws)</TT>
2127 <DT><STRONG>Description:</STRONG></DT>
2128 <DD>Returns the 'bottom' of <TT>ws</TT>.
2136 <DD><A NAME="4389"></A>
2138 <A NAME="fn:WGroup.managed_list"></A>
2140 <DT><STRONG>Synopsis:</STRONG></DT>
2141 <DD><TT>table WGroup.managed_list(WGroup ws)</TT>
2144 <DT><STRONG>Description:</STRONG></DT>
2145 <DD>Returns a list of regions managed by the workspace (frames, mostly).
2152 <H3><A NAME="SECTION00714000000000000000">
2153 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">4</SPAN> WGroupCW functions</A>
2158 <H3><A NAME="SECTION00715000000000000000">
2159 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">5</SPAN> WGroupWS functions</A>
2165 <DD><A NAME="4393"></A>
2167 <A NAME="fn:WGroupWS.attach_framed"></A>
2169 <DT><STRONG>Synopsis:</STRONG></DT>
2170 <DD><TT>bool WGroupWS.attach_framed(WGroupWS ws, WRegion reg, table t)</TT>
2173 <DT><STRONG>Description:</STRONG></DT>
2174 <DD>Attach region <TT>reg</TT> on <TT>ws</TT>.
2175 At least the following fields in <TT>t</TT> are supported:
2178 <TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
2179 <TR><TD ALIGN="LEFT">Field</TD>
2180 <TD ALIGN="LEFT">Description</TD>
2182 <TR><TD ALIGN="LEFT"><TT>switchto</TT></TD>
2183 <TD ALIGN="LEFT">Should the region be switched to (boolean)? Optional.</TD>
2185 <TR><TD ALIGN="LEFT"><TT>geom</TT></TD>
2186 <TD ALIGN="LEFT">Geometry; <TT>x</TT> and <TT>y</TT>, if set, indicates top-left of
2187 the frame to be created while <TT>width</TT> and <TT>height</TT>, if set, indicate
2188 the size of the client window within that frame. Optional.</TD>
2197 <H3><A NAME="SECTION00716000000000000000">
2198 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">6</SPAN> WInfoWin functions</A>
2204 <DD><A NAME="4396"></A>
2206 <A NAME="fn:WInfoWin.set_text"></A>
2208 <DT><STRONG>Synopsis:</STRONG></DT>
2209 <DD><TT>void WInfoWin.set_text(WInfoWin p, string str)</TT>
2212 <DT><STRONG>Description:</STRONG></DT>
2213 <DD>Set contents of the info window.
2220 <H3><A NAME="SECTION00717000000000000000">
2221 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">7</SPAN> WMPlex functions</A>
2227 <DD><A NAME="4399"></A>
2229 <A NAME="fn:WMPlex.attach"></A>
2231 <DT><STRONG>Synopsis:</STRONG></DT>
2232 <DD><TT>WRegion WMPlex.attach(WMPlex mplex, WRegion reg, table param)</TT>
2235 <DT><STRONG>Description:</STRONG></DT>
2236 <DD>Attach and reparent existing region <TT>reg</TT> to <TT>mplex</TT>.
2237 The table <TT>param</TT> may contain the fields <TT>index</TT> and
2238 <TT>switchto</TT> that are interpreted as for <A HREF="#fn:WMPlex.attach_new"><TT>WMPlex.attach_new</TT></A>.
2246 <DD><A NAME="4401"></A>
2248 <A NAME="fn:WMPlex.attach_new"></A>
2250 <DT><STRONG>Synopsis:</STRONG></DT>
2251 <DD><TT>WRegion WMPlex.attach_new(WMPlex mplex, table param)</TT>
2254 <DT><STRONG>Description:</STRONG></DT>
2255 <DD>Create a new region to be managed by <TT>mplex</TT>. At least the following
2256 fields in <TT>param</TT> are understood (all but <TT>type</TT> are optional).
2259 <TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
2260 <TR><TD ALIGN="LEFT">Field</TD>
2261 <TD ALIGN="LEFT">Description</TD>
2263 <TR><TD ALIGN="LEFT"><TT>type</TT></TD>
2264 <TD ALIGN="LEFT">(string) Class name (a string) of the object to be created.</TD>
2266 <TR><TD ALIGN="LEFT"><TT>name</TT></TD>
2267 <TD ALIGN="LEFT">(string) Name of the object to be created (a string).</TD>
2269 <TR><TD ALIGN="LEFT"><TT>switchto</TT></TD>
2270 <TD ALIGN="LEFT">(boolean) Should the region be switched to (boolean)?</TD>
2272 <TR><TD ALIGN="LEFT"><TT>unnumbered</TT></TD>
2273 <TD ALIGN="LEFT">(boolean) Do not put on the numbered mutually
2274 exclusive list.</TD>
2276 <TR><TD ALIGN="LEFT"><TT>index</TT></TD>
2277 <TD ALIGN="LEFT">(integer) Index on this list, same as for
2278 <A HREF="#fn:WMPlex.set_index"><TT>WMPlex.set_index</TT></A>.</TD>
2280 <TR><TD ALIGN="LEFT"><TT>level</TT></TD>
2281 <TD ALIGN="LEFT">(integer) Stacking level.</TD>
2283 <TR><TD ALIGN="LEFT"><TT>modal</TT></TD>
2284 <TD ALIGN="LEFT">(boolean) Shortcut for modal stacking level.</TD>
2286 <TR><TD ALIGN="LEFT"><TT>hidden</TT></TD>
2287 <TD ALIGN="LEFT">(boolean) Attach hidden, if not prevented
2288 by e.g. the mutually exclusive list being empty.
2289 This option overrides <TT>switchto</TT>.</TD>
2291 <TR><TD ALIGN="LEFT"><TT>sizepolicy</TT></TD>
2292 <TD ALIGN="LEFT">(integer) Size policy.
2293 (TODO: document them somewhere.)</TD>
2295 <TR><TD ALIGN="LEFT"><TT>geom</TT></TD>
2296 <TD ALIGN="LEFT">(table) Geometry specification.</TD>
2301 In addition parameters to the region to be created are passed in this
2310 <DD><A NAME="4403"></A>
2312 <A NAME="fn:WMPlex.attach_tagged"></A>
2314 <DT><STRONG>Synopsis:</STRONG></DT>
2315 <DD><TT>void WMPlex.attach_tagged(WMPlex mplex)</TT>
2318 <DT><STRONG>Description:</STRONG></DT>
2319 <DD>Attach all tagged regions to <TT>mplex</TT>.
2327 <DD><A NAME="4405"></A>
2329 <A NAME="fn:WMPlex.dec_index"></A>
2331 <DT><STRONG>Synopsis:</STRONG></DT>
2332 <DD><TT>void WMPlex.dec_index(WMPlex mplex, WRegion r)</TT>
2335 <DT><STRONG>Description:</STRONG></DT>
2336 <DD>Move <TT>r</TT> ''right'' within objects managed by <TT>mplex</TT> on list 1.
2344 <DD><A NAME="4407"></A>
2346 <A NAME="fn:WMPlex.get_index"></A>
2348 <DT><STRONG>Synopsis:</STRONG></DT>
2349 <DD><TT>integer WMPlex.get_index(WMPlex mplex, WRegion reg)</TT>
2352 <DT><STRONG>Description:</STRONG></DT>
2353 <DD>Get index of <TT>reg</TT> within the multiplexer on list 1. The first region
2354 managed by <TT>mplex</TT> has index zero. If <TT>reg</TT> is not managed by
2355 <TT>mplex</TT>, -1 is returned.
2363 <DD><A NAME="4409"></A>
2365 <A NAME="fn:WMPlex.get_stdisp"></A>
2367 <DT><STRONG>Synopsis:</STRONG></DT>
2368 <DD><TT>table WMPlex.get_stdisp(WMPlex mplex)</TT>
2371 <DT><STRONG>Description:</STRONG></DT>
2372 <DD>Get status display information. See <A HREF="#fn:WMPlex.get_stdisp"><TT>WMPlex.get_stdisp</TT></A> for
2373 information on the fields.
2381 <DD><A NAME="4411"></A>
2383 <A NAME="fn:WMPlex.inc_index"></A>
2385 <DT><STRONG>Synopsis:</STRONG></DT>
2386 <DD><TT>void WMPlex.inc_index(WMPlex mplex, WRegion r)</TT>
2389 <DT><STRONG>Description:</STRONG></DT>
2390 <DD>Move <TT>r</TT> ''right'' within objects managed by <TT>mplex</TT> on list 1.
2398 <DD><A NAME="4413"></A>
2400 <A NAME="fn:WMPlex.is_hidden"></A>
2402 <DT><STRONG>Synopsis:</STRONG></DT>
2403 <DD><TT>bool WMPlex.is_hidden(WMPlex mplex, WRegion reg)</TT>
2406 <DT><STRONG>Description:</STRONG></DT>
2407 <DD>Is <TT>reg</TT> on within <TT>mplex</TT> and hidden?
2415 <DD><A NAME="4415"></A>
2417 <A NAME="fn:WMPlex.managed_list"></A>
2419 <DT><STRONG>Synopsis:</STRONG></DT>
2420 <DD><TT>table WMPlex.managed_list(WMPlex mplex)</TT>
2423 <DT><STRONG>Description:</STRONG></DT>
2424 <DD>Returns a list of all regions managed by <TT>mplex</TT>.
2432 <DD><A NAME="4417"></A>
2434 <A NAME="fn:WMPlex.mx_count"></A>
2436 <DT><STRONG>Synopsis:</STRONG></DT>
2437 <DD><TT>integer WMPlex.mx_count(WMPlex mplex)</TT>
2440 <DT><STRONG>Description:</STRONG></DT>
2441 <DD>Returns the number of objects on the mutually exclusive list of <TT>mplex</TT>.
2449 <DD><A NAME="4419"></A>
2451 <A NAME="fn:WMPlex.mx_current"></A>
2453 <DT><STRONG>Synopsis:</STRONG></DT>
2454 <DD><TT>WRegion WMPlex.mx_current(WMPlex mplex)</TT>
2457 <DT><STRONG>Description:</STRONG></DT>
2458 <DD>Returns the managed object currently active within the mutually exclusive
2459 list of <TT>mplex</TT>.
2467 <DD><A NAME="4421"></A>
2469 <A NAME="fn:WMPlex.mx_list"></A>
2471 <DT><STRONG>Synopsis:</STRONG></DT>
2472 <DD><TT>table WMPlex.mx_list(WMPlex mplex)</TT>
2475 <DT><STRONG>Description:</STRONG></DT>
2476 <DD>Returns a list of regions on the numbered/mutually exclusive list of
2485 <DD><A NAME="4423"></A>
2487 <A NAME="fn:WMPlex.mx_nth"></A>
2489 <DT><STRONG>Synopsis:</STRONG></DT>
2490 <DD><TT>WRegion WMPlex.mx_nth(WMPlex mplex, integer n)</TT>
2493 <DT><STRONG>Description:</STRONG></DT>
2494 <DD>Returns the <TT>n</TT>:th object managed by <TT>mplex</TT> on the
2495 <TT>l</TT>:th layer.
2503 <DD><A NAME="4425"></A>
2505 <A NAME="fn:WMPlex.set_hidden"></A>
2507 <DT><STRONG>Synopsis:</STRONG></DT>
2508 <DD><TT>bool WMPlex.set_hidden(WMPlex mplex, WRegion reg, string how)</TT>
2511 <DT><STRONG>Description:</STRONG></DT>
2512 <DD>Set the visibility of the region <TT>reg</TT> on <TT>mplex</TT>
2513 as specified with the parameter <TT>how</TT> (set/unset/toggle).
2514 The resulting state is returned.
2522 <DD><A NAME="4427"></A>
2524 <A NAME="fn:WMPlex.set_index"></A>
2526 <DT><STRONG>Synopsis:</STRONG></DT>
2527 <DD><TT>void WMPlex.set_index(WMPlex mplex, WRegion reg, integer index)</TT>
2530 <DT><STRONG>Description:</STRONG></DT>
2531 <DD>Set index of <TT>reg</TT> within the multiplexer to <TT>index</TT> within
2532 the mutually exclusive list. Special values for <TT>index</TT> are:
2533 <TABLE CELLPADDING=3 WIDTH="100%">
2534 <TR><TD ALIGN="LEFT"><SPAN CLASS="MATH"></SPAN></TD>
2535 <TD ALIGN="LEFT">After <A HREF="#fn:WMPlex.mx_current"><TT>WMPlex.mx_current</TT></A>.</TD>
2537 <TR><TD ALIGN="LEFT"><SPAN CLASS="MATH"></SPAN></TD>
2538 <TD ALIGN="LEFT">Last.</TD>
2548 <DD><A NAME="4429"></A>
2550 <A NAME="fn:WMPlex.set_stdisp"></A>
2552 <DT><STRONG>Synopsis:</STRONG></DT>
2553 <DD><TT>WRegion WMPlex.set_stdisp(WMPlex mplex, table t)</TT>
2556 <DT><STRONG>Description:</STRONG></DT>
2557 <DD>Set/create status display for <TT>mplex</TT>. Table is a standard
2558 description of the object to be created (as passed to e.g.
2559 <A HREF="#fn:WMPlex.attach_new"><TT>WMPlex.attach_new</TT></A>). In addition, the following fields are
2563 <TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
2564 <TR><TD ALIGN="LEFT">Field</TD>
2565 <TD ALIGN="LEFT">Description</TD>
2567 <TR><TD ALIGN="LEFT"><TT>pos</TT></TD>
2568 <TD ALIGN="LEFT">The corner of the screen to place the status display
2569 in. One of <TT>tl</TT>, <TT>tr</TT>, <TT>bl</TT> or <TT>br</TT>.</TD>
2571 <TR><TD ALIGN="LEFT"><TT>action</TT></TD>
2572 <TD ALIGN="LEFT">If this field is set to <TT>keep</TT>, <TT>corner</TT>
2573 and <TT>orientation</TT> are changed for the existing
2574 status display. If this field is set to <TT>remove</TT>,
2575 the existing status display is removed. If this
2576 field is not set or is set to <TT>replace</TT>, a
2577 new status display is created and the old, if any,
2588 <DD><A NAME="4431"></A>
2590 <A NAME="fn:WMPlex.switch_next"></A>
2592 <DT><STRONG>Synopsis:</STRONG></DT>
2593 <DD><TT>void WMPlex.switch_next(WMPlex mplex)</TT>
2596 <DT><STRONG>Description:</STRONG></DT>
2597 <DD>Have <TT>mplex</TT> display next (wrt. currently selected) object managed
2606 <DD><A NAME="4433"></A>
2608 <A NAME="fn:WMPlex.switch_nth"></A>
2610 <DT><STRONG>Synopsis:</STRONG></DT>
2611 <DD><TT>void WMPlex.switch_nth(WMPlex mplex, integer n)</TT>
2614 <DT><STRONG>Description:</STRONG></DT>
2615 <DD>Have <TT>mplex</TT> display the <TT>n</TT>:th object managed by it.
2623 <DD><A NAME="4435"></A>
2625 <A NAME="fn:WMPlex.switch_prev"></A>
2627 <DT><STRONG>Synopsis:</STRONG></DT>
2628 <DD><TT>void WMPlex.switch_prev(WMPlex mplex)</TT>
2631 <DT><STRONG>Description:</STRONG></DT>
2632 <DD>Have <TT>mplex</TT> display previous (wrt. currently selected) object
2640 <H3><A NAME="SECTION00718000000000000000">
2641 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">8</SPAN> WMoveresMode functions</A>
2647 <DD><A NAME="4438"></A>
2649 <A NAME="fn:WMoveresMode.cancel"></A>
2651 <DT><STRONG>Synopsis:</STRONG></DT>
2652 <DD><TT>void WMoveresMode.cancel(WMoveresMode mode)</TT>
2655 <DT><STRONG>Description:</STRONG></DT>
2656 <DD>Return from move/resize cancelling changes if opaque
2657 move/resize has not been enabled.
2665 <DD><A NAME="4440"></A>
2667 <A NAME="fn:WMoveresMode.finish"></A>
2669 <DT><STRONG>Synopsis:</STRONG></DT>
2670 <DD><TT>void WMoveresMode.finish(WMoveresMode mode)</TT>
2673 <DT><STRONG>Description:</STRONG></DT>
2674 <DD>Return from move/resize mode and apply changes unless opaque
2675 move/resize is enabled.
2683 <DD><A NAME="4442"></A>
2685 <A NAME="fn:WMoveresMode.move"></A>
2687 <DT><STRONG>Synopsis:</STRONG></DT>
2688 <DD><TT>void WMoveresMode.move(WMoveresMode mode, integer horizmul, integer vertmul)</TT>
2691 <DT><STRONG>Description:</STRONG></DT>
2692 <DD>Move resize mode target one step:
2695 <TABLE CELLPADDING=3 BORDER="1">
2696 <TR><TD ALIGN="RIGHT"><TT>horizmul</TT>/<TT>vertmul</TT></TD>
2697 <TD ALIGN="LEFT">effect</TD>
2699 <TR><TD ALIGN="RIGHT">-1</TD>
2700 <TD ALIGN="LEFT">Move left/up</TD>
2702 <TR><TD ALIGN="RIGHT">0</TD>
2703 <TD ALIGN="LEFT">No effect</TD>
2705 <TR><TD ALIGN="RIGHT">1</TD>
2706 <TD ALIGN="LEFT">Move right/down</TD>
2716 <DD><A NAME="4444"></A>
2718 <A NAME="fn:WMoveresMode.resize"></A>
2720 <DT><STRONG>Synopsis:</STRONG></DT>
2721 <DD><TT>void WMoveresMode.resize(WMoveresMode mode, integer left, integer right, integer top, integer bottom)</TT>
2724 <DT><STRONG>Description:</STRONG></DT>
2725 <DD>Shrink or grow resize mode target one step in each direction.
2726 Acceptable values for the parameters <TT>left</TT>, <TT>right</TT>, <TT>top</TT>
2727 and <TT>bottom</TT> are as follows: -1: shrink along,
2728 0: do not change, 1: grow along corresponding border.
2735 <H3><A NAME="SECTION00719000000000000000">
2736 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN> WRegion functions</A>
2742 <DD><A NAME="4447"></A>
2744 <A NAME="fn:WRegion.begin_kbresize"></A>
2746 <DT><STRONG>Synopsis:</STRONG></DT>
2747 <DD><TT>WMoveresMode WRegion.begin_kbresize(WRegion reg)</TT>
2750 <DT><STRONG>Description:</STRONG></DT>
2751 <DD>Enter move/resize mode for <TT>reg</TT>. The bindings set with
2752 <A HREF="#fn:ioncore.set_bindings"><TT>ioncore.set_bindings</TT></A> for WMoveresMode are used in
2753 this mode. Of the functions exported by the Ion C core, only
2754 <A HREF="#fn:WMoveresMode.resize"><TT>WMoveresMode.resize</TT></A>, <A HREF="#fn:WMoveresMode.move"><TT>WMoveresMode.move</TT></A>,
2755 <A HREF="#fn:WMoveresMode.cancel"><TT>WMoveresMode.cancel</TT></A> and <A HREF="#fn:WMoveresMode.end"><TT>WMoveresMode.end</TT></A> are
2756 allowed to be called while in this mode.
2764 <DD><A NAME="4449"></A>
2766 <A NAME="fn:WRegion.current"></A>
2768 <DT><STRONG>Synopsis:</STRONG></DT>
2769 <DD><TT>WRegion WRegion.current(WRegion mgr)</TT>
2772 <DT><STRONG>Description:</STRONG></DT>
2773 <DD>Return the object, if any, that is considered ''currently active''
2774 within the objects managed by <TT>mplex</TT>.
2782 <DD><A NAME="4451"></A>
2784 <A NAME="fn:WRegion.geom"></A>
2786 <DT><STRONG>Synopsis:</STRONG></DT>
2787 <DD><TT>table WRegion.geom(WRegion reg)</TT>
2790 <DT><STRONG>Description:</STRONG></DT>
2791 <DD>Returns the geometry of <TT>reg</TT> within its parent; a table with fields
2792 <TT>x</TT>, <TT>y</TT>, <TT>w</TT> and <TT>h</TT>.
2800 <DD><A NAME="4453"></A>
2802 <A NAME="fn:WRegion.goto"></A>
2804 <DT><STRONG>Synopsis:</STRONG></DT>
2805 <DD><TT>bool WRegion.goto(WRegion reg)</TT>
2808 <DT><STRONG>Description:</STRONG></DT>
2809 <DD>Attempt to display <TT>reg</TT>, save region activity status and then
2810 warp to (or simply set focus to if warping is disabled) <TT>reg</TT>.
2813 Note that this function is asynchronous; the region will not
2814 actually have received the focus when this function returns.
2822 <DD><A NAME="4455"></A>
2824 <A NAME="fn:WRegion.is_active"></A>
2826 <DT><STRONG>Synopsis:</STRONG></DT>
2827 <DD><TT>bool WRegion.is_active(WRegion reg)</TT>
2830 <DT><STRONG>Description:</STRONG></DT>
2831 <DD>Is <TT>reg</TT> active/does it or one of it's children of focus?
2839 <DD><A NAME="4457"></A>
2841 <A NAME="fn:WRegion.is_activity"></A>
2843 <DT><STRONG>Synopsis:</STRONG></DT>
2844 <DD><TT>bool WRegion.is_activity(WRegion reg)</TT>
2847 <DT><STRONG>Description:</STRONG></DT>
2848 <DD>Is activity notification set on <TT>reg</TT>.
2856 <DD><A NAME="4459"></A>
2858 <A NAME="fn:WRegion.is_mapped"></A>
2860 <DT><STRONG>Synopsis:</STRONG></DT>
2861 <DD><TT>bool WRegion.is_mapped(WRegion reg)</TT>
2864 <DT><STRONG>Description:</STRONG></DT>
2865 <DD>Is <TT>reg</TT> visible/is it and all it's ancestors mapped?
2873 <DD><A NAME="4461"></A>
2875 <A NAME="fn:WRegion.is_tagged"></A>
2877 <DT><STRONG>Synopsis:</STRONG></DT>
2878 <DD><TT>bool WRegion.is_tagged(WRegion reg)</TT>
2881 <DT><STRONG>Description:</STRONG></DT>
2882 <DD>Is <TT>reg</TT> tagged?
2890 <DD><A NAME="4463"></A>
2892 <A NAME="fn:WRegion.manager"></A>
2894 <DT><STRONG>Synopsis:</STRONG></DT>
2895 <DD><TT>WRegion WRegion.manager(WRegion reg)</TT>
2898 <DT><STRONG>Description:</STRONG></DT>
2899 <DD>Returns the region that manages <TT>reg</TT>.
2907 <DD><A NAME="4465"></A>
2909 <A NAME="fn:WRegion.name"></A>
2911 <DT><STRONG>Synopsis:</STRONG></DT>
2912 <DD><TT>string WRegion.name(WRegion reg)</TT>
2915 <DT><STRONG>Description:</STRONG></DT>
2916 <DD>Returns the name for <TT>reg</TT>.
2924 <DD><A NAME="4467"></A>
2926 <A NAME="fn:WRegion.parent"></A>
2928 <DT><STRONG>Synopsis:</STRONG></DT>
2929 <DD><TT>WWindow WRegion.parent(WRegion reg)</TT>
2932 <DT><STRONG>Description:</STRONG></DT>
2933 <DD>Returns the parent region of <TT>reg</TT>.
2941 <DD><A NAME="4469"></A>
2943 <A NAME="fn:WRegion.rootwin_of"></A>
2945 <DT><STRONG>Synopsis:</STRONG></DT>
2946 <DD><TT>WRootWin WRegion.rootwin_of(WRegion reg)</TT>
2949 <DT><STRONG>Description:</STRONG></DT>
2950 <DD>Returns the root window <TT>reg</TT> is on.
2958 <DD><A NAME="4471"></A>
2960 <A NAME="fn:WRegion.rqclose"></A>
2962 <DT><STRONG>Synopsis:</STRONG></DT>
2963 <DD><TT>bool WRegion.rqclose(WRegion reg, bool relocate)</TT>
2966 <DT><STRONG>Description:</STRONG></DT>
2967 <DD>Attempt to close/destroy <TT>reg</TT>. Whether this operation works
2968 depends on whether the particular type of region in question has
2969 implemented the feature and, in case of client windows, whether
2970 the client supports the <TT>WM_DELETE</TT> protocol (see also
2971 <A HREF="#fn:WClientWin.kill"><TT>WClientWin.kill</TT></A>). If the operation is likely to succeed,
2972 <TT>true</TT> is returned, otherwise <TT>false</TT>. In most cases the
2973 region will not have been actually destroyed when this function returns.
2974 If <TT>relocate</TT> is not set, and <TT>reg</TT> manages other regions, it
2975 will not be closed. Otherwise the managed regions will be attempted
2984 <DD><A NAME="4473"></A>
2986 <A NAME="fn:WRegion.rqclose_propagate"></A>
2988 <DT><STRONG>Synopsis:</STRONG></DT>
2989 <DD><TT>WRegion WRegion.rqclose_propagate(WRegion reg, WRegion maybe_sub)</TT>
2992 <DT><STRONG>Description:</STRONG></DT>
2993 <DD>Recursively attempt to close a region or one of the regions managed by
2994 it. If <TT>sub</TT> is set, it will be used as the managed region, otherwise
2995 <A HREF="#fn:WRegion.current"><TT>WRegion.current</TT></A><TT>(reg)</TT>. The object to be closed is
2996 returned or NULL if nothing can be closed. Also see notes for
2997 <A HREF="#fn:WRegion.rqclose"><TT>WRegion.rqclose</TT></A>.
3005 <DD><A NAME="4475"></A>
3007 <A NAME="fn:WRegion.rqgeom"></A>
3009 <DT><STRONG>Synopsis:</STRONG></DT>
3010 <DD><TT>table WRegion.rqgeom(WRegion reg, table g)</TT>
3013 <DT><STRONG>Description:</STRONG></DT>
3014 <DD>Attempt to resize and/or move <TT>reg</TT>. The table <TT>g</TT> is a usual
3015 geometry specification (fields <TT>x</TT>, <TT>y</TT>, <TT>w</TT> and <TT>h</TT>),
3016 but may contain missing fields, in which case, <TT>reg</TT>'s manager may
3017 attempt to leave that attribute unchanged.
3025 <DD><A NAME="4477"></A>
3027 <A NAME="fn:WRegion.rqorder"></A>
3029 <DT><STRONG>Synopsis:</STRONG></DT>
3030 <DD><TT>bool WRegion.rqorder(WRegion reg, string ord)</TT>
3033 <DT><STRONG>Description:</STRONG></DT>
3034 <DD>Request ordering. Currently supported values for <TT>ord</TT>
3035 are 'front' and 'back'.
3043 <DD><A NAME="4479"></A>
3045 <A NAME="fn:WRegion.screen_of"></A>
3047 <DT><STRONG>Synopsis:</STRONG></DT>
3048 <DD><TT>WScreen WRegion.screen_of(WRegion reg)</TT>
3051 <DT><STRONG>Description:</STRONG></DT>
3052 <DD>Returns the screen <TT>reg</TT> is on.
3060 <DD><A NAME="4481"></A>
3062 <A NAME="fn:WRegion.set_activity"></A>
3064 <DT><STRONG>Synopsis:</STRONG></DT>
3065 <DD><TT>bool WRegion.set_activity(WRegion reg, string how)</TT>
3068 <DT><STRONG>Description:</STRONG></DT>
3069 <DD>Set activity flag of <TT>reg</TT>. The <TT>how</TT> parameter most be
3070 one of (set/unset/toggle).
3078 <DD><A NAME="4483"></A>
3080 <A NAME="fn:WRegion.set_name"></A>
3082 <DT><STRONG>Synopsis:</STRONG></DT>
3083 <DD><TT>bool WRegion.set_name(WRegion reg, string p)</TT>
3086 <DT><STRONG>Description:</STRONG></DT>
3087 <DD>Set the name of <TT>reg</TT> to <TT>p</TT>. If the name is already in use,
3088 an instance number suffix <TT><n></TT> will be attempted. If <TT>p</TT> has
3089 such a suffix, it will be modified, otherwise such a suffix will be
3090 added. Setting <TT>p</TT> to nil will cause current name to be removed.
3098 <DD><A NAME="4485"></A>
3100 <A NAME="fn:WRegion.set_name_exact"></A>
3102 <DT><STRONG>Synopsis:</STRONG></DT>
3103 <DD><TT>bool WRegion.set_name_exact(WRegion reg, string p)</TT>
3106 <DT><STRONG>Description:</STRONG></DT>
3107 <DD>Similar to <A HREF="#fn:WRegion.set_name"><TT>WRegion.set_name</TT></A> except if the name is already in use,
3108 other instance numbers will not be attempted. The string <TT>p</TT> should
3109 not contain a <TT><n></TT> suffix or this function will fail.
3117 <DD><A NAME="4487"></A>
3119 <A NAME="fn:WRegion.set_tagged"></A>
3121 <DT><STRONG>Synopsis:</STRONG></DT>
3122 <DD><TT>bool WRegion.set_tagged(WRegion reg, string how)</TT>
3125 <DT><STRONG>Description:</STRONG></DT>
3126 <DD>Change tagging state of <TT>reg</TT> as defined by <TT>how</TT>
3127 (set/unset/toggle). Resulting state is returned.
3135 <DD><A NAME="4489"></A>
3137 <A NAME="fn:WRegion.size_hints"></A>
3139 <DT><STRONG>Synopsis:</STRONG></DT>
3140 <DD><TT>table WRegion.size_hints(WRegion reg)</TT>
3143 <DT><STRONG>Description:</STRONG></DT>
3144 <DD>Returns size hints for <TT>reg</TT>. The returned table always contains the
3145 fields <TT>min_?</TT>, <TT>base_?</TT> and sometimes the fields <TT>max_?</TT>,
3146 <TT>base_?</TT> and <TT>inc_?</TT>, where <TT>?</TT>=<TT>w</TT>, <TT>h</TT>.
3153 <H3><A NAME="SECTION007110000000000000000">
3154 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">10</SPAN> WRootWin functions</A>
3160 <DD><A NAME="4492"></A>
3162 <A NAME="fn:WRootWin.current_scr"></A>
3164 <DT><STRONG>Synopsis:</STRONG></DT>
3165 <DD><TT>WScreen WRootWin.current_scr(WRootWin rootwin)</TT>
3168 <DT><STRONG>Description:</STRONG></DT>
3169 <DD>Returns previously active screen on root window <TT>rootwin</TT>.
3176 <H3><A NAME="SECTION007111000000000000000">
3177 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">11</SPAN> WScreen functions</A>
3183 <DD><A NAME="4495"></A>
3185 <A NAME="fn:WScreen.id"></A>
3187 <DT><STRONG>Synopsis:</STRONG></DT>
3188 <DD><TT>integer WScreen.id(WScreen scr)</TT>
3191 <DT><STRONG>Description:</STRONG></DT>
3192 <DD>Return the numerical id for screen <TT>scr</TT>.
3200 <DD><A NAME="4497"></A>
3202 <A NAME="fn:WScreen.set_managed_offset"></A>
3204 <DT><STRONG>Synopsis:</STRONG></DT>
3205 <DD><TT>bool WScreen.set_managed_offset(WScreen scr, table offset)</TT>
3208 <DT><STRONG>Description:</STRONG></DT>
3209 <DD>Set offset of objects managed by the screen from actual screen geometry.
3210 The table <TT>offset</TT> should contain the entries <TT>x</TT>, <TT>y</TT>,
3211 <TT>w</TT> and <TT>h</TT> indicating offsets of that component of screen
3219 <H3><A NAME="SECTION007112000000000000000">
3220 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">12</SPAN> WWindow functions</A>
3226 <DD><A NAME="4500"></A>
3228 <A NAME="fn:WWindow.p_move"></A>
3230 <DT><STRONG>Synopsis:</STRONG></DT>
3231 <DD><TT>void WWindow.p_move(WWindow wwin)</TT>
3234 <DT><STRONG>Description:</STRONG></DT>
3235 <DD>Start moving <TT>wwin</TT> with the mouse or other pointing device.
3236 This function should only be used by binding it to <SPAN CLASS="textit">mpress</SPAN> or
3237 <SPAN CLASS="textit">mdrag</SPAN> action.
3245 <DD><A NAME="4502"></A>
3247 <A NAME="fn:WWindow.p_resize"></A>
3249 <DT><STRONG>Synopsis:</STRONG></DT>
3250 <DD><TT>void WWindow.p_resize(WWindow wwin)</TT>
3253 <DT><STRONG>Description:</STRONG></DT>
3254 <DD>Start resizing <TT>wwin</TT> with the mouse or other pointing device.
3255 This function should only be used by binding it to <SPAN CLASS="textit">mpress</SPAN> or
3256 <SPAN CLASS="textit">mdrag</SPAN> action.
3264 <DD><A NAME="4504"></A>
3266 <A NAME="fn:WWindow.xid"></A>
3268 <DT><STRONG>Synopsis:</STRONG></DT>
3269 <DD><TT>double WWindow.xid(WWindow wwin)</TT>
3272 <DT><STRONG>Description:</STRONG></DT>
3273 <DD>Return the X window id for <TT>wwin</TT>.
3280 <H3><A NAME="SECTION007113000000000000000">
3281 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">13</SPAN> global functions</A>
3287 <DD><A NAME="4507"></A>
3288 <A NAME="fn:export"></A>
3290 <DT><STRONG>Synopsis:</STRONG></DT>
3291 <DD><TT>export(lib, ...)</TT>
3294 <DT><STRONG>Description:</STRONG></DT>
3295 <DD>Export a list of functions from <TT>lib</TT> into global namespace.
3302 <H3><A NAME="SECTION007114000000000000000">
3303 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">14</SPAN> gr functions</A>
3309 <DD><A NAME="4509"></A>
3311 <A NAME="fn:gr.read_config"></A>
3313 <DT><STRONG>Synopsis:</STRONG></DT>
3314 <DD><TT>void gr.read_config()</TT>
3317 <DT><STRONG>Description:</STRONG></DT>
3318 <DD>Read drawing engine configuration file <SPAN CLASS="textit">draw.lua</SPAN>.
3326 <DD><A NAME="4511"></A>
3328 <A NAME="fn:gr.refresh"></A>
3330 <DT><STRONG>Synopsis:</STRONG></DT>
3331 <DD><TT>void gr.refresh()</TT>
3334 <DT><STRONG>Description:</STRONG></DT>
3335 <DD>Refresh objects' brushes to update them to use newly loaded style.
3343 <DD><A NAME="4513"></A>
3345 <A NAME="fn:gr.select_engine"></A>
3347 <DT><STRONG>Synopsis:</STRONG></DT>
3348 <DD><TT>bool gr.select_engine(string engine)</TT>
3351 <DT><STRONG>Description:</STRONG></DT>
3352 <DD>Future requests for ''brushes'' are to be forwarded to the drawing engine
3353 <TT>engine</TT>. If no engine of such name is known, a module with that name
3354 is attempted to be loaded. This function is only intended to be called from
3355 colour scheme etc. configuration files and can not be used to change the
3356 look of existing objects; for that use <A HREF="#fn:gr.read_config"><TT>gr.read_config</TT></A>.
3363 <H3><A NAME="SECTION007115000000000000000">
3364 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">15</SPAN> string functions</A>
3370 <DD><A NAME="4516"></A>
3372 <A NAME="fn:string.shell_safe"></A>
3374 <DT><STRONG>Synopsis:</STRONG></DT>
3375 <DD><TT>string.shell_safe(str)</TT>
3378 <DT><STRONG>Description:</STRONG></DT>
3379 <DD>Make <TT>str</TT> shell-safe.
3386 <H3><A NAME="SECTION007116000000000000000">
3387 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">16</SPAN> table functions</A>
3393 <DD><A NAME="4519"></A>
3395 <A NAME="fn:table.append"></A>
3397 <DT><STRONG>Synopsis:</STRONG></DT>
3398 <DD><TT>table.append(t1, t2)</TT>
3401 <DT><STRONG>Description:</STRONG></DT>
3402 <DD>Add entries that do not exist in <TT>t1</TT> from <TT>t2</TT> to <TT>t1</TT>.
3410 <DD><A NAME="4521"></A>
3412 <A NAME="fn:table.copy"></A>
3414 <DT><STRONG>Synopsis:</STRONG></DT>
3415 <DD><TT>table.copy(t, deep)</TT>
3418 <DT><STRONG>Description:</STRONG></DT>
3419 <DD>Make copy of <TT>table</TT>. If <TT>deep</TT> is unset, shallow one-level
3420 copy is made, otherwise a deep copy is made.
3428 <DD><A NAME="4523"></A>
3430 <A NAME="fn:table.icat"></A>
3432 <DT><STRONG>Synopsis:</STRONG></DT>
3433 <DD><TT>table.icat(t1, t2)</TT>
3436 <DT><STRONG>Description:</STRONG></DT>
3437 <DD>Insert all positive integer entries from t2 into t1.
3445 <DD><A NAME="4525"></A>
3447 <A NAME="fn:table.join"></A>
3449 <DT><STRONG>Synopsis:</STRONG></DT>
3450 <DD><TT>table.join(t1, t2)</TT>
3453 <DT><STRONG>Description:</STRONG></DT>
3454 <DD>Create a table containing all entries from <TT>t1</TT> and those from
3455 <TT>t2</TT> that are missing from <TT>t1</TT>.
3463 <DD><A NAME="4527"></A>
3465 <A NAME="fn:table.map"></A>
3467 <DT><STRONG>Synopsis:</STRONG></DT>
3468 <DD><TT>table.map(f, t)</TT>
3471 <DT><STRONG>Description:</STRONG></DT>
3472 <DD>Map all entries of <TT>t</TT> by <TT>f</TT>.
3479 <H2><A NAME="SECTION00720000000000000000"></A>
3480 <A NAME="sec:tilingref"></A>
3482 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN> Functions defined in <SPAN CLASS="textit">mod_tiling</SPAN>
3486 <DD><A NAME="6781"></A>
3488 <A NAME="fn:mod_tiling.detach"></A>
3490 <DT><STRONG>Synopsis:</STRONG></DT>
3491 <DD><TT>bool mod_tiling.detach(WRegion reg)</TT>
3494 <DT><STRONG>Description:</STRONG></DT>
3495 <DD>Detach <TT>reg</TT>, i.e. make it managed by its nearest ancestor
3496 WGroup, framed if <TT>reg</TT> is not itself WFrame.
3504 <DD><A NAME="6783"></A>
3506 <A NAME="fn:mod_tiling.get"></A>
3508 <DT><STRONG>Synopsis:</STRONG></DT>
3509 <DD><TT>table mod_tiling.get()</TT>
3512 <DT><STRONG>Description:</STRONG></DT>
3513 <DD>Get parameters. For details see <A HREF="#fn:mod_tiling.set"><TT>mod_tiling.set</TT></A>.
3521 <DD><A NAME="6785"></A>
3523 <A NAME="fn:mod_tiling.mkbottom"></A>
3525 <DT><STRONG>Synopsis:</STRONG></DT>
3526 <DD><TT>bool mod_tiling.mkbottom(WRegion reg)</TT>
3529 <DT><STRONG>Description:</STRONG></DT>
3530 <DD>Create a new WTiling 'bottom' for the group of <TT>reg</TT>,
3531 consisting of <TT>reg</TT>.
3539 <DD><A NAME="6787"></A>
3541 <A NAME="fn:mod_tiling.set"></A>
3543 <DT><STRONG>Synopsis:</STRONG></DT>
3544 <DD><TT>void mod_tiling.set(table tab)</TT>
3547 <DT><STRONG>Description:</STRONG></DT>
3548 <DD>Set parameters. Currently only <TT>raise_delay</TT> (in milliseconds)
3556 <H3><A NAME="SECTION00721000000000000000">
3557 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN> WSplit functions</A>
3563 <DD><A NAME="6790"></A>
3565 <A NAME="fn:WSplit.geom"></A>
3567 <DT><STRONG>Synopsis:</STRONG></DT>
3568 <DD><TT>table WSplit.geom(WSplit split)</TT>
3571 <DT><STRONG>Description:</STRONG></DT>
3572 <DD>Returns the area of workspace used by the regions under <TT>split</TT>.
3580 <DD><A NAME="6792"></A>
3582 <A NAME="fn:WSplit.parent"></A>
3584 <DT><STRONG>Synopsis:</STRONG></DT>
3585 <DD><TT>WSplitInner WSplit.parent(WSplit split)</TT>
3588 <DT><STRONG>Description:</STRONG></DT>
3589 <DD>Return parent split for <TT>split</TT>.
3597 <DD><A NAME="6794"></A>
3599 <A NAME="fn:WSplit.rqgeom"></A>
3601 <DT><STRONG>Synopsis:</STRONG></DT>
3602 <DD><TT>table WSplit.rqgeom(WSplit node, table g)</TT>
3605 <DT><STRONG>Description:</STRONG></DT>
3606 <DD>Attempt to resize and/or move the split tree starting at <TT>node</TT>.
3607 Behaviour and the <TT>g</TT> parameter are as for <A HREF="#fn:WRegion.rqgeom"><TT>WRegion.rqgeom</TT></A>
3608 operating on <TT>node</TT> (if it were a WRegion).
3616 <DD><A NAME="6796"></A>
3618 <A NAME="fn:WSplit.transpose"></A>
3620 <DT><STRONG>Synopsis:</STRONG></DT>
3621 <DD><TT>void WSplit.transpose(WSplit node)</TT>
3624 <DT><STRONG>Description:</STRONG></DT>
3625 <DD>Transpose contents of <TT>node</TT>.
3632 <H3><A NAME="SECTION00722000000000000000">
3633 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN> WSplitInner functions</A>
3639 <DD><A NAME="6799"></A>
3641 <A NAME="fn:WSplitInner.current"></A>
3643 <DT><STRONG>Synopsis:</STRONG></DT>
3644 <DD><TT>WSplit WSplitInner.current(WSplitInner node)</TT>
3647 <DT><STRONG>Description:</STRONG></DT>
3648 <DD>Returns the most previously active child node of <TT>split</TT>.
3655 <H3><A NAME="SECTION00723000000000000000">
3656 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">3</SPAN> WSplitRegion functions</A>
3662 <DD><A NAME="6802"></A>
3664 <A NAME="fn:WSplitRegion.reg"></A>
3666 <DT><STRONG>Synopsis:</STRONG></DT>
3667 <DD><TT>WRegion WSplitRegion.reg(WSplitRegion node)</TT>
3670 <DT><STRONG>Description:</STRONG></DT>
3671 <DD>Returns the region contained in <TT>node</TT>.
3678 <H3><A NAME="SECTION00724000000000000000">
3679 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">4</SPAN> WSplitSplit functions</A>
3685 <DD><A NAME="6805"></A>
3687 <A NAME="fn:WSplitSplit.br"></A>
3689 <DT><STRONG>Synopsis:</STRONG></DT>
3690 <DD><TT>WSplit WSplitSplit.br(WSplitSplit split)</TT>
3693 <DT><STRONG>Description:</STRONG></DT>
3694 <DD>Returns the bottom or right child node of <TT>split</TT> depending
3695 on the direction of the split.
3703 <DD><A NAME="6807"></A>
3705 <A NAME="fn:WSplitSplit.dir"></A>
3707 <DT><STRONG>Synopsis:</STRONG></DT>
3708 <DD><TT>string WSplitSplit.dir(WSplitSplit split)</TT>
3711 <DT><STRONG>Description:</STRONG></DT>
3712 <DD>Returns the direction of <TT>split</TT>; either ''vertical'' or
3721 <DD><A NAME="6809"></A>
3723 <A NAME="fn:WSplitSplit.flip"></A>
3725 <DT><STRONG>Synopsis:</STRONG></DT>
3726 <DD><TT>void WSplitSplit.flip(WSplitSplit split)</TT>
3729 <DT><STRONG>Description:</STRONG></DT>
3730 <DD>Flip contents of <TT>node</TT>.
3738 <DD><A NAME="6811"></A>
3740 <A NAME="fn:WSplitSplit.tl"></A>
3742 <DT><STRONG>Synopsis:</STRONG></DT>
3743 <DD><TT>WSplit WSplitSplit.tl(WSplitSplit split)</TT>
3746 <DT><STRONG>Description:</STRONG></DT>
3747 <DD>Returns the top or left child node of <TT>split</TT> depending
3748 on the direction of the split.
3755 <H3><A NAME="SECTION00725000000000000000">
3756 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">5</SPAN> WTiling functions</A>
3762 <DD><A NAME="6814"></A>
3764 <A NAME="fn:WTiling.flip_at"></A>
3766 <DT><STRONG>Synopsis:</STRONG></DT>
3767 <DD><TT>bool WTiling.flip_at(WTiling ws, WRegion reg)</TT>
3770 <DT><STRONG>Description:</STRONG></DT>
3771 <DD>Flip <TT>ws</TT> at <TT>reg</TT> or root if nil.
3779 <DD><A NAME="6816"></A>
3781 <A NAME="fn:WTiling.transpose_at"></A>
3783 <DT><STRONG>Synopsis:</STRONG></DT>
3784 <DD><TT>bool WTiling.transpose_at(WTiling ws, WRegion reg)</TT>
3787 <DT><STRONG>Description:</STRONG></DT>
3788 <DD>Transpose <TT>ws</TT> at <TT>reg</TT> or root if nil.
3796 <DD><A NAME="6818"></A>
3798 <A NAME="fn:WTiling.farthest"></A>
3800 <DT><STRONG>Synopsis:</STRONG></DT>
3801 <DD><TT>WRegion WTiling.farthest(WTiling ws, string dirstr, bool any)</TT>
3804 <DT><STRONG>Description:</STRONG></DT>
3805 <DD>Return the most previously active region on <TT>ws</TT> with no
3806 other regions next to it in direction <TT>dirstr</TT>
3807 (left/right/up/down). If <TT>any</TT> is not set, the status
3808 display is not considered.
3816 <DD><A NAME="6820"></A>
3818 <A NAME="fn:WTiling.managed_list"></A>
3820 <DT><STRONG>Synopsis:</STRONG></DT>
3821 <DD><TT>table WTiling.managed_list(WTiling ws)</TT>
3824 <DT><STRONG>Description:</STRONG></DT>
3825 <DD>Returns a list of regions managed by the workspace (frames, mostly).
3833 <DD><A NAME="6822"></A>
3835 <A NAME="fn:WTiling.nextto"></A>
3837 <DT><STRONG>Synopsis:</STRONG></DT>
3838 <DD><TT>WRegion WTiling.nextto(WTiling ws, WRegion reg, string dirstr, bool any)</TT>
3841 <DT><STRONG>Description:</STRONG></DT>
3842 <DD>Return the most previously active region next to <TT>reg</TT> in
3843 direction <TT>dirstr</TT> (left/right/up/down). The region <TT>reg</TT>
3844 must be managed by <TT>ws</TT>. If <TT>any</TT> is not set, the status display
3853 <DD><A NAME="6824"></A>
3855 <A NAME="fn:WTiling.node_of"></A>
3857 <DT><STRONG>Synopsis:</STRONG></DT>
3858 <DD><TT>WSplitRegion WTiling.node_of(WTiling ws, WRegion reg)</TT>
3861 <DT><STRONG>Description:</STRONG></DT>
3862 <DD>For region <TT>reg</TT> managed by <TT>ws</TT> return the WSplit
3863 a leaf of which <TT>reg</TT> is.
3871 <DD><A NAME="6826"></A>
3873 <A NAME="fn:WTiling.set_floating_at"></A>
3875 <DT><STRONG>Synopsis:</STRONG></DT>
3876 <DD><TT>bool WTiling.set_floating_at(WTiling ws, WRegion reg, string how, string dirstr)</TT>
3879 <DT><STRONG>Description:</STRONG></DT>
3880 <DD>Toggle floating of the sides of a split containin <TT>reg</TT> as indicated
3881 by the parameters <TT>how</TT> (set/unset/toggle) and <TT>dirstr</TT>
3882 (left/right/up/down/any). The new status is returned (and <TT>false</TT>
3891 <DD><A NAME="6828"></A>
3893 <A NAME="fn:WTiling.set_floating"></A>
3895 <DT><STRONG>Synopsis:</STRONG></DT>
3896 <DD><TT>WSplitSplit WTiling.set_floating(WTiling ws, WSplitSplit split, string how)</TT>
3899 <DT><STRONG>Description:</STRONG></DT>
3900 <DD>Toggle floating of a split's sides at <TT>split</TT> as indicated by the
3901 parameter <TT>how</TT> (set/unset/toggle). A split of the appropriate is
3902 returned, if there was a change.
3910 <DD><A NAME="6830"></A>
3912 <A NAME="fn:WTiling.split"></A>
3914 <DT><STRONG>Synopsis:</STRONG></DT>
3915 <DD><TT>WFrame WTiling.split(WTiling ws, WSplit node, string dirstr)</TT>
3918 <DT><STRONG>Description:</STRONG></DT>
3919 <DD>Create a new frame on <TT>ws</TT> above/below/left of/right of
3920 <TT>node</TT> as indicated by <TT>dirstr</TT>. If <TT>dirstr</TT> is
3921 prefixed with ''floating:'' a floating split is created.
3929 <DD><A NAME="6832"></A>
3931 <A NAME="fn:WTiling.split_at"></A>
3933 <DT><STRONG>Synopsis:</STRONG></DT>
3934 <DD><TT>WFrame WTiling.split_at(WTiling ws, WFrame frame, string dirstr, bool attach_current)</TT>
3937 <DT><STRONG>Description:</STRONG></DT>
3938 <DD>Split <TT>frame</TT> creating a new frame to direction <TT>dirstr</TT>
3939 (one of ''left'', ''right'', ''top'' or ''bottom'') of <TT>frame</TT>.
3940 If <TT>attach_current</TT> is set, the region currently displayed in
3941 <TT>frame</TT>, if any, is moved to thenew frame.
3942 If <TT>dirstr</TT> is prefixed with ''floating:'' a floating split is
3951 <DD><A NAME="6834"></A>
3953 <A NAME="fn:WTiling.split_top"></A>
3955 <DT><STRONG>Synopsis:</STRONG></DT>
3956 <DD><TT>WFrame WTiling.split_top(WTiling ws, string dirstr)</TT>
3959 <DT><STRONG>Description:</STRONG></DT>
3960 <DD>Same as <A HREF="#fn:WTiling.split"><TT>WTiling.split</TT></A> at the root of the split tree.
3968 <DD><A NAME="6836"></A>
3970 <A NAME="fn:WTiling.split_tree"></A>
3972 <DT><STRONG>Synopsis:</STRONG></DT>
3973 <DD><TT>WSplit WTiling.split_tree(WTiling ws)</TT>
3976 <DT><STRONG>Description:</STRONG></DT>
3977 <DD>Returns the root of the split tree.
3985 <DD><A NAME="6838"></A>
3987 <A NAME="fn:WTiling.unsplit_at"></A>
3989 <DT><STRONG>Synopsis:</STRONG></DT>
3990 <DD><TT>bool WTiling.unsplit_at(WTiling ws, WFrame frame)</TT>
3993 <DT><STRONG>Description:</STRONG></DT>
3994 <DD>Try to relocate regions managed by <TT>frame</TT> to another frame
3995 and, if possible, destroy the frame.
4002 <H2><A NAME="SECTION00730000000000000000"></A>
4003 <A NAME="sec:queryref"></A>
4005 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN> Functions defined in <SPAN CLASS="textit">mod_query</SPAN>
4009 <DD><A NAME="7832"></A>
4011 <A NAME="fn:mod_query.defcmd"></A>
4013 <DT><STRONG>Synopsis:</STRONG></DT>
4014 <DD><TT>mod_query.defcmd(cmd, fn)</TT>
4017 <DT><STRONG>Description:</STRONG></DT>
4018 <DD>Define a command override for the <A HREF="#fn:mod_query.query_exec"><TT>query_exec</TT></A> query.
4026 <DD><A NAME="7834"></A>
4028 <A NAME="fn:mod_query.get"></A>
4030 <DT><STRONG>Synopsis:</STRONG></DT>
4031 <DD><TT>table mod_query.get()</TT>
4034 <DT><STRONG>Description:</STRONG></DT>
4035 <DD>Get module configuration. For more information see
4036 <A HREF="#fn:mod_query.set"><TT>mod_query.set</TT></A>.
4044 <DD><A NAME="7836"></A>
4046 <A NAME="fn:mod_query.history_clear"></A>
4048 <DT><STRONG>Synopsis:</STRONG></DT>
4049 <DD><TT>void mod_query.history_clear()</TT>
4052 <DT><STRONG>Description:</STRONG></DT>
4053 <DD>Clear line editor history.
4061 <DD><A NAME="7838"></A>
4063 <A NAME="fn:mod_query.history_get"></A>
4065 <DT><STRONG>Synopsis:</STRONG></DT>
4066 <DD><TT>string mod_query.history_get(integer n)</TT>
4069 <DT><STRONG>Description:</STRONG></DT>
4070 <DD>Get entry at index <TT>n</TT> in line editor history, 0 being the latest.
4078 <DD><A NAME="7840"></A>
4080 <A NAME="fn:mod_query.history_push"></A>
4082 <DT><STRONG>Synopsis:</STRONG></DT>
4083 <DD><TT>bool mod_query.history_push(string str)</TT>
4086 <DT><STRONG>Description:</STRONG></DT>
4087 <DD>Push an entry into line editor history.
4095 <DD><A NAME="7842"></A>
4097 <A NAME="fn:mod_query.history_search"></A>
4099 <DT><STRONG>Synopsis:</STRONG></DT>
4100 <DD><TT>integer mod_query.history_search(string s, integer from, bool bwd)</TT>
4103 <DT><STRONG>Description:</STRONG></DT>
4104 <DD>Try to find matching history entry. Returns -1 if none was
4105 found. The parameter <TT>from</TT> specifies where to start
4106 searching from, and <TT>bwd</TT> causes backward search from
4115 <DD><A NAME="7844"></A>
4117 <A NAME="fn:mod_query.history_table"></A>
4119 <DT><STRONG>Synopsis:</STRONG></DT>
4120 <DD><TT>table mod_query.history_table()</TT>
4123 <DT><STRONG>Description:</STRONG></DT>
4124 <DD>Return table of history entries.
4132 <DD><A NAME="7846"></A>
4134 <A NAME="fn:mod_query.message"></A>
4136 <DT><STRONG>Synopsis:</STRONG></DT>
4137 <DD><TT>WMessage mod_query.message(WMPlex mplex, string p)</TT>
4140 <DT><STRONG>Description:</STRONG></DT>
4141 <DD>Display a message in the <TT>mplex</TT>.
4149 <DD><A NAME="7848"></A>
4151 <A NAME="fn:mod_query.set"></A>
4153 <DT><STRONG>Synopsis:</STRONG></DT>
4154 <DD><TT>void mod_query.set(table tab)</TT>
4157 <DT><STRONG>Description:</STRONG></DT>
4158 <DD>Set module configuration. The following are supported:
4161 <TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
4162 <TR><TD ALIGN="LEFT">Field</TD>
4163 <TD ALIGN="LEFT">Description</TD>
4165 <TR><TD ALIGN="LEFT"><TT>autoshowcompl</TT></TD>
4166 <TD ALIGN="LEFT">(boolean) Is auto-show-completions enabled?
4167 (default: true).</TD>
4169 <TR><TD ALIGN="LEFT"><TT>autoshowcompl_delay</TT></TD>
4170 <TD ALIGN="LEFT">(integer) auto-show-completions delay
4171 in milliseconds (default: 250).</TD>
4181 <DD><A NAME="7850"></A>
4183 <A NAME="fn:mod_query.warn"></A>
4185 <DT><STRONG>Synopsis:</STRONG></DT>
4186 <DD><TT>WMessage mod_query.warn(WMPlex mplex, string p)</TT>
4189 <DT><STRONG>Description:</STRONG></DT>
4190 <DD>Display an error message box in the multiplexer <TT>mplex</TT>.
4198 <DD><A NAME="7852"></A>
4200 <A NAME="fn:mod_query.popen_completions"></A>
4202 <DT><STRONG>Synopsis:</STRONG></DT>
4203 <DD><TT>mod_query.popen_completions(cp, cmd, fn, reshnd)</TT>
4206 <DT><STRONG>Description:</STRONG></DT>
4207 <DD>This function can be used to read completions from an external source.
4208 The parameter <TT>cp</TT> is the completion proxy to be used,
4209 and the string <TT>cmd</TT> the shell command to be executed. To its stdout,
4210 the command should on the first line write the <TT>common_beg</TT>
4211 parameter of <A HREF="#fn:WComplProxy.set_completions"><TT>WComplProxy.set_completions</TT></A> (which <TT>fn</TT> maybe used
4212 to override) and a single actual completion on each of the successive lines.
4213 The function <TT>reshnd</TT> may be used to override a result table
4222 <DD><A NAME="7854"></A>
4224 <A NAME="fn:mod_query.query"></A>
4226 <DT><STRONG>Synopsis:</STRONG></DT>
4227 <DD><TT>mod_query.query(mplex, prompt, initvalue, handler, completor,
4231 <DT><STRONG>Description:</STRONG></DT>
4232 <DD>Low-level query routine. <TT>mplex</TT> is the WMPlex to display
4233 the query in, <TT>prompt</TT> the prompt string, and <TT>initvalue</TT>
4234 the initial contents of the query box. <TT>handler</TT> is a function
4235 that receives (<TT>mplex</TT>, result string) as parameter when the
4236 query has been succesfully completed, <TT>completor</TT> the completor
4237 routine which receives a (<TT>cp</TT>, <TT>str</TT>, <TT>point</TT>) as parameters.
4238 The parameter <TT>str</TT> is the string to be completed and <TT>point</TT>
4239 cursor's location within it. Completions should be eventually,
4240 possibly asynchronously, set with <A HREF="#fn:WComplProxy.set_completions"><TT>WComplProxy.set_completions</TT></A>
4249 <DD><A NAME="7856"></A>
4251 <A NAME="fn:mod_query.query_attachclient"></A>
4253 <DT><STRONG>Synopsis:</STRONG></DT>
4254 <DD><TT>mod_query.query_attachclient(mplex)</TT>
4257 <DT><STRONG>Description:</STRONG></DT>
4258 <DD>This query asks for the name of a client window and switches
4259 focus to the one entered. It uses the completion function
4260 <A HREF="#fn:ioncore.complete_clientwin"><TT>ioncore.complete_clientwin</TT></A>.
4268 <DD><A NAME="7858"></A>
4270 <A NAME="fn:mod_query.query_editfile"></A>
4272 <DT><STRONG>Synopsis:</STRONG></DT>
4273 <DD><TT>mod_query.query_editfile(mplex, script, prompt)</TT>
4276 <DT><STRONG>Description:</STRONG></DT>
4277 <DD>Asks for a file to be edited. This script uses
4278 <TT>run-mailcap -mode=edit</TT> by default, but you may provide an
4279 alternative script to use. The default prompt is "Edit file:" (translated).
4287 <DD><A NAME="7860"></A>
4289 <A NAME="fn:mod_query.query_exec"></A>
4291 <DT><STRONG>Synopsis:</STRONG></DT>
4292 <DD><TT>mod_query.query_exec(mplex)</TT>
4295 <DT><STRONG>Description:</STRONG></DT>
4296 <DD>This function asks for a command to execute with <SPAN CLASS="textit">/bin/sh</SPAN>.
4297 If the command is prefixed with a colon (':'), the command will
4298 be run in an XTerm (or other terminal emulator) using the script
4299 <SPAN CLASS="textit">ion-runinxterm</SPAN>. Two colons ('::') will ask you to press
4300 enter after the command has finished.
4308 <DD><A NAME="7862"></A>
4310 <A NAME="fn:mod_query.query_gotoclient"></A>
4312 <DT><STRONG>Synopsis:</STRONG></DT>
4313 <DD><TT>mod_query.query_gotoclient(mplex)</TT>
4316 <DT><STRONG>Description:</STRONG></DT>
4317 <DD>This query asks for the name of a client window and attaches
4318 it to the frame the query was opened in. It uses the completion
4319 function <A HREF="#fn:ioncore.complete_clientwin"><TT>ioncore.complete_clientwin</TT></A>.
4327 <DD><A NAME="7864"></A>
4329 <A NAME="fn:mod_query.query_lua"></A>
4331 <DT><STRONG>Synopsis:</STRONG></DT>
4332 <DD><TT>mod_query.query_lua(mplex)</TT>
4335 <DT><STRONG>Description:</STRONG></DT>
4336 <DD>This query asks for Lua code to execute. It sets the variable '<TT>_</TT>'
4337 in the local environment of the string to point to the mplex where the
4338 query was created. It also sets the table <TT>arg</TT> in the local
4339 environment to <TT>{_, _:current()}</TT>.
4347 <DD><A NAME="7866"></A>
4349 <A NAME="fn:mod_query.query_man"></A>
4351 <DT><STRONG>Synopsis:</STRONG></DT>
4352 <DD><TT>mod_query.query_man(mplex, prog)</TT>
4355 <DT><STRONG>Description:</STRONG></DT>
4356 <DD>This query asks for a manual page to display. By default it runs the
4357 <TT>man</TT> command in an <TT>xterm</TT> using <TT>ion-runinxterm</TT>,
4358 but it is possible to pass another program as the <TT>prog</TT> argument.
4366 <DD><A NAME="7868"></A>
4368 <A NAME="fn:mod_query.query_menu"></A>
4370 <DT><STRONG>Synopsis:</STRONG></DT>
4371 <DD><TT>mod_query.query_menu(mplex, themenu, prompt)</TT>
4374 <DT><STRONG>Description:</STRONG></DT>
4375 <DD>This query can be used to create a query of a defined menu.
4383 <DD><A NAME="7870"></A>
4385 <A NAME="fn:mod_query.query_renameframe"></A>
4387 <DT><STRONG>Synopsis:</STRONG></DT>
4388 <DD><TT>mod_query.query_renameframe(frame)</TT>
4391 <DT><STRONG>Description:</STRONG></DT>
4392 <DD>This function asks for a name new for the frame where the query
4401 <DD><A NAME="7872"></A>
4403 <A NAME="fn:mod_query.query_renameworkspace"></A>
4405 <DT><STRONG>Synopsis:</STRONG></DT>
4406 <DD><TT>mod_query.query_renameworkspace(mplex)</TT>
4409 <DT><STRONG>Description:</STRONG></DT>
4410 <DD>This function asks for a name new for the workspace on which the
4419 <DD><A NAME="7874"></A>
4421 <A NAME="fn:mod_query.query_restart"></A>
4423 <DT><STRONG>Synopsis:</STRONG></DT>
4424 <DD><TT>mod_query.query_restart(mplex)</TT>
4427 <DT><STRONG>Description:</STRONG></DT>
4428 <DD>This query asks whether the user wants restart Ioncore.
4429 If the answer is 'y', 'Y' or 'yes', so will happen.
4437 <DD><A NAME="7876"></A>
4439 <A NAME="fn:mod_query.query_runfile"></A>
4441 <DT><STRONG>Synopsis:</STRONG></DT>
4442 <DD><TT>mod_query.query_runfile(mplex, script, prompt)</TT>
4445 <DT><STRONG>Description:</STRONG></DT>
4446 <DD>Asks for a file to be viewed. This script uses
4447 <TT>run-mailcap -action=view</TT> by default, but you may provide an
4448 alternative script to use. The default prompt is "View file:" (translated).
4456 <DD><A NAME="7878"></A>
4458 <A NAME="fn:mod_query.query_shutdown"></A>
4460 <DT><STRONG>Synopsis:</STRONG></DT>
4461 <DD><TT>mod_query.query_shutdown(mplex)</TT>
4464 <DT><STRONG>Description:</STRONG></DT>
4465 <DD>This query asks whether the user wants to exit Ion (no session manager)
4466 or close the session (running under a session manager that supports such
4467 requests). If the answer is 'y', 'Y' or 'yes', so will happen.
4475 <DD><A NAME="7880"></A>
4477 <A NAME="fn:mod_query.query_ssh"></A>
4479 <DT><STRONG>Synopsis:</STRONG></DT>
4480 <DD><TT>mod_query.query_ssh(mplex, ssh)</TT>
4483 <DT><STRONG>Description:</STRONG></DT>
4484 <DD>This query asks for a host to connect to with SSH.
4485 Hosts to tab-complete are read from <SPAN CLASS="textit">~/.ssh/known_hosts</SPAN>.
4493 <DD><A NAME="7883"></A>
4495 <A NAME="fn:mod_query.query_workspace"></A>
4497 <DT><STRONG>Synopsis:</STRONG></DT>
4498 <DD><TT>mod_query.query_workspace(mplex)</TT>
4501 <DT><STRONG>Description:</STRONG></DT>
4502 <DD>This query asks for the name of a workspace. If a workspace
4503 (an object inheriting WGroupWS) with such a name exists,
4504 it will be switched to. Otherwise a new workspace with the
4505 entered name will be created and the user will be queried for
4506 the type of the workspace.
4514 <DD><A NAME="7885"></A>
4516 <A NAME="fn:mod_query.query_yesno"></A>
4518 <DT><STRONG>Synopsis:</STRONG></DT>
4519 <DD><TT>mod_query.query_yesno(mplex, prompt, handler)</TT>
4522 <DT><STRONG>Description:</STRONG></DT>
4523 <DD>This function query will display a query with prompt <TT>prompt</TT> in
4524 <TT>mplex</TT> and if the user answers affirmately, call <TT>handler</TT>
4525 with <TT>mplex</TT> as parameter.
4533 <DD><A NAME="7887"></A>
4535 <A NAME="fn:mod_query.show_about_ion"></A>
4537 <DT><STRONG>Synopsis:</STRONG></DT>
4538 <DD><TT>mod_query.show_about_ion(mplex)</TT>
4541 <DT><STRONG>Description:</STRONG></DT>
4542 <DD>Display an "About Ion" message in <TT>mplex</TT>.
4550 <DD><A NAME="7889"></A>
4552 <A NAME="fn:mod_query.show_tree"></A>
4554 <DT><STRONG>Synopsis:</STRONG></DT>
4555 <DD><TT>mod_query.show_tree(mplex, reg, max_depth)</TT>
4558 <DT><STRONG>Description:</STRONG></DT>
4559 <DD>Show information about a region tree
4566 <H3><A NAME="SECTION00731000000000000000">
4567 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">1</SPAN> WComplProxy functions</A>
4573 <DD><A NAME="7892"></A>
4575 <A NAME="fn:WComplProxy.set_completions"></A>
4577 <DT><STRONG>Synopsis:</STRONG></DT>
4578 <DD><TT>bool WComplProxy.set_completions(WComplProxy proxy, table compls)</TT>
4581 <DT><STRONG>Description:</STRONG></DT>
4582 <DD>Set completion list of the WEdln that <TT>proxy</TT> refers to to
4583 <TT>compls</TT>, if it is still waiting for this completion run. The
4584 numerical indexes of <TT>compls</TT> list the found completions. If the
4585 entry <TT>common_beg</TT> (<TT>common_end</TT>) exists, it gives an extra
4586 common prefix (suffix) of all found completions.
4593 <H3><A NAME="SECTION00732000000000000000">
4594 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN> WEdln functions</A>
4600 <DD><A NAME="7895"></A>
4602 <A NAME="fn:WEdln.back"></A>
4604 <DT><STRONG>Synopsis:</STRONG></DT>
4605 <DD><TT>void WEdln.back(WEdln wedln)</TT>
4608 <DT><STRONG>Description:</STRONG></DT>
4609 <DD>Move backward one character.
4617 <DD><A NAME="7897"></A>
4619 <A NAME="fn:WEdln.backspace"></A>
4621 <DT><STRONG>Synopsis:</STRONG></DT>
4622 <DD><TT>void WEdln.backspace(WEdln wedln)</TT>
4625 <DT><STRONG>Description:</STRONG></DT>
4626 <DD>Delete previous character.
4634 <DD><A NAME="7899"></A>
4636 <A NAME="fn:WEdln.bkill_word"></A>
4638 <DT><STRONG>Synopsis:</STRONG></DT>
4639 <DD><TT>void WEdln.bkill_word(WEdln wedln)</TT>
4642 <DT><STRONG>Description:</STRONG></DT>
4643 <DD>Starting from the previous characters, delete possible whitespace and
4644 preceding alphanumeric characters until previous non-alphanumeric character.
4652 <DD><A NAME="7901"></A>
4654 <A NAME="fn:WEdln.bol"></A>
4656 <DT><STRONG>Synopsis:</STRONG></DT>
4657 <DD><TT>void WEdln.bol(WEdln wedln)</TT>
4660 <DT><STRONG>Description:</STRONG></DT>
4661 <DD>Go to the beginning of line.
4669 <DD><A NAME="7903"></A>
4671 <A NAME="fn:WEdln.bskip_word"></A>
4673 <DT><STRONG>Synopsis:</STRONG></DT>
4674 <DD><TT>void WEdln.bskip_word(WEdln wedln)</TT>
4677 <DT><STRONG>Description:</STRONG></DT>
4678 <DD>Go to to beginning of current sequence of alphanumeric characters
4679 followed by whitespace.
4687 <DD><A NAME="7905"></A>
4689 <A NAME="fn:WEdln.clear_mark"></A>
4691 <DT><STRONG>Synopsis:</STRONG></DT>
4692 <DD><TT>void WEdln.clear_mark(WEdln wedln)</TT>
4695 <DT><STRONG>Description:</STRONG></DT>
4696 <DD>Clear <SPAN CLASS="textit">mark</SPAN>.
4704 <DD><A NAME="7907"></A>
4706 <A NAME="fn:WEdln.complete"></A>
4708 <DT><STRONG>Synopsis:</STRONG></DT>
4709 <DD><TT>void WEdln.complete(WEdln wedln, string cycle, string mode)</TT>
4712 <DT><STRONG>Description:</STRONG></DT>
4713 <DD>Call completion handler with the text between the beginning of line and
4714 current cursor position, or select next/previous completion from list if in
4715 auto-show-completions mode and <TT>cycle</TT> is set to ``next'' or ``prev'',
4716 respectively. The <TT>mode</TT> may be ``history'' or ``normal''. If it is
4717 not set, the previous mode is used. Normally next entry is not cycled to
4718 despite the setting of <TT>cycle</TT> if mode switch occurs. To override
4719 this, use ``next-always'' and ``prev-always'' for <TT>cycle</TT>.
4727 <DD><A NAME="7909"></A>
4729 <A NAME="fn:WEdln.contents"></A>
4731 <DT><STRONG>Synopsis:</STRONG></DT>
4732 <DD><TT>string WEdln.contents(WEdln wedln)</TT>
4735 <DT><STRONG>Description:</STRONG></DT>
4736 <DD>Get line editor contents.
4744 <DD><A NAME="7911"></A>
4746 <A NAME="fn:WEdln.context"></A>
4748 <DT><STRONG>Synopsis:</STRONG></DT>
4749 <DD><TT>string WEdln.context(WEdln wedln)</TT>
4752 <DT><STRONG>Description:</STRONG></DT>
4753 <DD>Get history context for <TT>wedln</TT>.
4761 <DD><A NAME="7913"></A>
4763 <A NAME="fn:WEdln.copy"></A>
4765 <DT><STRONG>Synopsis:</STRONG></DT>
4766 <DD><TT>void WEdln.copy(WEdln wedln)</TT>
4769 <DT><STRONG>Description:</STRONG></DT>
4770 <DD>Copy text between <SPAN CLASS="textit">mark</SPAN> and current cursor position to clipboard.
4778 <DD><A NAME="7915"></A>
4780 <A NAME="fn:WEdln.cut"></A>
4782 <DT><STRONG>Synopsis:</STRONG></DT>
4783 <DD><TT>void WEdln.cut(WEdln wedln)</TT>
4786 <DT><STRONG>Description:</STRONG></DT>
4787 <DD>Copy text between <SPAN CLASS="textit">mark</SPAN> and current cursor position to clipboard
4788 and then delete that sequence.
4796 <DD><A NAME="7917"></A>
4798 <A NAME="fn:WEdln.delete"></A>
4800 <DT><STRONG>Synopsis:</STRONG></DT>
4801 <DD><TT>void WEdln.delete(WEdln wedln)</TT>
4804 <DT><STRONG>Description:</STRONG></DT>
4805 <DD>Delete current character.
4813 <DD><A NAME="7919"></A>
4815 <A NAME="fn:WEdln.eol"></A>
4817 <DT><STRONG>Synopsis:</STRONG></DT>
4818 <DD><TT>void WEdln.eol(WEdln wedln)</TT>
4821 <DT><STRONG>Description:</STRONG></DT>
4822 <DD>Go to the end of line.
4830 <DD><A NAME="7921"></A>
4832 <A NAME="fn:WEdln.finish"></A>
4834 <DT><STRONG>Synopsis:</STRONG></DT>
4835 <DD><TT>void WEdln.finish(WEdln wedln)</TT>
4838 <DT><STRONG>Description:</STRONG></DT>
4839 <DD>Close <TT>wedln</TT> and call any handlers.
4847 <DD><A NAME="7923"></A>
4849 <A NAME="fn:WEdln.forward"></A>
4851 <DT><STRONG>Synopsis:</STRONG></DT>
4852 <DD><TT>void WEdln.forward(WEdln wedln)</TT>
4855 <DT><STRONG>Description:</STRONG></DT>
4856 <DD>Move forward one character.
4864 <DD><A NAME="7925"></A>
4866 <A NAME="fn:WEdln.history_next"></A>
4868 <DT><STRONG>Synopsis:</STRONG></DT>
4869 <DD><TT>void WEdln.history_next(WEdln wedln, bool match)</TT>
4872 <DT><STRONG>Description:</STRONG></DT>
4873 <DD>Replace line editor contents with next entry in history if one exists.
4874 If <TT>match</TT> is <TT>true</TT>, the initial part of the history entry
4875 must match the current line from beginning to point.
4883 <DD><A NAME="7927"></A>
4885 <A NAME="fn:WEdln.history_prev"></A>
4887 <DT><STRONG>Synopsis:</STRONG></DT>
4888 <DD><TT>void WEdln.history_prev(WEdln wedln, bool match)</TT>
4891 <DT><STRONG>Description:</STRONG></DT>
4892 <DD>Replace line editor contents with previous in history if one exists.
4893 If <TT>match</TT> is <TT>true</TT>, the initial part of the history entry
4894 must match the current line from beginning to point.
4902 <DD><A NAME="7929"></A>
4904 <A NAME="fn:WEdln.insstr"></A>
4906 <DT><STRONG>Synopsis:</STRONG></DT>
4907 <DD><TT>void WEdln.insstr(WEdln wedln, string str)</TT>
4910 <DT><STRONG>Description:</STRONG></DT>
4911 <DD>Input <TT>str</TT> in wedln at current editing point.
4919 <DD><A NAME="7931"></A>
4921 <A NAME="fn:WEdln.is_histcompl"></A>
4923 <DT><STRONG>Synopsis:</STRONG></DT>
4924 <DD><TT>bool WEdln.is_histcompl(WEdln wedln)</TT>
4927 <DT><STRONG>Description:</STRONG></DT>
4928 <DD>Get history completion mode.
4936 <DD><A NAME="7933"></A>
4938 <A NAME="fn:WEdln.kill_line"></A>
4940 <DT><STRONG>Synopsis:</STRONG></DT>
4941 <DD><TT>void WEdln.kill_line(WEdln wedln)</TT>
4944 <DT><STRONG>Description:</STRONG></DT>
4945 <DD>Delete the whole line.
4953 <DD><A NAME="7935"></A>
4955 <A NAME="fn:WEdln.kill_to_bol"></A>
4957 <DT><STRONG>Synopsis:</STRONG></DT>
4958 <DD><TT>void WEdln.kill_to_bol(WEdln wedln)</TT>
4961 <DT><STRONG>Description:</STRONG></DT>
4962 <DD>Delete all characters from previous to beginning of line.
4970 <DD><A NAME="7937"></A>
4972 <A NAME="fn:WEdln.kill_to_eol"></A>
4974 <DT><STRONG>Synopsis:</STRONG></DT>
4975 <DD><TT>void WEdln.kill_to_eol(WEdln wedln)</TT>
4978 <DT><STRONG>Description:</STRONG></DT>
4979 <DD>Delete all characters from current to end of line.
4987 <DD><A NAME="7939"></A>
4989 <A NAME="fn:WEdln.kill_word"></A>
4991 <DT><STRONG>Synopsis:</STRONG></DT>
4992 <DD><TT>void WEdln.kill_word(WEdln wedln)</TT>
4995 <DT><STRONG>Description:</STRONG></DT>
4996 <DD>Starting from the current point, delete possible whitespace and
4997 following alphanumeric characters until next non-alphanumeric character.
5005 <DD><A NAME="7941"></A>
5007 <A NAME="fn:WEdln.mark"></A>
5009 <DT><STRONG>Synopsis:</STRONG></DT>
5010 <DD><TT>integer WEdln.mark(WEdln wedln)</TT>
5013 <DT><STRONG>Description:</STRONG></DT>
5014 <DD>Get current mark (start of selection) for <TT>wedln</TT>.
5015 Return value of -1 indicates that there is no mark, and
5016 0 is the beginning of the line.
5024 <DD><A NAME="7943"></A>
5026 <A NAME="fn:WEdln.next_completion"></A>
5028 <DT><STRONG>Synopsis:</STRONG></DT>
5029 <DD><TT>bool WEdln.next_completion(WEdln wedln)</TT>
5032 <DT><STRONG>Description:</STRONG></DT>
5033 <DD>Select next completion.
5041 <DD><A NAME="7945"></A>
5043 <A NAME="fn:WEdln.paste"></A>
5045 <DT><STRONG>Synopsis:</STRONG></DT>
5046 <DD><TT>void WEdln.paste(WEdln wedln)</TT>
5049 <DT><STRONG>Description:</STRONG></DT>
5050 <DD>Request selection from application holding such.
5053 Note that this function is asynchronous; the selection will not
5054 actually be inserted before Ion receives it. This will be no
5055 earlier than Ion return to its main loop.
5063 <DD><A NAME="7947"></A>
5065 <A NAME="fn:WEdln.point"></A>
5067 <DT><STRONG>Synopsis:</STRONG></DT>
5068 <DD><TT>integer WEdln.point(WEdln wedln)</TT>
5071 <DT><STRONG>Description:</STRONG></DT>
5072 <DD>Get current editing point.
5073 Beginning of the edited line is point 0.
5081 <DD><A NAME="7949"></A>
5083 <A NAME="fn:WEdln.prev_completion"></A>
5085 <DT><STRONG>Synopsis:</STRONG></DT>
5086 <DD><TT>bool WEdln.prev_completion(WEdln wedln)</TT>
5089 <DT><STRONG>Description:</STRONG></DT>
5090 <DD>Select previous completion.
5098 <DD><A NAME="7951"></A>
5100 <A NAME="fn:WEdln.set_context"></A>
5102 <DT><STRONG>Synopsis:</STRONG></DT>
5103 <DD><TT>void WEdln.set_context(WEdln wedln, string context)</TT>
5106 <DT><STRONG>Description:</STRONG></DT>
5107 <DD>Set history context for <TT>wedln</TT>.
5115 <DD><A NAME="7953"></A>
5117 <A NAME="fn:WEdln.set_mark"></A>
5119 <DT><STRONG>Synopsis:</STRONG></DT>
5120 <DD><TT>void WEdln.set_mark(WEdln wedln)</TT>
5123 <DT><STRONG>Description:</STRONG></DT>
5124 <DD>Set <SPAN CLASS="textit">mark</SPAN> to current cursor position.
5132 <DD><A NAME="7955"></A>
5134 <A NAME="fn:WEdln.skip_word"></A>
5136 <DT><STRONG>Synopsis:</STRONG></DT>
5137 <DD><TT>void WEdln.skip_word(WEdln wedln)</TT>
5140 <DT><STRONG>Description:</STRONG></DT>
5141 <DD>Go to to end of current sequence of whitespace followed by alphanumeric
5150 <DD><A NAME="7957"></A>
5152 <A NAME="fn:WEdln.transpose_chars"></A>
5154 <DT><STRONG>Synopsis:</STRONG></DT>
5155 <DD><TT>void WEdln.transpose_chars(WEdln wedln)</TT>
5158 <DT><STRONG>Description:</STRONG></DT>
5159 <DD>Transpose characters.
5167 <DD><A NAME="7959"></A>
5169 <A NAME="fn:WEdln.transpose_words"></A>
5171 <DT><STRONG>Synopsis:</STRONG></DT>
5172 <DD><TT>void WEdln.transpose_words(WEdln wedln)</TT>
5175 <DT><STRONG>Description:</STRONG></DT>
5176 <DD>Transpose words.
5183 <H3><A NAME="SECTION00733000000000000000">
5184 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN> WInput functions</A>
5190 <DD><A NAME="7962"></A>
5192 <A NAME="fn:WInput.cancel"></A>
5194 <DT><STRONG>Synopsis:</STRONG></DT>
5195 <DD><TT>void WInput.cancel(WInput input)</TT>
5198 <DT><STRONG>Description:</STRONG></DT>
5199 <DD>Close input not calling any possible finish handlers.
5207 <DD><A NAME="7964"></A>
5209 <A NAME="fn:WInput.scrolldown"></A>
5211 <DT><STRONG>Synopsis:</STRONG></DT>
5212 <DD><TT>void WInput.scrolldown(WInput input)</TT>
5215 <DT><STRONG>Description:</STRONG></DT>
5216 <DD>Scroll input <TT>input</TT> text contents down.
5224 <DD><A NAME="7966"></A>
5226 <A NAME="fn:WInput.scrollup"></A>
5228 <DT><STRONG>Synopsis:</STRONG></DT>
5229 <DD><TT>void WInput.scrollup(WInput input)</TT>
5232 <DT><STRONG>Description:</STRONG></DT>
5233 <DD>Scroll input <TT>input</TT> text contents up.
5240 <H2><A NAME="SECTION00740000000000000000"></A>
5241 <A NAME="sec:menuref"></A>
5243 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">4</SPAN> Functions defined in <SPAN CLASS="textit">mod_menu</SPAN>
5247 <DD><A NAME="8777"></A>
5249 <A NAME="fn:mod_menu.grabmenu"></A>
5251 <DT><STRONG>Synopsis:</STRONG></DT>
5252 <DD><TT>mod_menu.grabmenu(mplex, sub, menu_or_name, param)</TT>
5255 <DT><STRONG>Description:</STRONG></DT>
5256 <DD>This function is similar to <A HREF="#fn:mod_menu.menu"><TT>mod_menu.menu</TT></A>, but input
5257 is grabbed and the key used to active the menu can be used to
5258 cycle through menu entries.
5266 <DD><A NAME="8779"></A>
5268 <A NAME="fn:mod_menu.menu"></A>
5270 <DT><STRONG>Synopsis:</STRONG></DT>
5271 <DD><TT>mod_menu.menu(mplex, sub, menu_or_name, param)</TT>
5274 <DT><STRONG>Description:</STRONG></DT>
5275 <DD>Display a menu in the lower-left corner of <TT>mplex</TT>.
5276 The variable <TT>menu_or_name</TT> is either the name of a menu
5277 defined with <A HREF="#fn:mod_menu.defmenu"><TT>mod_menu.defmenu</TT></A> or directly a table similar
5278 to ones passesd to this function. When this function is
5279 called from a binding handler, <TT>sub</TT> should be set to
5280 the second argument of to the binding handler (<TT>_sub</TT>)
5281 so that the menu handler will get the same parameters as the
5282 binding handler. Extra options can be passed in the table
5283 <TT>param</TT>. The initial entry can be specified as the field
5284 <TT>initial</TT> as an integer starting from 1. Menus can be made
5285 to use a bigger style by setting the field <TT>big</TT> to <TT>true</TT>.
5293 <DD><A NAME="8781"></A>
5295 <A NAME="fn:mod_menu.get"></A>
5297 <DT><STRONG>Synopsis:</STRONG></DT>
5298 <DD><TT>table mod_menu.get()</TT>
5301 <DT><STRONG>Description:</STRONG></DT>
5302 <DD>Get module basic settings. For details, see <A HREF="#fn:mod_menu.set"><TT>mod_menu.set</TT></A>.
5310 <DD><A NAME="8783"></A>
5312 <A NAME="fn:mod_menu.set"></A>
5314 <DT><STRONG>Synopsis:</STRONG></DT>
5315 <DD><TT>void mod_menu.set(table tab)</TT>
5318 <DT><STRONG>Description:</STRONG></DT>
5319 <DD>Set module basic settings. The parameter table may contain the
5323 <TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
5324 <TR><TD ALIGN="LEFT">Field</TD>
5325 <TD ALIGN="LEFT">Description</TD>
5327 <TR><TD ALIGN="LEFT"><TT>scroll_amount</TT></TD>
5328 <TD ALIGN="LEFT">Number of pixels to scroll at a time
5329 pointer-controlled menus when one extends
5330 beyond a border of the screen and the pointer
5331 touches that border.</TD>
5333 <TR><TD ALIGN="LEFT"><TT>scroll_delay</TT></TD>
5334 <TD ALIGN="LEFT">Time between such scrolling events in
5345 <DD><A NAME="8785"></A>
5347 <A NAME="fn:mod_menu.pmenu"></A>
5349 <DT><STRONG>Synopsis:</STRONG></DT>
5350 <DD><TT>mod_menu.pmenu(win, sub, menu_or_name)</TT>
5353 <DT><STRONG>Description:</STRONG></DT>
5354 <DD>This function displays a drop-down menu and should only
5355 be called from a mouse press handler. The parameters are
5356 similar to those of <A HREF="#fn:mod_menu.menu"><TT>mod_menu.menu</TT></A>.
5363 <H3><A NAME="SECTION00741000000000000000">
5364 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN> WMenu functions</A>
5370 <DD><A NAME="8788"></A>
5372 <A NAME="fn:WMenu.cancel"></A>
5374 <DT><STRONG>Synopsis:</STRONG></DT>
5375 <DD><TT>void WMenu.cancel(WMenu menu)</TT>
5378 <DT><STRONG>Description:</STRONG></DT>
5379 <DD>Close <TT>menu</TT> not calling any possible finish handlers.
5387 <DD><A NAME="8790"></A>
5389 <A NAME="fn:WMenu.finish"></A>
5391 <DT><STRONG>Synopsis:</STRONG></DT>
5392 <DD><TT>void WMenu.finish(WMenu menu)</TT>
5395 <DT><STRONG>Description:</STRONG></DT>
5396 <DD>If selected entry is a submenu, display that.
5397 Otherwise destroy the menu and call handler for selected entry.
5405 <DD><A NAME="8792"></A>
5407 <A NAME="fn:WMenu.select_next"></A>
5409 <DT><STRONG>Synopsis:</STRONG></DT>
5410 <DD><TT>void WMenu.select_next(WMenu menu)</TT>
5413 <DT><STRONG>Description:</STRONG></DT>
5414 <DD>Select next entry in menu.
5422 <DD><A NAME="8794"></A>
5424 <A NAME="fn:WMenu.select_nth"></A>
5426 <DT><STRONG>Synopsis:</STRONG></DT>
5427 <DD><TT>void WMenu.select_nth(WMenu menu, integer n)</TT>
5430 <DT><STRONG>Description:</STRONG></DT>
5431 <DD>Select <TT>n</TT>:th entry in menu.
5439 <DD><A NAME="8796"></A>
5441 <A NAME="fn:WMenu.select_prev"></A>
5443 <DT><STRONG>Synopsis:</STRONG></DT>
5444 <DD><TT>void WMenu.select_prev(WMenu menu)</TT>
5447 <DT><STRONG>Description:</STRONG></DT>
5448 <DD>Select previous entry in menu.
5456 <DD><A NAME="8798"></A>
5458 <A NAME="fn:WMenu.typeahead_clear"></A>
5460 <DT><STRONG>Synopsis:</STRONG></DT>
5461 <DD><TT>void WMenu.typeahead_clear(WMenu menu)</TT>
5464 <DT><STRONG>Description:</STRONG></DT>
5465 <DD>Clear typeahead buffer.
5472 <H2><A NAME="SECTION00750000000000000000"></A>
5473 <A NAME="sec:dockref"></A>
5475 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">5</SPAN> Functions defined in <SPAN CLASS="textit">mod_dock</SPAN>
5479 <DD><A NAME="8997"></A>
5481 <A NAME="fn:mod_dock.set_floating_shown_on"></A>
5483 <DT><STRONG>Synopsis:</STRONG></DT>
5484 <DD><TT>void mod_dock.set_floating_shown_on(WMPlex mplex, string how)</TT>
5487 <DT><STRONG>Description:</STRONG></DT>
5488 <DD>Toggle floating docks on <TT>mplex</TT>.
5495 <H3><A NAME="SECTION00751000000000000000">
5496 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">1</SPAN> WDock functions</A>
5502 <DD><A NAME="9000"></A>
5504 <A NAME="fn:WDock.attach"></A>
5506 <DT><STRONG>Synopsis:</STRONG></DT>
5507 <DD><TT>bool WDock.attach(WDock dock, WRegion reg)</TT>
5510 <DT><STRONG>Description:</STRONG></DT>
5511 <DD>Attach <TT>reg</TT> to <TT>dock</TT>.
5519 <DD><A NAME="9002"></A>
5521 <A NAME="fn:WDock.get"></A>
5523 <DT><STRONG>Synopsis:</STRONG></DT>
5524 <DD><TT>table WDock.get(WDock dock)</TT>
5527 <DT><STRONG>Description:</STRONG></DT>
5528 <DD>Get <TT>dock</TT>'s configuration table. See <A HREF="#fn:WDock.set"><TT>WDock.set</TT></A> for a
5529 description of the table.
5537 <DD><A NAME="9004"></A>
5539 <A NAME="fn:WDock.resize"></A>
5541 <DT><STRONG>Synopsis:</STRONG></DT>
5542 <DD><TT>void WDock.resize(WDock dock)</TT>
5545 <DT><STRONG>Description:</STRONG></DT>
5546 <DD>Resizes and refreshes <TT>dock</TT>.
5554 <DD><A NAME="9006"></A>
5556 <A NAME="fn:WDock.set"></A>
5558 <DT><STRONG>Synopsis:</STRONG></DT>
5559 <DD><TT>void WDock.set(WDock dock, table conftab)</TT>
5562 <DT><STRONG>Description:</STRONG></DT>
5563 <DD>Configure <TT>dock</TT>. <TT>conftab</TT> is a table of key/value pairs:
5566 <TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
5567 <TR><TD ALIGN="LEFT">Key</TD>
5568 <TD ALIGN="LEFT">Values</TD>
5569 <TD ALIGN="LEFT">Description</TD>
5571 <TR><TD ALIGN="LEFT"><TT>name</TT></TD>
5572 <TD ALIGN="LEFT">string</TD>
5573 <TD ALIGN="LEFT">Name of dock</TD>
5575 <TR><TD ALIGN="LEFT"><TT>pos</TT></TD>
5576 <TD ALIGN="LEFT">string in <!-- MATH
5577 $\{t,m,b\}\times\{t,c,b\}$
5579 <SPAN CLASS="MATH"></SPAN></TD>
5580 <TD ALIGN="LEFT">Dock position.
5581 Can only be used in floating mode.</TD>
5583 <TR><TD ALIGN="LEFT"><TT>grow</TT></TD>
5584 <TD ALIGN="LEFT">up/down/left/right</TD>
5585 <TD ALIGN="LEFT">Growth direction where new dockapps are added. Also
5586 sets orientation for dock when working as WMPlex status
5587 display (see <A HREF="#fn:WMPlex.set_stdisp"><TT>WMPlex.set_stdisp</TT></A>).</TD>
5589 <TR><TD ALIGN="LEFT"><TT>is_auto</TT></TD>
5590 <TD ALIGN="LEFT">bool</TD>
5591 <TD ALIGN="LEFT">Should <TT>dock</TT> automatically manage new dockapps?</TD>
5596 Any parameters not explicitly set in <TT>conftab</TT> will be left unchanged.
5603 <H2><A NAME="SECTION00760000000000000000"></A>
5604 <A NAME="sec:spref"></A>
5606 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">6</SPAN> Functions defined in <SPAN CLASS="textit">mod_sp</SPAN>
5610 <DD><A NAME="9106"></A>
5612 <A NAME="fn:mod_sp.set_shown"></A>
5614 <DT><STRONG>Synopsis:</STRONG></DT>
5615 <DD><TT>bool mod_sp.set_shown(WFrame sp, string how)</TT>
5618 <DT><STRONG>Description:</STRONG></DT>
5619 <DD>Toggle displayed status of <TT>sp</TT>.
5620 The parameter <TT>how</TT> is one of (set/unset/toggle).
5628 <DD><A NAME="9108"></A>
5630 <A NAME="fn:mod_sp.set_shown_on"></A>
5632 <DT><STRONG>Synopsis:</STRONG></DT>
5633 <DD><TT>bool mod_sp.set_shown_on(WMPlex mplex, string how)</TT>
5636 <DT><STRONG>Description:</STRONG></DT>
5637 <DD>Change displayed status of some scratchpad on <TT>mplex</TT> if one is
5638 found. The parameter <TT>how</TT> is one of (set/unset/toggle).
5645 <H2><A NAME="SECTION00770000000000000000"></A>
5646 <A NAME="sec:deref"></A>
5648 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">7</SPAN> Functions defined in <SPAN CLASS="textit">de</SPAN>
5652 <DD><A NAME="9173"></A>
5654 <A NAME="fn:de.defstyle"></A>
5656 <DT><STRONG>Synopsis:</STRONG></DT>
5657 <DD><TT>bool de.defstyle(string name, table tab)</TT>
5660 <DT><STRONG>Description:</STRONG></DT>
5669 <DD><A NAME="9175"></A>
5671 <A NAME="fn:de.defstyle_rootwin"></A>
5673 <DT><STRONG>Synopsis:</STRONG></DT>
5674 <DD><TT>bool de.defstyle_rootwin(WRootWin rootwin, string name, table tab)</TT>
5677 <DT><STRONG>Description:</STRONG></DT>
5678 <DD>Define a style for the root window <TT>rootwin</TT>.
5686 <DD><A NAME="9177"></A>
5688 <A NAME="fn:de.reset"></A>
5690 <DT><STRONG>Synopsis:</STRONG></DT>
5691 <DD><TT>void de.reset()</TT>
5694 <DT><STRONG>Description:</STRONG></DT>
5695 <DD>Clear all styles from drawing engine memory.
5703 <DD><A NAME="9179"></A>
5705 <A NAME="fn:de.substyle"></A>
5707 <DT><STRONG>Synopsis:</STRONG></DT>
5708 <DD><TT>table de.substyle(string pattern, table tab)</TT>
5711 <DT><STRONG>Description:</STRONG></DT>
5712 <DD>Define a substyle.
5719 <H2><A NAME="SECTION00780000000000000000"></A>
5720 <A NAME="sec:hookref"></A>
5722 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">8</SPAN> Hooks
5728 <DD><A NAME="9401"></A>
5731 <DT><STRONG>Hook name:</STRONG></DT>
5732 <DD><A NAME="clientwin_do_manage_alt"></A><TT>clientwin_do_manage_alt</TT>
5735 <DT><STRONG>Parameters:</STRONG></DT>
5736 <DD><TT>(WClientWin, table)</TT>
5739 <DT><STRONG>Description:</STRONG></DT>
5740 <DD>Called when we want to manage a new client window.
5741 The table argument contains the following fields:
5744 <TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
5745 <TR><TD ALIGN="LEFT">Field</TD>
5746 <TD ALIGN="LEFT">Type</TD>
5747 <TD ALIGN="LEFT">Description</TD>
5749 <TR><TD ALIGN="LEFT"><TT>switchto</TT></TD>
5750 <TD ALIGN="LEFT">bool</TD>
5751 <TD ALIGN="LEFT">Do we want to switch to the client window.</TD>
5753 <TR><TD ALIGN="LEFT"><TT>jumpto</TT></TD>
5754 <TD ALIGN="LEFT">bool</TD>
5755 <TD ALIGN="LEFT">Do we want to jump to the client window.</TD>
5757 <TR><TD ALIGN="LEFT"><TT>userpos</TT></TD>
5758 <TD ALIGN="LEFT">bool</TD>
5759 <TD ALIGN="LEFT">Geometry set by user.</TD>
5761 <TR><TD ALIGN="LEFT"><TT>dockapp</TT></TD>
5762 <TD ALIGN="LEFT">bool</TD>
5763 <TD ALIGN="LEFT">Client window is a dockapp.</TD>
5765 <TR><TD ALIGN="LEFT"><TT>maprq</TT></TD>
5766 <TD ALIGN="LEFT">bool</TD>
5767 <TD ALIGN="LEFT">Map request (and not initialisation scan).</TD>
5769 <TR><TD ALIGN="LEFT"><TT>gravity</TT></TD>
5770 <TD ALIGN="LEFT">number</TD>
5771 <TD ALIGN="LEFT">Window gravity.</TD>
5773 <TR><TD ALIGN="LEFT"><TT>geom</TT></TD>
5774 <TD ALIGN="LEFT">table</TD>
5775 <TD ALIGN="LEFT">Requested geometry; <TT>x</TT>, <TT>y</TT>, <TT>w</TT>, <TT>h</TT>.</TD>
5777 <TR><TD ALIGN="LEFT"><TT>tfor</TT></TD>
5778 <TD ALIGN="LEFT">WClientWin</TD>
5779 <TD ALIGN="LEFT">Transient for window.</TD>
5784 This hook is not called in protected mode and can be used for
5785 arbitrary placement policies (deciding in which workspace a new
5786 WClientWin should go). In this case, you can call
5790 where <TT>reg</TT> is the region where the window should go, and
5791 <TT>cwin</TT> is the first argument of the function added to the
5800 <DD><A NAME="9402"></A>
5803 <DT><STRONG>Hook name:</STRONG></DT>
5804 <DD><A NAME="clientwin_mapped_hook"></A><TT>clientwin_mapped_hook</TT>
5807 <DT><STRONG>Parameters:</STRONG></DT>
5808 <DD><TT>WClientWin</TT>
5811 <DT><STRONG>Description:</STRONG></DT>
5812 <DD>Called when we have started to manage a client window.
5820 <DD><A NAME="9403"></A>
5823 <DT><STRONG>Hook name:</STRONG></DT>
5824 <DD><A NAME="clientwin_unmapped_hook"></A><TT>clientwin_unmapped_hook</TT>
5827 <DT><STRONG>Parameters:</STRONG></DT>
5831 <DT><STRONG>Description:</STRONG></DT>
5832 <DD>Called when we no longer manage a client window. The parameter
5833 is the X ID of the window; see <A HREF="#fn:WClientWin.xid"><TT>WClientWin.xid</TT></A>.
5841 <DD><A NAME="9404"></A>
5844 <DT><STRONG>Hook name:</STRONG></DT>
5845 <DD><A NAME="frame_managed_changed_hook"></A><TT>frame_managed_changed_hook</TT>
5848 <DT><STRONG>Parameters:</STRONG></DT>
5852 <DT><STRONG>Description:</STRONG></DT>
5853 <DD>Called when there are changes in the objects managed by a frame
5854 or their order. The table parameter has the following fields:
5857 <TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
5858 <TR><TD ALIGN="LEFT">Field</TD>
5859 <TD ALIGN="LEFT">Type</TD>
5860 <TD ALIGN="LEFT">Description</TD>
5862 <TR><TD ALIGN="LEFT"><TT>reg</TT></TD>
5863 <TD ALIGN="LEFT">WFrame</TD>
5864 <TD ALIGN="LEFT">The frame in question</TD>
5866 <TR><TD ALIGN="LEFT"><TT>mode</TT></TD>
5867 <TD ALIGN="LEFT">string</TD>
5868 <TD ALIGN="LEFT"><TT>"switchonly"</TT>, <TT>"reorder"</TT>,
5869 <TT>"add"</TT> or <TT>"remove"</TT></TD>
5871 <TR><TD ALIGN="LEFT"><TT>sw</TT></TD>
5872 <TD ALIGN="LEFT">bool</TD>
5873 <TD ALIGN="LEFT">Switch occured</TD>
5875 <TR><TD ALIGN="LEFT"><TT>sub</TT></TD>
5876 <TD ALIGN="LEFT">WRegion</TD>
5877 <TD ALIGN="LEFT">The managed region (primarily) affected</TD>
5887 <DD><A NAME="9405"></A>
5890 <DT><STRONG>Hook name:</STRONG></DT>
5891 <DD><A NAME="ioncore_sigchld_hook"></A><TT>ioncore_sigchld_hook</TT>
5894 <DT><STRONG>Parameters:</STRONG></DT>
5895 <DD><TT>integer</TT>
5898 <DT><STRONG>Description:</STRONG></DT>
5899 <DD>Called when a child process has exited. The parameter
5900 is the PID of the process.
5908 <DD><A NAME="9406"></A>
5911 <DT><STRONG>Hook name:</STRONG></DT>
5912 <DD><A NAME="ioncore_deinit_hook"></A><TT>ioncore_deinit_hook</TT>
5915 <DT><STRONG>Parameters:</STRONG></DT>
5919 <DT><STRONG>Description:</STRONG></DT>
5920 <DD>Called when Ion is deinitialising and about to quit.
5928 <DD><A NAME="9407"></A>
5931 <DT><STRONG>Hook name:</STRONG></DT>
5932 <DD><A NAME="ioncore_post_layout_setup_hook"></A><TT>ioncore_post_layout_setup_hook</TT>
5935 <DT><STRONG>Parameters:</STRONG></DT>
5939 <DT><STRONG>Description:</STRONG></DT>
5940 <DD>Called when Ion has done all initialisation and is almost ready to
5941 enter the mainloop, except no windows are yet being managed.
5949 <DD><A NAME="9408"></A>
5952 <DT><STRONG>Hook name:</STRONG></DT>
5953 <DD><A NAME="ioncore_snapshot_hook"></A><TT>ioncore_snapshot_hook</TT>
5956 <DT><STRONG>Parameters:</STRONG></DT>
5960 <DT><STRONG>Description:</STRONG></DT>
5961 <DD>Called to signal scripts and modules to save their state (if any).
5969 <DD><A NAME="9409"></A>
5972 <DT><STRONG>Hook name:</STRONG></DT>
5973 <DD><A NAME="tiling_placement_alt"></A><TT>tiling_placement_alt</TT>
5976 <DT><STRONG>Parameters:</STRONG></DT>
5980 <DT><STRONG>Description:</STRONG></DT>
5981 <DD>Called when a client window is about to be managed by a WTiling
5982 to allow for alternative placement policies. The table has the
5984 <TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
5985 <TR><TD ALIGN="LEFT">Field</TD>
5986 <TD ALIGN="LEFT">Type</TD>
5987 <TD ALIGN="LEFT">Description</TD>
5989 <TR><TD ALIGN="LEFT"><TT>tiling</TT></TD>
5990 <TD ALIGN="LEFT">WTiling</TD>
5991 <TD ALIGN="LEFT">The tiling</TD>
5993 <TR><TD ALIGN="LEFT"><TT>reg</TT></TD>
5994 <TD ALIGN="LEFT">WRegion</TD>
5995 <TD ALIGN="LEFT">The region (always a WClientWin at
5996 the moment) to be placed</TD>
5998 <TR><TD ALIGN="LEFT"><TT>mp</TT></TD>
5999 <TD ALIGN="LEFT">table</TD>
6000 <TD ALIGN="LEFT">This table contains the same fields as
6001 the parameter of <A HREF="#fn:clientwin_do_manage_alt"><TT>clientwin_do_manage_alt</TT></A></TD>
6003 <TR><TD ALIGN="LEFT"><TT>res_frame</TT></TD>
6004 <TD ALIGN="LEFT">WFrame</TD>
6005 <TD ALIGN="LEFT">A succesfull handler should
6006 return the target frame here.</TD>
6009 This hook is just for placing within a given workspace after the
6010 workspace has been decided by the default workspace selection
6011 policy. It is called in protected mode. For arbitrary placement
6012 policies, <A HREF="#fn:clientwin_do_manage_alt"><TT>clientwin_do_manage_alt</TT></A> should be used; it
6013 isn't called in protected mode,
6021 <DD><A NAME="9410"></A>
6024 <DT><STRONG>Hook name:</STRONG></DT>
6025 <DD><A NAME="panews_make_placement_alt"></A><TT>panews_make_placement_alt</TT>
6028 <DT><STRONG>Parameters:</STRONG></DT>
6032 <DT><STRONG>Description:</STRONG></DT>
6033 <DD>Called to make a placement on panews. The parameter table has
6034 the following fields:
6037 <TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
6038 <TR><TD ALIGN="LEFT">Field</TD>
6039 <TD ALIGN="LEFT">Type</TD>
6040 <TD ALIGN="LEFT">Description</TD>
6042 <TR><TD ALIGN="LEFT"><TT>ws</TT></TD>
6043 <TD ALIGN="LEFT">WPaneWS</TD>
6044 <TD ALIGN="LEFT">The workspace</TD>
6046 <TR><TD ALIGN="LEFT"><TT>frame</TT></TD>
6047 <TD ALIGN="LEFT">WFrame</TD>
6048 <TD ALIGN="LEFT">A frame initially allocated for the
6049 region to be placed</TD>
6051 <TR><TD ALIGN="LEFT"><TT>reg</TT></TD>
6052 <TD ALIGN="LEFT">WRegion</TD>
6053 <TD ALIGN="LEFT">The region to be placed</TD>
6055 <TR><TD ALIGN="LEFT"><TT>specifier</TT></TD>
6056 <TD ALIGN="LEFT">WRegion</TD>
6057 <TD ALIGN="LEFT">For drag&drop on handling empty areas</TD>
6062 The handler should set some of these fields on success:
6065 <TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
6066 <TR><TD ALIGN="LEFT">Field</TD>
6067 <TD ALIGN="LEFT">Type</TD>
6068 <TD ALIGN="LEFT">Description</TD>
6070 <TR><TD ALIGN="LEFT"><TT>res_node</TT></TD>
6071 <TD ALIGN="LEFT">WSplit</TD>
6072 <TD ALIGN="LEFT">Target split</TD>
6074 <TR><TD ALIGN="LEFT"><TT>res_config</TT></TD>
6075 <TD ALIGN="LEFT">WFrame</TD>
6076 <TD ALIGN="LEFT">New configuration for it, unless
6079 <TR><TD ALIGN="LEFT"><TT>res_w</TT></TD>
6080 <TD ALIGN="LEFT">integer</TD>
6081 <TD ALIGN="LEFT">New width for target split (optional)</TD>
6083 <TR><TD ALIGN="LEFT"><TT>res_h</TT></TD>
6084 <TD ALIGN="LEFT">integer</TD>
6085 <TD ALIGN="LEFT">New height for target split (optional)</TD>
6095 <DD><A NAME="9411"></A>
6098 <DT><STRONG>Hook name:</STRONG></DT>
6099 <DD><A NAME="region_activated_hook"></A><TT>region_activated_hook</TT>
6102 <DT><STRONG>Parameters:</STRONG></DT>
6103 <DD><TT>WRegion</TT>
6106 <DT><STRONG>Description:</STRONG></DT>
6107 <DD>Signalled when a region or one of its children has received the focus.
6115 <DD><A NAME="9412"></A>
6118 <DT><STRONG>Hook name:</STRONG></DT>
6119 <DD><A NAME="region_activity_hook"></A><TT>region_activity_hook</TT>
6122 <DT><STRONG>Parameters:</STRONG></DT>
6123 <DD><TT>WRegion</TT>
6126 <DT><STRONG>Description:</STRONG></DT>
6127 <DD>This hook is triggered when the activity flag of the parameter
6128 region has been changed.
6136 <DD><A NAME="9413"></A>
6139 <DT><STRONG>Hook name:</STRONG></DT>
6140 <DD><A NAME="region_do_warp_alt"></A><TT>region_do_warp_alt</TT>
6143 <DT><STRONG>Parameters:</STRONG></DT>
6144 <DD><TT>WRegion</TT>
6147 <DT><STRONG>Description:</STRONG></DT>
6148 <DD>This alt-hook exist to allow for alternative pointer warping
6157 <DD><A NAME="9414"></A>
6160 <DT><STRONG>Hook name:</STRONG></DT>
6161 <DD><A NAME="region_inactivated_hook"></A><TT>region_inactivated_hook</TT>
6164 <DT><STRONG>Parameters:</STRONG></DT>
6165 <DD><TT>WRegion</TT>
6168 <DT><STRONG>Description:</STRONG></DT>
6169 <DD>Signalled when the focus has moved from the parameter region or
6170 one of its children to a non-child region of the parameter region.
6178 <DD><A NAME="9415"></A>
6181 <DT><STRONG>Hook name:</STRONG></DT>
6182 <DD><A NAME="screen_managed_changed_hook"></A><TT>screen_managed_changed_hook</TT>
6185 <DT><STRONG>Parameters:</STRONG></DT>
6189 <DT><STRONG>Description:</STRONG></DT>
6190 <DD>Called when there are changes in the objects managed by a screen
6191 or their order. The table parameter is similar to that of
6192 <A HREF="#fn:frame_managed_changed_hook"><TT>frame_managed_changed_hook</TT></A>.
6201 <DIV CLASS="navigation"><HR>
6202 <!--Navigation Panel-->
6203 <A NAME="tex2html348"
6205 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
6206 <A NAME="tex2html342"
6207 HREF="ionconf.html">
6208 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
6209 <A NAME="tex2html336"
6211 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
6212 <A NAME="tex2html344"
6214 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
6215 <A NAME="tex2html346"
6217 <IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A>
6219 <B> Next:</B> <A NAME="tex2html349"
6220 HREF="node8.html">A. The GNU General</A>
6221 <B> Up:</B> <A NAME="tex2html343"
6222 HREF="ionconf.html">Configuring and extending Ion3</A>
6223 <B> Previous:</B> <A NAME="tex2html337"
6224 HREF="node6.html">5. Scripting</A>
6225 <B> <A NAME="tex2html345"
6226 HREF="node1.html">Contents</A></B>
6227 <B> <A NAME="tex2html347"
6228 HREF="node11.html">Index</A></B> </DIV>
6229 <!--End of Navigation Panel-->