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="4285"></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="4287"></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="4289"></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="4291"></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="4293"></A>
247 <A NAME="fn:ioncore.create_ws"></A>
249 <DT><STRONG>Synopsis:</STRONG></DT>
250 <DD><TT>ioncore.create_ws(scr, tmpl, layout)</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 the layout named with <TT>layout</TT>.
256 If no <TT>layout</TT> is given, "default" is used.
264 <DD><A NAME="4295"></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="4297"></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="4299"></A>
303 <A NAME="fn:ioncore.deflayout"></A>
305 <DT><STRONG>Synopsis:</STRONG></DT>
306 <DD><TT>ioncore.deflayout(name, tab)</TT>
309 <DT><STRONG>Description:</STRONG></DT>
310 <DD>Define a new workspace layout with name <TT>name</TT>, and
311 attach/creation parameters given in <TT>tab</TT>. The layout
312 "empty" may not be defined.
320 <DD><A NAME="4301"></A>
322 <A NAME="fn:ioncore.defmenu"></A>
324 <DT><STRONG>Synopsis:</STRONG></DT>
325 <DD><TT>ioncore.defmenu(name, tab)</TT>
328 <DT><STRONG>Description:</STRONG></DT>
329 <DD>Define a new menu with <TT>name</TT> being the menu's name and <TT>tab</TT>
330 being a table of menu entries. If <TT>tab.append</TT> is set, the entries
331 are appended to previously-defined ones, if possible.
339 <DD><A NAME="4303"></A>
341 <A NAME="fn:ioncore.defwinprop"></A>
343 <DT><STRONG>Synopsis:</STRONG></DT>
344 <DD><TT>ioncore.defwinprop(list)</TT>
347 <DT><STRONG>Description:</STRONG></DT>
348 <DD>Define a winprop. For more information, see section <A HREF="node4.html#sec:winprops">3.5</A>.
356 <DD><A NAME="4305"></A>
358 <A NAME="fn:ioncore.exec_on"></A>
360 <DT><STRONG>Synopsis:</STRONG></DT>
361 <DD><TT>ioncore.exec_on(reg, cmd, merr_internal)</TT>
364 <DT><STRONG>Description:</STRONG></DT>
365 <DD>Run <TT>cmd</TT> with the environment variable DISPLAY set to point to the
366 root window of the X screen <TT>reg</TT> is on. If <TT>cmd</TT> is prefixed
367 by a colon (<TT>:</TT>), the following command is executed in an xterm
368 (or other terminal emulator) with the help of the <TT>ion-runinxterm</TT>
369 script. If the command is prefixed by two colons, <TT>ion-runinxterm</TT>
370 will ask you to press enter after the command is finished, even if it
379 <DD><A NAME="4307"></A>
381 <A NAME="fn:ioncore.read_savefile"></A>
383 <DT><STRONG>Synopsis:</STRONG></DT>
384 <DD><TT>table ioncore.read_savefile(string basename)</TT>
387 <DT><STRONG>Description:</STRONG></DT>
396 <DD><A NAME="4309"></A>
398 <A NAME="fn:ioncore.get_savefile"></A>
400 <DT><STRONG>Synopsis:</STRONG></DT>
401 <DD><TT>string ioncore.get_savefile(string basename)</TT>
404 <DT><STRONG>Description:</STRONG></DT>
405 <DD>Get a file name to save (session) data in. The string <TT>basename</TT>
406 should contain no path or extension components.
414 <DD><A NAME="4311"></A>
416 <A NAME="fn:ioncore.lookup_script"></A>
418 <DT><STRONG>Synopsis:</STRONG></DT>
419 <DD><TT>string ioncore.lookup_script(string file, string sp)</TT>
422 <DT><STRONG>Description:</STRONG></DT>
423 <DD>Lookup script <TT>file</TT>. If <TT>try_in_dir</TT> is set, it is tried
424 before the standard search path.
432 <DD><A NAME="4313"></A>
434 <A NAME="fn:ioncore.write_savefile"></A>
436 <DT><STRONG>Synopsis:</STRONG></DT>
437 <DD><TT>bool ioncore.write_savefile(string basename, table tab)</TT>
440 <DT><STRONG>Description:</STRONG></DT>
441 <DD>Write <TT>tab</TT> in file with basename <TT>basename</TT> in the
450 <DD><A NAME="4315"></A>
452 <A NAME="fn:ioncore.find_manager"></A>
454 <DT><STRONG>Synopsis:</STRONG></DT>
455 <DD><TT>ioncore.find_manager(obj, t)</TT>
458 <DT><STRONG>Description:</STRONG></DT>
459 <DD>Find an object with type name <TT>t</TT> managing <TT>obj</TT> or one of
468 <DD><A NAME="4317"></A>
470 <A NAME="fn:ioncore.get_dir_for"></A>
472 <DT><STRONG>Synopsis:</STRONG></DT>
473 <DD><TT>ioncore.get_dir_for(reg)</TT>
476 <DT><STRONG>Description:</STRONG></DT>
477 <DD>Get default working directory for new programs started in <TT>reg</TT>.
485 <DD><A NAME="4319"></A>
487 <A NAME="fn:ioncore.getbindings"></A>
489 <DT><STRONG>Synopsis:</STRONG></DT>
490 <DD><TT>ioncore.getbindings(maybe_context)</TT>
493 <DT><STRONG>Description:</STRONG></DT>
494 <DD>Get a table of all bindings.
502 <DD><A NAME="4321"></A>
504 <A NAME="fn:ioncore.getctxmenu"></A>
506 <DT><STRONG>Synopsis:</STRONG></DT>
507 <DD><TT>ioncore.getctxmenu(name)</TT>
510 <DT><STRONG>Description:</STRONG></DT>
511 <DD>Returns a context menu defined with <A HREF="#fn:ioncore.defctxmenu"><TT>ioncore.defctxmenu</TT></A>.
519 <DD><A NAME="4323"></A>
521 <A NAME="fn:ioncore.getlayout"></A>
523 <DT><STRONG>Synopsis:</STRONG></DT>
524 <DD><TT>ioncore.getlayout(name, all)</TT>
527 <DT><STRONG>Description:</STRONG></DT>
528 <DD>Get named layout (or all of the latter parameter is set,
529 but this is for internal use only).
537 <DD><A NAME="4325"></A>
539 <A NAME="fn:ioncore.getmenu"></A>
541 <DT><STRONG>Synopsis:</STRONG></DT>
542 <DD><TT>ioncore.getmenu(name)</TT>
545 <DT><STRONG>Description:</STRONG></DT>
546 <DD>Returns a menu defined with <A HREF="#fn:ioncore.defmenu"><TT>ioncore.defmenu</TT></A>.
554 <DD><A NAME="4327"></A>
556 <A NAME="fn:ioncore.getwinprop"></A>
558 <DT><STRONG>Synopsis:</STRONG></DT>
559 <DD><TT>ioncore.getwinprop(cwin)</TT>
562 <DT><STRONG>Description:</STRONG></DT>
563 <DD>Find winprop table for <TT>cwin</TT>.
571 <DD><A NAME="4329"></A>
573 <A NAME="fn:ioncore.aboutmsg"></A>
575 <DT><STRONG>Synopsis:</STRONG></DT>
576 <DD><TT>string ioncore.aboutmsg()</TT>
579 <DT><STRONG>Description:</STRONG></DT>
580 <DD>Returns an about message (version, author, copyright notice).
588 <DD><A NAME="4331"></A>
590 <A NAME="fn:ioncore.activity_first"></A>
592 <DT><STRONG>Synopsis:</STRONG></DT>
593 <DD><TT>WRegion ioncore.activity_first()</TT>
596 <DT><STRONG>Description:</STRONG></DT>
597 <DD>Return first regio non activity list.
605 <DD><A NAME="4333"></A>
607 <A NAME="fn:ioncore.activity_i"></A>
609 <DT><STRONG>Synopsis:</STRONG></DT>
610 <DD><TT>bool ioncore.activity_i(function iterfn)</TT>
613 <DT><STRONG>Description:</STRONG></DT>
614 <DD>Iterate over activity list until <TT>iterfn</TT> returns <TT>false</TT>.
615 The function itself returns <TT>true</TT> if it reaches the end of list
616 without this happening.
624 <DD><A NAME="4335"></A>
626 <A NAME="fn:ioncore.clear_tags"></A>
628 <DT><STRONG>Synopsis:</STRONG></DT>
629 <DD><TT>void ioncore.clear_tags()</TT>
632 <DT><STRONG>Description:</STRONG></DT>
633 <DD>Untag all regions.
641 <DD><A NAME="4337"></A>
643 <A NAME="fn:ioncore.clientwin_i"></A>
645 <DT><STRONG>Synopsis:</STRONG></DT>
646 <DD><TT>bool ioncore.clientwin_i(function fn)</TT>
649 <DT><STRONG>Description:</STRONG></DT>
650 <DD>Iterate over client windows until <TT>iterfn</TT> returns <TT>false</TT>.
651 The function itself returns <TT>true</TT> if it reaches the end of list
652 without this happening.
660 <DD><A NAME="4339"></A>
662 <A NAME="fn:ioncore.current"></A>
664 <DT><STRONG>Synopsis:</STRONG></DT>
665 <DD><TT>WRegion ioncore.current()</TT>
668 <DT><STRONG>Description:</STRONG></DT>
669 <DD>Returns the currently focused region, if any.
677 <DD><A NAME="4341"></A>
679 <A NAME="fn:ioncore.defshortening"></A>
681 <DT><STRONG>Synopsis:</STRONG></DT>
682 <DD><TT>bool ioncore.defshortening(string rx, string rule, bool always)</TT>
685 <DT><STRONG>Description:</STRONG></DT>
686 <DD>Add a rule describing how too long titles should be shortened to fit in tabs.
687 The regular expression <TT>rx</TT> (POSIX, not Lua!) is used to match titles
688 and when <TT>rx</TT> matches, <TT>rule</TT> is attempted to use as a replacement
689 for title. If <TT>always</TT> is set, the rule is used even if no shortening
693 Similarly to sed's 's' command, <TT>rule</TT> may contain characters that are
694 inserted in the resulting string and specials as follows:
697 <TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
698 <TR><TD ALIGN="LEFT">Special</TD>
699 <TD ALIGN="LEFT">Description</TD>
701 <TR><TD ALIGN="LEFT">$0</TD>
702 <TD ALIGN="LEFT">Place the original string here.</TD>
704 <TR><TD ALIGN="LEFT">$1 to $9</TD>
705 <TD ALIGN="LEFT">Insert n:th capture here (as usual,captures are surrounded
706 by parentheses in the regex).</TD>
708 <TR><TD ALIGN="LEFT">$|</TD>
709 <TD ALIGN="LEFT">Alternative shortening separator. The shortening described
710 before the first this kind of separator is tried first and
711 if it fails to make the string short enough, the next is
712 tried, and so on.</TD>
714 <TR><TD ALIGN="LEFT">$<</TD>
715 <TD ALIGN="LEFT">Remove characters on the left of this marker to shorten the
718 <TR><TD ALIGN="LEFT">$></TD>
719 <TD ALIGN="LEFT">Remove characters on the right of this marker to shorten the
720 string. Only the first $< or $> within an alternative
721 shortening is used.</TD>
731 <DD><A NAME="4343"></A>
733 <A NAME="fn:ioncore.detach"></A>
735 <DT><STRONG>Synopsis:</STRONG></DT>
736 <DD><TT>bool ioncore.detach(WRegion reg, string how)</TT>
739 <DT><STRONG>Description:</STRONG></DT>
740 <DD>Detach or reattach <TT>reg</TT>, depending on whether <TT>how</TT>
741 is 'set'/'unset'/'toggle'. (Detaching means making <TT>reg</TT>
742 managed by its nearest ancestor WGroup, framed if <TT>reg</TT> is
743 not itself WFrame. Reattaching means making it managed where
744 it used to be managed, if a return-placeholder exists.)
745 If <TT>reg</TT> is the 'bottom' of some group, the whole group is
746 detached. If <TT>reg</TT> is a WWindow, it is put into a
755 <DD><A NAME="4345"></A>
757 <A NAME="fn:ioncore.exec"></A>
759 <DT><STRONG>Synopsis:</STRONG></DT>
760 <DD><TT>integer ioncore.exec(string cmd)</TT>
763 <DT><STRONG>Description:</STRONG></DT>
764 <DD>Run <TT>cmd</TT> with the environment variable DISPLAY set to point to the
765 X display the WM is running on. No specific screen is set unlike with
766 <A HREF="#fn:WRootWin.exec_on"><TT>WRootWin.exec_on</TT></A>. The PID of the (shell executing the) new
775 <DD><A NAME="4347"></A>
777 <A NAME="fn:ioncore.find_screen_id"></A>
779 <DT><STRONG>Synopsis:</STRONG></DT>
780 <DD><TT>WScreen ioncore.find_screen_id(integer id)</TT>
783 <DT><STRONG>Description:</STRONG></DT>
784 <DD>Find the screen with numerical id <TT>id</TT>.
792 <DD><A NAME="4349"></A>
794 <A NAME="fn:ioncore.focushistory_i"></A>
796 <DT><STRONG>Synopsis:</STRONG></DT>
797 <DD><TT>bool ioncore.focushistory_i(function iterfn)</TT>
800 <DT><STRONG>Description:</STRONG></DT>
801 <DD>Iterate over focus history until <TT>iterfn</TT> returns <TT>false</TT>.
802 The function itself returns <TT>true</TT> if it reaches the end of list
803 without this happening.
811 <DD><A NAME="4351"></A>
813 <A NAME="fn:ioncore.get"></A>
815 <DT><STRONG>Synopsis:</STRONG></DT>
816 <DD><TT>table ioncore.get()</TT>
819 <DT><STRONG>Description:</STRONG></DT>
820 <DD>Get ioncore basic settings. For details see <A HREF="#fn:ioncore.set"><TT>ioncore.set</TT></A>.
828 <DD><A NAME="4353"></A>
830 <A NAME="fn:ioncore.get_paths"></A>
832 <DT><STRONG>Synopsis:</STRONG></DT>
833 <DD><TT>table ioncore.get_paths(table tab)</TT>
836 <DT><STRONG>Description:</STRONG></DT>
837 <DD>Get important directories (userdir, sessiondir, searchpath).
845 <DD><A NAME="4355"></A>
847 <A NAME="fn:ioncore.goto_activity"></A>
849 <DT><STRONG>Synopsis:</STRONG></DT>
850 <DD><TT>bool ioncore.goto_activity()</TT>
853 <DT><STRONG>Description:</STRONG></DT>
854 <DD>Go to first region on activity list.
862 <DD><A NAME="4357"></A>
864 <A NAME="fn:ioncore.goto_first"></A>
866 <DT><STRONG>Synopsis:</STRONG></DT>
867 <DD><TT>WRegion ioncore.goto_first(WRegion reg, string dirstr, table param)</TT>
870 <DT><STRONG>Description:</STRONG></DT>
871 <DD>Go to first region within <TT>reg</TT> in direction <TT>dirstr</TT>
872 (up/down/left/right/beg/end/any). For information on <TT>param</TT>,
873 see <A HREF="#fn:ioncore.navi_next"><TT>ioncore.navi_next</TT></A>. Additionally this function supports
874 the boolean <TT>nofront</TT> field, for not bringing the object to
883 <DD><A NAME="4359"></A>
885 <A NAME="fn:ioncore.goto_next"></A>
887 <DT><STRONG>Synopsis:</STRONG></DT>
888 <DD><TT>WRegion ioncore.goto_next(WRegion reg, string dirstr, table param)</TT>
891 <DT><STRONG>Description:</STRONG></DT>
892 <DD>Go to region next from <TT>reg</TT> in direction <TT>dirstr</TT>
893 (up/down/left/right/next/prev/any). For information on <TT>param</TT>,
894 see <A HREF="#fn:ioncore.navi_next"><TT>ioncore.navi_next</TT></A>. Additionally this function supports
895 the boolean <TT>nofront</TT> field, for not bringing the object to
904 <DD><A NAME="4361"></A>
906 <A NAME="fn:ioncore.goto_next_screen"></A>
908 <DT><STRONG>Synopsis:</STRONG></DT>
909 <DD><TT>WScreen ioncore.goto_next_screen()</TT>
912 <DT><STRONG>Description:</STRONG></DT>
913 <DD>Switch focus to the next screen and return it.
916 Note that this function is asynchronous; the screen will not
917 actually have received the focus when this function returns.
925 <DD><A NAME="4363"></A>
927 <A NAME="fn:ioncore.goto_nth_screen"></A>
929 <DT><STRONG>Synopsis:</STRONG></DT>
930 <DD><TT>WScreen ioncore.goto_nth_screen(integer id)</TT>
933 <DT><STRONG>Description:</STRONG></DT>
934 <DD>Switch focus to the screen with id <TT>id</TT> and return it.
937 Note that this function is asynchronous; the screen will not
938 actually have received the focus when this function returns.
946 <DD><A NAME="4365"></A>
948 <A NAME="fn:ioncore.goto_prev_screen"></A>
950 <DT><STRONG>Synopsis:</STRONG></DT>
951 <DD><TT>WScreen ioncore.goto_prev_screen()</TT>
954 <DT><STRONG>Description:</STRONG></DT>
955 <DD>Switch focus to the previous screen and return it.
958 Note that this function is asynchronous; the screen will not
959 actually have received the focus when this function returns.
967 <DD><A NAME="4367"></A>
969 <A NAME="fn:ioncore.goto_previous"></A>
971 <DT><STRONG>Synopsis:</STRONG></DT>
972 <DD><TT>WRegion ioncore.goto_previous()</TT>
975 <DT><STRONG>Description:</STRONG></DT>
976 <DD>Go to and return to a previously active region (if any).
979 Note that this function is asynchronous; the region will not
980 actually have received the focus when this function returns.
988 <DD><A NAME="4369"></A>
990 <A NAME="fn:ioncore.is_i18n"></A>
992 <DT><STRONG>Synopsis:</STRONG></DT>
993 <DD><TT>bool ioncore.is_i18n()</TT>
996 <DT><STRONG>Description:</STRONG></DT>
997 <DD>Is Ion supporting locale-specifically multibyte-encoded strings?
1005 <DD><A NAME="4371"></A>
1007 <A NAME="fn:ioncore.load_module"></A>
1009 <DT><STRONG>Synopsis:</STRONG></DT>
1010 <DD><TT>bool ioncore.load_module(string modname)</TT>
1013 <DT><STRONG>Description:</STRONG></DT>
1014 <DD>Attempt to load a C-side module.
1022 <DD><A NAME="4373"></A>
1024 <A NAME="fn:ioncore.lookup_clientwin"></A>
1026 <DT><STRONG>Synopsis:</STRONG></DT>
1027 <DD><TT>WClientWin ioncore.lookup_clientwin(string name)</TT>
1030 <DT><STRONG>Description:</STRONG></DT>
1031 <DD>Attempt to find a client window with name <TT>name</TT>.
1039 <DD><A NAME="4375"></A>
1041 <A NAME="fn:ioncore.lookup_region"></A>
1043 <DT><STRONG>Synopsis:</STRONG></DT>
1044 <DD><TT>WRegion ioncore.lookup_region(string name, string typenam)</TT>
1047 <DT><STRONG>Description:</STRONG></DT>
1048 <DD>Attempt to find a non-client window region with name <TT>name</TT> and type
1049 inheriting <TT>typenam</TT>.
1057 <DD><A NAME="4377"></A>
1059 <A NAME="fn:ioncore.navi_first"></A>
1061 <DT><STRONG>Synopsis:</STRONG></DT>
1062 <DD><TT>WRegion ioncore.navi_first(WRegion reg, string dirstr, table param)</TT>
1065 <DT><STRONG>Description:</STRONG></DT>
1066 <DD>Find first region within <TT>reg</TT> in direction <TT>dirstr</TT>
1067 (up/down/left/right/beg/end/any). For information on <TT>param</TT>,
1068 see <A HREF="#fn:ioncore.navi_next"><TT>ioncore.navi_next</TT></A>.
1076 <DD><A NAME="4379"></A>
1078 <A NAME="fn:ioncore.navi_next"></A>
1080 <DT><STRONG>Synopsis:</STRONG></DT>
1081 <DD><TT>WRegion ioncore.navi_next(WRegion reg, string dirstr, table param)</TT>
1084 <DT><STRONG>Description:</STRONG></DT>
1085 <DD>Find region next from <TT>reg</TT> in direction <TT>dirstr</TT>
1086 (up/down/left/right/next/prev/any). The table param may
1087 contain the boolean field <TT>nowrap</TT>, instructing not to wrap
1088 around, and the WRegions <TT>no_ascend</TT> and <TT>no_descend</TT>,
1089 and functions <TT>ascend_filter</TT> and <TT>descend_filter</TT> from
1090 <TT>WRegion</TT>s (<TT>to</TT>, <TT>from</TT>), used to decide when to descend
1091 or ascend into another region. (TODO: more detailed explanation.)
1099 <DD><A NAME="4381"></A>
1101 <A NAME="fn:ioncore.popen_bgread"></A>
1103 <DT><STRONG>Synopsis:</STRONG></DT>
1104 <DD><TT>integer ioncore.popen_bgread(string cmd, function h, function errh)</TT>
1107 <DT><STRONG>Description:</STRONG></DT>
1108 <DD>Run <TT>cmd</TT> with a read pipe connected to its stdout.
1109 When data is received through the pipe, <TT>handler</TT> is called
1118 <DD><A NAME="4383"></A>
1120 <A NAME="fn:ioncore.progname"></A>
1122 <DT><STRONG>Synopsis:</STRONG></DT>
1123 <DD><TT>string ioncore.progname()</TT>
1126 <DT><STRONG>Description:</STRONG></DT>
1127 <DD>Returns the name of program using Ioncore.
1135 <DD><A NAME="4385"></A>
1137 <A NAME="fn:ioncore.region_i"></A>
1139 <DT><STRONG>Synopsis:</STRONG></DT>
1140 <DD><TT>bool ioncore.region_i(function fn, string typenam)</TT>
1143 <DT><STRONG>Description:</STRONG></DT>
1144 <DD>Iterate over all non-client window regions with (inherited) class
1145 <TT>typenam</TT> until <TT>iterfn</TT> returns <TT>false</TT>.
1146 The function itself returns <TT>true</TT> if it reaches the end of list
1147 without this happening.
1155 <DD><A NAME="4387"></A>
1157 <A NAME="fn:ioncore.request_selection"></A>
1159 <DT><STRONG>Synopsis:</STRONG></DT>
1160 <DD><TT>void ioncore.request_selection(function fn)</TT>
1163 <DT><STRONG>Description:</STRONG></DT>
1164 <DD>Request (string) selection. The function <TT>fn</TT> will be called
1165 with the selection when and if it is received.
1173 <DD><A NAME="4389"></A>
1175 <A NAME="fn:ioncore.resign"></A>
1177 <DT><STRONG>Synopsis:</STRONG></DT>
1178 <DD><TT>void ioncore.resign()</TT>
1181 <DT><STRONG>Description:</STRONG></DT>
1182 <DD>Causes the window manager to simply exit without saving
1191 <DD><A NAME="4391"></A>
1193 <A NAME="fn:ioncore.restart"></A>
1195 <DT><STRONG>Synopsis:</STRONG></DT>
1196 <DD><TT>void ioncore.restart()</TT>
1199 <DT><STRONG>Description:</STRONG></DT>
1200 <DD>Restart, saving session first.
1208 <DD><A NAME="4393"></A>
1210 <A NAME="fn:ioncore.restart_other"></A>
1212 <DT><STRONG>Synopsis:</STRONG></DT>
1213 <DD><TT>void ioncore.restart_other(string cmd)</TT>
1216 <DT><STRONG>Description:</STRONG></DT>
1217 <DD>Attempt to restart another window manager <TT>cmd</TT>.
1225 <DD><A NAME="4395"></A>
1227 <A NAME="fn:ioncore.set"></A>
1229 <DT><STRONG>Synopsis:</STRONG></DT>
1230 <DD><TT>void ioncore.set(table tab)</TT>
1233 <DT><STRONG>Description:</STRONG></DT>
1234 <DD>Set ioncore basic settings. The table <TT>tab</TT> may contain the
1238 <TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
1239 <TR><TD ALIGN="LEFT">Field</TD>
1240 <TD ALIGN="LEFT">Description</TD>
1242 <TR><TD ALIGN="LEFT"><TT>opaque_resize</TT></TD>
1243 <TD ALIGN="LEFT">(boolean) Controls whether interactive move and
1244 resize operations simply draw a rubberband during
1245 the operation (false) or immediately affect the
1246 object in question at every step (true).</TD>
1248 <TR><TD ALIGN="LEFT"><TT>warp</TT></TD>
1249 <TD ALIGN="LEFT">(boolean) Should focusing operations move the
1250 pointer to the object to be focused?</TD>
1252 <TR><TD ALIGN="LEFT"><TT>switchto</TT></TD>
1253 <TD ALIGN="LEFT">(boolean) Should a managing WMPlex switch
1254 to a newly mapped client window?</TD>
1256 <TR><TD ALIGN="LEFT"><TT>screen_notify</TT></TD>
1257 <TD ALIGN="LEFT">(boolean) Should notification tooltips be displayed
1258 for hidden workspaces with activity?</TD>
1260 <TR><TD ALIGN="LEFT"><TT>frame_default_index</TT></TD>
1261 <TD ALIGN="LEFT">(string) Specifies where to add new regions
1262 on the mutually exclusive list of a frame. One of
1263 ''last'', ''next'' (for after current), ''next-act''
1264 (for after current and anything with activity right
1267 <TR><TD ALIGN="LEFT"><TT>dblclick_delay</TT></TD>
1268 <TD ALIGN="LEFT">(integer) Delay between clicks of a double click.</TD>
1270 <TR><TD ALIGN="LEFT"><TT>kbresize_delay</TT></TD>
1271 <TD ALIGN="LEFT">(integer) Delay in milliseconds for ending keyboard
1272 resize mode after inactivity.</TD>
1274 <TR><TD ALIGN="LEFT"><TT>kbresize_t_max</TT></TD>
1275 <TD ALIGN="LEFT">(integer) Controls keyboard resize acceleration.
1276 See description below for details.</TD>
1278 <TR><TD ALIGN="LEFT"><TT>kbresize_t_min</TT></TD>
1279 <TD ALIGN="LEFT">(integer) See below.</TD>
1281 <TR><TD ALIGN="LEFT"><TT>kbresize_step</TT></TD>
1282 <TD ALIGN="LEFT">(floating point) See below.</TD>
1284 <TR><TD ALIGN="LEFT"><TT>kbresize_maxacc</TT></TD>
1285 <TD ALIGN="LEFT">(floating point) See below.</TD>
1287 <TR><TD ALIGN="LEFT"><TT>framed_transients</TT></TD>
1288 <TD ALIGN="LEFT">(boolean) Put transients in nested frames.</TD>
1290 <TR><TD ALIGN="LEFT"><TT>float_placement_method</TT></TD>
1291 <TD ALIGN="LEFT">(string) How to place floating frames.
1292 One of ''udlr'' (up-down, then left-right),
1293 ''lrud'' (left-right, then up-down) or ''random''.</TD>
1298 When a keyboard resize function is called, and at most <TT>kbresize_t_max</TT>
1299 milliseconds has passed from a previous call, acceleration factor is reset
1300 to 1.0. Otherwise, if at least <TT>kbresize_t_min</TT> milliseconds have
1301 passed from the from previous acceleration update or reset the squere root
1302 of the acceleration factor is incremented by <TT>kbresize_step</TT>. The
1303 maximum acceleration factor (pixels/call modulo size hints) is given by
1304 <TT>kbresize_maxacc</TT>. The default values are (200, 50, 30, 100).
1312 <DD><A NAME="4397"></A>
1314 <A NAME="fn:ioncore.set_paths"></A>
1316 <DT><STRONG>Synopsis:</STRONG></DT>
1317 <DD><TT>bool ioncore.set_paths(table tab)</TT>
1320 <DT><STRONG>Description:</STRONG></DT>
1321 <DD>Set important directories (sessiondir, searchpath).
1329 <DD><A NAME="4399"></A>
1331 <A NAME="fn:ioncore.set_selection"></A>
1333 <DT><STRONG>Synopsis:</STRONG></DT>
1334 <DD><TT>void ioncore.set_selection(string p)</TT>
1337 <DT><STRONG>Description:</STRONG></DT>
1338 <DD>Set primary selection and cutbuffer0 to <TT>p</TT>.
1346 <DD><A NAME="4401"></A>
1348 <A NAME="fn:ioncore.shutdown"></A>
1350 <DT><STRONG>Synopsis:</STRONG></DT>
1351 <DD><TT>void ioncore.shutdown()</TT>
1354 <DT><STRONG>Description:</STRONG></DT>
1355 <DD>End session saving it first.
1363 <DD><A NAME="4403"></A>
1365 <A NAME="fn:ioncore.snapshot"></A>
1367 <DT><STRONG>Synopsis:</STRONG></DT>
1368 <DD><TT>void ioncore.snapshot()</TT>
1371 <DT><STRONG>Description:</STRONG></DT>
1380 <DD><A NAME="4405"></A>
1382 <A NAME="fn:ioncore.tagged_first"></A>
1384 <DT><STRONG>Synopsis:</STRONG></DT>
1385 <DD><TT>WRegion ioncore.tagged_first()</TT>
1388 <DT><STRONG>Description:</STRONG></DT>
1389 <DD>Returns first tagged object.
1397 <DD><A NAME="4407"></A>
1399 <A NAME="fn:ioncore.tagged_i"></A>
1401 <DT><STRONG>Synopsis:</STRONG></DT>
1402 <DD><TT>bool ioncore.tagged_i(function iterfn)</TT>
1405 <DT><STRONG>Description:</STRONG></DT>
1406 <DD>Iterate over tagged regions until <TT>iterfn</TT> returns <TT>false</TT>.
1407 The function itself returns <TT>true</TT> if it reaches the end of list
1408 without this happening.
1416 <DD><A NAME="4409"></A>
1418 <A NAME="fn:ioncore.version"></A>
1420 <DT><STRONG>Synopsis:</STRONG></DT>
1421 <DD><TT>string ioncore.version()</TT>
1424 <DT><STRONG>Description:</STRONG></DT>
1425 <DD>Returns Ioncore version string.
1433 <DD><A NAME="4411"></A>
1435 <A NAME="fn:ioncore.warn"></A>
1437 <DT><STRONG>Synopsis:</STRONG></DT>
1438 <DD><TT>void ioncore.warn(string str)</TT>
1441 <DT><STRONG>Description:</STRONG></DT>
1442 <DD>Issue a warning. How the message is displayed depends on the current
1451 <DD><A NAME="4413"></A>
1453 <A NAME="fn:ioncore.warn_traced"></A>
1455 <DT><STRONG>Synopsis:</STRONG></DT>
1456 <DD><TT>void ioncore.warn_traced(string str)</TT>
1459 <DT><STRONG>Description:</STRONG></DT>
1460 <DD>Similar to <A HREF="#fn:ioncore.warn"><TT>ioncore.warn</TT></A>, but also print Lua stack trace.
1468 <DD><A NAME="4415"></A>
1470 <A NAME="fn:ioncore.x_change_property"></A>
1472 <DT><STRONG>Synopsis:</STRONG></DT>
1473 <DD><TT>void ioncore.x_change_property(integer win, integer atom, integer atom_type, integer format, string mode, table tab)</TT>
1476 <DT><STRONG>Description:</STRONG></DT>
1477 <DD>Modify a window property. The <TT>mode</TT> is one of
1478 <TT>"replace"</TT>, <TT>"prepend"</TT> or <TT>"append"</TT>, and format
1479 is either 8, 16 or 32. Also see <A HREF="#fn:ioncore.x_get_window_property"><TT>ioncore.x_get_window_property</TT></A>
1480 and the <TT>XChangeProperty</TT>(3) manual page.
1488 <DD><A NAME="4417"></A>
1490 <A NAME="fn:ioncore.x_delete_property"></A>
1492 <DT><STRONG>Synopsis:</STRONG></DT>
1493 <DD><TT>void ioncore.x_delete_property(integer win, integer atom)</TT>
1496 <DT><STRONG>Description:</STRONG></DT>
1497 <DD>Delete a window property.
1505 <DD><A NAME="4419"></A>
1507 <A NAME="fn:ioncore.x_get_atom_name"></A>
1509 <DT><STRONG>Synopsis:</STRONG></DT>
1510 <DD><TT>string ioncore.x_get_atom_name(integer atom)</TT>
1513 <DT><STRONG>Description:</STRONG></DT>
1514 <DD>Get the name of an atom. See <TT>XGetAtomName</TT>(3) manual page for
1523 <DD><A NAME="4421"></A>
1525 <A NAME="fn:ioncore.x_get_text_property"></A>
1527 <DT><STRONG>Synopsis:</STRONG></DT>
1528 <DD><TT>table ioncore.x_get_text_property(integer win, integer atom)</TT>
1531 <DT><STRONG>Description:</STRONG></DT>
1532 <DD>Get a text property for a window (<TT>STRING</TT>, <TT>COMPOUND_TEXT</TT>,
1533 or <TT>UTF8_STRING</TT> property converted). The fields in the returned
1534 table (starting from 1) are the null-separated parts of the property.
1535 See the <TT>XGetTextProperty</TT>(3) manual page for more information.
1543 <DD><A NAME="4423"></A>
1545 <A NAME="fn:ioncore.x_get_window_property"></A>
1547 <DT><STRONG>Synopsis:</STRONG></DT>
1548 <DD><TT>table ioncore.x_get_window_property(integer win, integer atom, integer atom_type, integer n32expected, bool more)</TT>
1551 <DT><STRONG>Description:</STRONG></DT>
1552 <DD>Get a property <TT>atom</TT> of type <TT>atom_type</TT> for window <TT>win</TT>.
1553 The <TT>n32expected</TT> parameter indicates the expected number of 32bit
1554 words, and <TT>more</TT> indicates whether all or just this amount of data
1555 should be fetched. Each 8, 16 or 32bit element of the property, as
1556 deciphered from <TT>atom_type</TT> is a field in the returned table.
1557 See <TT>XGetWindowProperty</TT>(3) manual page for more information.
1565 <DD><A NAME="4425"></A>
1567 <A NAME="fn:ioncore.x_intern_atom"></A>
1569 <DT><STRONG>Synopsis:</STRONG></DT>
1570 <DD><TT>integer ioncore.x_intern_atom(string name, bool only_if_exists)</TT>
1573 <DT><STRONG>Description:</STRONG></DT>
1574 <DD>Create a new atom. See <TT>XInternAtom</TT>(3) manual page for details.
1582 <DD><A NAME="4427"></A>
1584 <A NAME="fn:ioncore.x_set_text_property"></A>
1586 <DT><STRONG>Synopsis:</STRONG></DT>
1587 <DD><TT>void ioncore.x_set_text_property(integer win, integer atom, table tab)</TT>
1590 <DT><STRONG>Description:</STRONG></DT>
1591 <DD>Set a text property for a window. The fields of <TT>tab</TT> starting from
1592 1 should be the different null-separated parts of the property.
1593 See the <TT>XSetTextProperty</TT>(3) manual page for more information.
1601 <DD><A NAME="4429"></A>
1603 <A NAME="fn:ioncore.kpress"></A>
1605 <DT><STRONG>Synopsis:</STRONG></DT>
1606 <DD><TT>ioncore.kpress(keyspec, cmd, guard)</TT>
1609 <DT><STRONG>Description:</STRONG></DT>
1610 <DD>Creates a binding description table for the action of pressing a key given
1611 by <TT>keyspec</TT> (with possible modifiers) to the function <TT>func</TT>.
1612 For more information on bindings, see section <A HREF="node4.html#sec:bindings">3.3</A>.
1620 <DD><A NAME="4431"></A>
1622 <A NAME="fn:ioncore.kpress_wait"></A>
1624 <DT><STRONG>Synopsis:</STRONG></DT>
1625 <DD><TT>ioncore.kpress_wait(keyspec, cmd, guard)</TT>
1628 <DT><STRONG>Description:</STRONG></DT>
1629 <DD>This is similar to <A HREF="#fn:kpress"><TT>kpress</TT></A> but after calling <TT>cmd</TT>,
1630 Ioncore waits for all modifiers to be released before processing
1631 any further actions.
1632 For more information on bindings, see section <A HREF="node4.html#sec:bindings">3.3</A>.
1640 <DD><A NAME="4433"></A>
1642 <A NAME="fn:ioncore.match_winprop_name"></A>
1644 <DT><STRONG>Synopsis:</STRONG></DT>
1645 <DD><TT>ioncore.match_winprop_name(prop, cwin)</TT>
1648 <DT><STRONG>Description:</STRONG></DT>
1649 <DD>The basic name-based winprop matching criteria.
1657 <DD><A NAME="4435"></A>
1659 <A NAME="fn:ioncore.mclick"></A>
1661 <DT><STRONG>Synopsis:</STRONG></DT>
1662 <DD><TT>ioncore.mclick(buttonspec, cmd, guard)</TT>
1665 <DT><STRONG>Description:</STRONG></DT>
1666 <DD>Creates a binding description table for the action of clicking a mouse
1667 button while possible modifier keys are pressed,
1668 both given by <TT>buttonspec</TT>, to the function <TT>func</TT>.
1669 For more information, see section <A HREF="node4.html#sec:bindings">3.3</A>.
1677 <DD><A NAME="4437"></A>
1679 <A NAME="fn:ioncore.mdblclick"></A>
1681 <DT><STRONG>Synopsis:</STRONG></DT>
1682 <DD><TT>ioncore.mdblclick(buttonspec, cmd, guard)</TT>
1685 <DT><STRONG>Description:</STRONG></DT>
1686 <DD>Similar to <A HREF="#fn:mclick"><TT>mclick</TT></A> but for double-click.
1687 Also see section <A HREF="node4.html#sec:bindings">3.3</A>.
1695 <DD><A NAME="4439"></A>
1697 <A NAME="fn:ioncore.mdrag"></A>
1699 <DT><STRONG>Synopsis:</STRONG></DT>
1700 <DD><TT>ioncore.mdrag(buttonspec, cmd, guard)</TT>
1703 <DT><STRONG>Description:</STRONG></DT>
1704 <DD>Creates a binding description table for the action of moving the mouse
1705 (or other pointing device) while the button given by <TT>buttonspec</TT>
1706 is held pressed and the modifiers given by <TT>buttonspec</TT> were pressed
1707 when the button was initially pressed.
1708 Also see section <A HREF="node4.html#sec:bindings">3.3</A>.
1716 <DD><A NAME="4441"></A>
1718 <A NAME="fn:ioncore.menuentry"></A>
1720 <DT><STRONG>Synopsis:</STRONG></DT>
1721 <DD><TT>ioncore.menuentry(name, cmd, guard)</TT>
1724 <DT><STRONG>Description:</STRONG></DT>
1725 <DD>Use this function to define normal menu entries. The string <TT>name</TT>
1726 is the string shown in the visual representation of menu, and the
1727 parameter <TT>cmd</TT> and <TT>guard</TT> are similar to those of
1728 <A HREF="#fn:ioncore.defbindings"><TT>ioncore.defbindings</TT></A>.
1736 <DD><A NAME="4443"></A>
1738 <A NAME="fn:ioncore.mpress"></A>
1740 <DT><STRONG>Synopsis:</STRONG></DT>
1741 <DD><TT>ioncore.mpress(buttonspec, cmd, guard)</TT>
1744 <DT><STRONG>Description:</STRONG></DT>
1745 <DD>Similar to <A HREF="#fn:mclick"><TT>mclick</TT></A> but for just pressing the mouse button.
1746 Also see section <A HREF="node4.html#sec:bindings">3.3</A>.
1754 <DD><A NAME="4445"></A>
1756 <A NAME="fn:ioncore.refresh_stylelist"></A>
1758 <DT><STRONG>Synopsis:</STRONG></DT>
1759 <DD><TT>ioncore.refresh_stylelist()</TT>
1762 <DT><STRONG>Description:</STRONG></DT>
1763 <DD>Refresh list of known style files.
1771 <DD><A NAME="4447"></A>
1773 <A NAME="fn:ioncore.submap"></A>
1775 <DT><STRONG>Synopsis:</STRONG></DT>
1776 <DD><TT>ioncore.submap(kcb_, list)</TT>
1779 <DT><STRONG>Description:</STRONG></DT>
1780 <DD>Returns a function that creates a submap binding description table.
1781 When the key press action <TT>keyspec</TT> occurs, Ioncore will wait for
1782 a further key presse and act according to the submap.
1783 For details, see section <A HREF="node4.html#sec:bindings">3.3</A>.
1791 <DD><A NAME="4449"></A>
1793 <A NAME="fn:ioncore.submenu"></A>
1795 <DT><STRONG>Synopsis:</STRONG></DT>
1796 <DD><TT>ioncore.submenu(name, sub_or_name, options)</TT>
1799 <DT><STRONG>Description:</STRONG></DT>
1800 <DD>Use this function to define menu entries for submenus. The parameter
1801 <A HREF="#fn:sub_or_name"><TT>sub_or_name</TT></A> is either a table of menu entries or the name
1802 of an already defined menu. The initial menu entry to highlight can be
1803 specified by <TT>options.initial</TT> as either an integer starting from 1,
1804 or a function that returns such a number. Another option supported is
1805 <TT>options.noautoexpand</TT> that will cause <A HREF="#fn:mod_query.query_menu"><TT>mod_query.query_menu</TT></A>
1806 to not automatically expand this submenu.
1813 <H3><A NAME="SECTION00711000000000000000">
1814 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN> WClientWin functions</A>
1820 <DD><A NAME="4452"></A>
1822 <A NAME="fn:WClientWin.get_ident"></A>
1824 <DT><STRONG>Synopsis:</STRONG></DT>
1825 <DD><TT>table WClientWin.get_ident(WClientWin cwin)</TT>
1828 <DT><STRONG>Description:</STRONG></DT>
1829 <DD>Returns a table containing the properties <TT>WM_CLASS</TT> (table entries
1830 <TT>instance</TT> and <TT>class</TT>) and <TT>WM_WINDOW_ROLE</TT> (<TT>role</TT>)
1831 properties for <TT>cwin</TT>. If a property is not set, the corresponding
1832 field(s) are unset in the table.
1840 <DD><A NAME="4454"></A>
1842 <A NAME="fn:WClientWin.kill"></A>
1844 <DT><STRONG>Synopsis:</STRONG></DT>
1845 <DD><TT>void WClientWin.kill(WClientWin cwin)</TT>
1848 <DT><STRONG>Description:</STRONG></DT>
1849 <DD>Attempt to kill (with XKillWindow) the client that owns the X
1850 window correspoding to <TT>cwin</TT>.
1858 <DD><A NAME="4456"></A>
1860 <A NAME="fn:WClientWin.nudge"></A>
1862 <DT><STRONG>Synopsis:</STRONG></DT>
1863 <DD><TT>void WClientWin.nudge(WClientWin cwin)</TT>
1866 <DT><STRONG>Description:</STRONG></DT>
1867 <DD>Attempts to fix window size problems with non-ICCCM compliant
1876 <DD><A NAME="4458"></A>
1878 <A NAME="fn:WClientWin.quote_next"></A>
1880 <DT><STRONG>Synopsis:</STRONG></DT>
1881 <DD><TT>void WClientWin.quote_next(WClientWin cwin)</TT>
1884 <DT><STRONG>Description:</STRONG></DT>
1885 <DD>Send next key press directly to <TT>cwin</TT>.
1893 <DD><A NAME="4460"></A>
1895 <A NAME="fn:WClientWin.xid"></A>
1897 <DT><STRONG>Synopsis:</STRONG></DT>
1898 <DD><TT>double WClientWin.xid(WClientWin cwin)</TT>
1901 <DT><STRONG>Description:</STRONG></DT>
1902 <DD>Return the X window id for the client window.
1909 <H3><A NAME="SECTION00712000000000000000">
1910 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">2</SPAN> WFrame functions</A>
1916 <DD><A NAME="4463"></A>
1918 <A NAME="fn:WFrame.is_shaded"></A>
1920 <DT><STRONG>Synopsis:</STRONG></DT>
1921 <DD><TT>bool WFrame.is_shaded(WFrame frame)</TT>
1924 <DT><STRONG>Description:</STRONG></DT>
1925 <DD>Is <TT>frame</TT> shaded?
1933 <DD><A NAME="4465"></A>
1935 <A NAME="fn:WFrame.maximize_horiz"></A>
1937 <DT><STRONG>Synopsis:</STRONG></DT>
1938 <DD><TT>void WFrame.maximize_horiz(WFrame frame)</TT>
1941 <DT><STRONG>Description:</STRONG></DT>
1942 <DD>Attempt to toggle horizontal maximisation of <TT>frame</TT>.
1950 <DD><A NAME="4467"></A>
1952 <A NAME="fn:WFrame.maximize_vert"></A>
1954 <DT><STRONG>Synopsis:</STRONG></DT>
1955 <DD><TT>void WFrame.maximize_vert(WFrame frame)</TT>
1958 <DT><STRONG>Description:</STRONG></DT>
1959 <DD>Attempt to toggle vertical maximisation of <TT>frame</TT>.
1967 <DD><A NAME="4469"></A>
1969 <A NAME="fn:WFrame.mode"></A>
1971 <DT><STRONG>Synopsis:</STRONG></DT>
1972 <DD><TT>string WFrame.mode(WFrame frame)</TT>
1975 <DT><STRONG>Description:</STRONG></DT>
1984 <DD><A NAME="4471"></A>
1986 <A NAME="fn:WFrame.p_switch_tab"></A>
1988 <DT><STRONG>Synopsis:</STRONG></DT>
1989 <DD><TT>void WFrame.p_switch_tab(WFrame frame)</TT>
1992 <DT><STRONG>Description:</STRONG></DT>
1993 <DD>Display the region corresponding to the tab that the user pressed on.
1994 This function should only be used by binding it to a mouse action.
2002 <DD><A NAME="4473"></A>
2004 <A NAME="fn:WFrame.p_tabdrag"></A>
2006 <DT><STRONG>Synopsis:</STRONG></DT>
2007 <DD><TT>void WFrame.p_tabdrag(WFrame frame)</TT>
2010 <DT><STRONG>Description:</STRONG></DT>
2011 <DD>Start dragging the tab that the user pressed on with the pointing device.
2012 This function should only be used by binding it to <SPAN CLASS="textit">mpress</SPAN> or
2013 <SPAN CLASS="textit">mdrag</SPAN> action with area ''tab''.
2021 <DD><A NAME="4475"></A>
2023 <A NAME="fn:WFrame.set_mode"></A>
2025 <DT><STRONG>Synopsis:</STRONG></DT>
2026 <DD><TT>bool WFrame.set_mode(WFrame frame, string modestr)</TT>
2029 <DT><STRONG>Description:</STRONG></DT>
2038 <DD><A NAME="4477"></A>
2040 <A NAME="fn:WFrame.set_numbers"></A>
2042 <DT><STRONG>Synopsis:</STRONG></DT>
2043 <DD><TT>bool WFrame.set_numbers(WFrame frame, string how)</TT>
2046 <DT><STRONG>Description:</STRONG></DT>
2047 <DD>Control whether tabs show numbers (set/unset/toggle).
2048 Resulting state is returned, which may not be what was
2057 <DD><A NAME="4479"></A>
2059 <A NAME="fn:WFrame.set_shaded"></A>
2061 <DT><STRONG>Synopsis:</STRONG></DT>
2062 <DD><TT>bool WFrame.set_shaded(WFrame frame, string how)</TT>
2065 <DT><STRONG>Description:</STRONG></DT>
2066 <DD>Set shading state according to the parameter <TT>how</TT>
2067 (set/unset/toggle). Resulting state is returned, which may not be
2075 <H3><A NAME="SECTION00713000000000000000">
2076 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">3</SPAN> WGroup functions</A>
2082 <DD><A NAME="4482"></A>
2084 <A NAME="fn:WGroup.attach"></A>
2086 <DT><STRONG>Synopsis:</STRONG></DT>
2087 <DD><TT>WRegion WGroup.attach(WGroup ws, WRegion reg, table param)</TT>
2090 <DT><STRONG>Description:</STRONG></DT>
2091 <DD>Attach and reparent existing region <TT>reg</TT> to <TT>ws</TT>.
2092 The table <TT>param</TT> may contain the fields <TT>index</TT> and
2093 <TT>switchto</TT> that are interpreted as for <A HREF="#fn:WMPlex.attach_new"><TT>WMPlex.attach_new</TT></A>.
2101 <DD><A NAME="4484"></A>
2103 <A NAME="fn:WGroup.attach_new"></A>
2105 <DT><STRONG>Synopsis:</STRONG></DT>
2106 <DD><TT>WRegion WGroup.attach_new(WGroup ws, table param)</TT>
2109 <DT><STRONG>Description:</STRONG></DT>
2110 <DD>Create a new region to be managed by <TT>ws</TT>. At least the following
2111 fields in <TT>param</TT> are understood:
2114 <TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
2115 <TR><TD ALIGN="LEFT">Field</TD>
2116 <TD ALIGN="LEFT">Description</TD>
2118 <TR><TD ALIGN="LEFT"><TT>type</TT></TD>
2119 <TD ALIGN="LEFT">Class name (a string) of the object to be created. Mandatory.</TD>
2121 <TR><TD ALIGN="LEFT"><TT>name</TT></TD>
2122 <TD ALIGN="LEFT">Name of the object to be created (a string). Optional.</TD>
2124 <TR><TD ALIGN="LEFT"><TT>switchto</TT></TD>
2125 <TD ALIGN="LEFT">Should the region be switched to (boolean)? Optional.</TD>
2127 <TR><TD ALIGN="LEFT"><TT>level</TT></TD>
2128 <TD ALIGN="LEFT">Stacking level; default is 1.</TD>
2130 <TR><TD ALIGN="LEFT"><TT>modal</TT></TD>
2131 <TD ALIGN="LEFT">Make object modal; ignored if level is set.</TD>
2133 <TR><TD ALIGN="LEFT"><TT>sizepolicy</TT></TD>
2134 <TD ALIGN="LEFT">Size policy.</TD>
2139 In addition parameters to the region to be created are passed in this
2148 <DD><A NAME="4486"></A>
2150 <A NAME="fn:WGroup.bottom"></A>
2152 <DT><STRONG>Synopsis:</STRONG></DT>
2153 <DD><TT>WRegion WGroup.bottom(WGroup ws)</TT>
2156 <DT><STRONG>Description:</STRONG></DT>
2157 <DD>Returns the 'bottom' of <TT>ws</TT>.
2165 <DD><A NAME="4488"></A>
2167 <A NAME="fn:WGroup.is_fullscreen"></A>
2169 <DT><STRONG>Synopsis:</STRONG></DT>
2170 <DD><TT>bool WGroup.is_fullscreen(WGroup grp)</TT>
2173 <DT><STRONG>Description:</STRONG></DT>
2174 <DD>Is <TT>reg</TT> in full screen mode?
2182 <DD><A NAME="4490"></A>
2184 <A NAME="fn:WGroup.managed_i"></A>
2186 <DT><STRONG>Synopsis:</STRONG></DT>
2187 <DD><TT>bool WGroup.managed_i(WGroup ws, function iterfn)</TT>
2190 <DT><STRONG>Description:</STRONG></DT>
2191 <DD>Iterate over managed regions of <TT>ws</TT> until <TT>iterfn</TT> returns
2193 The function itself returns <TT>true</TT> if it reaches the end of list
2194 without this happening.
2202 <DD><A NAME="4492"></A>
2204 <A NAME="fn:WGroup.set_fullscreen"></A>
2206 <DT><STRONG>Synopsis:</STRONG></DT>
2207 <DD><TT>bool WGroup.set_fullscreen(WGroup grp, string how)</TT>
2210 <DT><STRONG>Description:</STRONG></DT>
2211 <DD>Set client window <TT>reg</TT> full screen state according to the
2212 parameter <TT>how</TT> (set/unset/toggle). Resulting state is returned,
2213 which may not be what was requested.
2220 <H3><A NAME="SECTION00714000000000000000">
2221 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">4</SPAN> WGroupCW functions</A>
2226 <H3><A NAME="SECTION00715000000000000000">
2227 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">5</SPAN> WGroupWS functions</A>
2233 <DD><A NAME="4496"></A>
2235 <A NAME="fn:WGroupWS.attach_framed"></A>
2237 <DT><STRONG>Synopsis:</STRONG></DT>
2238 <DD><TT>bool WGroupWS.attach_framed(WGroupWS ws, WRegion reg, table t)</TT>
2241 <DT><STRONG>Description:</STRONG></DT>
2242 <DD>Attach region <TT>reg</TT> on <TT>ws</TT>.
2243 At least the following fields in <TT>t</TT> are supported:
2246 <TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
2247 <TR><TD ALIGN="LEFT">Field</TD>
2248 <TD ALIGN="LEFT">Description</TD>
2250 <TR><TD ALIGN="LEFT"><TT>switchto</TT></TD>
2251 <TD ALIGN="LEFT">Should the region be switched to (boolean)? Optional.</TD>
2253 <TR><TD ALIGN="LEFT"><TT>geom</TT></TD>
2254 <TD ALIGN="LEFT">Geometry; <TT>x</TT> and <TT>y</TT>, if set, indicates top-left of
2255 the frame to be created while <TT>width</TT> and <TT>height</TT>, if set, indicate
2256 the size of the client window within that frame. Optional.</TD>
2265 <H3><A NAME="SECTION00716000000000000000">
2266 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">6</SPAN> WInfoWin functions</A>
2272 <DD><A NAME="4499"></A>
2274 <A NAME="fn:WInfoWin.set_text"></A>
2276 <DT><STRONG>Synopsis:</STRONG></DT>
2277 <DD><TT>void WInfoWin.set_text(WInfoWin p, string str)</TT>
2280 <DT><STRONG>Description:</STRONG></DT>
2281 <DD>Set contents of the info window.
2288 <H3><A NAME="SECTION00717000000000000000">
2289 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">7</SPAN> WMPlex functions</A>
2295 <DD><A NAME="4502"></A>
2297 <A NAME="fn:WMPlex.attach"></A>
2299 <DT><STRONG>Synopsis:</STRONG></DT>
2300 <DD><TT>WRegion WMPlex.attach(WMPlex mplex, WRegion reg, table param)</TT>
2303 <DT><STRONG>Description:</STRONG></DT>
2304 <DD>Attach and reparent existing region <TT>reg</TT> to <TT>mplex</TT>.
2305 The table <TT>param</TT> may contain the fields <TT>index</TT> and
2306 <TT>switchto</TT> that are interpreted as for <A HREF="#fn:WMPlex.attach_new"><TT>WMPlex.attach_new</TT></A>.
2314 <DD><A NAME="4504"></A>
2316 <A NAME="fn:WMPlex.attach_new"></A>
2318 <DT><STRONG>Synopsis:</STRONG></DT>
2319 <DD><TT>WRegion WMPlex.attach_new(WMPlex mplex, table param)</TT>
2322 <DT><STRONG>Description:</STRONG></DT>
2323 <DD>Create a new region to be managed by <TT>mplex</TT>. At least the following
2324 fields in <TT>param</TT> are understood (all but <TT>type</TT> are optional).
2327 <TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
2328 <TR><TD ALIGN="LEFT">Field</TD>
2329 <TD ALIGN="LEFT">Description</TD>
2331 <TR><TD ALIGN="LEFT"><TT>type</TT></TD>
2332 <TD ALIGN="LEFT">(string) Class name (a string) of the object to be created.</TD>
2334 <TR><TD ALIGN="LEFT"><TT>name</TT></TD>
2335 <TD ALIGN="LEFT">(string) Name of the object to be created (a string).</TD>
2337 <TR><TD ALIGN="LEFT"><TT>switchto</TT></TD>
2338 <TD ALIGN="LEFT">(boolean) Should the region be switched to (boolean)?</TD>
2340 <TR><TD ALIGN="LEFT"><TT>unnumbered</TT></TD>
2341 <TD ALIGN="LEFT">(boolean) Do not put on the numbered mutually
2342 exclusive list.</TD>
2344 <TR><TD ALIGN="LEFT"><TT>index</TT></TD>
2345 <TD ALIGN="LEFT">(integer) Index on this list, same as for
2346 <A HREF="#fn:WMPlex.set_index"><TT>WMPlex.set_index</TT></A>.</TD>
2348 <TR><TD ALIGN="LEFT"><TT>level</TT></TD>
2349 <TD ALIGN="LEFT">(integer) Stacking level.</TD>
2351 <TR><TD ALIGN="LEFT"><TT>modal</TT></TD>
2352 <TD ALIGN="LEFT">(boolean) Shortcut for modal stacking level.</TD>
2354 <TR><TD ALIGN="LEFT"><TT>hidden</TT></TD>
2355 <TD ALIGN="LEFT">(boolean) Attach hidden, if not prevented
2356 by e.g. the mutually exclusive list being empty.
2357 This option overrides <TT>switchto</TT>.</TD>
2359 <TR><TD ALIGN="LEFT"><TT>sizepolicy</TT></TD>
2360 <TD ALIGN="LEFT">(integer) Size policy.
2361 (TODO: document them somewhere.)</TD>
2363 <TR><TD ALIGN="LEFT"><TT>geom</TT></TD>
2364 <TD ALIGN="LEFT">(table) Geometry specification.</TD>
2369 In addition parameters to the region to be created are passed in this
2378 <DD><A NAME="4506"></A>
2380 <A NAME="fn:WMPlex.attach_tagged"></A>
2382 <DT><STRONG>Synopsis:</STRONG></DT>
2383 <DD><TT>void WMPlex.attach_tagged(WMPlex mplex)</TT>
2386 <DT><STRONG>Description:</STRONG></DT>
2387 <DD>Attach all tagged regions to <TT>mplex</TT>.
2395 <DD><A NAME="4508"></A>
2397 <A NAME="fn:WMPlex.dec_index"></A>
2399 <DT><STRONG>Synopsis:</STRONG></DT>
2400 <DD><TT>void WMPlex.dec_index(WMPlex mplex, WRegion r)</TT>
2403 <DT><STRONG>Description:</STRONG></DT>
2404 <DD>Move <TT>r</TT> ''right'' within objects managed by <TT>mplex</TT> on list 1.
2412 <DD><A NAME="4510"></A>
2414 <A NAME="fn:WMPlex.get_index"></A>
2416 <DT><STRONG>Synopsis:</STRONG></DT>
2417 <DD><TT>integer WMPlex.get_index(WMPlex mplex, WRegion reg)</TT>
2420 <DT><STRONG>Description:</STRONG></DT>
2421 <DD>Get index of <TT>reg</TT> within the multiplexer on list 1. The first region
2422 managed by <TT>mplex</TT> has index zero. If <TT>reg</TT> is not managed by
2423 <TT>mplex</TT>, -1 is returned.
2431 <DD><A NAME="4512"></A>
2433 <A NAME="fn:WMPlex.get_stdisp"></A>
2435 <DT><STRONG>Synopsis:</STRONG></DT>
2436 <DD><TT>table WMPlex.get_stdisp(WMPlex mplex)</TT>
2439 <DT><STRONG>Description:</STRONG></DT>
2440 <DD>Get status display information. See <A HREF="#fn:WMPlex.get_stdisp"><TT>WMPlex.get_stdisp</TT></A> for
2441 information on the fields.
2449 <DD><A NAME="4514"></A>
2451 <A NAME="fn:WMPlex.inc_index"></A>
2453 <DT><STRONG>Synopsis:</STRONG></DT>
2454 <DD><TT>void WMPlex.inc_index(WMPlex mplex, WRegion r)</TT>
2457 <DT><STRONG>Description:</STRONG></DT>
2458 <DD>Move <TT>r</TT> ''right'' within objects managed by <TT>mplex</TT> on list 1.
2466 <DD><A NAME="4516"></A>
2468 <A NAME="fn:WMPlex.is_hidden"></A>
2470 <DT><STRONG>Synopsis:</STRONG></DT>
2471 <DD><TT>bool WMPlex.is_hidden(WMPlex mplex, WRegion reg)</TT>
2474 <DT><STRONG>Description:</STRONG></DT>
2475 <DD>Is <TT>reg</TT> on within <TT>mplex</TT> and hidden?
2483 <DD><A NAME="4518"></A>
2485 <A NAME="fn:WMPlex.managed_i"></A>
2487 <DT><STRONG>Synopsis:</STRONG></DT>
2488 <DD><TT>bool WMPlex.managed_i(WMPlex mplex, function iterfn)</TT>
2491 <DT><STRONG>Description:</STRONG></DT>
2492 <DD>Iterate over managed regions of <TT>mplex</TT> until <TT>iterfn</TT> returns
2494 The function itself returns <TT>true</TT> if it reaches the end of list
2495 without this happening.
2503 <DD><A NAME="4520"></A>
2505 <A NAME="fn:WMPlex.mx_count"></A>
2507 <DT><STRONG>Synopsis:</STRONG></DT>
2508 <DD><TT>integer WMPlex.mx_count(WMPlex mplex)</TT>
2511 <DT><STRONG>Description:</STRONG></DT>
2512 <DD>Returns the number of objects on the mutually exclusive list of <TT>mplex</TT>.
2520 <DD><A NAME="4522"></A>
2522 <A NAME="fn:WMPlex.mx_current"></A>
2524 <DT><STRONG>Synopsis:</STRONG></DT>
2525 <DD><TT>WRegion WMPlex.mx_current(WMPlex mplex)</TT>
2528 <DT><STRONG>Description:</STRONG></DT>
2529 <DD>Returns the managed object currently active within the mutually exclusive
2530 list of <TT>mplex</TT>.
2538 <DD><A NAME="4524"></A>
2540 <A NAME="fn:WMPlex.mx_i"></A>
2542 <DT><STRONG>Synopsis:</STRONG></DT>
2543 <DD><TT>bool WMPlex.mx_i(WMPlex mplex, function iterfn)</TT>
2546 <DT><STRONG>Description:</STRONG></DT>
2547 <DD>Iterate over numbered/mutually exclusive region list of <TT>mplex</TT>
2548 until <TT>iterfn</TT> returns <TT>false</TT>.
2549 The function itself returns <TT>true</TT> if it reaches the end of list
2550 without this happening.
2558 <DD><A NAME="4526"></A>
2560 <A NAME="fn:WMPlex.mx_nth"></A>
2562 <DT><STRONG>Synopsis:</STRONG></DT>
2563 <DD><TT>WRegion WMPlex.mx_nth(WMPlex mplex, integer n)</TT>
2566 <DT><STRONG>Description:</STRONG></DT>
2567 <DD>Returns the <TT>n</TT>:th object managed by <TT>mplex</TT> on the
2568 <TT>l</TT>:th layer.
2576 <DD><A NAME="4528"></A>
2578 <A NAME="fn:WMPlex.set_hidden"></A>
2580 <DT><STRONG>Synopsis:</STRONG></DT>
2581 <DD><TT>bool WMPlex.set_hidden(WMPlex mplex, WRegion reg, string how)</TT>
2584 <DT><STRONG>Description:</STRONG></DT>
2585 <DD>Set the visibility of the region <TT>reg</TT> on <TT>mplex</TT>
2586 as specified with the parameter <TT>how</TT> (set/unset/toggle).
2587 The resulting state is returned.
2595 <DD><A NAME="4530"></A>
2597 <A NAME="fn:WMPlex.set_index"></A>
2599 <DT><STRONG>Synopsis:</STRONG></DT>
2600 <DD><TT>void WMPlex.set_index(WMPlex mplex, WRegion reg, integer index)</TT>
2603 <DT><STRONG>Description:</STRONG></DT>
2604 <DD>Set index of <TT>reg</TT> within the multiplexer to <TT>index</TT> within
2605 the mutually exclusive list. Special values for <TT>index</TT> are:
2606 <TABLE CELLPADDING=3 WIDTH="100%">
2607 <TR><TD ALIGN="LEFT"><SPAN CLASS="MATH"></SPAN></TD>
2608 <TD ALIGN="LEFT">Last.</TD>
2610 <TR><TD ALIGN="LEFT"><SPAN CLASS="MATH"></SPAN></TD>
2611 <TD ALIGN="LEFT">After <A HREF="#fn:WMPlex.mx_current"><TT>WMPlex.mx_current</TT></A>.</TD>
2621 <DD><A NAME="4532"></A>
2623 <A NAME="fn:WMPlex.set_stdisp"></A>
2625 <DT><STRONG>Synopsis:</STRONG></DT>
2626 <DD><TT>WRegion WMPlex.set_stdisp(WMPlex mplex, table t)</TT>
2629 <DT><STRONG>Description:</STRONG></DT>
2630 <DD>Set/create status display for <TT>mplex</TT>. Table is a standard
2631 description of the object to be created (as passed to e.g.
2632 <A HREF="#fn:WMPlex.attach_new"><TT>WMPlex.attach_new</TT></A>). In addition, the following fields are
2636 <TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
2637 <TR><TD ALIGN="LEFT">Field</TD>
2638 <TD ALIGN="LEFT">Description</TD>
2640 <TR><TD ALIGN="LEFT"><TT>pos</TT></TD>
2641 <TD ALIGN="LEFT">The corner of the screen to place the status display
2642 in. One of <TT>tl</TT>, <TT>tr</TT>, <TT>bl</TT> or <TT>br</TT>.</TD>
2644 <TR><TD ALIGN="LEFT"><TT>action</TT></TD>
2645 <TD ALIGN="LEFT">If this field is set to <TT>keep</TT>, <TT>corner</TT>
2646 and <TT>orientation</TT> are changed for the existing
2647 status display. If this field is set to <TT>remove</TT>,
2648 the existing status display is removed. If this
2649 field is not set or is set to <TT>replace</TT>, a
2650 new status display is created and the old, if any,
2661 <DD><A NAME="4534"></A>
2663 <A NAME="fn:WMPlex.switch_next"></A>
2665 <DT><STRONG>Synopsis:</STRONG></DT>
2666 <DD><TT>void WMPlex.switch_next(WMPlex mplex)</TT>
2669 <DT><STRONG>Description:</STRONG></DT>
2670 <DD>Have <TT>mplex</TT> display next (wrt. currently selected) object managed
2679 <DD><A NAME="4536"></A>
2681 <A NAME="fn:WMPlex.switch_nth"></A>
2683 <DT><STRONG>Synopsis:</STRONG></DT>
2684 <DD><TT>void WMPlex.switch_nth(WMPlex mplex, integer n)</TT>
2687 <DT><STRONG>Description:</STRONG></DT>
2688 <DD>Have <TT>mplex</TT> display the <TT>n</TT>:th object managed by it.
2696 <DD><A NAME="4538"></A>
2698 <A NAME="fn:WMPlex.switch_prev"></A>
2700 <DT><STRONG>Synopsis:</STRONG></DT>
2701 <DD><TT>void WMPlex.switch_prev(WMPlex mplex)</TT>
2704 <DT><STRONG>Description:</STRONG></DT>
2705 <DD>Have <TT>mplex</TT> display previous (wrt. currently selected) object
2713 <H3><A NAME="SECTION00718000000000000000">
2714 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">8</SPAN> WMoveresMode functions</A>
2720 <DD><A NAME="4541"></A>
2722 <A NAME="fn:WMoveresMode.cancel"></A>
2724 <DT><STRONG>Synopsis:</STRONG></DT>
2725 <DD><TT>void WMoveresMode.cancel(WMoveresMode mode)</TT>
2728 <DT><STRONG>Description:</STRONG></DT>
2729 <DD>Return from move/resize cancelling changes if opaque
2730 move/resize has not been enabled.
2738 <DD><A NAME="4543"></A>
2740 <A NAME="fn:WMoveresMode.finish"></A>
2742 <DT><STRONG>Synopsis:</STRONG></DT>
2743 <DD><TT>void WMoveresMode.finish(WMoveresMode mode)</TT>
2746 <DT><STRONG>Description:</STRONG></DT>
2747 <DD>Return from move/resize mode and apply changes unless opaque
2748 move/resize is enabled.
2756 <DD><A NAME="4545"></A>
2758 <A NAME="fn:WMoveresMode.move"></A>
2760 <DT><STRONG>Synopsis:</STRONG></DT>
2761 <DD><TT>void WMoveresMode.move(WMoveresMode mode, integer horizmul, integer vertmul)</TT>
2764 <DT><STRONG>Description:</STRONG></DT>
2765 <DD>Move resize mode target one step:
2768 <TABLE CELLPADDING=3 BORDER="1">
2769 <TR><TD ALIGN="RIGHT"><TT>horizmul</TT>/<TT>vertmul</TT></TD>
2770 <TD ALIGN="LEFT">effect</TD>
2772 <TR><TD ALIGN="RIGHT">-1</TD>
2773 <TD ALIGN="LEFT">Move left/up</TD>
2775 <TR><TD ALIGN="RIGHT">0</TD>
2776 <TD ALIGN="LEFT">No effect</TD>
2778 <TR><TD ALIGN="RIGHT">1</TD>
2779 <TD ALIGN="LEFT">Move right/down</TD>
2789 <DD><A NAME="4547"></A>
2791 <A NAME="fn:WMoveresMode.resize"></A>
2793 <DT><STRONG>Synopsis:</STRONG></DT>
2794 <DD><TT>void WMoveresMode.resize(WMoveresMode mode, integer left, integer right, integer top, integer bottom)</TT>
2797 <DT><STRONG>Description:</STRONG></DT>
2798 <DD>Shrink or grow resize mode target one step in each direction.
2799 Acceptable values for the parameters <TT>left</TT>, <TT>right</TT>, <TT>top</TT>
2800 and <TT>bottom</TT> are as follows: -1: shrink along,
2801 0: do not change, 1: grow along corresponding border.
2808 <H3><A NAME="SECTION00719000000000000000">
2809 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN> WRegion functions</A>
2815 <DD><A NAME="4550"></A>
2817 <A NAME="fn:WRegion.begin_kbresize"></A>
2819 <DT><STRONG>Synopsis:</STRONG></DT>
2820 <DD><TT>WMoveresMode WRegion.begin_kbresize(WRegion reg)</TT>
2823 <DT><STRONG>Description:</STRONG></DT>
2824 <DD>Enter move/resize mode for <TT>reg</TT>. The bindings set with
2825 <A HREF="#fn:ioncore.set_bindings"><TT>ioncore.set_bindings</TT></A> for WMoveresMode are used in
2826 this mode. Of the functions exported by the Ion C core, only
2827 <A HREF="#fn:WMoveresMode.resize"><TT>WMoveresMode.resize</TT></A>, <A HREF="#fn:WMoveresMode.move"><TT>WMoveresMode.move</TT></A>,
2828 <A HREF="#fn:WMoveresMode.cancel"><TT>WMoveresMode.cancel</TT></A> and <A HREF="#fn:WMoveresMode.end"><TT>WMoveresMode.end</TT></A> are
2829 allowed to be called while in this mode.
2837 <DD><A NAME="4552"></A>
2839 <A NAME="fn:WRegion.current"></A>
2841 <DT><STRONG>Synopsis:</STRONG></DT>
2842 <DD><TT>WRegion WRegion.current(WRegion mgr)</TT>
2845 <DT><STRONG>Description:</STRONG></DT>
2846 <DD>Return the object, if any, that is considered ''currently active''
2847 within the objects managed by <TT>mplex</TT>.
2855 <DD><A NAME="4554"></A>
2857 <A NAME="fn:WRegion.geom"></A>
2859 <DT><STRONG>Synopsis:</STRONG></DT>
2860 <DD><TT>table WRegion.geom(WRegion reg)</TT>
2863 <DT><STRONG>Description:</STRONG></DT>
2864 <DD>Returns the geometry of <TT>reg</TT> within its parent; a table with fields
2865 <TT>x</TT>, <TT>y</TT>, <TT>w</TT> and <TT>h</TT>.
2873 <DD><A NAME="4556"></A>
2875 <A NAME="fn:WRegion.goto"></A>
2877 <DT><STRONG>Synopsis:</STRONG></DT>
2878 <DD><TT>bool WRegion.goto(WRegion reg)</TT>
2881 <DT><STRONG>Description:</STRONG></DT>
2882 <DD>Attempt to display <TT>reg</TT>, save region activity status and then
2883 warp to (or simply set focus to if warping is disabled) <TT>reg</TT>.
2886 Note that this function is asynchronous; the region will not
2887 actually have received the focus when this function returns.
2895 <DD><A NAME="4558"></A>
2897 <A NAME="fn:WRegion.is_active"></A>
2899 <DT><STRONG>Synopsis:</STRONG></DT>
2900 <DD><TT>bool WRegion.is_active(WRegion reg)</TT>
2903 <DT><STRONG>Description:</STRONG></DT>
2904 <DD>Is <TT>reg</TT> active/does it or one of it's children of focus?
2912 <DD><A NAME="4560"></A>
2914 <A NAME="fn:WRegion.is_activity"></A>
2916 <DT><STRONG>Synopsis:</STRONG></DT>
2917 <DD><TT>bool WRegion.is_activity(WRegion reg)</TT>
2920 <DT><STRONG>Description:</STRONG></DT>
2921 <DD>Is activity notification set on <TT>reg</TT>.
2929 <DD><A NAME="4562"></A>
2931 <A NAME="fn:WRegion.is_mapped"></A>
2933 <DT><STRONG>Synopsis:</STRONG></DT>
2934 <DD><TT>bool WRegion.is_mapped(WRegion reg)</TT>
2937 <DT><STRONG>Description:</STRONG></DT>
2938 <DD>Is <TT>reg</TT> visible/is it and all it's ancestors mapped?
2946 <DD><A NAME="4564"></A>
2948 <A NAME="fn:WRegion.is_tagged"></A>
2950 <DT><STRONG>Synopsis:</STRONG></DT>
2951 <DD><TT>bool WRegion.is_tagged(WRegion reg)</TT>
2954 <DT><STRONG>Description:</STRONG></DT>
2955 <DD>Is <TT>reg</TT> tagged?
2963 <DD><A NAME="4566"></A>
2965 <A NAME="fn:WRegion.manager"></A>
2967 <DT><STRONG>Synopsis:</STRONG></DT>
2968 <DD><TT>WRegion WRegion.manager(WRegion reg)</TT>
2971 <DT><STRONG>Description:</STRONG></DT>
2972 <DD>Returns the region that manages <TT>reg</TT>.
2980 <DD><A NAME="4568"></A>
2982 <A NAME="fn:WRegion.name"></A>
2984 <DT><STRONG>Synopsis:</STRONG></DT>
2985 <DD><TT>string WRegion.name(WRegion reg)</TT>
2988 <DT><STRONG>Description:</STRONG></DT>
2989 <DD>Returns the name for <TT>reg</TT>.
2997 <DD><A NAME="4570"></A>
2999 <A NAME="fn:WRegion.parent"></A>
3001 <DT><STRONG>Synopsis:</STRONG></DT>
3002 <DD><TT>WWindow WRegion.parent(WRegion reg)</TT>
3005 <DT><STRONG>Description:</STRONG></DT>
3006 <DD>Returns the parent region of <TT>reg</TT>.
3014 <DD><A NAME="4572"></A>
3016 <A NAME="fn:WRegion.rootwin_of"></A>
3018 <DT><STRONG>Synopsis:</STRONG></DT>
3019 <DD><TT>WRootWin WRegion.rootwin_of(WRegion reg)</TT>
3022 <DT><STRONG>Description:</STRONG></DT>
3023 <DD>Returns the root window <TT>reg</TT> is on.
3031 <DD><A NAME="4574"></A>
3033 <A NAME="fn:WRegion.rqclose"></A>
3035 <DT><STRONG>Synopsis:</STRONG></DT>
3036 <DD><TT>bool WRegion.rqclose(WRegion reg, bool relocate)</TT>
3039 <DT><STRONG>Description:</STRONG></DT>
3040 <DD>Attempt to close/destroy <TT>reg</TT>. Whether this operation works
3041 depends on whether the particular type of region in question has
3042 implemented the feature and, in case of client windows, whether
3043 the client supports the <TT>WM_DELETE</TT> protocol (see also
3044 <A HREF="#fn:WClientWin.kill"><TT>WClientWin.kill</TT></A>). If the operation is likely to succeed,
3045 <TT>true</TT> is returned, otherwise <TT>false</TT>. In most cases the
3046 region will not have been actually destroyed when this function returns.
3047 If <TT>relocate</TT> is not set, and <TT>reg</TT> manages other regions, it
3048 will not be closed. Otherwise the managed regions will be attempted
3057 <DD><A NAME="4576"></A>
3059 <A NAME="fn:WRegion.rqclose_propagate"></A>
3061 <DT><STRONG>Synopsis:</STRONG></DT>
3062 <DD><TT>WRegion WRegion.rqclose_propagate(WRegion reg, WRegion maybe_sub)</TT>
3065 <DT><STRONG>Description:</STRONG></DT>
3066 <DD>Recursively attempt to close a region or one of the regions managed by
3067 it. If <TT>sub</TT> is set, it will be used as the managed region, otherwise
3068 <A HREF="#fn:WRegion.current"><TT>WRegion.current</TT></A><TT>(reg)</TT>. The object to be closed is
3069 returned or NULL if nothing can be closed. Also see notes for
3070 <A HREF="#fn:WRegion.rqclose"><TT>WRegion.rqclose</TT></A>.
3078 <DD><A NAME="4578"></A>
3080 <A NAME="fn:WRegion.rqgeom"></A>
3082 <DT><STRONG>Synopsis:</STRONG></DT>
3083 <DD><TT>table WRegion.rqgeom(WRegion reg, table g)</TT>
3086 <DT><STRONG>Description:</STRONG></DT>
3087 <DD>Attempt to resize and/or move <TT>reg</TT>. The table <TT>g</TT> is a usual
3088 geometry specification (fields <TT>x</TT>, <TT>y</TT>, <TT>w</TT> and <TT>h</TT>),
3089 but may contain missing fields, in which case, <TT>reg</TT>'s manager may
3090 attempt to leave that attribute unchanged.
3098 <DD><A NAME="4580"></A>
3100 <A NAME="fn:WRegion.rqorder"></A>
3102 <DT><STRONG>Synopsis:</STRONG></DT>
3103 <DD><TT>bool WRegion.rqorder(WRegion reg, string ord)</TT>
3106 <DT><STRONG>Description:</STRONG></DT>
3107 <DD>Request ordering. Currently supported values for <TT>ord</TT>
3108 are 'front' and 'back'.
3116 <DD><A NAME="4582"></A>
3118 <A NAME="fn:WRegion.screen_of"></A>
3120 <DT><STRONG>Synopsis:</STRONG></DT>
3121 <DD><TT>WScreen WRegion.screen_of(WRegion reg)</TT>
3124 <DT><STRONG>Description:</STRONG></DT>
3125 <DD>Returns the screen <TT>reg</TT> is on.
3133 <DD><A NAME="4584"></A>
3135 <A NAME="fn:WRegion.set_activity"></A>
3137 <DT><STRONG>Synopsis:</STRONG></DT>
3138 <DD><TT>bool WRegion.set_activity(WRegion reg, string how)</TT>
3141 <DT><STRONG>Description:</STRONG></DT>
3142 <DD>Set activity flag of <TT>reg</TT>. The <TT>how</TT> parameter most be
3143 one of (set/unset/toggle).
3151 <DD><A NAME="4586"></A>
3153 <A NAME="fn:WRegion.set_name"></A>
3155 <DT><STRONG>Synopsis:</STRONG></DT>
3156 <DD><TT>bool WRegion.set_name(WRegion reg, string p)</TT>
3159 <DT><STRONG>Description:</STRONG></DT>
3160 <DD>Set the name of <TT>reg</TT> to <TT>p</TT>. If the name is already in use,
3161 an instance number suffix <TT><n></TT> will be attempted. If <TT>p</TT> has
3162 such a suffix, it will be modified, otherwise such a suffix will be
3163 added. Setting <TT>p</TT> to nil will cause current name to be removed.
3171 <DD><A NAME="4588"></A>
3173 <A NAME="fn:WRegion.set_name_exact"></A>
3175 <DT><STRONG>Synopsis:</STRONG></DT>
3176 <DD><TT>bool WRegion.set_name_exact(WRegion reg, string p)</TT>
3179 <DT><STRONG>Description:</STRONG></DT>
3180 <DD>Similar to <A HREF="#fn:WRegion.set_name"><TT>WRegion.set_name</TT></A> except if the name is already in use,
3181 other instance numbers will not be attempted. The string <TT>p</TT> should
3182 not contain a <TT><n></TT> suffix or this function will fail.
3190 <DD><A NAME="4590"></A>
3192 <A NAME="fn:WRegion.set_tagged"></A>
3194 <DT><STRONG>Synopsis:</STRONG></DT>
3195 <DD><TT>bool WRegion.set_tagged(WRegion reg, string how)</TT>
3198 <DT><STRONG>Description:</STRONG></DT>
3199 <DD>Change tagging state of <TT>reg</TT> as defined by <TT>how</TT>
3200 (set/unset/toggle). Resulting state is returned.
3208 <DD><A NAME="4592"></A>
3210 <A NAME="fn:WRegion.size_hints"></A>
3212 <DT><STRONG>Synopsis:</STRONG></DT>
3213 <DD><TT>table WRegion.size_hints(WRegion reg)</TT>
3216 <DT><STRONG>Description:</STRONG></DT>
3217 <DD>Returns size hints for <TT>reg</TT>. The returned table always contains the
3218 fields <TT>min_?</TT>, <TT>base_?</TT> and sometimes the fields <TT>max_?</TT>,
3219 <TT>base_?</TT> and <TT>inc_?</TT>, where <TT>?</TT>=<TT>w</TT>, <TT>h</TT>.
3226 <H3><A NAME="SECTION007110000000000000000">
3227 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">10</SPAN> WRootWin functions</A>
3233 <DD><A NAME="4595"></A>
3235 <A NAME="fn:WRootWin.current_scr"></A>
3237 <DT><STRONG>Synopsis:</STRONG></DT>
3238 <DD><TT>WScreen WRootWin.current_scr(WRootWin rootwin)</TT>
3241 <DT><STRONG>Description:</STRONG></DT>
3242 <DD>Returns previously active screen on root window <TT>rootwin</TT>.
3249 <H3><A NAME="SECTION007111000000000000000">
3250 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">11</SPAN> WScreen functions</A>
3256 <DD><A NAME="4598"></A>
3258 <A NAME="fn:WScreen.id"></A>
3260 <DT><STRONG>Synopsis:</STRONG></DT>
3261 <DD><TT>integer WScreen.id(WScreen scr)</TT>
3264 <DT><STRONG>Description:</STRONG></DT>
3265 <DD>Return the numerical id for screen <TT>scr</TT>.
3273 <DD><A NAME="4600"></A>
3275 <A NAME="fn:WScreen.set_managed_offset"></A>
3277 <DT><STRONG>Synopsis:</STRONG></DT>
3278 <DD><TT>bool WScreen.set_managed_offset(WScreen scr, table offset)</TT>
3281 <DT><STRONG>Description:</STRONG></DT>
3282 <DD>Set offset of objects managed by the screen from actual screen geometry.
3283 The table <TT>offset</TT> should contain the entries <TT>x</TT>, <TT>y</TT>,
3284 <TT>w</TT> and <TT>h</TT> indicating offsets of that component of screen
3292 <H3><A NAME="SECTION007112000000000000000">
3293 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">12</SPAN> WWindow functions</A>
3299 <DD><A NAME="4603"></A>
3301 <A NAME="fn:WWindow.p_move"></A>
3303 <DT><STRONG>Synopsis:</STRONG></DT>
3304 <DD><TT>void WWindow.p_move(WWindow wwin)</TT>
3307 <DT><STRONG>Description:</STRONG></DT>
3308 <DD>Start moving <TT>wwin</TT> with the mouse or other pointing device.
3309 This function should only be used by binding it to <SPAN CLASS="textit">mpress</SPAN> or
3310 <SPAN CLASS="textit">mdrag</SPAN> action.
3318 <DD><A NAME="4605"></A>
3320 <A NAME="fn:WWindow.p_resize"></A>
3322 <DT><STRONG>Synopsis:</STRONG></DT>
3323 <DD><TT>void WWindow.p_resize(WWindow wwin)</TT>
3326 <DT><STRONG>Description:</STRONG></DT>
3327 <DD>Start resizing <TT>wwin</TT> with the mouse or other pointing device.
3328 This function should only be used by binding it to <SPAN CLASS="textit">mpress</SPAN> or
3329 <SPAN CLASS="textit">mdrag</SPAN> action.
3337 <DD><A NAME="4607"></A>
3339 <A NAME="fn:WWindow.xid"></A>
3341 <DT><STRONG>Synopsis:</STRONG></DT>
3342 <DD><TT>double WWindow.xid(WWindow wwin)</TT>
3345 <DT><STRONG>Description:</STRONG></DT>
3346 <DD>Return the X window id for <TT>wwin</TT>.
3353 <H3><A NAME="SECTION007113000000000000000">
3354 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">13</SPAN> global functions</A>
3360 <DD><A NAME="4610"></A>
3361 <A NAME="fn:export"></A>
3363 <DT><STRONG>Synopsis:</STRONG></DT>
3364 <DD><TT>export(lib, ...)</TT>
3367 <DT><STRONG>Description:</STRONG></DT>
3368 <DD>Export a list of functions from <TT>lib</TT> into global namespace.
3375 <H3><A NAME="SECTION007114000000000000000">
3376 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">14</SPAN> gr functions</A>
3382 <DD><A NAME="4612"></A>
3384 <A NAME="fn:gr.read_config"></A>
3386 <DT><STRONG>Synopsis:</STRONG></DT>
3387 <DD><TT>void gr.read_config()</TT>
3390 <DT><STRONG>Description:</STRONG></DT>
3391 <DD>Read drawing engine configuration file <SPAN CLASS="textit">draw.lua</SPAN>.
3399 <DD><A NAME="4614"></A>
3401 <A NAME="fn:gr.refresh"></A>
3403 <DT><STRONG>Synopsis:</STRONG></DT>
3404 <DD><TT>void gr.refresh()</TT>
3407 <DT><STRONG>Description:</STRONG></DT>
3408 <DD>Refresh objects' brushes to update them to use newly loaded style.
3416 <DD><A NAME="4616"></A>
3418 <A NAME="fn:gr.select_engine"></A>
3420 <DT><STRONG>Synopsis:</STRONG></DT>
3421 <DD><TT>bool gr.select_engine(string engine)</TT>
3424 <DT><STRONG>Description:</STRONG></DT>
3425 <DD>Future requests for ''brushes'' are to be forwarded to the drawing engine
3426 <TT>engine</TT>. If no engine of such name is known, a module with that name
3427 is attempted to be loaded. This function is only intended to be called from
3428 colour scheme etc. configuration files and can not be used to change the
3429 look of existing objects; for that use <A HREF="#fn:gr.read_config"><TT>gr.read_config</TT></A>.
3436 <H3><A NAME="SECTION007115000000000000000">
3437 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">15</SPAN> string functions</A>
3443 <DD><A NAME="4619"></A>
3445 <A NAME="fn:string.shell_safe"></A>
3447 <DT><STRONG>Synopsis:</STRONG></DT>
3448 <DD><TT>string.shell_safe(str)</TT>
3451 <DT><STRONG>Description:</STRONG></DT>
3452 <DD>Make <TT>str</TT> shell-safe.
3459 <H3><A NAME="SECTION007116000000000000000">
3460 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">16</SPAN> table functions</A>
3466 <DD><A NAME="4622"></A>
3468 <A NAME="fn:table.append"></A>
3470 <DT><STRONG>Synopsis:</STRONG></DT>
3471 <DD><TT>table.append(t1, t2)</TT>
3474 <DT><STRONG>Description:</STRONG></DT>
3475 <DD>Add entries that do not exist in <TT>t1</TT> from <TT>t2</TT> to <TT>t1</TT>.
3483 <DD><A NAME="4624"></A>
3485 <A NAME="fn:table.copy"></A>
3487 <DT><STRONG>Synopsis:</STRONG></DT>
3488 <DD><TT>table.copy(t, deep)</TT>
3491 <DT><STRONG>Description:</STRONG></DT>
3492 <DD>Make copy of <TT>table</TT>. If <TT>deep</TT> is unset, shallow one-level
3493 copy is made, otherwise a deep copy is made.
3501 <DD><A NAME="4626"></A>
3503 <A NAME="fn:table.icat"></A>
3505 <DT><STRONG>Synopsis:</STRONG></DT>
3506 <DD><TT>table.icat(t1, t2)</TT>
3509 <DT><STRONG>Description:</STRONG></DT>
3510 <DD>Insert all positive integer entries from t2 into t1.
3518 <DD><A NAME="4628"></A>
3520 <A NAME="fn:table.join"></A>
3522 <DT><STRONG>Synopsis:</STRONG></DT>
3523 <DD><TT>table.join(t1, t2)</TT>
3526 <DT><STRONG>Description:</STRONG></DT>
3527 <DD>Create a table containing all entries from <TT>t1</TT> and those from
3528 <TT>t2</TT> that are missing from <TT>t1</TT>.
3536 <DD><A NAME="4630"></A>
3538 <A NAME="fn:table.map"></A>
3540 <DT><STRONG>Synopsis:</STRONG></DT>
3541 <DD><TT>table.map(f, t)</TT>
3544 <DT><STRONG>Description:</STRONG></DT>
3545 <DD>Map all entries of <TT>t</TT> by <TT>f</TT>.
3552 <H2><A NAME="SECTION00720000000000000000"></A>
3553 <A NAME="sec:tilingref"></A>
3555 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN> Functions defined in <SPAN CLASS="textit">mod_tiling</SPAN>
3559 <DD><A NAME="6929"></A>
3561 <A NAME="fn:mod_tiling.get"></A>
3563 <DT><STRONG>Synopsis:</STRONG></DT>
3564 <DD><TT>table mod_tiling.get()</TT>
3567 <DT><STRONG>Description:</STRONG></DT>
3568 <DD>Get parameters. For details see <A HREF="#fn:mod_tiling.set"><TT>mod_tiling.set</TT></A>.
3576 <DD><A NAME="6931"></A>
3578 <A NAME="fn:mod_tiling.mkbottom"></A>
3580 <DT><STRONG>Synopsis:</STRONG></DT>
3581 <DD><TT>bool mod_tiling.mkbottom(WRegion reg)</TT>
3584 <DT><STRONG>Description:</STRONG></DT>
3585 <DD>Create a new WTiling 'bottom' for the group of <TT>reg</TT>,
3586 consisting of <TT>reg</TT>.
3594 <DD><A NAME="6933"></A>
3596 <A NAME="fn:mod_tiling.set"></A>
3598 <DT><STRONG>Synopsis:</STRONG></DT>
3599 <DD><TT>void mod_tiling.set(table tab)</TT>
3602 <DT><STRONG>Description:</STRONG></DT>
3603 <DD>Set parameters. Currently only <TT>raise_delay</TT> (in milliseconds)
3611 <H3><A NAME="SECTION00721000000000000000">
3612 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN> WSplit functions</A>
3618 <DD><A NAME="6936"></A>
3620 <A NAME="fn:WSplit.geom"></A>
3622 <DT><STRONG>Synopsis:</STRONG></DT>
3623 <DD><TT>table WSplit.geom(WSplit split)</TT>
3626 <DT><STRONG>Description:</STRONG></DT>
3627 <DD>Returns the area of workspace used by the regions under <TT>split</TT>.
3635 <DD><A NAME="6938"></A>
3637 <A NAME="fn:WSplit.parent"></A>
3639 <DT><STRONG>Synopsis:</STRONG></DT>
3640 <DD><TT>WSplitInner WSplit.parent(WSplit split)</TT>
3643 <DT><STRONG>Description:</STRONG></DT>
3644 <DD>Return parent split for <TT>split</TT>.
3652 <DD><A NAME="6940"></A>
3654 <A NAME="fn:WSplit.rqgeom"></A>
3656 <DT><STRONG>Synopsis:</STRONG></DT>
3657 <DD><TT>table WSplit.rqgeom(WSplit node, table g)</TT>
3660 <DT><STRONG>Description:</STRONG></DT>
3661 <DD>Attempt to resize and/or move the split tree starting at <TT>node</TT>.
3662 Behaviour and the <TT>g</TT> parameter are as for <A HREF="#fn:WRegion.rqgeom"><TT>WRegion.rqgeom</TT></A>
3663 operating on <TT>node</TT> (if it were a WRegion).
3671 <DD><A NAME="6942"></A>
3673 <A NAME="fn:WSplit.transpose"></A>
3675 <DT><STRONG>Synopsis:</STRONG></DT>
3676 <DD><TT>void WSplit.transpose(WSplit node)</TT>
3679 <DT><STRONG>Description:</STRONG></DT>
3680 <DD>Transpose contents of <TT>node</TT>.
3687 <H3><A NAME="SECTION00722000000000000000">
3688 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN> WSplitInner functions</A>
3694 <DD><A NAME="6945"></A>
3696 <A NAME="fn:WSplitInner.current"></A>
3698 <DT><STRONG>Synopsis:</STRONG></DT>
3699 <DD><TT>WSplit WSplitInner.current(WSplitInner node)</TT>
3702 <DT><STRONG>Description:</STRONG></DT>
3703 <DD>Returns the most previously active child node of <TT>split</TT>.
3710 <H3><A NAME="SECTION00723000000000000000">
3711 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">3</SPAN> WSplitRegion functions</A>
3717 <DD><A NAME="6948"></A>
3719 <A NAME="fn:WSplitRegion.reg"></A>
3721 <DT><STRONG>Synopsis:</STRONG></DT>
3722 <DD><TT>WRegion WSplitRegion.reg(WSplitRegion node)</TT>
3725 <DT><STRONG>Description:</STRONG></DT>
3726 <DD>Returns the region contained in <TT>node</TT>.
3733 <H3><A NAME="SECTION00724000000000000000">
3734 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">4</SPAN> WSplitSplit functions</A>
3740 <DD><A NAME="6951"></A>
3742 <A NAME="fn:WSplitSplit.br"></A>
3744 <DT><STRONG>Synopsis:</STRONG></DT>
3745 <DD><TT>WSplit WSplitSplit.br(WSplitSplit split)</TT>
3748 <DT><STRONG>Description:</STRONG></DT>
3749 <DD>Returns the bottom or right child node of <TT>split</TT> depending
3750 on the direction of the split.
3758 <DD><A NAME="6953"></A>
3760 <A NAME="fn:WSplitSplit.dir"></A>
3762 <DT><STRONG>Synopsis:</STRONG></DT>
3763 <DD><TT>string WSplitSplit.dir(WSplitSplit split)</TT>
3766 <DT><STRONG>Description:</STRONG></DT>
3767 <DD>Returns the direction of <TT>split</TT>; either ''vertical'' or
3776 <DD><A NAME="6955"></A>
3778 <A NAME="fn:WSplitSplit.flip"></A>
3780 <DT><STRONG>Synopsis:</STRONG></DT>
3781 <DD><TT>void WSplitSplit.flip(WSplitSplit split)</TT>
3784 <DT><STRONG>Description:</STRONG></DT>
3785 <DD>Flip contents of <TT>node</TT>.
3793 <DD><A NAME="6957"></A>
3795 <A NAME="fn:WSplitSplit.tl"></A>
3797 <DT><STRONG>Synopsis:</STRONG></DT>
3798 <DD><TT>WSplit WSplitSplit.tl(WSplitSplit split)</TT>
3801 <DT><STRONG>Description:</STRONG></DT>
3802 <DD>Returns the top or left child node of <TT>split</TT> depending
3803 on the direction of the split.
3810 <H3><A NAME="SECTION00725000000000000000">
3811 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">5</SPAN> WTiling functions</A>
3817 <DD><A NAME="6960"></A>
3819 <A NAME="fn:WTiling.flip_at"></A>
3821 <DT><STRONG>Synopsis:</STRONG></DT>
3822 <DD><TT>bool WTiling.flip_at(WTiling ws, WRegion reg)</TT>
3825 <DT><STRONG>Description:</STRONG></DT>
3826 <DD>Flip <TT>ws</TT> at <TT>reg</TT> or root if nil.
3834 <DD><A NAME="6962"></A>
3836 <A NAME="fn:WTiling.transpose_at"></A>
3838 <DT><STRONG>Synopsis:</STRONG></DT>
3839 <DD><TT>bool WTiling.transpose_at(WTiling ws, WRegion reg)</TT>
3842 <DT><STRONG>Description:</STRONG></DT>
3843 <DD>Transpose <TT>ws</TT> at <TT>reg</TT> or root if nil.
3851 <DD><A NAME="6964"></A>
3853 <A NAME="fn:WTiling.farthest"></A>
3855 <DT><STRONG>Synopsis:</STRONG></DT>
3856 <DD><TT>WRegion WTiling.farthest(WTiling ws, string dirstr, bool any)</TT>
3859 <DT><STRONG>Description:</STRONG></DT>
3860 <DD>Return the most previously active region on <TT>ws</TT> with no
3861 other regions next to it in direction <TT>dirstr</TT>
3862 (left/right/up/down). If <TT>any</TT> is not set, the status
3863 display is not considered.
3871 <DD><A NAME="6966"></A>
3873 <A NAME="fn:WTiling.managed_i"></A>
3875 <DT><STRONG>Synopsis:</STRONG></DT>
3876 <DD><TT>bool WTiling.managed_i(WTiling ws, function iterfn)</TT>
3879 <DT><STRONG>Description:</STRONG></DT>
3880 <DD>Iterate over managed regions of <TT>ws</TT> until <TT>iterfn</TT> returns
3882 The function itself returns <TT>true</TT> if it reaches the end of list
3883 without this happening.
3891 <DD><A NAME="6968"></A>
3893 <A NAME="fn:WTiling.nextto"></A>
3895 <DT><STRONG>Synopsis:</STRONG></DT>
3896 <DD><TT>WRegion WTiling.nextto(WTiling ws, WRegion reg, string dirstr, bool any)</TT>
3899 <DT><STRONG>Description:</STRONG></DT>
3900 <DD>Return the most previously active region next to <TT>reg</TT> in
3901 direction <TT>dirstr</TT> (left/right/up/down). The region <TT>reg</TT>
3902 must be managed by <TT>ws</TT>. If <TT>any</TT> is not set, the status display
3911 <DD><A NAME="6970"></A>
3913 <A NAME="fn:WTiling.node_of"></A>
3915 <DT><STRONG>Synopsis:</STRONG></DT>
3916 <DD><TT>WSplitRegion WTiling.node_of(WTiling ws, WRegion reg)</TT>
3919 <DT><STRONG>Description:</STRONG></DT>
3920 <DD>For region <TT>reg</TT> managed by <TT>ws</TT> return the WSplit
3921 a leaf of which <TT>reg</TT> is.
3929 <DD><A NAME="6972"></A>
3931 <A NAME="fn:WTiling.set_floating_at"></A>
3933 <DT><STRONG>Synopsis:</STRONG></DT>
3934 <DD><TT>bool WTiling.set_floating_at(WTiling ws, WRegion reg, string how, string dirstr)</TT>
3937 <DT><STRONG>Description:</STRONG></DT>
3938 <DD>Toggle floating of the sides of a split containin <TT>reg</TT> as indicated
3939 by the parameters <TT>how</TT> (set/unset/toggle) and <TT>dirstr</TT>
3940 (left/right/up/down/any). The new status is returned (and <TT>false</TT>
3949 <DD><A NAME="6974"></A>
3951 <A NAME="fn:WTiling.set_floating"></A>
3953 <DT><STRONG>Synopsis:</STRONG></DT>
3954 <DD><TT>WSplitSplit WTiling.set_floating(WTiling ws, WSplitSplit split, string how)</TT>
3957 <DT><STRONG>Description:</STRONG></DT>
3958 <DD>Toggle floating of a split's sides at <TT>split</TT> as indicated by the
3959 parameter <TT>how</TT> (set/unset/toggle). A split of the appropriate is
3960 returned, if there was a change.
3968 <DD><A NAME="6976"></A>
3970 <A NAME="fn:WTiling.split"></A>
3972 <DT><STRONG>Synopsis:</STRONG></DT>
3973 <DD><TT>WFrame WTiling.split(WTiling ws, WSplit node, string dirstr)</TT>
3976 <DT><STRONG>Description:</STRONG></DT>
3977 <DD>Create a new frame on <TT>ws</TT> above/below/left of/right of
3978 <TT>node</TT> as indicated by <TT>dirstr</TT>. If <TT>dirstr</TT> is
3979 prefixed with ''floating:'' a floating split is created.
3987 <DD><A NAME="6978"></A>
3989 <A NAME="fn:WTiling.split_at"></A>
3991 <DT><STRONG>Synopsis:</STRONG></DT>
3992 <DD><TT>WFrame WTiling.split_at(WTiling ws, WFrame frame, string dirstr, bool attach_current)</TT>
3995 <DT><STRONG>Description:</STRONG></DT>
3996 <DD>Split <TT>frame</TT> creating a new frame to direction <TT>dirstr</TT>
3997 (one of ''left'', ''right'', ''top'' or ''bottom'') of <TT>frame</TT>.
3998 If <TT>attach_current</TT> is set, the region currently displayed in
3999 <TT>frame</TT>, if any, is moved to thenew frame.
4000 If <TT>dirstr</TT> is prefixed with ''floating:'' a floating split is
4009 <DD><A NAME="6980"></A>
4011 <A NAME="fn:WTiling.split_top"></A>
4013 <DT><STRONG>Synopsis:</STRONG></DT>
4014 <DD><TT>WFrame WTiling.split_top(WTiling ws, string dirstr)</TT>
4017 <DT><STRONG>Description:</STRONG></DT>
4018 <DD>Same as <A HREF="#fn:WTiling.split"><TT>WTiling.split</TT></A> at the root of the split tree.
4026 <DD><A NAME="6982"></A>
4028 <A NAME="fn:WTiling.split_tree"></A>
4030 <DT><STRONG>Synopsis:</STRONG></DT>
4031 <DD><TT>WSplit WTiling.split_tree(WTiling ws)</TT>
4034 <DT><STRONG>Description:</STRONG></DT>
4035 <DD>Returns the root of the split tree.
4043 <DD><A NAME="6984"></A>
4045 <A NAME="fn:WTiling.unsplit_at"></A>
4047 <DT><STRONG>Synopsis:</STRONG></DT>
4048 <DD><TT>bool WTiling.unsplit_at(WTiling ws, WFrame frame)</TT>
4051 <DT><STRONG>Description:</STRONG></DT>
4052 <DD>Try to relocate regions managed by <TT>frame</TT> to another frame
4053 and, if possible, destroy the frame.
4060 <H2><A NAME="SECTION00730000000000000000"></A>
4061 <A NAME="sec:queryref"></A>
4063 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN> Functions defined in <SPAN CLASS="textit">mod_query</SPAN>
4067 <DD><A NAME="7977"></A>
4069 <A NAME="fn:mod_query.defcmd"></A>
4071 <DT><STRONG>Synopsis:</STRONG></DT>
4072 <DD><TT>mod_query.defcmd(cmd, fn)</TT>
4075 <DT><STRONG>Description:</STRONG></DT>
4076 <DD>Define a command override for the <A HREF="#fn:mod_query.query_exec"><TT>query_exec</TT></A> query.
4084 <DD><A NAME="7979"></A>
4086 <A NAME="fn:mod_query.get"></A>
4088 <DT><STRONG>Synopsis:</STRONG></DT>
4089 <DD><TT>table mod_query.get()</TT>
4092 <DT><STRONG>Description:</STRONG></DT>
4093 <DD>Get module configuration. For more information see
4094 <A HREF="#fn:mod_query.set"><TT>mod_query.set</TT></A>.
4102 <DD><A NAME="7981"></A>
4104 <A NAME="fn:mod_query.history_clear"></A>
4106 <DT><STRONG>Synopsis:</STRONG></DT>
4107 <DD><TT>void mod_query.history_clear()</TT>
4110 <DT><STRONG>Description:</STRONG></DT>
4111 <DD>Clear line editor history.
4119 <DD><A NAME="7983"></A>
4121 <A NAME="fn:mod_query.history_get"></A>
4123 <DT><STRONG>Synopsis:</STRONG></DT>
4124 <DD><TT>string mod_query.history_get(integer n)</TT>
4127 <DT><STRONG>Description:</STRONG></DT>
4128 <DD>Get entry at index <TT>n</TT> in line editor history, 0 being the latest.
4136 <DD><A NAME="7985"></A>
4138 <A NAME="fn:mod_query.history_push"></A>
4140 <DT><STRONG>Synopsis:</STRONG></DT>
4141 <DD><TT>bool mod_query.history_push(string str)</TT>
4144 <DT><STRONG>Description:</STRONG></DT>
4145 <DD>Push an entry into line editor history.
4153 <DD><A NAME="7987"></A>
4155 <A NAME="fn:mod_query.history_search"></A>
4157 <DT><STRONG>Synopsis:</STRONG></DT>
4158 <DD><TT>integer mod_query.history_search(string s, integer from, bool bwd, bool exact)</TT>
4161 <DT><STRONG>Description:</STRONG></DT>
4162 <DD>Try to find matching history entry. Returns -1 if none was
4163 found. The parameter <TT>from</TT> specifies where to start
4164 searching from, and <TT>bwd</TT> causes backward search from
4165 that point. If <TT>exact</TT> is not set, <TT>s</TT> only required
4166 to be a prefix of the match.
4174 <DD><A NAME="7989"></A>
4176 <A NAME="fn:mod_query.history_table"></A>
4178 <DT><STRONG>Synopsis:</STRONG></DT>
4179 <DD><TT>table mod_query.history_table()</TT>
4182 <DT><STRONG>Description:</STRONG></DT>
4183 <DD>Return table of history entries.
4191 <DD><A NAME="7991"></A>
4193 <A NAME="fn:mod_query.message"></A>
4195 <DT><STRONG>Synopsis:</STRONG></DT>
4196 <DD><TT>WMessage mod_query.message(WMPlex mplex, string p)</TT>
4199 <DT><STRONG>Description:</STRONG></DT>
4200 <DD>Display a message in the <TT>mplex</TT>.
4208 <DD><A NAME="7993"></A>
4210 <A NAME="fn:mod_query.set"></A>
4212 <DT><STRONG>Synopsis:</STRONG></DT>
4213 <DD><TT>void mod_query.set(table tab)</TT>
4216 <DT><STRONG>Description:</STRONG></DT>
4217 <DD>Set module configuration. The following are supported:
4220 <TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
4221 <TR><TD ALIGN="LEFT">Field</TD>
4222 <TD ALIGN="LEFT">Description</TD>
4224 <TR><TD ALIGN="LEFT"><TT>autoshowcompl</TT></TD>
4225 <TD ALIGN="LEFT">(boolean) Is auto-show-completions enabled?
4226 (default: true).</TD>
4228 <TR><TD ALIGN="LEFT"><TT>autoshowcompl_delay</TT></TD>
4229 <TD ALIGN="LEFT">(integer) auto-show-completions delay
4230 in milliseconds (default: 250).</TD>
4232 <TR><TD ALIGN="LEFT"><TT>caseicompl</TT></TD>
4233 <TD ALIGN="LEFT">(boolean) Turn some completions case-insensitive
4234 (default: false).</TD>
4244 <DD><A NAME="7995"></A>
4246 <A NAME="fn:mod_query.warn"></A>
4248 <DT><STRONG>Synopsis:</STRONG></DT>
4249 <DD><TT>WMessage mod_query.warn(WMPlex mplex, string p)</TT>
4252 <DT><STRONG>Description:</STRONG></DT>
4253 <DD>Display an error message box in the multiplexer <TT>mplex</TT>.
4261 <DD><A NAME="7997"></A>
4263 <A NAME="fn:mod_query.popen_completions"></A>
4265 <DT><STRONG>Synopsis:</STRONG></DT>
4266 <DD><TT>mod_query.popen_completions(cp, cmd, fn, reshnd)</TT>
4269 <DT><STRONG>Description:</STRONG></DT>
4270 <DD>This function can be used to read completions from an external source.
4271 The parameter <TT>cp</TT> is the completion proxy to be used,
4272 and the string <TT>cmd</TT> the shell command to be executed. To its stdout,
4273 the command should on the first line write the <TT>common_beg</TT>
4274 parameter of <A HREF="#fn:WComplProxy.set_completions"><TT>WComplProxy.set_completions</TT></A> (which <TT>fn</TT> maybe used
4275 to override) and a single actual completion on each of the successive lines.
4276 The function <TT>reshnd</TT> may be used to override a result table
4285 <DD><A NAME="7999"></A>
4287 <A NAME="fn:mod_query.query"></A>
4289 <DT><STRONG>Synopsis:</STRONG></DT>
4290 <DD><TT>mod_query.query(mplex, prompt, initvalue, handler, completor,
4294 <DT><STRONG>Description:</STRONG></DT>
4295 <DD>Low-level query routine. <TT>mplex</TT> is the WMPlex to display
4296 the query in, <TT>prompt</TT> the prompt string, and <TT>initvalue</TT>
4297 the initial contents of the query box. <TT>handler</TT> is a function
4298 that receives (<TT>mplex</TT>, result string) as parameter when the
4299 query has been succesfully completed, <TT>completor</TT> the completor
4300 routine which receives a (<TT>cp</TT>, <TT>str</TT>, <TT>point</TT>) as parameters.
4301 The parameter <TT>str</TT> is the string to be completed and <TT>point</TT>
4302 cursor's location within it. Completions should be eventually,
4303 possibly asynchronously, set with <A HREF="#fn:WComplProxy.set_completions"><TT>WComplProxy.set_completions</TT></A>
4312 <DD><A NAME="8001"></A>
4314 <A NAME="fn:mod_query.query_attachclient"></A>
4316 <DT><STRONG>Synopsis:</STRONG></DT>
4317 <DD><TT>mod_query.query_attachclient(mplex)</TT>
4320 <DT><STRONG>Description:</STRONG></DT>
4321 <DD>This query asks for the name of a client window and switches
4322 focus to the one entered. It uses the completion function
4323 <A HREF="#fn:ioncore.complete_clientwin"><TT>ioncore.complete_clientwin</TT></A>.
4331 <DD><A NAME="8003"></A>
4333 <A NAME="fn:mod_query.query_editfile"></A>
4335 <DT><STRONG>Synopsis:</STRONG></DT>
4336 <DD><TT>mod_query.query_editfile(mplex, script, prompt)</TT>
4339 <DT><STRONG>Description:</STRONG></DT>
4340 <DD>Asks for a file to be edited. This script uses
4341 <TT>run-mailcap -mode=edit</TT> by default, but you may provide an
4342 alternative script to use. The default prompt is "Edit file:" (translated).
4350 <DD><A NAME="8005"></A>
4352 <A NAME="fn:mod_query.query_exec"></A>
4354 <DT><STRONG>Synopsis:</STRONG></DT>
4355 <DD><TT>mod_query.query_exec(mplex)</TT>
4358 <DT><STRONG>Description:</STRONG></DT>
4359 <DD>This function asks for a command to execute with <SPAN CLASS="textit">/bin/sh</SPAN>.
4360 If the command is prefixed with a colon (':'), the command will
4361 be run in an XTerm (or other terminal emulator) using the script
4362 <SPAN CLASS="textit">ion-runinxterm</SPAN>. Two colons ('::') will ask you to press
4363 enter after the command has finished.
4371 <DD><A NAME="8007"></A>
4373 <A NAME="fn:mod_query.query_gotoclient"></A>
4375 <DT><STRONG>Synopsis:</STRONG></DT>
4376 <DD><TT>mod_query.query_gotoclient(mplex)</TT>
4379 <DT><STRONG>Description:</STRONG></DT>
4380 <DD>This query asks for the name of a client window and attaches
4381 it to the frame the query was opened in. It uses the completion
4382 function <A HREF="#fn:ioncore.complete_clientwin"><TT>ioncore.complete_clientwin</TT></A>.
4390 <DD><A NAME="8009"></A>
4392 <A NAME="fn:mod_query.query_lua"></A>
4394 <DT><STRONG>Synopsis:</STRONG></DT>
4395 <DD><TT>mod_query.query_lua(mplex)</TT>
4398 <DT><STRONG>Description:</STRONG></DT>
4399 <DD>This query asks for Lua code to execute. It sets the variable '<TT>_</TT>'
4400 in the local environment of the string to point to the mplex where the
4401 query was created. It also sets the table <TT>arg</TT> in the local
4402 environment to <TT>{_, _:current()}</TT>.
4410 <DD><A NAME="8011"></A>
4412 <A NAME="fn:mod_query.query_man"></A>
4414 <DT><STRONG>Synopsis:</STRONG></DT>
4415 <DD><TT>mod_query.query_man(mplex, prog)</TT>
4418 <DT><STRONG>Description:</STRONG></DT>
4419 <DD>This query asks for a manual page to display. By default it runs the
4420 <TT>man</TT> command in an <TT>xterm</TT> using <TT>ion-runinxterm</TT>,
4421 but it is possible to pass another program as the <TT>prog</TT> argument.
4429 <DD><A NAME="8013"></A>
4431 <A NAME="fn:mod_query.query_menu"></A>
4433 <DT><STRONG>Synopsis:</STRONG></DT>
4434 <DD><TT>mod_query.query_menu(mplex, themenu, prompt)</TT>
4437 <DT><STRONG>Description:</STRONG></DT>
4438 <DD>This query can be used to create a query of a defined menu.
4446 <DD><A NAME="8015"></A>
4448 <A NAME="fn:mod_query.query_renameframe"></A>
4450 <DT><STRONG>Synopsis:</STRONG></DT>
4451 <DD><TT>mod_query.query_renameframe(frame)</TT>
4454 <DT><STRONG>Description:</STRONG></DT>
4455 <DD>This function asks for a name new for the frame where the query
4464 <DD><A NAME="8017"></A>
4466 <A NAME="fn:mod_query.query_renameworkspace"></A>
4468 <DT><STRONG>Synopsis:</STRONG></DT>
4469 <DD><TT>mod_query.query_renameworkspace(mplex, ws)</TT>
4472 <DT><STRONG>Description:</STRONG></DT>
4473 <DD>This function asks for a name new for the workspace <TT>ws</TT>,
4474 or the one on which <TT>mplex</TT> resides, if it is not set.
4475 If <TT>mplex</TT> is not set, one is looked for.
4483 <DD><A NAME="8019"></A>
4485 <A NAME="fn:mod_query.query_restart"></A>
4487 <DT><STRONG>Synopsis:</STRONG></DT>
4488 <DD><TT>mod_query.query_restart(mplex)</TT>
4491 <DT><STRONG>Description:</STRONG></DT>
4492 <DD>This query asks whether the user wants restart Ioncore.
4493 If the answer is 'y', 'Y' or 'yes', so will happen.
4501 <DD><A NAME="8021"></A>
4503 <A NAME="fn:mod_query.query_runfile"></A>
4505 <DT><STRONG>Synopsis:</STRONG></DT>
4506 <DD><TT>mod_query.query_runfile(mplex, script, prompt)</TT>
4509 <DT><STRONG>Description:</STRONG></DT>
4510 <DD>Asks for a file to be viewed. This script uses
4511 <TT>run-mailcap -action=view</TT> by default, but you may provide an
4512 alternative script to use. The default prompt is "View file:" (translated).
4520 <DD><A NAME="8023"></A>
4522 <A NAME="fn:mod_query.query_shutdown"></A>
4524 <DT><STRONG>Synopsis:</STRONG></DT>
4525 <DD><TT>mod_query.query_shutdown(mplex)</TT>
4528 <DT><STRONG>Description:</STRONG></DT>
4529 <DD>This query asks whether the user wants to exit Ion (no session manager)
4530 or close the session (running under a session manager that supports such
4531 requests). If the answer is 'y', 'Y' or 'yes', so will happen.
4539 <DD><A NAME="8025"></A>
4541 <A NAME="fn:mod_query.query_ssh"></A>
4543 <DT><STRONG>Synopsis:</STRONG></DT>
4544 <DD><TT>mod_query.query_ssh(mplex, ssh)</TT>
4547 <DT><STRONG>Description:</STRONG></DT>
4548 <DD>This query asks for a host to connect to with SSH.
4549 Hosts to tab-complete are read from <SPAN CLASS="textit">~/.ssh/known_hosts</SPAN>.
4557 <DD><A NAME="8028"></A>
4559 <A NAME="fn:mod_query.query_workspace"></A>
4561 <DT><STRONG>Synopsis:</STRONG></DT>
4562 <DD><TT>mod_query.query_workspace(mplex)</TT>
4565 <DT><STRONG>Description:</STRONG></DT>
4566 <DD>This query asks for the name of a workspace. If a workspace
4567 (an object inheriting WGroupWS) with such a name exists,
4568 it will be switched to. Otherwise a new workspace with the
4569 entered name will be created and the user will be queried for
4570 the type of the workspace.
4578 <DD><A NAME="8030"></A>
4580 <A NAME="fn:mod_query.query_yesno"></A>
4582 <DT><STRONG>Synopsis:</STRONG></DT>
4583 <DD><TT>mod_query.query_yesno(mplex, prompt, handler)</TT>
4586 <DT><STRONG>Description:</STRONG></DT>
4587 <DD>This function query will display a query with prompt <TT>prompt</TT> in
4588 <TT>mplex</TT> and if the user answers affirmately, call <TT>handler</TT>
4589 with <TT>mplex</TT> as parameter.
4597 <DD><A NAME="8032"></A>
4599 <A NAME="fn:mod_query.show_about_ion"></A>
4601 <DT><STRONG>Synopsis:</STRONG></DT>
4602 <DD><TT>mod_query.show_about_ion(mplex)</TT>
4605 <DT><STRONG>Description:</STRONG></DT>
4606 <DD>Display an "About Ion" message in <TT>mplex</TT>.
4614 <DD><A NAME="8034"></A>
4616 <A NAME="fn:mod_query.show_tree"></A>
4618 <DT><STRONG>Synopsis:</STRONG></DT>
4619 <DD><TT>mod_query.show_tree(mplex, reg, max_depth)</TT>
4622 <DT><STRONG>Description:</STRONG></DT>
4623 <DD>Show information about a region tree
4630 <H3><A NAME="SECTION00731000000000000000">
4631 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">1</SPAN> WComplProxy functions</A>
4637 <DD><A NAME="8037"></A>
4639 <A NAME="fn:WComplProxy.set_completions"></A>
4641 <DT><STRONG>Synopsis:</STRONG></DT>
4642 <DD><TT>bool WComplProxy.set_completions(WComplProxy proxy, table compls)</TT>
4645 <DT><STRONG>Description:</STRONG></DT>
4646 <DD>Set completion list of the WEdln that <TT>proxy</TT> refers to to
4647 <TT>compls</TT>, if it is still waiting for this completion run. The
4648 numerical indexes of <TT>compls</TT> list the found completions. If the
4649 entry <TT>common_beg</TT> (<TT>common_end</TT>) exists, it gives an extra
4650 common prefix (suffix) of all found completions.
4657 <H3><A NAME="SECTION00732000000000000000">
4658 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN> WEdln functions</A>
4664 <DD><A NAME="8040"></A>
4666 <A NAME="fn:WEdln.back"></A>
4668 <DT><STRONG>Synopsis:</STRONG></DT>
4669 <DD><TT>void WEdln.back(WEdln wedln)</TT>
4672 <DT><STRONG>Description:</STRONG></DT>
4673 <DD>Move backward one character.
4681 <DD><A NAME="8042"></A>
4683 <A NAME="fn:WEdln.backspace"></A>
4685 <DT><STRONG>Synopsis:</STRONG></DT>
4686 <DD><TT>void WEdln.backspace(WEdln wedln)</TT>
4689 <DT><STRONG>Description:</STRONG></DT>
4690 <DD>Delete previous character.
4698 <DD><A NAME="8044"></A>
4700 <A NAME="fn:WEdln.bkill_word"></A>
4702 <DT><STRONG>Synopsis:</STRONG></DT>
4703 <DD><TT>void WEdln.bkill_word(WEdln wedln)</TT>
4706 <DT><STRONG>Description:</STRONG></DT>
4707 <DD>Starting from the previous characters, delete possible whitespace and
4708 preceding alphanumeric characters until previous non-alphanumeric character.
4716 <DD><A NAME="8046"></A>
4718 <A NAME="fn:WEdln.bol"></A>
4720 <DT><STRONG>Synopsis:</STRONG></DT>
4721 <DD><TT>void WEdln.bol(WEdln wedln)</TT>
4724 <DT><STRONG>Description:</STRONG></DT>
4725 <DD>Go to the beginning of line.
4733 <DD><A NAME="8048"></A>
4735 <A NAME="fn:WEdln.bskip_word"></A>
4737 <DT><STRONG>Synopsis:</STRONG></DT>
4738 <DD><TT>void WEdln.bskip_word(WEdln wedln)</TT>
4741 <DT><STRONG>Description:</STRONG></DT>
4742 <DD>Go to to beginning of current sequence of alphanumeric characters
4743 followed by whitespace.
4751 <DD><A NAME="8050"></A>
4753 <A NAME="fn:WEdln.clear_mark"></A>
4755 <DT><STRONG>Synopsis:</STRONG></DT>
4756 <DD><TT>void WEdln.clear_mark(WEdln wedln)</TT>
4759 <DT><STRONG>Description:</STRONG></DT>
4760 <DD>Clear <SPAN CLASS="textit">mark</SPAN>.
4768 <DD><A NAME="8052"></A>
4770 <A NAME="fn:WEdln.complete"></A>
4772 <DT><STRONG>Synopsis:</STRONG></DT>
4773 <DD><TT>void WEdln.complete(WEdln wedln, string cycle, string mode)</TT>
4776 <DT><STRONG>Description:</STRONG></DT>
4777 <DD>Call completion handler with the text between the beginning of line and
4778 current cursor position, or select next/previous completion from list if in
4779 auto-show-completions mode and <TT>cycle</TT> is set to ``next'' or ``prev'',
4780 respectively. The <TT>mode</TT> may be ``history'' or ``normal''. If it is
4781 not set, the previous mode is used. Normally next entry is not cycled to
4782 despite the setting of <TT>cycle</TT> if mode switch occurs. To override
4783 this, use ``next-always'' and ``prev-always'' for <TT>cycle</TT>.
4791 <DD><A NAME="8054"></A>
4793 <A NAME="fn:WEdln.contents"></A>
4795 <DT><STRONG>Synopsis:</STRONG></DT>
4796 <DD><TT>string WEdln.contents(WEdln wedln)</TT>
4799 <DT><STRONG>Description:</STRONG></DT>
4800 <DD>Get line editor contents.
4808 <DD><A NAME="8056"></A>
4810 <A NAME="fn:WEdln.context"></A>
4812 <DT><STRONG>Synopsis:</STRONG></DT>
4813 <DD><TT>string WEdln.context(WEdln wedln)</TT>
4816 <DT><STRONG>Description:</STRONG></DT>
4817 <DD>Get history context for <TT>wedln</TT>.
4825 <DD><A NAME="8058"></A>
4827 <A NAME="fn:WEdln.copy"></A>
4829 <DT><STRONG>Synopsis:</STRONG></DT>
4830 <DD><TT>void WEdln.copy(WEdln wedln)</TT>
4833 <DT><STRONG>Description:</STRONG></DT>
4834 <DD>Copy text between <SPAN CLASS="textit">mark</SPAN> and current cursor position to clipboard.
4842 <DD><A NAME="8060"></A>
4844 <A NAME="fn:WEdln.cut"></A>
4846 <DT><STRONG>Synopsis:</STRONG></DT>
4847 <DD><TT>void WEdln.cut(WEdln wedln)</TT>
4850 <DT><STRONG>Description:</STRONG></DT>
4851 <DD>Copy text between <SPAN CLASS="textit">mark</SPAN> and current cursor position to clipboard
4852 and then delete that sequence.
4860 <DD><A NAME="8062"></A>
4862 <A NAME="fn:WEdln.delete"></A>
4864 <DT><STRONG>Synopsis:</STRONG></DT>
4865 <DD><TT>void WEdln.delete(WEdln wedln)</TT>
4868 <DT><STRONG>Description:</STRONG></DT>
4869 <DD>Delete current character.
4877 <DD><A NAME="8064"></A>
4879 <A NAME="fn:WEdln.eol"></A>
4881 <DT><STRONG>Synopsis:</STRONG></DT>
4882 <DD><TT>void WEdln.eol(WEdln wedln)</TT>
4885 <DT><STRONG>Description:</STRONG></DT>
4886 <DD>Go to the end of line.
4894 <DD><A NAME="8066"></A>
4896 <A NAME="fn:WEdln.finish"></A>
4898 <DT><STRONG>Synopsis:</STRONG></DT>
4899 <DD><TT>void WEdln.finish(WEdln wedln)</TT>
4902 <DT><STRONG>Description:</STRONG></DT>
4903 <DD>Close <TT>wedln</TT> and call any handlers.
4911 <DD><A NAME="8068"></A>
4913 <A NAME="fn:WEdln.forward"></A>
4915 <DT><STRONG>Synopsis:</STRONG></DT>
4916 <DD><TT>void WEdln.forward(WEdln wedln)</TT>
4919 <DT><STRONG>Description:</STRONG></DT>
4920 <DD>Move forward one character.
4928 <DD><A NAME="8070"></A>
4930 <A NAME="fn:WEdln.history_next"></A>
4932 <DT><STRONG>Synopsis:</STRONG></DT>
4933 <DD><TT>void WEdln.history_next(WEdln wedln, bool match)</TT>
4936 <DT><STRONG>Description:</STRONG></DT>
4937 <DD>Replace line editor contents with next entry in history if one exists.
4938 If <TT>match</TT> is <TT>true</TT>, the initial part of the history entry
4939 must match the current line from beginning to point.
4947 <DD><A NAME="8072"></A>
4949 <A NAME="fn:WEdln.history_prev"></A>
4951 <DT><STRONG>Synopsis:</STRONG></DT>
4952 <DD><TT>void WEdln.history_prev(WEdln wedln, bool match)</TT>
4955 <DT><STRONG>Description:</STRONG></DT>
4956 <DD>Replace line editor contents with previous in history if one exists.
4957 If <TT>match</TT> is <TT>true</TT>, the initial part of the history entry
4958 must match the current line from beginning to point.
4966 <DD><A NAME="8074"></A>
4968 <A NAME="fn:WEdln.insstr"></A>
4970 <DT><STRONG>Synopsis:</STRONG></DT>
4971 <DD><TT>void WEdln.insstr(WEdln wedln, string str)</TT>
4974 <DT><STRONG>Description:</STRONG></DT>
4975 <DD>Input <TT>str</TT> in wedln at current editing point.
4983 <DD><A NAME="8076"></A>
4985 <A NAME="fn:WEdln.is_histcompl"></A>
4987 <DT><STRONG>Synopsis:</STRONG></DT>
4988 <DD><TT>bool WEdln.is_histcompl(WEdln wedln)</TT>
4991 <DT><STRONG>Description:</STRONG></DT>
4992 <DD>Get history completion mode.
5000 <DD><A NAME="8078"></A>
5002 <A NAME="fn:WEdln.kill_line"></A>
5004 <DT><STRONG>Synopsis:</STRONG></DT>
5005 <DD><TT>void WEdln.kill_line(WEdln wedln)</TT>
5008 <DT><STRONG>Description:</STRONG></DT>
5009 <DD>Delete the whole line.
5017 <DD><A NAME="8080"></A>
5019 <A NAME="fn:WEdln.kill_to_bol"></A>
5021 <DT><STRONG>Synopsis:</STRONG></DT>
5022 <DD><TT>void WEdln.kill_to_bol(WEdln wedln)</TT>
5025 <DT><STRONG>Description:</STRONG></DT>
5026 <DD>Delete all characters from previous to beginning of line.
5034 <DD><A NAME="8082"></A>
5036 <A NAME="fn:WEdln.kill_to_eol"></A>
5038 <DT><STRONG>Synopsis:</STRONG></DT>
5039 <DD><TT>void WEdln.kill_to_eol(WEdln wedln)</TT>
5042 <DT><STRONG>Description:</STRONG></DT>
5043 <DD>Delete all characters from current to end of line.
5051 <DD><A NAME="8084"></A>
5053 <A NAME="fn:WEdln.kill_word"></A>
5055 <DT><STRONG>Synopsis:</STRONG></DT>
5056 <DD><TT>void WEdln.kill_word(WEdln wedln)</TT>
5059 <DT><STRONG>Description:</STRONG></DT>
5060 <DD>Starting from the current point, delete possible whitespace and
5061 following alphanumeric characters until next non-alphanumeric character.
5069 <DD><A NAME="8086"></A>
5071 <A NAME="fn:WEdln.mark"></A>
5073 <DT><STRONG>Synopsis:</STRONG></DT>
5074 <DD><TT>integer WEdln.mark(WEdln wedln)</TT>
5077 <DT><STRONG>Description:</STRONG></DT>
5078 <DD>Get current mark (start of selection) for <TT>wedln</TT>.
5079 Return value of -1 indicates that there is no mark, and
5080 0 is the beginning of the line.
5088 <DD><A NAME="8088"></A>
5090 <A NAME="fn:WEdln.next_completion"></A>
5092 <DT><STRONG>Synopsis:</STRONG></DT>
5093 <DD><TT>bool WEdln.next_completion(WEdln wedln)</TT>
5096 <DT><STRONG>Description:</STRONG></DT>
5097 <DD>Select next completion.
5105 <DD><A NAME="8090"></A>
5107 <A NAME="fn:WEdln.paste"></A>
5109 <DT><STRONG>Synopsis:</STRONG></DT>
5110 <DD><TT>void WEdln.paste(WEdln wedln)</TT>
5113 <DT><STRONG>Description:</STRONG></DT>
5114 <DD>Request selection from application holding such.
5117 Note that this function is asynchronous; the selection will not
5118 actually be inserted before Ion receives it. This will be no
5119 earlier than Ion return to its main loop.
5127 <DD><A NAME="8092"></A>
5129 <A NAME="fn:WEdln.point"></A>
5131 <DT><STRONG>Synopsis:</STRONG></DT>
5132 <DD><TT>integer WEdln.point(WEdln wedln)</TT>
5135 <DT><STRONG>Description:</STRONG></DT>
5136 <DD>Get current editing point.
5137 Beginning of the edited line is point 0.
5145 <DD><A NAME="8094"></A>
5147 <A NAME="fn:WEdln.prev_completion"></A>
5149 <DT><STRONG>Synopsis:</STRONG></DT>
5150 <DD><TT>bool WEdln.prev_completion(WEdln wedln)</TT>
5153 <DT><STRONG>Description:</STRONG></DT>
5154 <DD>Select previous completion.
5162 <DD><A NAME="8096"></A>
5164 <A NAME="fn:WEdln.set_context"></A>
5166 <DT><STRONG>Synopsis:</STRONG></DT>
5167 <DD><TT>void WEdln.set_context(WEdln wedln, string context)</TT>
5170 <DT><STRONG>Description:</STRONG></DT>
5171 <DD>Set history context for <TT>wedln</TT>.
5179 <DD><A NAME="8098"></A>
5181 <A NAME="fn:WEdln.set_mark"></A>
5183 <DT><STRONG>Synopsis:</STRONG></DT>
5184 <DD><TT>void WEdln.set_mark(WEdln wedln)</TT>
5187 <DT><STRONG>Description:</STRONG></DT>
5188 <DD>Set <SPAN CLASS="textit">mark</SPAN> to current cursor position.
5196 <DD><A NAME="8100"></A>
5198 <A NAME="fn:WEdln.skip_word"></A>
5200 <DT><STRONG>Synopsis:</STRONG></DT>
5201 <DD><TT>void WEdln.skip_word(WEdln wedln)</TT>
5204 <DT><STRONG>Description:</STRONG></DT>
5205 <DD>Go to to end of current sequence of whitespace followed by alphanumeric
5214 <DD><A NAME="8102"></A>
5216 <A NAME="fn:WEdln.transpose_chars"></A>
5218 <DT><STRONG>Synopsis:</STRONG></DT>
5219 <DD><TT>void WEdln.transpose_chars(WEdln wedln)</TT>
5222 <DT><STRONG>Description:</STRONG></DT>
5223 <DD>Transpose characters.
5231 <DD><A NAME="8104"></A>
5233 <A NAME="fn:WEdln.transpose_words"></A>
5235 <DT><STRONG>Synopsis:</STRONG></DT>
5236 <DD><TT>void WEdln.transpose_words(WEdln wedln)</TT>
5239 <DT><STRONG>Description:</STRONG></DT>
5240 <DD>Transpose words.
5247 <H3><A NAME="SECTION00733000000000000000">
5248 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN> WInput functions</A>
5254 <DD><A NAME="8107"></A>
5256 <A NAME="fn:WInput.cancel"></A>
5258 <DT><STRONG>Synopsis:</STRONG></DT>
5259 <DD><TT>void WInput.cancel(WInput input)</TT>
5262 <DT><STRONG>Description:</STRONG></DT>
5263 <DD>Close input not calling any possible finish handlers.
5271 <DD><A NAME="8109"></A>
5273 <A NAME="fn:WInput.scrolldown"></A>
5275 <DT><STRONG>Synopsis:</STRONG></DT>
5276 <DD><TT>void WInput.scrolldown(WInput input)</TT>
5279 <DT><STRONG>Description:</STRONG></DT>
5280 <DD>Scroll input <TT>input</TT> text contents down.
5288 <DD><A NAME="8111"></A>
5290 <A NAME="fn:WInput.scrollup"></A>
5292 <DT><STRONG>Synopsis:</STRONG></DT>
5293 <DD><TT>void WInput.scrollup(WInput input)</TT>
5296 <DT><STRONG>Description:</STRONG></DT>
5297 <DD>Scroll input <TT>input</TT> text contents up.
5304 <H2><A NAME="SECTION00740000000000000000"></A>
5305 <A NAME="sec:menuref"></A>
5307 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">4</SPAN> Functions defined in <SPAN CLASS="textit">mod_menu</SPAN>
5311 <DD><A NAME="8928"></A>
5313 <A NAME="fn:mod_menu.grabmenu"></A>
5315 <DT><STRONG>Synopsis:</STRONG></DT>
5316 <DD><TT>mod_menu.grabmenu(mplex, sub, menu_or_name, param)</TT>
5319 <DT><STRONG>Description:</STRONG></DT>
5320 <DD>This function is similar to <A HREF="#fn:mod_menu.menu"><TT>mod_menu.menu</TT></A>, but input
5321 is grabbed and the key used to active the menu can be used to
5322 cycle through menu entries.
5330 <DD><A NAME="8930"></A>
5332 <A NAME="fn:mod_menu.menu"></A>
5334 <DT><STRONG>Synopsis:</STRONG></DT>
5335 <DD><TT>mod_menu.menu(mplex, sub, menu_or_name, param)</TT>
5338 <DT><STRONG>Description:</STRONG></DT>
5339 <DD>Display a menu in the lower-left corner of <TT>mplex</TT>.
5340 The variable <TT>menu_or_name</TT> is either the name of a menu
5341 defined with <A HREF="#fn:mod_menu.defmenu"><TT>mod_menu.defmenu</TT></A> or directly a table similar
5342 to ones passesd to this function. When this function is
5343 called from a binding handler, <TT>sub</TT> should be set to
5344 the second argument of to the binding handler (<TT>_sub</TT>)
5345 so that the menu handler will get the same parameters as the
5346 binding handler. Extra options can be passed in the table
5347 <TT>param</TT>. The initial entry can be specified as the field
5348 <TT>initial</TT> as an integer starting from 1. Menus can be made
5349 to use a bigger style by setting the field <TT>big</TT> to <TT>true</TT>.
5357 <DD><A NAME="8932"></A>
5359 <A NAME="fn:mod_menu.get"></A>
5361 <DT><STRONG>Synopsis:</STRONG></DT>
5362 <DD><TT>table mod_menu.get()</TT>
5365 <DT><STRONG>Description:</STRONG></DT>
5366 <DD>Get module basic settings. For details, see <A HREF="#fn:mod_menu.set"><TT>mod_menu.set</TT></A>.
5374 <DD><A NAME="8934"></A>
5376 <A NAME="fn:mod_menu.set"></A>
5378 <DT><STRONG>Synopsis:</STRONG></DT>
5379 <DD><TT>void mod_menu.set(table tab)</TT>
5382 <DT><STRONG>Description:</STRONG></DT>
5383 <DD>Set module basic settings. The parameter table may contain the
5387 <TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
5388 <TR><TD ALIGN="LEFT">Field</TD>
5389 <TD ALIGN="LEFT">Description</TD>
5391 <TR><TD ALIGN="LEFT"><TT>scroll_amount</TT></TD>
5392 <TD ALIGN="LEFT">Number of pixels to scroll at a time
5393 pointer-controlled menus when one extends
5394 beyond a border of the screen and the pointer
5395 touches that border.</TD>
5397 <TR><TD ALIGN="LEFT"><TT>scroll_delay</TT></TD>
5398 <TD ALIGN="LEFT">Time between such scrolling events in
5409 <DD><A NAME="8936"></A>
5411 <A NAME="fn:mod_menu.pmenu"></A>
5413 <DT><STRONG>Synopsis:</STRONG></DT>
5414 <DD><TT>mod_menu.pmenu(win, sub, menu_or_name)</TT>
5417 <DT><STRONG>Description:</STRONG></DT>
5418 <DD>This function displays a drop-down menu and should only
5419 be called from a mouse press handler. The parameters are
5420 similar to those of <A HREF="#fn:mod_menu.menu"><TT>mod_menu.menu</TT></A>.
5427 <H3><A NAME="SECTION00741000000000000000">
5428 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN> WMenu functions</A>
5434 <DD><A NAME="8939"></A>
5436 <A NAME="fn:WMenu.cancel"></A>
5438 <DT><STRONG>Synopsis:</STRONG></DT>
5439 <DD><TT>void WMenu.cancel(WMenu menu)</TT>
5442 <DT><STRONG>Description:</STRONG></DT>
5443 <DD>Close <TT>menu</TT> not calling any possible finish handlers.
5451 <DD><A NAME="8941"></A>
5453 <A NAME="fn:WMenu.finish"></A>
5455 <DT><STRONG>Synopsis:</STRONG></DT>
5456 <DD><TT>void WMenu.finish(WMenu menu)</TT>
5459 <DT><STRONG>Description:</STRONG></DT>
5460 <DD>If selected entry is a submenu, display that.
5461 Otherwise destroy the menu and call handler for selected entry.
5469 <DD><A NAME="8943"></A>
5471 <A NAME="fn:WMenu.select_next"></A>
5473 <DT><STRONG>Synopsis:</STRONG></DT>
5474 <DD><TT>void WMenu.select_next(WMenu menu)</TT>
5477 <DT><STRONG>Description:</STRONG></DT>
5478 <DD>Select next entry in menu.
5486 <DD><A NAME="8945"></A>
5488 <A NAME="fn:WMenu.select_nth"></A>
5490 <DT><STRONG>Synopsis:</STRONG></DT>
5491 <DD><TT>void WMenu.select_nth(WMenu menu, integer n)</TT>
5494 <DT><STRONG>Description:</STRONG></DT>
5495 <DD>Select <TT>n</TT>:th entry in menu.
5503 <DD><A NAME="8947"></A>
5505 <A NAME="fn:WMenu.select_prev"></A>
5507 <DT><STRONG>Synopsis:</STRONG></DT>
5508 <DD><TT>void WMenu.select_prev(WMenu menu)</TT>
5511 <DT><STRONG>Description:</STRONG></DT>
5512 <DD>Select previous entry in menu.
5520 <DD><A NAME="8949"></A>
5522 <A NAME="fn:WMenu.typeahead_clear"></A>
5524 <DT><STRONG>Synopsis:</STRONG></DT>
5525 <DD><TT>void WMenu.typeahead_clear(WMenu menu)</TT>
5528 <DT><STRONG>Description:</STRONG></DT>
5529 <DD>Clear typeahead buffer.
5536 <H2><A NAME="SECTION00750000000000000000"></A>
5537 <A NAME="sec:dockref"></A>
5539 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">5</SPAN> Functions defined in <SPAN CLASS="textit">mod_dock</SPAN>
5543 <DD><A NAME="9148"></A>
5545 <A NAME="fn:mod_dock.set_floating_shown_on"></A>
5547 <DT><STRONG>Synopsis:</STRONG></DT>
5548 <DD><TT>void mod_dock.set_floating_shown_on(WMPlex mplex, string how)</TT>
5551 <DT><STRONG>Description:</STRONG></DT>
5552 <DD>Toggle floating docks on <TT>mplex</TT>.
5559 <H3><A NAME="SECTION00751000000000000000">
5560 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">1</SPAN> WDock functions</A>
5566 <DD><A NAME="9151"></A>
5568 <A NAME="fn:WDock.attach"></A>
5570 <DT><STRONG>Synopsis:</STRONG></DT>
5571 <DD><TT>bool WDock.attach(WDock dock, WRegion reg)</TT>
5574 <DT><STRONG>Description:</STRONG></DT>
5575 <DD>Attach <TT>reg</TT> to <TT>dock</TT>.
5583 <DD><A NAME="9153"></A>
5585 <A NAME="fn:WDock.get"></A>
5587 <DT><STRONG>Synopsis:</STRONG></DT>
5588 <DD><TT>table WDock.get(WDock dock)</TT>
5591 <DT><STRONG>Description:</STRONG></DT>
5592 <DD>Get <TT>dock</TT>'s configuration table. See <A HREF="#fn:WDock.set"><TT>WDock.set</TT></A> for a
5593 description of the table.
5601 <DD><A NAME="9155"></A>
5603 <A NAME="fn:WDock.resize"></A>
5605 <DT><STRONG>Synopsis:</STRONG></DT>
5606 <DD><TT>void WDock.resize(WDock dock)</TT>
5609 <DT><STRONG>Description:</STRONG></DT>
5610 <DD>Resizes and refreshes <TT>dock</TT>.
5618 <DD><A NAME="9157"></A>
5620 <A NAME="fn:WDock.set"></A>
5622 <DT><STRONG>Synopsis:</STRONG></DT>
5623 <DD><TT>void WDock.set(WDock dock, table conftab)</TT>
5626 <DT><STRONG>Description:</STRONG></DT>
5627 <DD>Configure <TT>dock</TT>. <TT>conftab</TT> is a table of key/value pairs:
5630 <TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
5631 <TR><TD ALIGN="LEFT">Key</TD>
5632 <TD ALIGN="LEFT">Values</TD>
5633 <TD ALIGN="LEFT">Description</TD>
5635 <TR><TD ALIGN="LEFT"><TT>name</TT></TD>
5636 <TD ALIGN="LEFT">string</TD>
5637 <TD ALIGN="LEFT">Name of dock</TD>
5639 <TR><TD ALIGN="LEFT"><TT>pos</TT></TD>
5640 <TD ALIGN="LEFT">string in <!-- MATH
5641 $\{t,m,b\}\times\{t,c,b\}$
5643 <SPAN CLASS="MATH"></SPAN></TD>
5644 <TD ALIGN="LEFT">Dock position.
5645 Can only be used in floating mode.</TD>
5647 <TR><TD ALIGN="LEFT"><TT>grow</TT></TD>
5648 <TD ALIGN="LEFT">up/down/left/right</TD>
5649 <TD ALIGN="LEFT">Growth direction where new dockapps are added. Also
5650 sets orientation for dock when working as WMPlex status
5651 display (see <A HREF="#fn:WMPlex.set_stdisp"><TT>WMPlex.set_stdisp</TT></A>).</TD>
5653 <TR><TD ALIGN="LEFT"><TT>is_auto</TT></TD>
5654 <TD ALIGN="LEFT">bool</TD>
5655 <TD ALIGN="LEFT">Should <TT>dock</TT> automatically manage new dockapps?</TD>
5660 Any parameters not explicitly set in <TT>conftab</TT> will be left unchanged.
5667 <H2><A NAME="SECTION00760000000000000000"></A>
5668 <A NAME="sec:spref"></A>
5670 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">6</SPAN> Functions defined in <SPAN CLASS="textit">mod_sp</SPAN>
5674 <DD><A NAME="9257"></A>
5676 <A NAME="fn:mod_sp.set_shown"></A>
5678 <DT><STRONG>Synopsis:</STRONG></DT>
5679 <DD><TT>bool mod_sp.set_shown(WFrame sp, string how)</TT>
5682 <DT><STRONG>Description:</STRONG></DT>
5683 <DD>Toggle displayed status of <TT>sp</TT>.
5684 The parameter <TT>how</TT> is one of (set/unset/toggle).
5692 <DD><A NAME="9259"></A>
5694 <A NAME="fn:mod_sp.set_shown_on"></A>
5696 <DT><STRONG>Synopsis:</STRONG></DT>
5697 <DD><TT>bool mod_sp.set_shown_on(WMPlex mplex, string how)</TT>
5700 <DT><STRONG>Description:</STRONG></DT>
5701 <DD>Change displayed status of some scratchpad on <TT>mplex</TT> if one is
5702 found. The parameter <TT>how</TT> is one of (set/unset/toggle).
5709 <H2><A NAME="SECTION00770000000000000000"></A>
5710 <A NAME="sec:deref"></A>
5712 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">7</SPAN> Functions defined in <SPAN CLASS="textit">de</SPAN>
5716 <DD><A NAME="9324"></A>
5718 <A NAME="fn:de.defstyle"></A>
5720 <DT><STRONG>Synopsis:</STRONG></DT>
5721 <DD><TT>bool de.defstyle(string name, table tab)</TT>
5724 <DT><STRONG>Description:</STRONG></DT>
5733 <DD><A NAME="9326"></A>
5735 <A NAME="fn:de.defstyle_rootwin"></A>
5737 <DT><STRONG>Synopsis:</STRONG></DT>
5738 <DD><TT>bool de.defstyle_rootwin(WRootWin rootwin, string name, table tab)</TT>
5741 <DT><STRONG>Description:</STRONG></DT>
5742 <DD>Define a style for the root window <TT>rootwin</TT>.
5750 <DD><A NAME="9328"></A>
5752 <A NAME="fn:de.reset"></A>
5754 <DT><STRONG>Synopsis:</STRONG></DT>
5755 <DD><TT>void de.reset()</TT>
5758 <DT><STRONG>Description:</STRONG></DT>
5759 <DD>Clear all styles from drawing engine memory.
5767 <DD><A NAME="9330"></A>
5769 <A NAME="fn:de.substyle"></A>
5771 <DT><STRONG>Synopsis:</STRONG></DT>
5772 <DD><TT>table de.substyle(string pattern, table tab)</TT>
5775 <DT><STRONG>Description:</STRONG></DT>
5776 <DD>Define a substyle.
5783 <H2><A NAME="SECTION00780000000000000000"></A>
5784 <A NAME="sec:hookref"></A>
5786 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">8</SPAN> Hooks
5792 <DD><A NAME="9529"></A>
5795 <DT><STRONG>Hook name:</STRONG></DT>
5796 <DD><A NAME="clientwin_do_manage_alt"></A><TT>clientwin_do_manage_alt</TT>
5799 <DT><STRONG>Parameters:</STRONG></DT>
5800 <DD><TT>(WClientWin, table)</TT>
5803 <DT><STRONG>Description:</STRONG></DT>
5804 <DD>Called when we want to manage a new client window.
5805 The table argument contains the following fields:
5808 <TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
5809 <TR><TD ALIGN="LEFT">Field</TD>
5810 <TD ALIGN="LEFT">Type</TD>
5811 <TD ALIGN="LEFT">Description</TD>
5813 <TR><TD ALIGN="LEFT"><TT>switchto</TT></TD>
5814 <TD ALIGN="LEFT">bool</TD>
5815 <TD ALIGN="LEFT">Do we want to switch to the client window.</TD>
5817 <TR><TD ALIGN="LEFT"><TT>jumpto</TT></TD>
5818 <TD ALIGN="LEFT">bool</TD>
5819 <TD ALIGN="LEFT">Do we want to jump to the client window.</TD>
5821 <TR><TD ALIGN="LEFT"><TT>userpos</TT></TD>
5822 <TD ALIGN="LEFT">bool</TD>
5823 <TD ALIGN="LEFT">Geometry set by user.</TD>
5825 <TR><TD ALIGN="LEFT"><TT>dockapp</TT></TD>
5826 <TD ALIGN="LEFT">bool</TD>
5827 <TD ALIGN="LEFT">Client window is a dockapp.</TD>
5829 <TR><TD ALIGN="LEFT"><TT>maprq</TT></TD>
5830 <TD ALIGN="LEFT">bool</TD>
5831 <TD ALIGN="LEFT">Map request (and not initialisation scan).</TD>
5833 <TR><TD ALIGN="LEFT"><TT>gravity</TT></TD>
5834 <TD ALIGN="LEFT">number</TD>
5835 <TD ALIGN="LEFT">Window gravity.</TD>
5837 <TR><TD ALIGN="LEFT"><TT>geom</TT></TD>
5838 <TD ALIGN="LEFT">table</TD>
5839 <TD ALIGN="LEFT">Requested geometry; <TT>x</TT>, <TT>y</TT>, <TT>w</TT>, <TT>h</TT>.</TD>
5841 <TR><TD ALIGN="LEFT"><TT>tfor</TT></TD>
5842 <TD ALIGN="LEFT">WClientWin</TD>
5843 <TD ALIGN="LEFT">Transient for window.</TD>
5848 This hook is not called in protected mode and can be used for
5849 arbitrary placement policies (deciding in which workspace a new
5850 WClientWin should go). In this case, you can call
5854 where <TT>reg</TT> is the region where the window should go, and
5855 <TT>cwin</TT> is the first argument of the function added to the
5864 <DD><A NAME="9530"></A>
5867 <DT><STRONG>Hook name:</STRONG></DT>
5868 <DD><A NAME="clientwin_mapped_hook"></A><TT>clientwin_mapped_hook</TT>
5871 <DT><STRONG>Parameters:</STRONG></DT>
5872 <DD><TT>WClientWin</TT>
5875 <DT><STRONG>Description:</STRONG></DT>
5876 <DD>Called when we have started to manage a client window.
5884 <DD><A NAME="9531"></A>
5887 <DT><STRONG>Hook name:</STRONG></DT>
5888 <DD><A NAME="clientwin_property_change_hook"></A><TT>clientwin_property_change_hook</TT>
5891 <DT><STRONG>Parameters:</STRONG></DT>
5892 <DD><TT>(WClientWin, integer)</TT>
5895 <DT><STRONG>Description:</STRONG></DT>
5896 <DD>Called when the property identified by the parameter atom id
5897 (integer) has changed on a client window.
5905 <DD><A NAME="9532"></A>
5908 <DT><STRONG>Hook name:</STRONG></DT>
5909 <DD><A NAME="clientwin_unmapped_hook"></A><TT>clientwin_unmapped_hook</TT>
5912 <DT><STRONG>Parameters:</STRONG></DT>
5916 <DT><STRONG>Description:</STRONG></DT>
5917 <DD>Called when we no longer manage a client window. The parameter
5918 is the X ID of the window; see <A HREF="#fn:WClientWin.xid"><TT>WClientWin.xid</TT></A>.
5926 <DD><A NAME="9533"></A>
5929 <DT><STRONG>Hook name:</STRONG></DT>
5930 <DD><A NAME="frame_managed_changed_hook"></A><TT>frame_managed_changed_hook</TT>
5933 <DT><STRONG>Parameters:</STRONG></DT>
5937 <DT><STRONG>Description:</STRONG></DT>
5938 <DD>Called when there are changes in the objects managed by a frame
5939 or their order. The table parameter has the following fields:
5942 <TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
5943 <TR><TD ALIGN="LEFT">Field</TD>
5944 <TD ALIGN="LEFT">Type</TD>
5945 <TD ALIGN="LEFT">Description</TD>
5947 <TR><TD ALIGN="LEFT"><TT>reg</TT></TD>
5948 <TD ALIGN="LEFT">WFrame</TD>
5949 <TD ALIGN="LEFT">The frame in question</TD>
5951 <TR><TD ALIGN="LEFT"><TT>mode</TT></TD>
5952 <TD ALIGN="LEFT">string</TD>
5953 <TD ALIGN="LEFT"><TT>"switchonly"</TT>, <TT>"reorder"</TT>,
5954 <TT>"add"</TT> or <TT>"remove"</TT></TD>
5956 <TR><TD ALIGN="LEFT"><TT>sw</TT></TD>
5957 <TD ALIGN="LEFT">bool</TD>
5958 <TD ALIGN="LEFT">Switch occured</TD>
5960 <TR><TD ALIGN="LEFT"><TT>sub</TT></TD>
5961 <TD ALIGN="LEFT">WRegion</TD>
5962 <TD ALIGN="LEFT">The managed region (primarily) affected</TD>
5972 <DD><A NAME="9534"></A>
5975 <DT><STRONG>Hook name:</STRONG></DT>
5976 <DD><A NAME="ioncore_sigchld_hook"></A><TT>ioncore_sigchld_hook</TT>
5979 <DT><STRONG>Parameters:</STRONG></DT>
5980 <DD><TT>integer</TT>
5983 <DT><STRONG>Description:</STRONG></DT>
5984 <DD>Called when a child process has exited. The parameter
5985 is the PID of the process.
5993 <DD><A NAME="9535"></A>
5996 <DT><STRONG>Hook name:</STRONG></DT>
5997 <DD><A NAME="ioncore_deinit_hook"></A><TT>ioncore_deinit_hook</TT>
6000 <DT><STRONG>Parameters:</STRONG></DT>
6004 <DT><STRONG>Description:</STRONG></DT>
6005 <DD>Called when Ion is deinitialising and about to quit.
6013 <DD><A NAME="9536"></A>
6016 <DT><STRONG>Hook name:</STRONG></DT>
6017 <DD><A NAME="ioncore_post_layout_setup_hook"></A><TT>ioncore_post_layout_setup_hook</TT>
6020 <DT><STRONG>Parameters:</STRONG></DT>
6024 <DT><STRONG>Description:</STRONG></DT>
6025 <DD>Called when Ion has done all initialisation and is almost ready to
6026 enter the mainloop, except no windows are yet being managed.
6034 <DD><A NAME="9537"></A>
6037 <DT><STRONG>Hook name:</STRONG></DT>
6038 <DD><A NAME="ioncore_snapshot_hook"></A><TT>ioncore_snapshot_hook</TT>
6041 <DT><STRONG>Parameters:</STRONG></DT>
6045 <DT><STRONG>Description:</STRONG></DT>
6046 <DD>Called to signal scripts and modules to save their state (if any).
6054 <DD><A NAME="9538"></A>
6057 <DT><STRONG>Hook name:</STRONG></DT>
6058 <DD><A NAME="tiling_placement_alt"></A><TT>tiling_placement_alt</TT>
6061 <DT><STRONG>Parameters:</STRONG></DT>
6065 <DT><STRONG>Description:</STRONG></DT>
6066 <DD>Called when a client window is about to be managed by a WTiling
6067 to allow for alternative placement policies. The table has the
6069 <TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
6070 <TR><TD ALIGN="LEFT">Field</TD>
6071 <TD ALIGN="LEFT">Type</TD>
6072 <TD ALIGN="LEFT">Description</TD>
6074 <TR><TD ALIGN="LEFT"><TT>tiling</TT></TD>
6075 <TD ALIGN="LEFT">WTiling</TD>
6076 <TD ALIGN="LEFT">The tiling</TD>
6078 <TR><TD ALIGN="LEFT"><TT>reg</TT></TD>
6079 <TD ALIGN="LEFT">WRegion</TD>
6080 <TD ALIGN="LEFT">The region (always a WClientWin at
6081 the moment) to be placed</TD>
6083 <TR><TD ALIGN="LEFT"><TT>mp</TT></TD>
6084 <TD ALIGN="LEFT">table</TD>
6085 <TD ALIGN="LEFT">This table contains the same fields as
6086 the parameter of <A HREF="#fn:clientwin_do_manage_alt"><TT>clientwin_do_manage_alt</TT></A></TD>
6088 <TR><TD ALIGN="LEFT"><TT>res_frame</TT></TD>
6089 <TD ALIGN="LEFT">WFrame</TD>
6090 <TD ALIGN="LEFT">A succesfull handler should
6091 return the target frame here.</TD>
6094 This hook is just for placing within a given workspace after the
6095 workspace has been decided by the default workspace selection
6096 policy. It is called in protected mode. For arbitrary placement
6097 policies, <A HREF="#fn:clientwin_do_manage_alt"><TT>clientwin_do_manage_alt</TT></A> should be used; it
6098 isn't called in protected mode,
6106 <DD><A NAME="9539"></A>
6109 <DT><STRONG>Hook name:</STRONG></DT>
6110 <DD><A NAME="region_do_warp_alt"></A><TT>region_do_warp_alt</TT>
6113 <DT><STRONG>Parameters:</STRONG></DT>
6114 <DD><TT>WRegion</TT>
6117 <DT><STRONG>Description:</STRONG></DT>
6118 <DD>This alt-hook exist to allow for alternative pointer warping
6127 <DD><A NAME="9540"></A>
6130 <DT><STRONG>Hook name:</STRONG></DT>
6131 <DD><A NAME="screen_managed_changed_hook"></A><TT>screen_managed_changed_hook</TT>
6134 <DT><STRONG>Parameters:</STRONG></DT>
6138 <DT><STRONG>Description:</STRONG></DT>
6139 <DD>Called when there are changes in the objects managed by a screen
6140 or their order. The table parameter is similar to that of
6141 <A HREF="#fn:frame_managed_changed_hook"><TT>frame_managed_changed_hook</TT></A>.
6149 <DD><A NAME="9541"></A>
6152 <DT><STRONG>Hook name:</STRONG></DT>
6153 <DD><A NAME="region_notify_hook"></A><TT>region_notify_hook</TT>
6156 <DT><STRONG>Parameters:</STRONG></DT>
6157 <DD><TT>(WRegion, string)</TT>
6160 <DT><STRONG>Description:</STRONG></DT>
6161 <DD>Signalled when something (minor) has changed in relation to
6162 the first parameter region. The string argument gives the
6166 <TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
6167 <TR><TD ALIGN="LEFT">String</TD>
6168 <TD ALIGN="LEFT">Description</TD>
6170 <TR><TD ALIGN="LEFT"><TT>deinit</TT></TD>
6171 <TD ALIGN="LEFT">The region is about to be deinitialised.</TD>
6173 <TR><TD ALIGN="LEFT"><TT>activated</TT></TD>
6174 <TD ALIGN="LEFT">The region has received focus.</TD>
6176 <TR><TD ALIGN="LEFT"><TT>inactivated</TT></TD>
6177 <TD ALIGN="LEFT">The region has lost focus.</TD>
6179 <TR><TD ALIGN="LEFT"><TT>activity</TT></TD>
6180 <TD ALIGN="LEFT">There's been activity in the region itself.</TD>
6182 <TR><TD ALIGN="LEFT"><TT>sub_activity</TT></TD>
6183 <TD ALIGN="LEFT">There's been activity in some sub-region.</TD>
6185 <TR><TD ALIGN="LEFT"><TT>name</TT></TD>
6186 <TD ALIGN="LEFT">The name of the region has changed.</TD>
6188 <TR><TD ALIGN="LEFT"><TT>unset_manager</TT></TD>
6189 <TD ALIGN="LEFT">The region no longer has a manager.</TD>
6191 <TR><TD ALIGN="LEFT"><TT>set_manager</TT></TD>
6192 <TD ALIGN="LEFT">The region now has a manager.</TD>
6194 <TR><TD ALIGN="LEFT"><TT>tag</TT></TD>
6195 <TD ALIGN="LEFT">Tagging state has changed.</TD>
6197 <TR><TD ALIGN="LEFT"><TT>pseudoactivated</TT></TD>
6198 <TD ALIGN="LEFT">The region has become pseudoactive
6201 <TR><TD ALIGN="LEFT"><TT>pseudoinactivated</TT></TD>
6202 <TD ALIGN="LEFT">The region is no longer pseudoactive.</TD>
6207 A region is pseudoactive, when a) it is itself not active (does
6208 not not have the focus, and may not even have a window that could
6209 have it), but b) some region managed by it is active.
6220 <DIV CLASS="navigation"><HR>
6221 <!--Navigation Panel-->
6222 <A NAME="tex2html348"
6224 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
6225 <A NAME="tex2html342"
6226 HREF="ionconf.html">
6227 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
6228 <A NAME="tex2html336"
6230 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
6231 <A NAME="tex2html344"
6233 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
6234 <A NAME="tex2html346"
6236 <IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A>
6238 <B> Next:</B> <A NAME="tex2html349"
6239 HREF="node8.html">A. The GNU General</A>
6240 <B> Up:</B> <A NAME="tex2html343"
6241 HREF="ionconf.html">Configuring and extending Ion3</A>
6242 <B> Previous:</B> <A NAME="tex2html337"
6243 HREF="node6.html">5. Scripting</A>
6244 <B> <A NAME="tex2html345"
6245 HREF="node1.html">Contents</A></B>
6246 <B> <A NAME="tex2html347"
6247 HREF="node11.html">Index</A></B> </DIV>
6248 <!--End of Navigation Panel-->