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="tex2html384"
48 HREF="node8.html">A. The GNU General</A>
49 <B> Up:</B> <A NAME="tex2html378"
50 HREF="ionconf.html">Configuring and extending Ion3</A>
51 <B> Previous:</B> <A NAME="tex2html372"
52 HREF="node6.html">5. Scripting</A>
53 <B> <A NAME="tex2html380"
54 HREF="node1.html">Contents</A></B>
55 <B> <A NAME="tex2html382"
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="tex2html385"
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="tex2html386"
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="tex2html387"
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="tex2html388"
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="tex2html389"
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="tex2html390"
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="tex2html391"
78 HREF="node7.html#SECTION00716000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">6</SPAN> WHook functions</A>
79 <LI><A NAME="tex2html392"
80 HREF="node7.html#SECTION00717000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">7</SPAN> WInfoWin functions</A>
81 <LI><A NAME="tex2html393"
82 HREF="node7.html#SECTION00718000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">8</SPAN> WMPlex functions</A>
83 <LI><A NAME="tex2html394"
84 HREF="node7.html#SECTION00719000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN> WMoveresMode functions</A>
85 <LI><A NAME="tex2html395"
86 HREF="node7.html#SECTION007110000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">10</SPAN> WRegion functions</A>
87 <LI><A NAME="tex2html396"
88 HREF="node7.html#SECTION007111000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">11</SPAN> WRootWin functions</A>
89 <LI><A NAME="tex2html397"
90 HREF="node7.html#SECTION007112000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">12</SPAN> WScreen functions</A>
91 <LI><A NAME="tex2html398"
92 HREF="node7.html#SECTION007113000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">13</SPAN> WTimer functions</A>
93 <LI><A NAME="tex2html399"
94 HREF="node7.html#SECTION007114000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">14</SPAN> WWindow functions</A>
95 <LI><A NAME="tex2html400"
96 HREF="node7.html#SECTION007115000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">15</SPAN> global functions</A>
97 <LI><A NAME="tex2html401"
98 HREF="node7.html#SECTION007116000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">16</SPAN> gr functions</A>
99 <LI><A NAME="tex2html402"
100 HREF="node7.html#SECTION007117000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">17</SPAN> string functions</A>
101 <LI><A NAME="tex2html403"
102 HREF="node7.html#SECTION007118000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">18</SPAN> table functions</A>
105 <LI><A NAME="tex2html404"
106 HREF="node7.html#SECTION00720000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN> Functions defined in <SPAN CLASS="textit">mod_tiling</SPAN></A>
108 <LI><A NAME="tex2html405"
109 HREF="node7.html#SECTION00721000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN> WSplit functions</A>
110 <LI><A NAME="tex2html406"
111 HREF="node7.html#SECTION00722000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN> WSplitInner functions</A>
112 <LI><A NAME="tex2html407"
113 HREF="node7.html#SECTION00723000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">3</SPAN> WSplitRegion functions</A>
114 <LI><A NAME="tex2html408"
115 HREF="node7.html#SECTION00724000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">4</SPAN> WSplitSplit functions</A>
116 <LI><A NAME="tex2html409"
117 HREF="node7.html#SECTION00725000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">5</SPAN> WTiling functions</A>
120 <LI><A NAME="tex2html410"
121 HREF="node7.html#SECTION00730000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN> Functions defined in <SPAN CLASS="textit">mod_query</SPAN></A>
123 <LI><A NAME="tex2html411"
124 HREF="node7.html#SECTION00731000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">1</SPAN> WComplProxy functions</A>
125 <LI><A NAME="tex2html412"
126 HREF="node7.html#SECTION00732000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN> WEdln functions</A>
127 <LI><A NAME="tex2html413"
128 HREF="node7.html#SECTION00733000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN> WInput functions</A>
131 <LI><A NAME="tex2html414"
132 HREF="node7.html#SECTION00740000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">4</SPAN> Functions defined in <SPAN CLASS="textit">mod_menu</SPAN></A>
134 <LI><A NAME="tex2html415"
135 HREF="node7.html#SECTION00741000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN> WMenu functions</A>
138 <LI><A NAME="tex2html416"
139 HREF="node7.html#SECTION00750000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">5</SPAN> Functions defined in <SPAN CLASS="textit">mod_dock</SPAN></A>
141 <LI><A NAME="tex2html417"
142 HREF="node7.html#SECTION00751000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">1</SPAN> WDock functions</A>
145 <LI><A NAME="tex2html418"
146 HREF="node7.html#SECTION00760000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">6</SPAN> Functions defined in <SPAN CLASS="textit">mod_sp</SPAN></A>
147 <LI><A NAME="tex2html419"
148 HREF="node7.html#SECTION00770000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">7</SPAN> Functions defined in <SPAN CLASS="textit">mod_statusbar</SPAN></A>
150 <LI><A NAME="tex2html420"
151 HREF="node7.html#SECTION00771000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">7</SPAN>.<SPAN CLASS="arabic">1</SPAN> WStatusBar functions</A>
154 <LI><A NAME="tex2html421"
155 HREF="node7.html#SECTION00780000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">8</SPAN> Functions defined in <SPAN CLASS="textit">de</SPAN></A>
156 <LI><A NAME="tex2html422"
157 HREF="node7.html#SECTION00790000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">9</SPAN> Hooks</A>
158 <LI><A NAME="tex2html423"
159 HREF="node7.html#SECTION007100000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">10</SPAN> Miscellaneous</A>
161 <LI><A NAME="tex2html424"
162 HREF="node7.html#SECTION007101000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">10</SPAN>.<SPAN CLASS="arabic">1</SPAN> Size policies</A>
164 <!--End of Table of Child-Links-->
167 <H1><A NAME="SECTION00700000000000000000"></A>
168 <A NAME="sec:exports"></A>
170 <SPAN CLASS="arabic">6</SPAN>. Function reference
175 <H2><A NAME="SECTION00710000000000000000"></A>
176 <A NAME="sec:ioncoreref"></A>
178 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN> Functions defined in <SPAN CLASS="textit">ioncore</SPAN>
182 <DD><A NAME="fn:ioncore.TR"></A>
184 <DT><STRONG>Synopsis:</STRONG></DT>
185 <DD><TT>ioncore.TR(s, ...)</TT>
188 <DT><STRONG>Description:</STRONG></DT>
189 <DD>gettext+string.format
197 <DD><A NAME="fn:ioncore.bdoc"></A>
199 <DT><STRONG>Synopsis:</STRONG></DT>
200 <DD><TT>ioncore.bdoc(text)</TT>
203 <DT><STRONG>Description:</STRONG></DT>
204 <DD>Used to enter documentation among bindings so that other programs
205 can read it. Does nothing.
213 <DD><A NAME="fn:ioncore.chdir_for"></A>
215 <DT><STRONG>Synopsis:</STRONG></DT>
216 <DD><TT>ioncore.chdir_for(reg, dir)</TT>
219 <DT><STRONG>Description:</STRONG></DT>
220 <DD>Change default working directory for new programs started in <TT>reg</TT>.
228 <DD><A NAME="fn:ioncore.compile_cmd"></A>
230 <DT><STRONG>Synopsis:</STRONG></DT>
231 <DD><TT>ioncore.compile_cmd(cmd, guard)</TT>
234 <DT><STRONG>Description:</STRONG></DT>
235 <DD>Compile string <TT>cmd</TT> into a bindable function. Within <TT>cmd</TT>, the
236 variable ''<TT>_</TT>'' (underscore) can be used to refer to the object
237 that was selecting for the bound action and chosen to handle it.
238 The variable ''<TT>_sub</TT>'' refers to a ''currently active'' sub-object
239 of <TT>_</TT>, or a sub-object where the action loading to the binding
240 being called actually occured.
243 The string <TT>guard</TT> maybe set to pose limits on <TT>_sub</TT>. Currently
244 supported guards are <TT>_sub:non-nil</TT> and <TT>_sub:WFoobar</TT>, where
253 <DD><A NAME="fn:ioncore.create_timer"></A>
255 <DT><STRONG>Synopsis:</STRONG></DT>
256 <DD><TT>WTimer ioncore.create_timer()</TT>
259 <DT><STRONG>Description:</STRONG></DT>
260 <DD>Create a new timer.
268 <DD><A NAME="fn:ioncore.create_ws"></A>
270 <DT><STRONG>Synopsis:</STRONG></DT>
271 <DD><TT>ioncore.create_ws(scr, tmpl, layout)</TT>
274 <DT><STRONG>Description:</STRONG></DT>
275 <DD>Create new workspace on screen <TT>scr</TT>. The table <TT>tmpl</TT>
276 may be used to override parts of the layout named with <TT>layout</TT>.
277 If no <TT>layout</TT> is given, "default" is used.
285 <DD><A NAME="fn:ioncore.defbindings"></A>
287 <DT><STRONG>Synopsis:</STRONG></DT>
288 <DD><TT>ioncore.defbindings(context, bindings)</TT>
291 <DT><STRONG>Description:</STRONG></DT>
292 <DD>Define bindings for context <TT>context</TT>. Here <TT>binding</TT> is
293 a table composed of entries created with <A HREF="#fn:ioncore.kpress"><TT>ioncore.kpress</TT></A>,
294 etc.; see Section <A HREF="node4.html#sec:bindings">3.3</A> for details.
302 <DD><A NAME="fn:ioncore.defctxmenu"></A>
304 <DT><STRONG>Synopsis:</STRONG></DT>
305 <DD><TT>ioncore.defctxmenu(ctx, ...)</TT>
308 <DT><STRONG>Description:</STRONG></DT>
309 <DD>Define context menu for context <TT>ctx</TT>, <TT>tab</TT> being a table
318 <DD><A NAME="fn:ioncore.deflayout"></A>
320 <DT><STRONG>Synopsis:</STRONG></DT>
321 <DD><TT>ioncore.deflayout(name, tab)</TT>
324 <DT><STRONG>Description:</STRONG></DT>
325 <DD>Define a new workspace layout with name <TT>name</TT>, and
326 attach/creation parameters given in <TT>tab</TT>. The layout
327 "empty" may not be defined.
335 <DD><A NAME="fn:ioncore.defmenu"></A>
337 <DT><STRONG>Synopsis:</STRONG></DT>
338 <DD><TT>ioncore.defmenu(name, tab)</TT>
341 <DT><STRONG>Description:</STRONG></DT>
342 <DD>Define a new menu with <TT>name</TT> being the menu's name and <TT>tab</TT>
343 being a table of menu entries. If <TT>tab.append</TT> is set, the entries
344 are appended to previously-defined ones, if possible.
352 <DD><A NAME="fn:ioncore.defwinprop"></A>
354 <DT><STRONG>Synopsis:</STRONG></DT>
355 <DD><TT>ioncore.defwinprop(list)</TT>
358 <DT><STRONG>Description:</STRONG></DT>
359 <DD>Define a winprop. For more information, see section <A HREF="node4.html#sec:winprops">3.5</A>.
367 <DD><A NAME="fn:ioncore.exec_on"></A>
369 <DT><STRONG>Synopsis:</STRONG></DT>
370 <DD><TT>ioncore.exec_on(reg, cmd, merr_internal)</TT>
373 <DT><STRONG>Description:</STRONG></DT>
374 <DD>Run <TT>cmd</TT> with the environment variable DISPLAY set to point to the
375 root window of the X screen <TT>reg</TT> is on. If <TT>cmd</TT> is prefixed
376 by a colon (<TT>:</TT>), the following command is executed in an xterm
377 (or other terminal emulator) with the help of the <TT>ion-runinxterm</TT>
378 script. If the command is prefixed by two colons, <TT>ion-runinxterm</TT>
379 will ask you to press enter after the command is finished, even if it
388 <DD><A NAME="fn:ioncore.read_savefile"></A>
390 <DT><STRONG>Synopsis:</STRONG></DT>
391 <DD><TT>table ioncore.read_savefile(string basename)</TT>
394 <DT><STRONG>Description:</STRONG></DT>
403 <DD><A NAME="fn:ioncore.get_savefile"></A>
405 <DT><STRONG>Synopsis:</STRONG></DT>
406 <DD><TT>string ioncore.get_savefile(string basename)</TT>
409 <DT><STRONG>Description:</STRONG></DT>
410 <DD>Get a file name to save (session) data in. The string <TT>basename</TT>
411 should contain no path or extension components.
419 <DD><A NAME="fn:ioncore.lookup_script"></A>
421 <DT><STRONG>Synopsis:</STRONG></DT>
422 <DD><TT>string ioncore.lookup_script(string file, string sp)</TT>
425 <DT><STRONG>Description:</STRONG></DT>
426 <DD>Lookup script <TT>file</TT>. If <TT>try_in_dir</TT> is set, it is tried
427 before the standard search path.
435 <DD><A NAME="fn:ioncore.write_savefile"></A>
437 <DT><STRONG>Synopsis:</STRONG></DT>
438 <DD><TT>bool ioncore.write_savefile(string basename, table tab)</TT>
441 <DT><STRONG>Description:</STRONG></DT>
442 <DD>Write <TT>tab</TT> in file with basename <TT>basename</TT> in the
451 <DD><A NAME="fn:ioncore.find_manager"></A>
453 <DT><STRONG>Synopsis:</STRONG></DT>
454 <DD><TT>ioncore.find_manager(obj, t)</TT>
457 <DT><STRONG>Description:</STRONG></DT>
458 <DD>Find an object with type name <TT>t</TT> managing <TT>obj</TT> or one of
467 <DD><A NAME="fn:ioncore.get_dir_for"></A>
469 <DT><STRONG>Synopsis:</STRONG></DT>
470 <DD><TT>ioncore.get_dir_for(reg)</TT>
473 <DT><STRONG>Description:</STRONG></DT>
474 <DD>Get default working directory for new programs started in <TT>reg</TT>.
482 <DD><A NAME="fn:ioncore.getbindings"></A>
484 <DT><STRONG>Synopsis:</STRONG></DT>
485 <DD><TT>ioncore.getbindings(maybe_context)</TT>
488 <DT><STRONG>Description:</STRONG></DT>
489 <DD>Get a table of all bindings.
497 <DD><A NAME="fn:ioncore.getctxmenu"></A>
499 <DT><STRONG>Synopsis:</STRONG></DT>
500 <DD><TT>ioncore.getctxmenu(name)</TT>
503 <DT><STRONG>Description:</STRONG></DT>
504 <DD>Returns a context menu defined with <A HREF="#fn:ioncore.defctxmenu"><TT>ioncore.defctxmenu</TT></A>.
512 <DD><A NAME="fn:ioncore.getlayout"></A>
514 <DT><STRONG>Synopsis:</STRONG></DT>
515 <DD><TT>ioncore.getlayout(name, all)</TT>
518 <DT><STRONG>Description:</STRONG></DT>
519 <DD>Get named layout (or all of the latter parameter is set,
520 but this is for internal use only).
528 <DD><A NAME="fn:ioncore.getmenu"></A>
530 <DT><STRONG>Synopsis:</STRONG></DT>
531 <DD><TT>ioncore.getmenu(name)</TT>
534 <DT><STRONG>Description:</STRONG></DT>
535 <DD>Returns a menu defined with <A HREF="#fn:ioncore.defmenu"><TT>ioncore.defmenu</TT></A>.
543 <DD><A NAME="fn:ioncore.getwinprop"></A>
545 <DT><STRONG>Synopsis:</STRONG></DT>
546 <DD><TT>ioncore.getwinprop(cwin)</TT>
549 <DT><STRONG>Description:</STRONG></DT>
550 <DD>Find winprop table for <TT>cwin</TT>.
558 <DD><A NAME="fn:ioncore.aboutmsg"></A>
560 <DT><STRONG>Synopsis:</STRONG></DT>
561 <DD><TT>string ioncore.aboutmsg()</TT>
564 <DT><STRONG>Description:</STRONG></DT>
565 <DD>Returns an about message (version, author, copyright notice).
573 <DD><A NAME="fn:ioncore.activity_first"></A>
575 <DT><STRONG>Synopsis:</STRONG></DT>
576 <DD><TT>WRegion ioncore.activity_first()</TT>
579 <DT><STRONG>Description:</STRONG></DT>
580 <DD>Returns first region on activity list.
588 <DD><A NAME="fn:ioncore.activity_i"></A>
590 <DT><STRONG>Synopsis:</STRONG></DT>
591 <DD><TT>bool ioncore.activity_i(function iterfn)</TT>
594 <DT><STRONG>Description:</STRONG></DT>
595 <DD>Iterate over activity list until <TT>iterfn</TT> returns <TT>false</TT>.
596 The function itself returns <TT>true</TT> if it reaches the end of list
597 without this happening.
605 <DD><A NAME="fn:ioncore.clientwin_i"></A>
607 <DT><STRONG>Synopsis:</STRONG></DT>
608 <DD><TT>bool ioncore.clientwin_i(function fn)</TT>
611 <DT><STRONG>Description:</STRONG></DT>
612 <DD>Iterate over client windows until <TT>iterfn</TT> returns <TT>false</TT>.
613 The function itself returns <TT>true</TT> if it reaches the end of list
614 without this happening.
622 <DD><A NAME="fn:ioncore.current"></A>
624 <DT><STRONG>Synopsis:</STRONG></DT>
625 <DD><TT>WRegion ioncore.current()</TT>
628 <DT><STRONG>Description:</STRONG></DT>
629 <DD>Returns the currently focused region, if any.
637 <DD><A NAME="fn:ioncore.defshortening"></A>
639 <DT><STRONG>Synopsis:</STRONG></DT>
640 <DD><TT>bool ioncore.defshortening(string rx, string rule, bool always)</TT>
643 <DT><STRONG>Description:</STRONG></DT>
644 <DD>Add a rule describing how too long titles should be shortened to fit in tabs.
645 The regular expression <TT>rx</TT> (POSIX, not Lua!) is used to match titles
646 and when <TT>rx</TT> matches, <TT>rule</TT> is attempted to use as a replacement
647 for title. If <TT>always</TT> is set, the rule is used even if no shortening
651 Similarly to sed's 's' command, <TT>rule</TT> may contain characters that are
652 inserted in the resulting string and specials as follows:
655 <TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
656 <TR><TD ALIGN="LEFT">Special</TD>
657 <TD ALIGN="LEFT">Description</TD>
659 <TR><TD ALIGN="LEFT">$0</TD>
660 <TD ALIGN="LEFT">Place the original string here.</TD>
662 <TR><TD ALIGN="LEFT">$1 to $9</TD>
663 <TD ALIGN="LEFT">Insert n:th capture here (as usual,captures are surrounded
664 by parentheses in the regex).</TD>
666 <TR><TD ALIGN="LEFT">$|</TD>
667 <TD ALIGN="LEFT">Alternative shortening separator. The shortening described
668 before the first this kind of separator is tried first and
669 if it fails to make the string short enough, the next is
670 tried, and so on.</TD>
672 <TR><TD ALIGN="LEFT">$<</TD>
673 <TD ALIGN="LEFT">Remove characters on the left of this marker to shorten the
676 <TR><TD ALIGN="LEFT">$></TD>
677 <TD ALIGN="LEFT">Remove characters on the right of this marker to shorten the
678 string. Only the first $< or $> within an alternative
679 shortening is used.</TD>
689 <DD><A NAME="fn:ioncore.detach"></A>
691 <DT><STRONG>Synopsis:</STRONG></DT>
692 <DD><TT>bool ioncore.detach(WRegion reg, string how)</TT>
695 <DT><STRONG>Description:</STRONG></DT>
696 <DD>Detach or reattach <TT>reg</TT>, depending on whether <TT>how</TT>
697 is `<TT>set</TT>', `<TT>unset</TT>' or `<TT>toggle</TT>'. (Detaching
698 means making <TT>reg</TT> managed by its nearest ancestor WGroup,
699 framed if <TT>reg</TT> is not itself WFrame. Reattaching means
700 making it managed where it used to be managed, if a return-placeholder
702 If <TT>reg</TT> is the `bottom' of some group, the whole group is
703 detached. If <TT>reg</TT> is a WWindow, it is put into a
712 <DD><A NAME="fn:ioncore.exec"></A>
714 <DT><STRONG>Synopsis:</STRONG></DT>
715 <DD><TT>integer ioncore.exec(string cmd)</TT>
718 <DT><STRONG>Description:</STRONG></DT>
719 <DD>Run <TT>cmd</TT> with the environment variable DISPLAY set to point to the
720 X display the WM is running on. No specific screen is set unlike with
721 <A HREF="#fn:WRootWin.exec_on"><TT>WRootWin.exec_on</TT></A>. The PID of the (shell executing the) new
730 <DD><A NAME="fn:ioncore.find_screen_id"></A>
732 <DT><STRONG>Synopsis:</STRONG></DT>
733 <DD><TT>WScreen ioncore.find_screen_id(integer id)</TT>
736 <DT><STRONG>Description:</STRONG></DT>
737 <DD>Find the screen with numerical id <TT>id</TT>.
745 <DD><A NAME="fn:ioncore.focushistory_i"></A>
747 <DT><STRONG>Synopsis:</STRONG></DT>
748 <DD><TT>bool ioncore.focushistory_i(function iterfn)</TT>
751 <DT><STRONG>Description:</STRONG></DT>
752 <DD>Iterate over focus history until <TT>iterfn</TT> returns <TT>false</TT>.
753 The function itself returns <TT>true</TT> if it reaches the end of list
754 without this happening.
762 <DD><A NAME="fn:ioncore.get"></A>
764 <DT><STRONG>Synopsis:</STRONG></DT>
765 <DD><TT>table ioncore.get()</TT>
768 <DT><STRONG>Description:</STRONG></DT>
769 <DD>Get ioncore basic settings. For details see <A HREF="#fn:ioncore.set"><TT>ioncore.set</TT></A>.
777 <DD><A NAME="fn:ioncore.get_paths"></A>
779 <DT><STRONG>Synopsis:</STRONG></DT>
780 <DD><TT>table ioncore.get_paths(table tab)</TT>
783 <DT><STRONG>Description:</STRONG></DT>
784 <DD>Get important directories (the fields <TT>userdir</TT>,
785 <TT>sessiondir</TT>, <TT>searchpath</TT> in the returned table).
793 <DD><A NAME="fn:ioncore.goto_activity"></A>
795 <DT><STRONG>Synopsis:</STRONG></DT>
796 <DD><TT>bool ioncore.goto_activity()</TT>
799 <DT><STRONG>Description:</STRONG></DT>
800 <DD>Go to first region on activity list.
808 <DD><A NAME="fn:ioncore.goto_first"></A>
810 <DT><STRONG>Synopsis:</STRONG></DT>
811 <DD><TT>WRegion ioncore.goto_first(WRegion reg, string dirstr, table param)</TT>
814 <DT><STRONG>Description:</STRONG></DT>
815 <DD>Go to first region within <TT>reg</TT> in direction <TT>dirstr</TT>.
816 For information on <TT>param</TT>, see <A HREF="#fn:ioncore.navi_next"><TT>ioncore.navi_next</TT></A>.
817 Additionally this function supports the boolean <TT>nofront</TT> field,
818 for not bringing the object to front.
826 <DD><A NAME="fn:ioncore.goto_next"></A>
828 <DT><STRONG>Synopsis:</STRONG></DT>
829 <DD><TT>WRegion ioncore.goto_next(WRegion reg, string dirstr, table param)</TT>
832 <DT><STRONG>Description:</STRONG></DT>
833 <DD>Go to region next from <TT>reg</TT> in direction <TT>dirstr</TT>.
834 For information on <TT>param</TT>, see <A HREF="#fn:ioncore.navi_next"><TT>ioncore.navi_next</TT></A>.
835 Additionally this function supports the boolean <TT>nofront</TT>
836 field, for not bringing the object to front.
844 <DD><A NAME="fn:ioncore.goto_next_screen"></A>
846 <DT><STRONG>Synopsis:</STRONG></DT>
847 <DD><TT>WScreen ioncore.goto_next_screen()</TT>
850 <DT><STRONG>Description:</STRONG></DT>
851 <DD>Switch focus to the next screen and return it.
854 Note that this function is asynchronous; the screen will not
855 actually have received the focus when this function returns.
863 <DD><A NAME="fn:ioncore.goto_nth_screen"></A>
865 <DT><STRONG>Synopsis:</STRONG></DT>
866 <DD><TT>WScreen ioncore.goto_nth_screen(integer id)</TT>
869 <DT><STRONG>Description:</STRONG></DT>
870 <DD>Switch focus to the screen with id <TT>id</TT> and return it.
873 Note that this function is asynchronous; the screen will not
874 actually have received the focus when this function returns.
882 <DD><A NAME="fn:ioncore.goto_prev_screen"></A>
884 <DT><STRONG>Synopsis:</STRONG></DT>
885 <DD><TT>WScreen ioncore.goto_prev_screen()</TT>
888 <DT><STRONG>Description:</STRONG></DT>
889 <DD>Switch focus to the previous screen and return it.
892 Note that this function is asynchronous; the screen will not
893 actually have received the focus when this function returns.
901 <DD><A NAME="fn:ioncore.goto_previous"></A>
903 <DT><STRONG>Synopsis:</STRONG></DT>
904 <DD><TT>WRegion ioncore.goto_previous()</TT>
907 <DT><STRONG>Description:</STRONG></DT>
908 <DD>Go to and return to a previously active region (if any).
911 Note that this function is asynchronous; the region will not
912 actually have received the focus when this function returns.
920 <DD><A NAME="fn:ioncore.is_i18n"></A>
922 <DT><STRONG>Synopsis:</STRONG></DT>
923 <DD><TT>bool ioncore.is_i18n()</TT>
926 <DT><STRONG>Description:</STRONG></DT>
927 <DD>Is Ion supporting locale-specifically multibyte-encoded strings?
935 <DD><A NAME="fn:ioncore.load_module"></A>
937 <DT><STRONG>Synopsis:</STRONG></DT>
938 <DD><TT>bool ioncore.load_module(string modname)</TT>
941 <DT><STRONG>Description:</STRONG></DT>
942 <DD>Attempt to load a C-side module.
950 <DD><A NAME="fn:ioncore.lookup_clientwin"></A>
952 <DT><STRONG>Synopsis:</STRONG></DT>
953 <DD><TT>WClientWin ioncore.lookup_clientwin(string name)</TT>
956 <DT><STRONG>Description:</STRONG></DT>
957 <DD>Attempt to find a client window with name <TT>name</TT>.
965 <DD><A NAME="fn:ioncore.lookup_region"></A>
967 <DT><STRONG>Synopsis:</STRONG></DT>
968 <DD><TT>WRegion ioncore.lookup_region(string name, string typenam)</TT>
971 <DT><STRONG>Description:</STRONG></DT>
972 <DD>Attempt to find a non-client window region with name <TT>name</TT> and type
973 inheriting <TT>typenam</TT>.
981 <DD><A NAME="fn:ioncore.navi_first"></A>
983 <DT><STRONG>Synopsis:</STRONG></DT>
984 <DD><TT>WRegion ioncore.navi_first(WRegion reg, string dirstr, table param)</TT>
987 <DT><STRONG>Description:</STRONG></DT>
988 <DD>Find first region within <TT>reg</TT> in direction <TT>dirstr</TT>.
989 For information on <TT>param</TT>, see <A HREF="#fn:ioncore.navi_next"><TT>ioncore.navi_next</TT></A>.
997 <DD><A NAME="fn:ioncore.navi_next"></A>
999 <DT><STRONG>Synopsis:</STRONG></DT>
1000 <DD><TT>WRegion ioncore.navi_next(WRegion reg, string dirstr, table param)</TT>
1003 <DT><STRONG>Description:</STRONG></DT>
1004 <DD>Find region next from <TT>reg</TT> in direction <TT>dirstr</TT>
1005 (`<TT>up</TT>', `<TT>down</TT>', `<TT>left</TT>', `<TT>right</TT>',
1006 `<TT>next</TT>', `<TT>prev</TT>', or `<TT>any</TT>'). The table <TT>param</TT>
1007 may contain the boolean field <TT>nowrap</TT>, instructing not to wrap
1008 around, and the WRegions <TT>no_ascend</TT> and <TT>no_descend</TT>,
1009 and boolean functions <TT>ascend_filter</TT> and <TT>descend_filter</TT>
1010 on <TT>WRegion</TT> pairs (<TT>to</TT>, <TT>from</TT>), are used to decide when
1011 to descend or ascend into another region.
1019 <DD><A NAME="fn:ioncore.popen_bgread"></A>
1021 <DT><STRONG>Synopsis:</STRONG></DT>
1022 <DD><TT>integer ioncore.popen_bgread(string cmd, function h, function errh)</TT>
1025 <DT><STRONG>Description:</STRONG></DT>
1026 <DD>Run <TT>cmd</TT> with a read pipe connected to its stdout and stderr.
1027 When data is received through one of these pipes, <TT>h</TT> or <TT>errh</TT>
1028 is called with that data. When the pipe is closed, the handler is called
1029 with <TT>nil</TT> argument. The PID of the new process is returned, or
1038 <DD><A NAME="fn:ioncore.progname"></A>
1040 <DT><STRONG>Synopsis:</STRONG></DT>
1041 <DD><TT>string ioncore.progname()</TT>
1044 <DT><STRONG>Description:</STRONG></DT>
1045 <DD>Returns the name of program using Ioncore.
1053 <DD><A NAME="fn:ioncore.region_i"></A>
1055 <DT><STRONG>Synopsis:</STRONG></DT>
1056 <DD><TT>bool ioncore.region_i(function fn, string typenam)</TT>
1059 <DT><STRONG>Description:</STRONG></DT>
1060 <DD>Iterate over all non-client window regions with (inherited) class
1061 <TT>typenam</TT> until <TT>iterfn</TT> returns <TT>false</TT>.
1062 The function itself returns <TT>true</TT> if it reaches the end of list
1063 without this happening.
1071 <DD><A NAME="fn:ioncore.request_selection"></A>
1073 <DT><STRONG>Synopsis:</STRONG></DT>
1074 <DD><TT>void ioncore.request_selection(function fn)</TT>
1077 <DT><STRONG>Description:</STRONG></DT>
1078 <DD>Request (string) selection. The function <TT>fn</TT> will be called
1079 with the selection when and if it is received.
1087 <DD><A NAME="fn:ioncore.resign"></A>
1089 <DT><STRONG>Synopsis:</STRONG></DT>
1090 <DD><TT>void ioncore.resign()</TT>
1093 <DT><STRONG>Description:</STRONG></DT>
1094 <DD>Causes the window manager to simply exit without saving
1103 <DD><A NAME="fn:ioncore.restart"></A>
1105 <DT><STRONG>Synopsis:</STRONG></DT>
1106 <DD><TT>void ioncore.restart()</TT>
1109 <DT><STRONG>Description:</STRONG></DT>
1110 <DD>Restart, saving session first.
1118 <DD><A NAME="fn:ioncore.restart_other"></A>
1120 <DT><STRONG>Synopsis:</STRONG></DT>
1121 <DD><TT>void ioncore.restart_other(string cmd)</TT>
1124 <DT><STRONG>Description:</STRONG></DT>
1125 <DD>Attempt to restart another window manager <TT>cmd</TT>.
1133 <DD><A NAME="fn:ioncore.set"></A>
1135 <DT><STRONG>Synopsis:</STRONG></DT>
1136 <DD><TT>void ioncore.set(table tab)</TT>
1139 <DT><STRONG>Description:</STRONG></DT>
1140 <DD>Set ioncore basic settings. The table <TT>tab</TT> may contain the
1144 <TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
1145 <TR><TD ALIGN="LEFT">Field</TD>
1146 <TD ALIGN="LEFT">Description</TD>
1148 <TR><TD ALIGN="LEFT"><TT>opaque_resize</TT></TD>
1149 <TD ALIGN="LEFT">(boolean) Controls whether interactive move and
1150 resize operations simply draw a rubberband during
1151 the operation (false) or immediately affect the
1152 object in question at every step (true).</TD>
1154 <TR><TD ALIGN="LEFT"><TT>warp</TT></TD>
1155 <TD ALIGN="LEFT">(boolean) Should focusing operations move the
1156 pointer to the object to be focused?</TD>
1158 <TR><TD ALIGN="LEFT"><TT>switchto</TT></TD>
1159 <TD ALIGN="LEFT">(boolean) Should a managing WMPlex switch
1160 to a newly mapped client window?</TD>
1162 <TR><TD ALIGN="LEFT"><TT>screen_notify</TT></TD>
1163 <TD ALIGN="LEFT">(boolean) Should notification tooltips be displayed
1164 for hidden workspaces with activity?</TD>
1166 <TR><TD ALIGN="LEFT"><TT>frame_default_index</TT></TD>
1167 <TD ALIGN="LEFT">(string) Specifies where to add new regions
1168 on the mutually exclusive list of a frame. One of
1169 `<TT>last</TT>', `<TT>next</TT>', (for after current),
1170 or `<TT>next-act</TT>'
1171 (for after current and anything with activity right
1174 <TR><TD ALIGN="LEFT"><TT>dblclick_delay</TT></TD>
1175 <TD ALIGN="LEFT">(integer) Delay between clicks of a double click.</TD>
1177 <TR><TD ALIGN="LEFT"><TT>kbresize_delay</TT></TD>
1178 <TD ALIGN="LEFT">(integer) Delay in milliseconds for ending keyboard
1179 resize mode after inactivity.</TD>
1181 <TR><TD ALIGN="LEFT"><TT>kbresize_t_max</TT></TD>
1182 <TD ALIGN="LEFT">(integer) Controls keyboard resize acceleration.
1183 See description below for details.</TD>
1185 <TR><TD ALIGN="LEFT"><TT>kbresize_t_min</TT></TD>
1186 <TD ALIGN="LEFT">(integer) See below.</TD>
1188 <TR><TD ALIGN="LEFT"><TT>kbresize_step</TT></TD>
1189 <TD ALIGN="LEFT">(floating point) See below.</TD>
1191 <TR><TD ALIGN="LEFT"><TT>kbresize_maxacc</TT></TD>
1192 <TD ALIGN="LEFT">(floating point) See below.</TD>
1194 <TR><TD ALIGN="LEFT"><TT>framed_transients</TT></TD>
1195 <TD ALIGN="LEFT">(boolean) Put transients in nested frames.</TD>
1197 <TR><TD ALIGN="LEFT"><TT>float_placement_method</TT></TD>
1198 <TD ALIGN="LEFT">(string) How to place floating frames.
1199 One of `<TT>udlr</TT>' (up-down, then left-right),
1200 `<TT>lrud</TT>' (left-right, then up-down), or
1201 `<TT>random</TT>'.</TD>
1203 <TR><TD ALIGN="LEFT"><TT>mousefocus</TT></TD>
1204 <TD ALIGN="LEFT">(string) Mouse focus mode:
1205 `<TT>disable</TT>' or `<TT>sloppy</TT>'.</TD>
1207 <TR><TD ALIGN="LEFT"><TT>unsqueeze</TT></TD>
1208 <TD ALIGN="LEFT">(boolean) Auto-unsqueeze transients/menus/queries/etc.</TD>
1210 <TR><TD ALIGN="LEFT"><TT>autoraise</TT></TD>
1211 <TD ALIGN="LEFT">(boolean) Autoraise regions in groups on goto.</TD>
1216 When a keyboard resize function is called, and at most <TT>kbresize_t_max</TT>
1217 milliseconds has passed from a previous call, acceleration factor is reset
1218 to 1.0. Otherwise, if at least <TT>kbresize_t_min</TT> milliseconds have
1219 passed from the from previous acceleration update or reset the squere root
1220 of the acceleration factor is incremented by <TT>kbresize_step</TT>. The
1221 maximum acceleration factor (pixels/call modulo size hints) is given by
1222 <TT>kbresize_maxacc</TT>. The default values are (200, 50, 30, 100).
1230 <DD><A NAME="fn:ioncore.set_paths"></A>
1232 <DT><STRONG>Synopsis:</STRONG></DT>
1233 <DD><TT>bool ioncore.set_paths(table tab)</TT>
1236 <DT><STRONG>Description:</STRONG></DT>
1237 <DD>Set important directories (the fields <TT>sessiondir</TT>, <TT>searchpath</TT>
1246 <DD><A NAME="fn:ioncore.set_selection"></A>
1248 <DT><STRONG>Synopsis:</STRONG></DT>
1249 <DD><TT>void ioncore.set_selection(string p)</TT>
1252 <DT><STRONG>Description:</STRONG></DT>
1253 <DD>Set primary selection and cutbuffer0 to <TT>p</TT>.
1261 <DD><A NAME="fn:ioncore.shutdown"></A>
1263 <DT><STRONG>Synopsis:</STRONG></DT>
1264 <DD><TT>void ioncore.shutdown()</TT>
1267 <DT><STRONG>Description:</STRONG></DT>
1268 <DD>End session saving it first.
1276 <DD><A NAME="fn:ioncore.snapshot"></A>
1278 <DT><STRONG>Synopsis:</STRONG></DT>
1279 <DD><TT>void ioncore.snapshot()</TT>
1282 <DT><STRONG>Description:</STRONG></DT>
1291 <DD><A NAME="fn:ioncore.tagged_clear"></A>
1293 <DT><STRONG>Synopsis:</STRONG></DT>
1294 <DD><TT>void ioncore.tagged_clear()</TT>
1297 <DT><STRONG>Description:</STRONG></DT>
1298 <DD>Untag all regions.
1306 <DD><A NAME="fn:ioncore.tagged_first"></A>
1308 <DT><STRONG>Synopsis:</STRONG></DT>
1309 <DD><TT>WRegion ioncore.tagged_first(bool untag)</TT>
1312 <DT><STRONG>Description:</STRONG></DT>
1313 <DD>Returns first tagged object, untagging it as well if <TT>untag</TT> is set.
1321 <DD><A NAME="fn:ioncore.tagged_i"></A>
1323 <DT><STRONG>Synopsis:</STRONG></DT>
1324 <DD><TT>bool ioncore.tagged_i(function iterfn)</TT>
1327 <DT><STRONG>Description:</STRONG></DT>
1328 <DD>Iterate over tagged regions until <TT>iterfn</TT> returns <TT>false</TT>.
1329 The function itself returns <TT>true</TT> if it reaches the end of list
1330 without this happening.
1338 <DD><A NAME="fn:ioncore.unsqueeze"></A>
1340 <DT><STRONG>Synopsis:</STRONG></DT>
1341 <DD><TT>void ioncore.unsqueeze(WRegion reg, bool override)</TT>
1344 <DT><STRONG>Description:</STRONG></DT>
1345 <DD>Try to detach <TT>reg</TT> if it fits poorly in its
1346 current location. This function does not do anything,
1347 unless <TT>override</TT> is set or the <TT>unsqueeze</TT> option
1348 of <A HREF="#fn:ioncore.set"><TT>ioncore.set</TT></A> is set.
1356 <DD><A NAME="fn:ioncore.version"></A>
1358 <DT><STRONG>Synopsis:</STRONG></DT>
1359 <DD><TT>string ioncore.version()</TT>
1362 <DT><STRONG>Description:</STRONG></DT>
1363 <DD>Returns Ioncore version string.
1371 <DD><A NAME="fn:ioncore.warn"></A>
1373 <DT><STRONG>Synopsis:</STRONG></DT>
1374 <DD><TT>void ioncore.warn(string str)</TT>
1377 <DT><STRONG>Description:</STRONG></DT>
1378 <DD>Issue a warning. How the message is displayed depends on the current
1387 <DD><A NAME="fn:ioncore.warn_traced"></A>
1389 <DT><STRONG>Synopsis:</STRONG></DT>
1390 <DD><TT>void ioncore.warn_traced(string str)</TT>
1393 <DT><STRONG>Description:</STRONG></DT>
1394 <DD>Similar to <A HREF="#fn:ioncore.warn"><TT>ioncore.warn</TT></A>, but also print Lua stack trace.
1402 <DD><A NAME="fn:ioncore.x_change_property"></A>
1404 <DT><STRONG>Synopsis:</STRONG></DT>
1405 <DD><TT>void ioncore.x_change_property(integer win, integer atom, integer atom_type, integer format, string mode, table tab)</TT>
1408 <DT><STRONG>Description:</STRONG></DT>
1409 <DD>Modify a window property. The <TT>mode</TT> is one of
1410 `<TT>replace</TT>', `<TT>prepend</TT>' or `<TT>append</TT>', and format
1411 is either 8, 16 or 32. Also see <A HREF="#fn:ioncore.x_get_window_property"><TT>ioncore.x_get_window_property</TT></A>
1412 and the <TT>XChangeProperty</TT>(3) manual page.
1420 <DD><A NAME="fn:ioncore.x_delete_property"></A>
1422 <DT><STRONG>Synopsis:</STRONG></DT>
1423 <DD><TT>void ioncore.x_delete_property(integer win, integer atom)</TT>
1426 <DT><STRONG>Description:</STRONG></DT>
1427 <DD>Delete a window property.
1435 <DD><A NAME="fn:ioncore.x_get_atom_name"></A>
1437 <DT><STRONG>Synopsis:</STRONG></DT>
1438 <DD><TT>string ioncore.x_get_atom_name(integer atom)</TT>
1441 <DT><STRONG>Description:</STRONG></DT>
1442 <DD>Get the name of an atom. See <TT>XGetAtomName</TT>(3) manual page for
1451 <DD><A NAME="fn:ioncore.x_get_text_property"></A>
1453 <DT><STRONG>Synopsis:</STRONG></DT>
1454 <DD><TT>table ioncore.x_get_text_property(integer win, integer atom)</TT>
1457 <DT><STRONG>Description:</STRONG></DT>
1458 <DD>Get a text property for a window. The fields in the returned
1459 table (starting from 1) are the null-separated parts of the property.
1460 See the <TT>XGetTextProperty</TT>(3) manual page for more information.
1468 <DD><A NAME="fn:ioncore.x_get_window_property"></A>
1470 <DT><STRONG>Synopsis:</STRONG></DT>
1471 <DD><TT>table ioncore.x_get_window_property(integer win, integer atom, integer atom_type, integer n32expected, bool more)</TT>
1474 <DT><STRONG>Description:</STRONG></DT>
1475 <DD>Get a property <TT>atom</TT> of type <TT>atom_type</TT> for window <TT>win</TT>.
1476 The <TT>n32expected</TT> parameter indicates the expected number of 32bit
1477 words, and <TT>more</TT> indicates whether all or just this amount of data
1478 should be fetched. Each 8, 16 or 32bit element of the property, as
1479 deciphered from <TT>atom_type</TT> is a field in the returned table.
1480 See <TT>XGetWindowProperty</TT>(3) manual page for more information.
1488 <DD><A NAME="fn:ioncore.x_intern_atom"></A>
1490 <DT><STRONG>Synopsis:</STRONG></DT>
1491 <DD><TT>integer ioncore.x_intern_atom(string name, bool only_if_exists)</TT>
1494 <DT><STRONG>Description:</STRONG></DT>
1495 <DD>Create a new atom. See <TT>XInternAtom</TT>(3) manual page for details.
1503 <DD><A NAME="fn:ioncore.x_set_text_property"></A>
1505 <DT><STRONG>Synopsis:</STRONG></DT>
1506 <DD><TT>void ioncore.x_set_text_property(integer win, integer atom, table tab)</TT>
1509 <DT><STRONG>Description:</STRONG></DT>
1510 <DD>Set a text property for a window. The fields of <TT>tab</TT> starting from
1511 1 should be the different null-separated parts of the property.
1512 See the <TT>XSetTextProperty</TT>(3) manual page for more information.
1520 <DD><A NAME="fn:ioncore.kpress"></A>
1522 <DT><STRONG>Synopsis:</STRONG></DT>
1523 <DD><TT>ioncore.kpress(keyspec, cmd, guard)</TT>
1526 <DT><STRONG>Description:</STRONG></DT>
1527 <DD>Creates a binding description table for the action of pressing a key given
1528 by <TT>keyspec</TT> (with possible modifiers) to the function <TT>cmd</TT>.
1529 The <TT>guard</TT> controls when the binding can be called.
1530 For more informationp see Section <A HREF="node4.html#sec:bindings">3.3</A>.
1538 <DD><A NAME="fn:ioncore.kpress_wait"></A>
1540 <DT><STRONG>Synopsis:</STRONG></DT>
1541 <DD><TT>ioncore.kpress_wait(keyspec, cmd, guard)</TT>
1544 <DT><STRONG>Description:</STRONG></DT>
1545 <DD>This is similar to <A HREF="#fn:ioncore.kpress"><TT>ioncore.kpress</TT></A> but after calling <TT>cmd</TT>,
1546 Ioncore waits for all modifiers to be released before processing
1547 any further actions.
1548 For more information on bindings, see Section <A HREF="node4.html#sec:bindings">3.3</A>.
1556 <DD><A NAME="fn:ioncore.defer"></A>
1558 <DT><STRONG>Synopsis:</STRONG></DT>
1559 <DD><TT>bool ioncore.defer(function fn)</TT>
1562 <DT><STRONG>Description:</STRONG></DT>
1563 <DD>Defer execution of <TT>fn</TT> until the main loop.
1571 <DD><A NAME="fn:ioncore.get_hook"></A>
1573 <DT><STRONG>Synopsis:</STRONG></DT>
1574 <DD><TT>WHook ioncore.get_hook(string name)</TT>
1577 <DT><STRONG>Description:</STRONG></DT>
1578 <DD>Find named hook <TT>name</TT>.
1586 <DD><A NAME="fn:ioncore.match_winprop_dflt"></A>
1588 <DT><STRONG>Synopsis:</STRONG></DT>
1589 <DD><TT>ioncore.match_winprop_dflt(prop, cwin, id)</TT>
1592 <DT><STRONG>Description:</STRONG></DT>
1593 <DD>The basic name-based winprop matching criteria.
1601 <DD><A NAME="fn:ioncore.mclick"></A>
1603 <DT><STRONG>Synopsis:</STRONG></DT>
1604 <DD><TT>ioncore.mclick(buttonspec, cmd, guard)</TT>
1607 <DT><STRONG>Description:</STRONG></DT>
1608 <DD>Creates a binding description table for the action of clicking a mouse
1609 button while possible modifier keys are pressed,
1610 both given by <TT>buttonspec</TT>, to the function <TT>cmd</TT>.
1611 For more information, see Section <A HREF="node4.html#sec:bindings">3.3</A>.
1619 <DD><A NAME="fn:ioncore.mdblclick"></A>
1621 <DT><STRONG>Synopsis:</STRONG></DT>
1622 <DD><TT>ioncore.mdblclick(buttonspec, cmd, guard)</TT>
1625 <DT><STRONG>Description:</STRONG></DT>
1626 <DD>Similar to <A HREF="#fn:ioncore.mclick"><TT>ioncore.mclick</TT></A> but for double-click.
1627 Also see Section <A HREF="node4.html#sec:bindings">3.3</A>.
1635 <DD><A NAME="fn:ioncore.mdrag"></A>
1637 <DT><STRONG>Synopsis:</STRONG></DT>
1638 <DD><TT>ioncore.mdrag(buttonspec, cmd, guard)</TT>
1641 <DT><STRONG>Description:</STRONG></DT>
1642 <DD>Creates a binding description table for the action of moving the mouse
1643 (or other pointing device) while the button given by <TT>buttonspec</TT>
1644 is held pressed and the modifiers given by <TT>buttonspec</TT> were pressed
1645 when the button was initially pressed.
1646 Also see section <A HREF="node4.html#sec:bindings">3.3</A>.
1654 <DD><A NAME="fn:ioncore.menuentry"></A>
1656 <DT><STRONG>Synopsis:</STRONG></DT>
1657 <DD><TT>ioncore.menuentry(name, cmd, guard_or_opts)</TT>
1660 <DT><STRONG>Description:</STRONG></DT>
1661 <DD>Use this function to define normal menu entries. The string <TT>name</TT>
1662 is the string shown in the visual representation of menu. The
1663 parameter <TT>cmd</TT> and <TT>guard_or_opts</TT> (when string) are similar
1664 to those of <A HREF="#fn:ioncore.defbindings"><TT>ioncore.defbindings</TT></A>. If <TT>guard_or_opts</TT> is
1665 a table, it may contains the <TT>guard</TT> field, and the <TT>priority</TT>
1666 field, for controlling positioning of entries in context menus.
1667 (The default priority is 1 for most entries, and -1 for auto-generated
1676 <DD><A NAME="fn:ioncore.mpress"></A>
1678 <DT><STRONG>Synopsis:</STRONG></DT>
1679 <DD><TT>ioncore.mpress(buttonspec, cmd, guard)</TT>
1682 <DT><STRONG>Description:</STRONG></DT>
1683 <DD>Similar to <A HREF="#fn:ioncore.mclick"><TT>ioncore.mclick</TT></A> but for just pressing the mouse button.
1684 Also see Section <A HREF="node4.html#sec:bindings">3.3</A>.
1692 <DD><A NAME="fn:ioncore.refresh_stylelist"></A>
1694 <DT><STRONG>Synopsis:</STRONG></DT>
1695 <DD><TT>ioncore.refresh_stylelist()</TT>
1698 <DT><STRONG>Description:</STRONG></DT>
1699 <DD>Refresh list of known style files.
1707 <DD><A NAME="fn:ioncore.submap"></A>
1709 <DT><STRONG>Synopsis:</STRONG></DT>
1710 <DD><TT>ioncore.submap(keyspec, list)</TT>
1713 <DT><STRONG>Description:</STRONG></DT>
1714 <DD>Returns a function that creates a submap binding description table.
1715 When the key press action <TT>keyspec</TT> occurs, Ioncore will wait for
1716 a further key presse and act according to the submap.
1717 For details, see Section <A HREF="node4.html#sec:bindings">3.3</A>.
1725 <DD><A NAME="fn:ioncore.submap_enter"></A>
1727 <DT><STRONG>Synopsis:</STRONG></DT>
1728 <DD><TT>ioncore.submap_enter(cmd, guard)</TT>
1731 <DT><STRONG>Description:</STRONG></DT>
1732 <DD>Submap enter event for bindings.
1740 <DD><A NAME="fn:ioncore.submap_wait"></A>
1742 <DT><STRONG>Synopsis:</STRONG></DT>
1743 <DD><TT>ioncore.submap_wait(cmd, guard)</TT>
1746 <DT><STRONG>Description:</STRONG></DT>
1747 <DD>Submap modifier release event for bindings.
1755 <DD><A NAME="fn:ioncore.submenu"></A>
1757 <DT><STRONG>Synopsis:</STRONG></DT>
1758 <DD><TT>ioncore.submenu(name, sub_or_name, options)</TT>
1761 <DT><STRONG>Description:</STRONG></DT>
1762 <DD>Use this function to define menu entries for submenus. The parameter
1763 <A HREF="#fn:sub_or_name"><TT>sub_or_name</TT></A> is either a table of menu entries or the name
1764 of an already defined menu. The initial menu entry to highlight can be
1765 specified by <TT>options.initial</TT> as either an integer starting from 1,
1766 or a function that returns such a number. Another option supported is
1767 <TT>options.noautoexpand</TT> that will cause <A HREF="#fn:mod_query.query_menu"><TT>mod_query.query_menu</TT></A>
1768 to not automatically expand this submenu.
1776 <DD><A NAME="fn:ioncore.tabnum.clear"></A>
1778 <DT><STRONG>Synopsis:</STRONG></DT>
1779 <DD><TT>ioncore.tabnum.clear()</TT>
1782 <DT><STRONG>Description:</STRONG></DT>
1783 <DD>Clear all tab numbers set by <A HREF="#fn:ioncore.tabnum.show"><TT>ioncore.tabnum.show</TT></A>.
1791 <DD><A NAME="fn:ioncore.tabnum.show"></A>
1793 <DT><STRONG>Synopsis:</STRONG></DT>
1794 <DD><TT>ioncore.tabnum.show(frame, delay)</TT>
1797 <DT><STRONG>Description:</STRONG></DT>
1798 <DD>Show tab numbers on <TT>frame</TT>, clearing them when submap
1799 grab is released the next time. If <TT>delay</TT> is given, in
1800 milliseconds, the numbers are not actually displayed until this
1809 <DD><A NAME="fn:ioncore.tagged_attach"></A>
1811 <DT><STRONG>Synopsis:</STRONG></DT>
1812 <DD><TT>ioncore.tagged_attach(reg, param)</TT>
1815 <DT><STRONG>Description:</STRONG></DT>
1816 <DD>Attach tagged regions to <TT>reg</TT>. The method of attach
1817 depends on the types of attached regions and whether <TT>reg</TT>
1818 implements <TT>attach_framed</TT> and <TT>attach</TT>. If <TT>param</TT>
1819 is not set, the default of <code>{switchto=true}</code> is used.
1820 The function returns <TT>true</TT> if all tagged regions were
1821 succesfully attached, and <TT>false</TT> otherwisse.
1828 <H3><A NAME="SECTION00711000000000000000">
1829 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN> WClientWin functions</A>
1835 <DD><A NAME="fn:WClientWin.get_ident"></A>
1837 <DT><STRONG>Synopsis:</STRONG></DT>
1838 <DD><TT>table WClientWin.get_ident(WClientWin cwin)</TT>
1841 <DT><STRONG>Description:</STRONG></DT>
1842 <DD>Returns a table containing the properties <TT>WM_CLASS</TT> (table entries
1843 <TT>instance</TT> and <TT>class</TT>) and <TT>WM_WINDOW_ROLE</TT> (<TT>role</TT>)
1844 properties for <TT>cwin</TT>. If a property is not set, the corresponding
1845 field(s) are unset in the table.
1853 <DD><A NAME="fn:WClientWin.kill"></A>
1855 <DT><STRONG>Synopsis:</STRONG></DT>
1856 <DD><TT>void WClientWin.kill(WClientWin cwin)</TT>
1859 <DT><STRONG>Description:</STRONG></DT>
1860 <DD>Attempt to kill (with <TT>XKillWindow</TT>) the client that owns
1861 the X window correspoding to <TT>cwin</TT>.
1869 <DD><A NAME="fn:WClientWin.nudge"></A>
1871 <DT><STRONG>Synopsis:</STRONG></DT>
1872 <DD><TT>void WClientWin.nudge(WClientWin cwin)</TT>
1875 <DT><STRONG>Description:</STRONG></DT>
1876 <DD>Attempts to fix window size problems with non-ICCCM compliant
1885 <DD><A NAME="fn:WClientWin.quote_next"></A>
1887 <DT><STRONG>Synopsis:</STRONG></DT>
1888 <DD><TT>void WClientWin.quote_next(WClientWin cwin)</TT>
1891 <DT><STRONG>Description:</STRONG></DT>
1892 <DD>Send next key press directly to <TT>cwin</TT>.
1900 <DD><A NAME="fn:WClientWin.xid"></A>
1902 <DT><STRONG>Synopsis:</STRONG></DT>
1903 <DD><TT>double WClientWin.xid(WClientWin cwin)</TT>
1906 <DT><STRONG>Description:</STRONG></DT>
1907 <DD>Return the X window id for the client window.
1914 <H3><A NAME="SECTION00712000000000000000">
1915 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">2</SPAN> WFrame functions</A>
1921 <DD><A NAME="fn:WFrame.is_shaded"></A>
1923 <DT><STRONG>Synopsis:</STRONG></DT>
1924 <DD><TT>bool WFrame.is_shaded(WFrame frame)</TT>
1927 <DT><STRONG>Description:</STRONG></DT>
1928 <DD>Is <TT>frame</TT> shaded?
1936 <DD><A NAME="fn:WFrame.maximize_horiz"></A>
1938 <DT><STRONG>Synopsis:</STRONG></DT>
1939 <DD><TT>void WFrame.maximize_horiz(WFrame frame)</TT>
1942 <DT><STRONG>Description:</STRONG></DT>
1943 <DD>Attempt to toggle horizontal maximisation of <TT>frame</TT>.
1951 <DD><A NAME="fn:WFrame.maximize_vert"></A>
1953 <DT><STRONG>Synopsis:</STRONG></DT>
1954 <DD><TT>void WFrame.maximize_vert(WFrame frame)</TT>
1957 <DT><STRONG>Description:</STRONG></DT>
1958 <DD>Attempt to toggle vertical maximisation of <TT>frame</TT>.
1966 <DD><A NAME="fn:WFrame.mode"></A>
1968 <DT><STRONG>Synopsis:</STRONG></DT>
1969 <DD><TT>string WFrame.mode(WFrame frame)</TT>
1972 <DT><STRONG>Description:</STRONG></DT>
1981 <DD><A NAME="fn:WFrame.p_switch_tab"></A>
1983 <DT><STRONG>Synopsis:</STRONG></DT>
1984 <DD><TT>void WFrame.p_switch_tab(WFrame frame)</TT>
1987 <DT><STRONG>Description:</STRONG></DT>
1988 <DD>Display the region corresponding to the tab that the user pressed on.
1989 This function should only be used by binding it to a mouse action.
1997 <DD><A NAME="fn:WFrame.p_tabdrag"></A>
1999 <DT><STRONG>Synopsis:</STRONG></DT>
2000 <DD><TT>void WFrame.p_tabdrag(WFrame frame)</TT>
2003 <DT><STRONG>Description:</STRONG></DT>
2004 <DD>Start dragging the tab that the user pressed on with the pointing device.
2005 This function should only be used by binding it to <SPAN CLASS="textit">mpress</SPAN> or
2006 <SPAN CLASS="textit">mdrag</SPAN> action with area `<TT>tab</TT>'.
2014 <DD><A NAME="fn:WFrame.set_grattr"></A>
2016 <DT><STRONG>Synopsis:</STRONG></DT>
2017 <DD><TT>bool WFrame.set_grattr(WFrame frame, string attr, string how)</TT>
2020 <DT><STRONG>Description:</STRONG></DT>
2021 <DD>Set extra drawing engine attributes for the frame.
2022 The parameter <TT>attr</TT> is the attribute, and <TT>how</TT> is
2023 one of `<TT>set</TT>', `<TT>unset</TT>', or `<TT>toggle</TT>'.
2031 <DD><A NAME="fn:WFrame.set_mode"></A>
2033 <DT><STRONG>Synopsis:</STRONG></DT>
2034 <DD><TT>bool WFrame.set_mode(WFrame frame, string modestr)</TT>
2037 <DT><STRONG>Description:</STRONG></DT>
2046 <DD><A NAME="fn:WFrame.set_shaded"></A>
2048 <DT><STRONG>Synopsis:</STRONG></DT>
2049 <DD><TT>bool WFrame.set_shaded(WFrame frame, string how)</TT>
2052 <DT><STRONG>Description:</STRONG></DT>
2053 <DD>Set shading state according to the parameter <TT>how</TT>
2054 (`<TT>set</TT>', `<TT>unset</TT>', or `<TT>toggle</TT>').
2055 Resulting state is returned, which may not be
2063 <H3><A NAME="SECTION00713000000000000000">
2064 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">3</SPAN> WGroup functions</A>
2070 <DD><A NAME="fn:WGroup.attach"></A>
2072 <DT><STRONG>Synopsis:</STRONG></DT>
2073 <DD><TT>WRegion WGroup.attach(WGroup ws, WRegion reg, table param)</TT>
2076 <DT><STRONG>Description:</STRONG></DT>
2077 <DD>Attach and reparent existing region <TT>reg</TT> to <TT>ws</TT>.
2078 The table <TT>param</TT> may contain the fields <TT>index</TT> and
2079 <TT>switchto</TT> that are interpreted as for <A HREF="#fn:WMPlex.attach_new"><TT>WMPlex.attach_new</TT></A>.
2087 <DD><A NAME="fn:WGroup.attach_new"></A>
2089 <DT><STRONG>Synopsis:</STRONG></DT>
2090 <DD><TT>WRegion WGroup.attach_new(WGroup ws, table param)</TT>
2093 <DT><STRONG>Description:</STRONG></DT>
2094 <DD>Create a new region to be managed by <TT>ws</TT>. At least the following
2095 fields in <TT>param</TT> are understood:
2098 <TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
2099 <TR><TD ALIGN="LEFT">Field</TD>
2100 <TD ALIGN="LEFT">Description</TD>
2102 <TR><TD ALIGN="LEFT"><TT>type</TT></TD>
2103 <TD ALIGN="LEFT">(string) Class of the object to be created. Mandatory.</TD>
2105 <TR><TD ALIGN="LEFT"><TT>name</TT></TD>
2106 <TD ALIGN="LEFT">(string) Name of the object to be created.</TD>
2108 <TR><TD ALIGN="LEFT"><TT>switchto</TT></TD>
2109 <TD ALIGN="LEFT">(boolean) Should the region be switched to?</TD>
2111 <TR><TD ALIGN="LEFT"><TT>level</TT></TD>
2112 <TD ALIGN="LEFT">(integer) Stacking level; default is 1.</TD>
2114 <TR><TD ALIGN="LEFT"><TT>modal</TT></TD>
2115 <TD ALIGN="LEFT">(boolean) Make object modal; ignored if level is set.</TD>
2117 <TR><TD ALIGN="LEFT"><TT>sizepolicy</TT></TD>
2118 <TD ALIGN="LEFT">(string) Size policy; see Section <A HREF="#sec:sizepolicies">6.10.1</A>.</TD>
2120 <TR><TD ALIGN="LEFT"><TT>bottom</TT></TD>
2121 <TD ALIGN="LEFT">(boolean) Mark the attached region as the
2122 ``bottom'' of <TT>ws</TT>.</TD>
2127 In addition parameters to the region to be created are passed in this
2136 <DD><A NAME="fn:WGroup.bottom"></A>
2138 <DT><STRONG>Synopsis:</STRONG></DT>
2139 <DD><TT>WRegion WGroup.bottom(WGroup ws)</TT>
2142 <DT><STRONG>Description:</STRONG></DT>
2143 <DD>Returns the `bottom' of <TT>ws</TT>.
2151 <DD><A NAME="fn:WGroup.is_fullscreen"></A>
2153 <DT><STRONG>Synopsis:</STRONG></DT>
2154 <DD><TT>bool WGroup.is_fullscreen(WGroup grp)</TT>
2157 <DT><STRONG>Description:</STRONG></DT>
2158 <DD>Is <TT>reg</TT> in full screen mode?
2166 <DD><A NAME="fn:WGroup.managed_i"></A>
2168 <DT><STRONG>Synopsis:</STRONG></DT>
2169 <DD><TT>bool WGroup.managed_i(WGroup ws, function iterfn)</TT>
2172 <DT><STRONG>Description:</STRONG></DT>
2173 <DD>Iterate over managed regions of <TT>ws</TT> until <TT>iterfn</TT> returns
2175 The function itself returns <TT>true</TT> if it reaches the end of list
2176 without this happening.
2184 <DD><A NAME="fn:WGroup.set_bottom"></A>
2186 <DT><STRONG>Synopsis:</STRONG></DT>
2187 <DD><TT>bool WGroup.set_bottom(WGroup ws, WRegion reg)</TT>
2190 <DT><STRONG>Description:</STRONG></DT>
2191 <DD>Sets the `bottom' of <TT>ws</TT>. The region <TT>reg</TT> must already
2192 be managed by <TT>ws</TT>, unless <TT>nil</TT>.
2200 <DD><A NAME="fn:WGroup.set_fullscreen"></A>
2202 <DT><STRONG>Synopsis:</STRONG></DT>
2203 <DD><TT>bool WGroup.set_fullscreen(WGroup grp, string how)</TT>
2206 <DT><STRONG>Description:</STRONG></DT>
2207 <DD>Set client window <TT>reg</TT> full screen state according to the
2208 parameter <TT>how</TT> (one of `<TT>set</TT>', `<TT>unset</TT>', or
2209 `<TT>toggle</TT>'). Resulting state is returned, which may not be
2217 <H3><A NAME="SECTION00714000000000000000">
2218 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">4</SPAN> WGroupCW functions</A>
2223 <H3><A NAME="SECTION00715000000000000000">
2224 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">5</SPAN> WGroupWS functions</A>
2230 <DD><A NAME="fn:WGroupWS.attach_framed"></A>
2232 <DT><STRONG>Synopsis:</STRONG></DT>
2233 <DD><TT>bool WGroupWS.attach_framed(WGroupWS ws, WRegion reg, table t)</TT>
2236 <DT><STRONG>Description:</STRONG></DT>
2237 <DD>Attach region <TT>reg</TT> on <TT>ws</TT>.
2238 At least the following fields in <TT>t</TT> are supported:
2241 <TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
2242 <TR><TD ALIGN="LEFT">Field</TD>
2243 <TD ALIGN="LEFT">Description</TD>
2245 <TR><TD ALIGN="LEFT"><TT>switchto</TT></TD>
2246 <TD ALIGN="LEFT">Should the region be switched to (boolean)? Optional.</TD>
2248 <TR><TD ALIGN="LEFT"><TT>geom</TT></TD>
2249 <TD ALIGN="LEFT">Geometry; <TT>x</TT> and <TT>y</TT>, if set, indicates top-left of
2250 the frame to be created while <TT>width</TT> and <TT>height</TT>, if set, indicate
2251 the size of the client window within that frame. Optional.</TD>
2260 <H3><A NAME="SECTION00716000000000000000">
2261 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">6</SPAN> WHook functions</A>
2267 <DD><A NAME="fn:WHook.add"></A>
2269 <DT><STRONG>Synopsis:</STRONG></DT>
2270 <DD><TT>bool WHook.add(WHook hk, function efn)</TT>
2273 <DT><STRONG>Description:</STRONG></DT>
2274 <DD>Add <TT>efn</TT> to the list of functions to be called when the
2275 hook <TT>hk</TT> is triggered.
2283 <DD><A NAME="fn:WHook.listed"></A>
2285 <DT><STRONG>Synopsis:</STRONG></DT>
2286 <DD><TT>bool WHook.listed(WHook hk, function efn)</TT>
2289 <DT><STRONG>Description:</STRONG></DT>
2290 <DD>Is <TT>fn</TT> hooked to hook <TT>hk</TT>?
2298 <DD><A NAME="fn:WHook.remove"></A>
2300 <DT><STRONG>Synopsis:</STRONG></DT>
2301 <DD><TT>bool WHook.remove(WHook hk, function efn)</TT>
2304 <DT><STRONG>Description:</STRONG></DT>
2305 <DD>Remove <TT>efn</TT> from the list of functions to be called when the
2306 hook <TT>hk</TT> is triggered.
2313 <H3><A NAME="SECTION00717000000000000000">
2314 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">7</SPAN> WInfoWin functions</A>
2320 <DD><A NAME="fn:WInfoWin.set_text"></A>
2322 <DT><STRONG>Synopsis:</STRONG></DT>
2323 <DD><TT>void WInfoWin.set_text(WInfoWin p, string str, integer maxw)</TT>
2326 <DT><STRONG>Description:</STRONG></DT>
2327 <DD>Set contents of the info window.
2334 <H3><A NAME="SECTION00718000000000000000">
2335 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">8</SPAN> WMPlex functions</A>
2341 <DD><A NAME="fn:WMPlex.attach"></A>
2343 <DT><STRONG>Synopsis:</STRONG></DT>
2344 <DD><TT>WRegion WMPlex.attach(WMPlex mplex, WRegion reg, table param)</TT>
2347 <DT><STRONG>Description:</STRONG></DT>
2348 <DD>Attach and reparent existing region <TT>reg</TT> to <TT>mplex</TT>.
2349 The table <TT>param</TT> may contain the fields <TT>index</TT> and
2350 <TT>switchto</TT> that are interpreted as for <A HREF="#fn:WMPlex.attach_new"><TT>WMPlex.attach_new</TT></A>.
2358 <DD><A NAME="fn:WMPlex.attach_new"></A>
2360 <DT><STRONG>Synopsis:</STRONG></DT>
2361 <DD><TT>WRegion WMPlex.attach_new(WMPlex mplex, table param)</TT>
2364 <DT><STRONG>Description:</STRONG></DT>
2365 <DD>Create a new region to be managed by <TT>mplex</TT>. At least the following
2366 fields in <TT>param</TT> are understood (all but <TT>type</TT> are optional).
2369 <TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
2370 <TR><TD ALIGN="LEFT">Field</TD>
2371 <TD ALIGN="LEFT">Description</TD>
2373 <TR><TD ALIGN="LEFT"><TT>type</TT></TD>
2374 <TD ALIGN="LEFT">(string) Class name (a string) of the object to be created.</TD>
2376 <TR><TD ALIGN="LEFT"><TT>name</TT></TD>
2377 <TD ALIGN="LEFT">(string) Name of the object to be created (a string).</TD>
2379 <TR><TD ALIGN="LEFT"><TT>switchto</TT></TD>
2380 <TD ALIGN="LEFT">(boolean) Should the region be switched to (boolean)?</TD>
2382 <TR><TD ALIGN="LEFT"><TT>unnumbered</TT></TD>
2383 <TD ALIGN="LEFT">(boolean) Do not put on the numbered mutually
2384 exclusive list.</TD>
2386 <TR><TD ALIGN="LEFT"><TT>index</TT></TD>
2387 <TD ALIGN="LEFT">(integer) Index on this list, same as for
2388 <A HREF="#fn:WMPlex.set_index"><TT>WMPlex.set_index</TT></A>.</TD>
2390 <TR><TD ALIGN="LEFT"><TT>level</TT></TD>
2391 <TD ALIGN="LEFT">(integer) Stacking level.</TD>
2393 <TR><TD ALIGN="LEFT"><TT>modal</TT></TD>
2394 <TD ALIGN="LEFT">(boolean) Shortcut for modal stacking level.</TD>
2396 <TR><TD ALIGN="LEFT"><TT>hidden</TT></TD>
2397 <TD ALIGN="LEFT">(boolean) Attach hidden, if not prevented
2398 by e.g. the mutually exclusive list being empty.
2399 This option overrides <TT>switchto</TT>.</TD>
2401 <TR><TD ALIGN="LEFT"><TT>passive</TT></TD>
2402 <TD ALIGN="LEFT">(boolean) Skip in certain focusing operations.</TD>
2404 <TR><TD ALIGN="LEFT"><TT>pseudomodal</TT></TD>
2405 <TD ALIGN="LEFT">(boolean) The attached region is ``pseudomodal''
2406 if the stacking level dictates it to be modal.
2407 This means that the region may be hidden to display
2408 regions with lesser stacking levels.</TD>
2410 <TR><TD ALIGN="LEFT"><TT>sizepolicy</TT></TD>
2411 <TD ALIGN="LEFT">(string) Size policy; see Section <A HREF="#sec:sizepolicies">6.10.1</A>.</TD>
2413 <TR><TD ALIGN="LEFT"><TT>geom</TT></TD>
2414 <TD ALIGN="LEFT">(table) Geometry specification.</TD>
2419 In addition parameters to the region to be created are passed in this
2428 <DD><A NAME="fn:WMPlex.dec_index"></A>
2430 <DT><STRONG>Synopsis:</STRONG></DT>
2431 <DD><TT>void WMPlex.dec_index(WMPlex mplex, WRegion r)</TT>
2434 <DT><STRONG>Description:</STRONG></DT>
2435 <DD>Move <TT>r</TT> ``left'' within objects managed by <TT>mplex</TT> on list 1.
2443 <DD><A NAME="fn:WMPlex.get_index"></A>
2445 <DT><STRONG>Synopsis:</STRONG></DT>
2446 <DD><TT>integer WMPlex.get_index(WMPlex mplex, WRegion reg)</TT>
2449 <DT><STRONG>Description:</STRONG></DT>
2450 <DD>Get index of <TT>reg</TT> on the mutually exclusive list of <TT>mplex</TT>.
2451 The indices begin from zero.. If <TT>reg</TT> is not on the list,
2460 <DD><A NAME="fn:WMPlex.get_stdisp"></A>
2462 <DT><STRONG>Synopsis:</STRONG></DT>
2463 <DD><TT>table WMPlex.get_stdisp(WMPlex mplex)</TT>
2466 <DT><STRONG>Description:</STRONG></DT>
2467 <DD>Get status display information. See <A HREF="#fn:WMPlex.get_stdisp"><TT>WMPlex.get_stdisp</TT></A> for
2468 information on the fields.
2476 <DD><A NAME="fn:WMPlex.inc_index"></A>
2478 <DT><STRONG>Synopsis:</STRONG></DT>
2479 <DD><TT>void WMPlex.inc_index(WMPlex mplex, WRegion r)</TT>
2482 <DT><STRONG>Description:</STRONG></DT>
2483 <DD>Move <TT>r</TT> ``right'' within objects managed by <TT>mplex</TT> on list 1.
2491 <DD><A NAME="fn:WMPlex.is_hidden"></A>
2493 <DT><STRONG>Synopsis:</STRONG></DT>
2494 <DD><TT>bool WMPlex.is_hidden(WMPlex mplex, WRegion reg)</TT>
2497 <DT><STRONG>Description:</STRONG></DT>
2498 <DD>Is <TT>reg</TT> on within <TT>mplex</TT> and hidden?
2506 <DD><A NAME="fn:WMPlex.managed_i"></A>
2508 <DT><STRONG>Synopsis:</STRONG></DT>
2509 <DD><TT>bool WMPlex.managed_i(WMPlex mplex, function iterfn)</TT>
2512 <DT><STRONG>Description:</STRONG></DT>
2513 <DD>Iterate over managed regions of <TT>mplex</TT> until <TT>iterfn</TT> returns
2515 The function itself returns <TT>true</TT> if it reaches the end of list
2516 without this happening.
2524 <DD><A NAME="fn:WMPlex.mx_count"></A>
2526 <DT><STRONG>Synopsis:</STRONG></DT>
2527 <DD><TT>integer WMPlex.mx_count(WMPlex mplex)</TT>
2530 <DT><STRONG>Description:</STRONG></DT>
2531 <DD>Returns the number of objects on the mutually exclusive list of <TT>mplex</TT>.
2539 <DD><A NAME="fn:WMPlex.mx_current"></A>
2541 <DT><STRONG>Synopsis:</STRONG></DT>
2542 <DD><TT>WRegion WMPlex.mx_current(WMPlex mplex)</TT>
2545 <DT><STRONG>Description:</STRONG></DT>
2546 <DD>Returns the managed object currently active within the mutually exclusive
2547 list of <TT>mplex</TT>.
2555 <DD><A NAME="fn:WMPlex.mx_i"></A>
2557 <DT><STRONG>Synopsis:</STRONG></DT>
2558 <DD><TT>bool WMPlex.mx_i(WMPlex mplex, function iterfn)</TT>
2561 <DT><STRONG>Description:</STRONG></DT>
2562 <DD>Iterate over numbered/mutually exclusive region list of <TT>mplex</TT>
2563 until <TT>iterfn</TT> returns <TT>false</TT>.
2564 The function itself returns <TT>true</TT> if it reaches the end of list
2565 without this happening.
2573 <DD><A NAME="fn:WMPlex.mx_nth"></A>
2575 <DT><STRONG>Synopsis:</STRONG></DT>
2576 <DD><TT>WRegion WMPlex.mx_nth(WMPlex mplex, integer n)</TT>
2579 <DT><STRONG>Description:</STRONG></DT>
2580 <DD>Returns the <TT>n</TT>:th object on the mutually exclusive
2581 list of <TT>mplex</TT>.
2589 <DD><A NAME="fn:WMPlex.set_hidden"></A>
2591 <DT><STRONG>Synopsis:</STRONG></DT>
2592 <DD><TT>bool WMPlex.set_hidden(WMPlex mplex, WRegion reg, string how)</TT>
2595 <DT><STRONG>Description:</STRONG></DT>
2596 <DD>Set the visibility of the region <TT>reg</TT> on <TT>mplex</TT>
2597 as specified with the parameter <TT>how</TT>
2598 (one of `<TT>set</TT>', `<TT>unset</TT>', or `<TT>toggle</TT>').
2599 The resulting state is returned.
2607 <DD><A NAME="fn:WMPlex.set_index"></A>
2609 <DT><STRONG>Synopsis:</STRONG></DT>
2610 <DD><TT>void WMPlex.set_index(WMPlex mplex, WRegion reg, integer index)</TT>
2613 <DT><STRONG>Description:</STRONG></DT>
2614 <DD>Set index of <TT>reg</TT> to <TT>index</TT> within the mutually exclusive
2615 list of <TT>mplex</TT>. Special values for <TT>index</TT> are:
2616 <TABLE CELLPADDING=3 WIDTH="100%">
2617 <TR><TD ALIGN="LEFT"><SPAN CLASS="MATH"><IMG
2618 WIDTH="27" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
2620 ALT="$-1$"></SPAN></TD>
2621 <TD ALIGN="LEFT">Last.</TD>
2623 <TR><TD ALIGN="LEFT"><SPAN CLASS="MATH"><IMG
2624 WIDTH="27" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
2626 ALT="$-2$"></SPAN></TD>
2627 <TD ALIGN="LEFT">After <A HREF="#fn:WMPlex.mx_current"><TT>WMPlex.mx_current</TT></A>.</TD>
2637 <DD><A NAME="fn:WMPlex.set_stdisp"></A>
2639 <DT><STRONG>Synopsis:</STRONG></DT>
2640 <DD><TT>WRegion WMPlex.set_stdisp(WMPlex mplex, table t)</TT>
2643 <DT><STRONG>Description:</STRONG></DT>
2644 <DD>Set/create status display for <TT>mplex</TT>. Table is a standard
2645 description of the object to be created (as passed to e.g.
2646 <A HREF="#fn:WMPlex.attach_new"><TT>WMPlex.attach_new</TT></A>). In addition, the following fields are
2650 <TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
2651 <TR><TD ALIGN="LEFT">Field</TD>
2652 <TD ALIGN="LEFT">Description</TD>
2654 <TR><TD ALIGN="LEFT"><TT>pos</TT></TD>
2655 <TD ALIGN="LEFT">(string) The corner of the screen to place the status
2656 display in: one of `<TT>tl</TT>', `<TT>tr</TT>', `<TT>bl</TT>'
2657 or `<TT>br</TT>'.</TD>
2659 <TR><TD ALIGN="LEFT"><TT>fullsize</TT></TD>
2660 <TD ALIGN="LEFT">(boolean) Waste all available space.</TD>
2662 <TR><TD ALIGN="LEFT"><TT>action</TT></TD>
2663 <TD ALIGN="LEFT">(string) If this field is set to `<TT>keep</TT>',
2664 <TT>pos</TT> and <TT>fullsize</TT> are changed for the existing
2665 status display. If this field is set to `<TT>remove</TT>',
2666 the existing status display is removed. If this
2667 field is not set or is set to `<TT>replace</TT>', a
2668 new status display is created and the old, if any,
2679 <DD><A NAME="fn:WMPlex.switch_next"></A>
2681 <DT><STRONG>Synopsis:</STRONG></DT>
2682 <DD><TT>void WMPlex.switch_next(WMPlex mplex)</TT>
2685 <DT><STRONG>Description:</STRONG></DT>
2686 <DD>Have <TT>mplex</TT> display next (wrt. currently selected) object managed
2695 <DD><A NAME="fn:WMPlex.switch_nth"></A>
2697 <DT><STRONG>Synopsis:</STRONG></DT>
2698 <DD><TT>void WMPlex.switch_nth(WMPlex mplex, integer n)</TT>
2701 <DT><STRONG>Description:</STRONG></DT>
2702 <DD>Have <TT>mplex</TT> display the <TT>n</TT>:th object managed by it.
2710 <DD><A NAME="fn:WMPlex.switch_prev"></A>
2712 <DT><STRONG>Synopsis:</STRONG></DT>
2713 <DD><TT>void WMPlex.switch_prev(WMPlex mplex)</TT>
2716 <DT><STRONG>Description:</STRONG></DT>
2717 <DD>Have <TT>mplex</TT> display previous (wrt. currently selected) object
2725 <H3><A NAME="SECTION00719000000000000000">
2726 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN> WMoveresMode functions</A>
2732 <DD><A NAME="fn:WMoveresMode.cancel"></A>
2734 <DT><STRONG>Synopsis:</STRONG></DT>
2735 <DD><TT>void WMoveresMode.cancel(WMoveresMode mode)</TT>
2738 <DT><STRONG>Description:</STRONG></DT>
2739 <DD>Return from move/resize cancelling changes if opaque
2740 move/resize has not been enabled.
2748 <DD><A NAME="fn:WMoveresMode.finish"></A>
2750 <DT><STRONG>Synopsis:</STRONG></DT>
2751 <DD><TT>void WMoveresMode.finish(WMoveresMode mode)</TT>
2754 <DT><STRONG>Description:</STRONG></DT>
2755 <DD>Return from move/resize mode and apply changes unless opaque
2756 move/resize is enabled.
2764 <DD><A NAME="fn:WMoveresMode.geom"></A>
2766 <DT><STRONG>Synopsis:</STRONG></DT>
2767 <DD><TT>table WMoveresMode.geom(WMoveresMode mode)</TT>
2770 <DT><STRONG>Description:</STRONG></DT>
2771 <DD>Returns current geometry.
2779 <DD><A NAME="fn:WMoveresMode.move"></A>
2781 <DT><STRONG>Synopsis:</STRONG></DT>
2782 <DD><TT>void WMoveresMode.move(WMoveresMode mode, integer horizmul, integer vertmul)</TT>
2785 <DT><STRONG>Description:</STRONG></DT>
2786 <DD>Move resize mode target one step:
2789 <TABLE CELLPADDING=3 BORDER="1">
2790 <TR><TD ALIGN="RIGHT"><TT>horizmul</TT>/<TT>vertmul</TT></TD>
2791 <TD ALIGN="LEFT">effect</TD>
2793 <TR><TD ALIGN="RIGHT">-1</TD>
2794 <TD ALIGN="LEFT">Move left/up</TD>
2796 <TR><TD ALIGN="RIGHT">0</TD>
2797 <TD ALIGN="LEFT">No effect</TD>
2799 <TR><TD ALIGN="RIGHT">1</TD>
2800 <TD ALIGN="LEFT">Move right/down</TD>
2810 <DD><A NAME="fn:WMoveresMode.resize"></A>
2812 <DT><STRONG>Synopsis:</STRONG></DT>
2813 <DD><TT>void WMoveresMode.resize(WMoveresMode mode, integer left, integer right, integer top, integer bottom)</TT>
2816 <DT><STRONG>Description:</STRONG></DT>
2817 <DD>Shrink or grow resize mode target one step in each direction.
2818 Acceptable values for the parameters <TT>left</TT>, <TT>right</TT>, <TT>top</TT>
2819 and <TT>bottom</TT> are as follows: -1: shrink along,
2820 0: do not change, 1: grow along corresponding border.
2828 <DD><A NAME="fn:WMoveresMode.rqgeom"></A>
2830 <DT><STRONG>Synopsis:</STRONG></DT>
2831 <DD><TT>table WMoveresMode.rqgeom(WMoveresMode mode, table g)</TT>
2834 <DT><STRONG>Description:</STRONG></DT>
2835 <DD>Request exact geometry in move/resize mode. For details on parameters,
2836 see <A HREF="#fn:WRegion.rqgeom"><TT>WRegion.rqgeom</TT></A>.
2843 <H3><A NAME="SECTION007110000000000000000">
2844 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">10</SPAN> WRegion functions</A>
2850 <DD><A NAME="fn:WRegion.begin_kbresize"></A>
2852 <DT><STRONG>Synopsis:</STRONG></DT>
2853 <DD><TT>WMoveresMode WRegion.begin_kbresize(WRegion reg)</TT>
2856 <DT><STRONG>Description:</STRONG></DT>
2857 <DD>Enter move/resize mode for <TT>reg</TT>. The bindings set with
2858 <A HREF="#fn:ioncore.set_bindings"><TT>ioncore.set_bindings</TT></A> for WMoveresMode are used in
2859 this mode. Of the functions exported by the Ion C core, only
2860 <A HREF="#fn:WMoveresMode.resize"><TT>WMoveresMode.resize</TT></A>, <A HREF="#fn:WMoveresMode.move"><TT>WMoveresMode.move</TT></A>,
2861 <A HREF="#fn:WMoveresMode.cancel"><TT>WMoveresMode.cancel</TT></A> and <A HREF="#fn:WMoveresMode.end"><TT>WMoveresMode.end</TT></A> are
2862 allowed to be called while in this mode.
2870 <DD><A NAME="fn:WRegion.current"></A>
2872 <DT><STRONG>Synopsis:</STRONG></DT>
2873 <DD><TT>WRegion WRegion.current(WRegion mgr)</TT>
2876 <DT><STRONG>Description:</STRONG></DT>
2877 <DD>Return the object, if any, that is considered ``currently active''
2878 within the objects managed by <TT>mplex</TT>.
2886 <DD><A NAME="fn:WRegion.geom"></A>
2888 <DT><STRONG>Synopsis:</STRONG></DT>
2889 <DD><TT>table WRegion.geom(WRegion reg)</TT>
2892 <DT><STRONG>Description:</STRONG></DT>
2893 <DD>Returns the geometry of <TT>reg</TT> within its parent; a table with fields
2894 <TT>x</TT>, <TT>y</TT>, <TT>w</TT> and <TT>h</TT>.
2902 <DD><A NAME="fn:WRegion.get_configuration"></A>
2904 <DT><STRONG>Synopsis:</STRONG></DT>
2905 <DD><TT>table WRegion.get_configuration(WRegion reg, bool clientwins)</TT>
2908 <DT><STRONG>Description:</STRONG></DT>
2909 <DD>Get configuration tree. If <TT>clientwins</TT> is unset, client windows
2918 <DD><A NAME="fn:WRegion.goto"></A>
2920 <DT><STRONG>Synopsis:</STRONG></DT>
2921 <DD><TT>bool WRegion.goto(WRegion reg)</TT>
2924 <DT><STRONG>Description:</STRONG></DT>
2925 <DD>Attempt to display <TT>reg</TT>, save region activity status and then
2926 warp to (or simply set focus to if warping is disabled) <TT>reg</TT>.
2929 Note that this function is asynchronous; the region will not
2930 actually have received the focus when this function returns.
2938 <DD><A NAME="fn:WRegion.groupleader_of"></A>
2940 <DT><STRONG>Synopsis:</STRONG></DT>
2941 <DD><TT>WRegion WRegion.groupleader_of(WRegion reg)</TT>
2944 <DT><STRONG>Description:</STRONG></DT>
2945 <DD>Returns the group of <TT>reg</TT>, if <TT>reg</TT> is its bottom,
2946 and <TT>reg</TT> itself otherwise.
2954 <DD><A NAME="fn:WRegion.is_active"></A>
2956 <DT><STRONG>Synopsis:</STRONG></DT>
2957 <DD><TT>bool WRegion.is_active(WRegion reg)</TT>
2960 <DT><STRONG>Description:</STRONG></DT>
2961 <DD>Is <TT>reg</TT> active/does it or one of it's children of focus?
2969 <DD><A NAME="fn:WRegion.is_activity"></A>
2971 <DT><STRONG>Synopsis:</STRONG></DT>
2972 <DD><TT>bool WRegion.is_activity(WRegion reg)</TT>
2975 <DT><STRONG>Description:</STRONG></DT>
2976 <DD>Is activity notification set on <TT>reg</TT>.
2984 <DD><A NAME="fn:WRegion.is_mapped"></A>
2986 <DT><STRONG>Synopsis:</STRONG></DT>
2987 <DD><TT>bool WRegion.is_mapped(WRegion reg)</TT>
2990 <DT><STRONG>Description:</STRONG></DT>
2991 <DD>Is <TT>reg</TT> visible/is it and all it's ancestors mapped?
2999 <DD><A NAME="fn:WRegion.is_tagged"></A>
3001 <DT><STRONG>Synopsis:</STRONG></DT>
3002 <DD><TT>bool WRegion.is_tagged(WRegion reg)</TT>
3005 <DT><STRONG>Description:</STRONG></DT>
3006 <DD>Is <TT>reg</TT> tagged?
3014 <DD><A NAME="fn:WRegion.manager"></A>
3016 <DT><STRONG>Synopsis:</STRONG></DT>
3017 <DD><TT>WRegion WRegion.manager(WRegion reg)</TT>
3020 <DT><STRONG>Description:</STRONG></DT>
3021 <DD>Returns the region that manages <TT>reg</TT>.
3029 <DD><A NAME="fn:WRegion.name"></A>
3031 <DT><STRONG>Synopsis:</STRONG></DT>
3032 <DD><TT>string WRegion.name(WRegion reg)</TT>
3035 <DT><STRONG>Description:</STRONG></DT>
3036 <DD>Returns the name for <TT>reg</TT>.
3044 <DD><A NAME="fn:WRegion.parent"></A>
3046 <DT><STRONG>Synopsis:</STRONG></DT>
3047 <DD><TT>WWindow WRegion.parent(WRegion reg)</TT>
3050 <DT><STRONG>Description:</STRONG></DT>
3051 <DD>Returns the parent region of <TT>reg</TT>.
3059 <DD><A NAME="fn:WRegion.rootwin_of"></A>
3061 <DT><STRONG>Synopsis:</STRONG></DT>
3062 <DD><TT>WRootWin WRegion.rootwin_of(WRegion reg)</TT>
3065 <DT><STRONG>Description:</STRONG></DT>
3066 <DD>Returns the root window <TT>reg</TT> is on.
3074 <DD><A NAME="fn:WRegion.rqclose"></A>
3076 <DT><STRONG>Synopsis:</STRONG></DT>
3077 <DD><TT>void WRegion.rqclose(WRegion reg, bool relocate)</TT>
3080 <DT><STRONG>Description:</STRONG></DT>
3081 <DD>Attempt to close/destroy <TT>reg</TT>. Whether this operation works
3082 depends on whether the particular type of region in question has
3083 implemented the feature and, in case of client windows, whether
3084 the client supports the <TT>WM_DELETE</TT> protocol (see also
3085 <A HREF="#fn:WClientWin.kill"><TT>WClientWin.kill</TT></A>). The region will not be destroyed when
3086 this function returns. To find out if and when it is destroyed,
3087 use the `<TT>deinit</TT>' notification. If <TT>relocate</TT> is not set,
3088 and <TT>reg</TT> manages other regions, it will not be closed. Otherwise
3089 the managed regions will be attempted to be relocated.
3097 <DD><A NAME="fn:WRegion.rqclose_propagate"></A>
3099 <DT><STRONG>Synopsis:</STRONG></DT>
3100 <DD><TT>WRegion WRegion.rqclose_propagate(WRegion reg, WRegion maybe_sub)</TT>
3103 <DT><STRONG>Description:</STRONG></DT>
3104 <DD>Recursively attempt to close a region or one of the regions managed by
3105 it. If <TT>sub</TT> is set, it will be used as the managed region, otherwise
3106 <A HREF="#fn:WRegion.current"><TT>WRegion.current</TT></A><TT>(reg)</TT>. The object to be closed is
3107 returned, or NULL if nothing can be closed. For further details, see
3108 notes for <A HREF="#fn:WRegion.rqclose"><TT>WRegion.rqclose</TT></A>.
3116 <DD><A NAME="fn:WRegion.rqgeom"></A>
3118 <DT><STRONG>Synopsis:</STRONG></DT>
3119 <DD><TT>table WRegion.rqgeom(WRegion reg, table g)</TT>
3122 <DT><STRONG>Description:</STRONG></DT>
3123 <DD>Attempt to resize and/or move <TT>reg</TT>. The table <TT>g</TT> is a usual
3124 geometry specification (fields <TT>x</TT>, <TT>y</TT>, <TT>w</TT> and <TT>h</TT>),
3125 but may contain missing fields, in which case, <TT>reg</TT>'s manager may
3126 attempt to leave that attribute unchanged.
3134 <DD><A NAME="fn:WRegion.rqorder"></A>
3136 <DT><STRONG>Synopsis:</STRONG></DT>
3137 <DD><TT>bool WRegion.rqorder(WRegion reg, string ord)</TT>
3140 <DT><STRONG>Description:</STRONG></DT>
3141 <DD>Request ordering. Currently supported values for <TT>ord</TT>
3142 are `<TT>front</TT>' and `<TT>back</TT>'.
3150 <DD><A NAME="fn:WRegion.screen_of"></A>
3152 <DT><STRONG>Synopsis:</STRONG></DT>
3153 <DD><TT>WScreen WRegion.screen_of(WRegion reg)</TT>
3156 <DT><STRONG>Description:</STRONG></DT>
3157 <DD>Returns the screen <TT>reg</TT> is on.
3165 <DD><A NAME="fn:WRegion.set_activity"></A>
3167 <DT><STRONG>Synopsis:</STRONG></DT>
3168 <DD><TT>bool WRegion.set_activity(WRegion reg, string how)</TT>
3171 <DT><STRONG>Description:</STRONG></DT>
3172 <DD>Set activity flag of <TT>reg</TT>. The <TT>how</TT> parameter must be
3173 one of `<TT>set</TT>', `<TT>unset</TT>' or `<TT>toggle</TT>'.
3181 <DD><A NAME="fn:WRegion.set_name"></A>
3183 <DT><STRONG>Synopsis:</STRONG></DT>
3184 <DD><TT>bool WRegion.set_name(WRegion reg, string p)</TT>
3187 <DT><STRONG>Description:</STRONG></DT>
3188 <DD>Set the name of <TT>reg</TT> to <TT>p</TT>. If the name is already in use,
3189 an instance number suffix `<TT><n></TT>' will be attempted. If <TT>p</TT> has
3190 such a suffix, it will be modified, otherwise such a suffix will be
3191 added. Setting <TT>p</TT> to nil will cause current name to be removed.
3199 <DD><A NAME="fn:WRegion.set_name_exact"></A>
3201 <DT><STRONG>Synopsis:</STRONG></DT>
3202 <DD><TT>bool WRegion.set_name_exact(WRegion reg, string p)</TT>
3205 <DT><STRONG>Description:</STRONG></DT>
3206 <DD>Similar to <A HREF="#fn:WRegion.set_name"><TT>WRegion.set_name</TT></A> except if the name is already in use,
3207 other instance numbers will not be attempted. The string <TT>p</TT> should
3208 not contain a `<TT><n></TT>' suffix or this function will fail.
3216 <DD><A NAME="fn:WRegion.set_tagged"></A>
3218 <DT><STRONG>Synopsis:</STRONG></DT>
3219 <DD><TT>bool WRegion.set_tagged(WRegion reg, string how)</TT>
3222 <DT><STRONG>Description:</STRONG></DT>
3223 <DD>Change tagging state of <TT>reg</TT> as defined by <TT>how</TT>
3224 (one of `<TT>set</TT>', `<TT>unset</TT>', or `<TT>toggle</TT>').
3225 The resulting state is returned.
3233 <DD><A NAME="fn:WRegion.size_hints"></A>
3235 <DT><STRONG>Synopsis:</STRONG></DT>
3236 <DD><TT>table WRegion.size_hints(WRegion reg)</TT>
3239 <DT><STRONG>Description:</STRONG></DT>
3240 <DD>Returns size hints for <TT>reg</TT>. The returned table always contains the
3241 fields <TT>min_?</TT>, <TT>base_?</TT> and sometimes the fields <TT>max_?</TT>,
3242 <TT>base_?</TT> and <TT>inc_?</TT>, where <TT>?</TT>=<TT>w</TT>, <TT>h</TT>.
3249 <H3><A NAME="SECTION007111000000000000000">
3250 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">11</SPAN> WRootWin functions</A>
3256 <DD><A NAME="fn:WRootWin.current_scr"></A>
3258 <DT><STRONG>Synopsis:</STRONG></DT>
3259 <DD><TT>WScreen WRootWin.current_scr(WRootWin rootwin)</TT>
3262 <DT><STRONG>Description:</STRONG></DT>
3263 <DD>Returns previously active screen on root window <TT>rootwin</TT>.
3270 <H3><A NAME="SECTION007112000000000000000">
3271 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">12</SPAN> WScreen functions</A>
3277 <DD><A NAME="fn:WScreen.id"></A>
3279 <DT><STRONG>Synopsis:</STRONG></DT>
3280 <DD><TT>integer WScreen.id(WScreen scr)</TT>
3283 <DT><STRONG>Description:</STRONG></DT>
3284 <DD>Return the numerical id for screen <TT>scr</TT>.
3292 <DD><A NAME="fn:WScreen.set_managed_offset"></A>
3294 <DT><STRONG>Synopsis:</STRONG></DT>
3295 <DD><TT>bool WScreen.set_managed_offset(WScreen scr, table offset)</TT>
3298 <DT><STRONG>Description:</STRONG></DT>
3299 <DD>Set offset of objects managed by the screen from actual screen geometry.
3300 The table <TT>offset</TT> should contain the entries <TT>x</TT>, <TT>y</TT>,
3301 <TT>w</TT> and <TT>h</TT> indicating offsets of that component of screen
3309 <H3><A NAME="SECTION007113000000000000000">
3310 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">13</SPAN> WTimer functions</A>
3316 <DD><A NAME="fn:WTimer.is_set"></A>
3318 <DT><STRONG>Synopsis:</STRONG></DT>
3319 <DD><TT>bool WTimer.is_set(WTimer timer)</TT>
3322 <DT><STRONG>Description:</STRONG></DT>
3331 <DD><A NAME="fn:WTimer.reset"></A>
3333 <DT><STRONG>Synopsis:</STRONG></DT>
3334 <DD><TT>void WTimer.reset(WTimer timer)</TT>
3337 <DT><STRONG>Description:</STRONG></DT>
3346 <DD><A NAME="fn:WTimer.set"></A>
3348 <DT><STRONG>Synopsis:</STRONG></DT>
3349 <DD><TT>void WTimer.set(WTimer timer, integer msecs, function fn)</TT>
3352 <DT><STRONG>Description:</STRONG></DT>
3353 <DD>Set <TT>timer</TT> to call <TT>fn</TT> in <TT>msecs</TT> milliseconds.
3360 <H3><A NAME="SECTION007114000000000000000">
3361 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">14</SPAN> WWindow functions</A>
3367 <DD><A NAME="fn:WWindow.p_move"></A>
3369 <DT><STRONG>Synopsis:</STRONG></DT>
3370 <DD><TT>void WWindow.p_move(WWindow wwin)</TT>
3373 <DT><STRONG>Description:</STRONG></DT>
3374 <DD>Start moving <TT>wwin</TT> with the mouse or other pointing device.
3375 This function should only be used by binding it to <SPAN CLASS="textit">mpress</SPAN> or
3376 <SPAN CLASS="textit">mdrag</SPAN> action.
3384 <DD><A NAME="fn:WWindow.p_resize"></A>
3386 <DT><STRONG>Synopsis:</STRONG></DT>
3387 <DD><TT>void WWindow.p_resize(WWindow wwin)</TT>
3390 <DT><STRONG>Description:</STRONG></DT>
3391 <DD>Start resizing <TT>wwin</TT> with the mouse or other pointing device.
3392 This function should only be used by binding it to <SPAN CLASS="textit">mpress</SPAN> or
3393 <SPAN CLASS="textit">mdrag</SPAN> action.
3401 <DD><A NAME="fn:WWindow.xid"></A>
3403 <DT><STRONG>Synopsis:</STRONG></DT>
3404 <DD><TT>double WWindow.xid(WWindow wwin)</TT>
3407 <DT><STRONG>Description:</STRONG></DT>
3408 <DD>Return the X window id for <TT>wwin</TT>.
3415 <H3><A NAME="SECTION007115000000000000000">
3416 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">15</SPAN> global functions</A>
3422 <DD><A NAME="fn:export"></A>
3424 <DT><STRONG>Synopsis:</STRONG></DT>
3425 <DD><TT>export(lib, ...)</TT>
3428 <DT><STRONG>Description:</STRONG></DT>
3429 <DD>Export a list of functions from <TT>lib</TT> into global namespace.
3436 <H3><A NAME="SECTION007116000000000000000">
3437 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">16</SPAN> gr functions</A>
3443 <DD><A NAME="fn:gr.read_config"></A>
3445 <DT><STRONG>Synopsis:</STRONG></DT>
3446 <DD><TT>void gr.read_config()</TT>
3449 <DT><STRONG>Description:</STRONG></DT>
3450 <DD>Read drawing engine configuration file <SPAN CLASS="textit">look.lua</SPAN>.
3458 <DD><A NAME="fn:gr.refresh"></A>
3460 <DT><STRONG>Synopsis:</STRONG></DT>
3461 <DD><TT>void gr.refresh()</TT>
3464 <DT><STRONG>Description:</STRONG></DT>
3465 <DD>Refresh objects' brushes to update them to use newly loaded style.
3473 <DD><A NAME="fn:gr.select_engine"></A>
3475 <DT><STRONG>Synopsis:</STRONG></DT>
3476 <DD><TT>bool gr.select_engine(string engine)</TT>
3479 <DT><STRONG>Description:</STRONG></DT>
3480 <DD>Future requests for ``brushes'' are to be forwarded to the drawing engine
3481 <TT>engine</TT>. If no engine of such name is known, a module with that name
3482 is attempted to be loaded. This function is only intended to be called from
3483 colour scheme etc. configuration files and can not be used to change the
3484 look of existing objects; for that use <A HREF="#fn:gr.read_config"><TT>gr.read_config</TT></A>.
3491 <H3><A NAME="SECTION007117000000000000000">
3492 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">17</SPAN> string functions</A>
3498 <DD><A NAME="fn:string.shell_safe"></A>
3500 <DT><STRONG>Synopsis:</STRONG></DT>
3501 <DD><TT>string.shell_safe(str)</TT>
3504 <DT><STRONG>Description:</STRONG></DT>
3505 <DD>Make <TT>str</TT> shell-safe.
3512 <H3><A NAME="SECTION007118000000000000000">
3513 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">18</SPAN> table functions</A>
3519 <DD><A NAME="fn:table.append"></A>
3521 <DT><STRONG>Synopsis:</STRONG></DT>
3522 <DD><TT>table.append(t1, t2)</TT>
3525 <DT><STRONG>Description:</STRONG></DT>
3526 <DD>Add entries that do not exist in <TT>t1</TT> from <TT>t2</TT> to <TT>t1</TT>.
3534 <DD><A NAME="fn:table.copy"></A>
3536 <DT><STRONG>Synopsis:</STRONG></DT>
3537 <DD><TT>table.copy(t, deep)</TT>
3540 <DT><STRONG>Description:</STRONG></DT>
3541 <DD>Make copy of <TT>table</TT>. If <TT>deep</TT> is unset, shallow one-level
3542 copy is made, otherwise a deep copy is made.
3550 <DD><A NAME="fn:table.icat"></A>
3552 <DT><STRONG>Synopsis:</STRONG></DT>
3553 <DD><TT>table.icat(t1, t2)</TT>
3556 <DT><STRONG>Description:</STRONG></DT>
3557 <DD>Insert all positive integer entries from t2 into t1.
3565 <DD><A NAME="fn:table.join"></A>
3567 <DT><STRONG>Synopsis:</STRONG></DT>
3568 <DD><TT>table.join(t1, t2)</TT>
3571 <DT><STRONG>Description:</STRONG></DT>
3572 <DD>Create a table containing all entries from <TT>t1</TT> and those from
3573 <TT>t2</TT> that are missing from <TT>t1</TT>.
3581 <DD><A NAME="fn:table.map"></A>
3583 <DT><STRONG>Synopsis:</STRONG></DT>
3584 <DD><TT>table.map(f, t)</TT>
3587 <DT><STRONG>Description:</STRONG></DT>
3588 <DD>Map all entries of <TT>t</TT> by <TT>f</TT>.
3595 <H2><A NAME="SECTION00720000000000000000"></A>
3596 <A NAME="sec:tilingref"></A>
3598 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN> Functions defined in <SPAN CLASS="textit">mod_tiling</SPAN>
3602 <DD><A NAME="fn:mod_tiling.get"></A>
3604 <DT><STRONG>Synopsis:</STRONG></DT>
3605 <DD><TT>table mod_tiling.get()</TT>
3608 <DT><STRONG>Description:</STRONG></DT>
3609 <DD>Get parameters. For details see <A HREF="#fn:mod_tiling.set"><TT>mod_tiling.set</TT></A>.
3617 <DD><A NAME="fn:mod_tiling.mkbottom"></A>
3619 <DT><STRONG>Synopsis:</STRONG></DT>
3620 <DD><TT>bool mod_tiling.mkbottom(WRegion reg)</TT>
3623 <DT><STRONG>Description:</STRONG></DT>
3624 <DD>Create a new WTiling 'bottom' for the group of <TT>reg</TT>,
3625 consisting of <TT>reg</TT>.
3633 <DD><A NAME="fn:mod_tiling.set"></A>
3635 <DT><STRONG>Synopsis:</STRONG></DT>
3636 <DD><TT>void mod_tiling.set(table tab)</TT>
3639 <DT><STRONG>Description:</STRONG></DT>
3640 <DD>Set parameters. Currently only <TT>raise_delay</TT> (in milliseconds)
3649 <DD><A NAME="fn:mod_tiling.untile"></A>
3651 <DT><STRONG>Synopsis:</STRONG></DT>
3652 <DD><TT>bool mod_tiling.untile(WTiling tiling)</TT>
3655 <DT><STRONG>Description:</STRONG></DT>
3656 <DD>If <TT>tiling</TT> is managed by some group, float the frames in
3657 the tiling in that group, and dispose of <TT>tiling</TT>.
3664 <H3><A NAME="SECTION00721000000000000000">
3665 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN> WSplit functions</A>
3671 <DD><A NAME="fn:WSplit.geom"></A>
3673 <DT><STRONG>Synopsis:</STRONG></DT>
3674 <DD><TT>table WSplit.geom(WSplit split)</TT>
3677 <DT><STRONG>Description:</STRONG></DT>
3678 <DD>Returns the area of workspace used by the regions under <TT>split</TT>.
3686 <DD><A NAME="fn:WSplit.parent"></A>
3688 <DT><STRONG>Synopsis:</STRONG></DT>
3689 <DD><TT>WSplitInner WSplit.parent(WSplit split)</TT>
3692 <DT><STRONG>Description:</STRONG></DT>
3693 <DD>Return parent split for <TT>split</TT>.
3701 <DD><A NAME="fn:WSplit.rqgeom"></A>
3703 <DT><STRONG>Synopsis:</STRONG></DT>
3704 <DD><TT>table WSplit.rqgeom(WSplit node, table g)</TT>
3707 <DT><STRONG>Description:</STRONG></DT>
3708 <DD>Attempt to resize and/or move the split tree starting at <TT>node</TT>.
3709 Behaviour and the <TT>g</TT> parameter are as for <A HREF="#fn:WRegion.rqgeom"><TT>WRegion.rqgeom</TT></A>
3710 operating on <TT>node</TT> (if it were a WRegion).
3718 <DD><A NAME="fn:WSplit.transpose"></A>
3720 <DT><STRONG>Synopsis:</STRONG></DT>
3721 <DD><TT>void WSplit.transpose(WSplit node)</TT>
3724 <DT><STRONG>Description:</STRONG></DT>
3725 <DD>Transpose contents of <TT>node</TT>.
3732 <H3><A NAME="SECTION00722000000000000000">
3733 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN> WSplitInner functions</A>
3739 <DD><A NAME="fn:WSplitInner.current"></A>
3741 <DT><STRONG>Synopsis:</STRONG></DT>
3742 <DD><TT>WSplit WSplitInner.current(WSplitInner node)</TT>
3745 <DT><STRONG>Description:</STRONG></DT>
3746 <DD>Returns the most previously active child node of <TT>split</TT>.
3753 <H3><A NAME="SECTION00723000000000000000">
3754 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">3</SPAN> WSplitRegion functions</A>
3760 <DD><A NAME="fn:WSplitRegion.reg"></A>
3762 <DT><STRONG>Synopsis:</STRONG></DT>
3763 <DD><TT>WRegion WSplitRegion.reg(WSplitRegion node)</TT>
3766 <DT><STRONG>Description:</STRONG></DT>
3767 <DD>Returns the region contained in <TT>node</TT>.
3774 <H3><A NAME="SECTION00724000000000000000">
3775 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">4</SPAN> WSplitSplit functions</A>
3781 <DD><A NAME="fn:WSplitSplit.br"></A>
3783 <DT><STRONG>Synopsis:</STRONG></DT>
3784 <DD><TT>WSplit WSplitSplit.br(WSplitSplit split)</TT>
3787 <DT><STRONG>Description:</STRONG></DT>
3788 <DD>Returns the bottom or right child node of <TT>split</TT> depending
3789 on the direction of the split.
3797 <DD><A NAME="fn:WSplitSplit.dir"></A>
3799 <DT><STRONG>Synopsis:</STRONG></DT>
3800 <DD><TT>string WSplitSplit.dir(WSplitSplit split)</TT>
3803 <DT><STRONG>Description:</STRONG></DT>
3804 <DD>Returns the direction of <TT>split</TT>; either `<TT>vertical</TT>' or
3805 `<TT>horizontal</TT>'.
3813 <DD><A NAME="fn:WSplitSplit.flip"></A>
3815 <DT><STRONG>Synopsis:</STRONG></DT>
3816 <DD><TT>void WSplitSplit.flip(WSplitSplit split)</TT>
3819 <DT><STRONG>Description:</STRONG></DT>
3820 <DD>Flip contents of <TT>split</TT>.
3828 <DD><A NAME="fn:WSplitSplit.tl"></A>
3830 <DT><STRONG>Synopsis:</STRONG></DT>
3831 <DD><TT>WSplit WSplitSplit.tl(WSplitSplit split)</TT>
3834 <DT><STRONG>Description:</STRONG></DT>
3835 <DD>Returns the top or left child node of <TT>split</TT> depending
3836 on the direction of the split.
3843 <H3><A NAME="SECTION00725000000000000000">
3844 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">5</SPAN> WTiling functions</A>
3850 <DD><A NAME="fn:WTiling.flip_at"></A>
3852 <DT><STRONG>Synopsis:</STRONG></DT>
3853 <DD><TT>bool WTiling.flip_at(WTiling ws, WRegion reg)</TT>
3856 <DT><STRONG>Description:</STRONG></DT>
3857 <DD>Flip <TT>ws</TT> at <TT>reg</TT> or root if nil.
3865 <DD><A NAME="fn:WTiling.transpose_at"></A>
3867 <DT><STRONG>Synopsis:</STRONG></DT>
3868 <DD><TT>bool WTiling.transpose_at(WTiling ws, WRegion reg)</TT>
3871 <DT><STRONG>Description:</STRONG></DT>
3872 <DD>Transpose <TT>ws</TT> at <TT>reg</TT> or root if nil.
3880 <DD><A NAME="fn:WTiling.farthest"></A>
3882 <DT><STRONG>Synopsis:</STRONG></DT>
3883 <DD><TT>WRegion WTiling.farthest(WTiling ws, string dirstr, bool any)</TT>
3886 <DT><STRONG>Description:</STRONG></DT>
3887 <DD>Return the most previously active region on <TT>ws</TT> with no
3888 other regions next to it in direction <TT>dirstr</TT>
3889 (`<TT>left</TT>', `<TT>right</TT>', `<TT>up</TT>', or `<TT>down</TT>').
3890 If <TT>any</TT> is not set, the status display is not considered.
3898 <DD><A NAME="fn:WTiling.managed_i"></A>
3900 <DT><STRONG>Synopsis:</STRONG></DT>
3901 <DD><TT>bool WTiling.managed_i(WTiling ws, function iterfn)</TT>
3904 <DT><STRONG>Description:</STRONG></DT>
3905 <DD>Iterate over managed regions of <TT>ws</TT> until <TT>iterfn</TT> returns
3907 The function itself returns <TT>true</TT> if it reaches the end of list
3908 without this happening.
3916 <DD><A NAME="fn:WTiling.nextto"></A>
3918 <DT><STRONG>Synopsis:</STRONG></DT>
3919 <DD><TT>WRegion WTiling.nextto(WTiling ws, WRegion reg, string dirstr, bool any)</TT>
3922 <DT><STRONG>Description:</STRONG></DT>
3923 <DD>Return the most previously active region next to <TT>reg</TT> in
3924 direction <TT>dirstr</TT> (`<TT>left</TT>', `<TT>right</TT>', `<TT>up</TT>',
3925 or `<TT>down</TT>'). The region <TT>reg</TT>
3926 must be managed by <TT>ws</TT>. If <TT>any</TT> is not set, the status display
3935 <DD><A NAME="fn:WTiling.node_of"></A>
3937 <DT><STRONG>Synopsis:</STRONG></DT>
3938 <DD><TT>WSplitRegion WTiling.node_of(WTiling ws, WRegion reg)</TT>
3941 <DT><STRONG>Description:</STRONG></DT>
3942 <DD>For region <TT>reg</TT> managed by <TT>ws</TT> return the WSplit
3943 a leaf of which <TT>reg</TT> is.
3951 <DD><A NAME="fn:WTiling.set_floating_at"></A>
3953 <DT><STRONG>Synopsis:</STRONG></DT>
3954 <DD><TT>bool WTiling.set_floating_at(WTiling ws, WRegion reg, string how, string dirstr)</TT>
3957 <DT><STRONG>Description:</STRONG></DT>
3958 <DD>Toggle floating of the sides of a split containin <TT>reg</TT> as indicated
3959 by the parameters <TT>how</TT> (`<TT>set</TT>', `<TT>unset</TT>', or
3960 `<TT>toggle</TT>') and <TT>dirstr</TT> (`<TT>left</TT>', `<TT>right</TT>',
3961 `<TT>up</TT>', or `<TT>down</TT>'). The new status is returned
3962 (and <TT>false</TT> also on error).
3970 <DD><A NAME="fn:WTiling.set_floating"></A>
3972 <DT><STRONG>Synopsis:</STRONG></DT>
3973 <DD><TT>WSplitSplit WTiling.set_floating(WTiling ws, WSplitSplit split, string how)</TT>
3976 <DT><STRONG>Description:</STRONG></DT>
3977 <DD>Toggle floating of a split's sides at <TT>split</TT> as indicated by the
3978 parameter <TT>how</TT> (`<TT>set</TT>', `<TT>unset</TT>', or `<TT>toggle</TT>').
3979 A split of the appropriate is returned, if there was a change.
3987 <DD><A NAME="fn:WTiling.split"></A>
3989 <DT><STRONG>Synopsis:</STRONG></DT>
3990 <DD><TT>WFrame WTiling.split(WTiling ws, WSplit node, string dirstr)</TT>
3993 <DT><STRONG>Description:</STRONG></DT>
3994 <DD>Create a new frame on <TT>ws</TT> `<TT>above</TT>', `<TT>below</TT>'
3995 `<TT>left</TT>' of, or `<TT>right</TT>' of <TT>node</TT> as indicated
3996 by <TT>dirstr</TT>. If <TT>dirstr</TT> is prefixed with
3997 `<TT>floating:</TT>' a floating split is created.
4005 <DD><A NAME="fn:WTiling.split_at"></A>
4007 <DT><STRONG>Synopsis:</STRONG></DT>
4008 <DD><TT>WFrame WTiling.split_at(WTiling ws, WFrame frame, string dirstr, bool attach_current)</TT>
4011 <DT><STRONG>Description:</STRONG></DT>
4012 <DD>Split <TT>frame</TT> creating a new frame to direction <TT>dirstr</TT>
4013 (one of `<TT>left</TT>', `<TT>right</TT>', `<TT>top</TT>' or
4014 `<TT>bottom</TT>') of <TT>frame</TT>.
4015 If <TT>attach_current</TT> is set, the region currently displayed in
4016 <TT>frame</TT>, if any, is moved to thenew frame.
4017 If <TT>dirstr</TT> is prefixed with `<TT>floating:</TT>', a floating
4026 <DD><A NAME="fn:WTiling.split_top"></A>
4028 <DT><STRONG>Synopsis:</STRONG></DT>
4029 <DD><TT>WFrame WTiling.split_top(WTiling ws, string dirstr)</TT>
4032 <DT><STRONG>Description:</STRONG></DT>
4033 <DD>Same as <A HREF="#fn:WTiling.split"><TT>WTiling.split</TT></A> at the root of the split tree.
4041 <DD><A NAME="fn:WTiling.split_tree"></A>
4043 <DT><STRONG>Synopsis:</STRONG></DT>
4044 <DD><TT>WSplit WTiling.split_tree(WTiling ws)</TT>
4047 <DT><STRONG>Description:</STRONG></DT>
4048 <DD>Returns the root of the split tree.
4056 <DD><A NAME="fn:WTiling.unsplit_at"></A>
4058 <DT><STRONG>Synopsis:</STRONG></DT>
4059 <DD><TT>void WTiling.unsplit_at(WTiling ws, WRegion reg)</TT>
4062 <DT><STRONG>Description:</STRONG></DT>
4063 <DD>Try to relocate regions managed by <TT>reg</TT> to another frame
4064 and, if possible, destroy it.
4071 <H2><A NAME="SECTION00730000000000000000"></A>
4072 <A NAME="sec:queryref"></A>
4074 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN> Functions defined in <SPAN CLASS="textit">mod_query</SPAN>
4078 <DD><A NAME="fn:mod_query.defcmd"></A>
4080 <DT><STRONG>Synopsis:</STRONG></DT>
4081 <DD><TT>mod_query.defcmd(cmd, fn)</TT>
4084 <DT><STRONG>Description:</STRONG></DT>
4085 <DD>Define a command override for the <A HREF="#fn:mod_query.query_exec"><TT>query_exec</TT></A> query.
4093 <DD><A NAME="fn:mod_query.message"></A>
4095 <DT><STRONG>Synopsis:</STRONG></DT>
4096 <DD><TT>mod_query.message(mplex, str)</TT>
4099 <DT><STRONG>Description:</STRONG></DT>
4100 <DD>Display a message in <TT>mplex</TT>.
4108 <DD><A NAME="fn:mod_query.get"></A>
4110 <DT><STRONG>Synopsis:</STRONG></DT>
4111 <DD><TT>table mod_query.get()</TT>
4114 <DT><STRONG>Description:</STRONG></DT>
4115 <DD>Get module configuration. For more information see
4116 <A HREF="#fn:mod_query.set"><TT>mod_query.set</TT></A>.
4124 <DD><A NAME="fn:mod_query.history_clear"></A>
4126 <DT><STRONG>Synopsis:</STRONG></DT>
4127 <DD><TT>void mod_query.history_clear()</TT>
4130 <DT><STRONG>Description:</STRONG></DT>
4131 <DD>Clear line editor history.
4139 <DD><A NAME="fn:mod_query.history_get"></A>
4141 <DT><STRONG>Synopsis:</STRONG></DT>
4142 <DD><TT>string mod_query.history_get(integer n)</TT>
4145 <DT><STRONG>Description:</STRONG></DT>
4146 <DD>Get entry at index <TT>n</TT> in line editor history, 0 being the latest.
4154 <DD><A NAME="fn:mod_query.history_push"></A>
4156 <DT><STRONG>Synopsis:</STRONG></DT>
4157 <DD><TT>bool mod_query.history_push(string str)</TT>
4160 <DT><STRONG>Description:</STRONG></DT>
4161 <DD>Push an entry into line editor history.
4169 <DD><A NAME="fn:mod_query.history_search"></A>
4171 <DT><STRONG>Synopsis:</STRONG></DT>
4172 <DD><TT>integer mod_query.history_search(string s, integer from, bool bwd, bool exact)</TT>
4175 <DT><STRONG>Description:</STRONG></DT>
4176 <DD>Try to find matching history entry. Returns -1 if none was
4177 found. The parameter <TT>from</TT> specifies where to start
4178 searching from, and <TT>bwd</TT> causes backward search from
4179 that point. If <TT>exact</TT> is not set, <TT>s</TT> only required
4180 to be a prefix of the match.
4188 <DD><A NAME="fn:mod_query.history_table"></A>
4190 <DT><STRONG>Synopsis:</STRONG></DT>
4191 <DD><TT>table mod_query.history_table()</TT>
4194 <DT><STRONG>Description:</STRONG></DT>
4195 <DD>Return table of history entries.
4203 <DD><A NAME="fn:mod_query.set"></A>
4205 <DT><STRONG>Synopsis:</STRONG></DT>
4206 <DD><TT>void mod_query.set(table tab)</TT>
4209 <DT><STRONG>Description:</STRONG></DT>
4210 <DD>Set module configuration. The following are supported:
4213 <TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
4214 <TR><TD ALIGN="LEFT">Field</TD>
4215 <TD ALIGN="LEFT">Description</TD>
4217 <TR><TD ALIGN="LEFT"><TT>autoshowcompl</TT></TD>
4218 <TD ALIGN="LEFT">(boolean) Is auto-show-completions enabled?
4219 (default: true).</TD>
4221 <TR><TD ALIGN="LEFT"><TT>autoshowcompl_delay</TT></TD>
4222 <TD ALIGN="LEFT">(integer) auto-show-completions delay
4223 in milliseconds (default: 250).</TD>
4225 <TR><TD ALIGN="LEFT"><TT>caseicompl</TT></TD>
4226 <TD ALIGN="LEFT">(boolean) Turn some completions case-insensitive
4227 (default: false).</TD>
4237 <DD><A NAME="fn:mod_query.popen_completions"></A>
4239 <DT><STRONG>Synopsis:</STRONG></DT>
4240 <DD><TT>mod_query.popen_completions(cp, cmd, fn, reshnd)</TT>
4243 <DT><STRONG>Description:</STRONG></DT>
4244 <DD>This function can be used to read completions from an external source.
4245 The parameter <TT>cp</TT> is the completion proxy to be used,
4246 and the string <TT>cmd</TT> the shell command to be executed. To its stdout,
4247 the command should on the first line write the <TT>common_beg</TT>
4248 parameter of <A HREF="#fn:WComplProxy.set_completions"><TT>WComplProxy.set_completions</TT></A> (which <TT>fn</TT> maybe used
4249 to override) and a single actual completion on each of the successive lines.
4250 The function <TT>reshnd</TT> may be used to override a result table
4259 <DD><A NAME="fn:mod_query.query"></A>
4261 <DT><STRONG>Synopsis:</STRONG></DT>
4262 <DD><TT>mod_query.query(mplex, prompt, initvalue, handler, completor,
4266 <DT><STRONG>Description:</STRONG></DT>
4267 <DD>Low-level query routine. <TT>mplex</TT> is the WMPlex to display
4268 the query in, <TT>prompt</TT> the prompt string, and <TT>initvalue</TT>
4269 the initial contents of the query box. <TT>handler</TT> is a function
4270 that receives (<TT>mplex</TT>, result string) as parameter when the
4271 query has been succesfully completed, <TT>completor</TT> the completor
4272 routine which receives a (<TT>cp</TT>, <TT>str</TT>, <TT>point</TT>) as parameters.
4273 The parameter <TT>str</TT> is the string to be completed and <TT>point</TT>
4274 cursor's location within it. Completions should be eventually,
4275 possibly asynchronously, set with <A HREF="#fn:WComplProxy.set_completions"><TT>WComplProxy.set_completions</TT></A>
4284 <DD><A NAME="fn:mod_query.query_attachclient"></A>
4286 <DT><STRONG>Synopsis:</STRONG></DT>
4287 <DD><TT>mod_query.query_attachclient(mplex)</TT>
4290 <DT><STRONG>Description:</STRONG></DT>
4291 <DD>This query asks for the name of a client window and attaches
4292 it to the frame the query was opened in. It uses the completion
4293 function <A HREF="#fn:ioncore.complete_clientwin"><TT>ioncore.complete_clientwin</TT></A>.
4301 <DD><A NAME="fn:mod_query.query_editfile"></A>
4303 <DT><STRONG>Synopsis:</STRONG></DT>
4304 <DD><TT>mod_query.query_editfile(mplex, script, prompt)</TT>
4307 <DT><STRONG>Description:</STRONG></DT>
4308 <DD>Asks for a file to be edited. This script uses
4309 <TT>run-mailcap -mode=edit</TT> by default, but you may provide an
4310 alternative script to use. The default prompt is "Edit file:" (translated).
4318 <DD><A NAME="fn:mod_query.query_exec"></A>
4320 <DT><STRONG>Synopsis:</STRONG></DT>
4321 <DD><TT>mod_query.query_exec(mplex)</TT>
4324 <DT><STRONG>Description:</STRONG></DT>
4325 <DD>This function asks for a command to execute with <SPAN CLASS="textit">/bin/sh</SPAN>.
4326 If the command is prefixed with a colon (':'), the command will
4327 be run in an XTerm (or other terminal emulator) using the script
4328 <SPAN CLASS="textit">ion-runinxterm</SPAN>. Two colons ('::') will ask you to press
4329 enter after the command has finished.
4337 <DD><A NAME="fn:mod_query.query_gotoclient"></A>
4339 <DT><STRONG>Synopsis:</STRONG></DT>
4340 <DD><TT>mod_query.query_gotoclient(mplex)</TT>
4343 <DT><STRONG>Description:</STRONG></DT>
4344 <DD>This query asks for the name of a client window and switches
4345 focus to the one entered. It uses the completion function
4346 <A HREF="#fn:ioncore.complete_clientwin"><TT>ioncore.complete_clientwin</TT></A>.
4354 <DD><A NAME="fn:mod_query.query_lua"></A>
4356 <DT><STRONG>Synopsis:</STRONG></DT>
4357 <DD><TT>mod_query.query_lua(mplex)</TT>
4360 <DT><STRONG>Description:</STRONG></DT>
4361 <DD>This query asks for Lua code to execute. It sets the variable '<TT>_</TT>'
4362 in the local environment of the string to point to the mplex where the
4363 query was created. It also sets the table <TT>arg</TT> in the local
4364 environment to <TT>{_, _:current()}</TT>.
4372 <DD><A NAME="fn:mod_query.query_man"></A>
4374 <DT><STRONG>Synopsis:</STRONG></DT>
4375 <DD><TT>mod_query.query_man(mplex, prog)</TT>
4378 <DT><STRONG>Description:</STRONG></DT>
4379 <DD>This query asks for a manual page to display. By default it runs the
4380 <TT>man</TT> command in an <TT>xterm</TT> using <TT>ion-runinxterm</TT>,
4381 but it is possible to pass another program as the <TT>prog</TT> argument.
4389 <DD><A NAME="fn:mod_query.query_menu"></A>
4391 <DT><STRONG>Synopsis:</STRONG></DT>
4392 <DD><TT>mod_query.query_menu(mplex, sub, themenu, prompt)</TT>
4395 <DT><STRONG>Description:</STRONG></DT>
4396 <DD>This query can be used to create a query of a defined menu.
4404 <DD><A NAME="fn:mod_query.query_renameframe"></A>
4406 <DT><STRONG>Synopsis:</STRONG></DT>
4407 <DD><TT>mod_query.query_renameframe(frame)</TT>
4410 <DT><STRONG>Description:</STRONG></DT>
4411 <DD>This function asks for a name new for the frame where the query
4420 <DD><A NAME="fn:mod_query.query_renameworkspace"></A>
4422 <DT><STRONG>Synopsis:</STRONG></DT>
4423 <DD><TT>mod_query.query_renameworkspace(mplex, ws)</TT>
4426 <DT><STRONG>Description:</STRONG></DT>
4427 <DD>This function asks for a name new for the workspace <TT>ws</TT>,
4428 or the one on which <TT>mplex</TT> resides, if it is not set.
4429 If <TT>mplex</TT> is not set, one is looked for.
4437 <DD><A NAME="fn:mod_query.query_restart"></A>
4439 <DT><STRONG>Synopsis:</STRONG></DT>
4440 <DD><TT>mod_query.query_restart(mplex)</TT>
4443 <DT><STRONG>Description:</STRONG></DT>
4444 <DD>This query asks whether the user wants restart Ioncore.
4445 If the answer is 'y', 'Y' or 'yes', so will happen.
4453 <DD><A NAME="fn:mod_query.query_runfile"></A>
4455 <DT><STRONG>Synopsis:</STRONG></DT>
4456 <DD><TT>mod_query.query_runfile(mplex, script, prompt)</TT>
4459 <DT><STRONG>Description:</STRONG></DT>
4460 <DD>Asks for a file to be viewed. This script uses
4461 <TT>run-mailcap -action=view</TT> by default, but you may provide an
4462 alternative script to use. The default prompt is "View file:" (translated).
4470 <DD><A NAME="fn:mod_query.query_shutdown"></A>
4472 <DT><STRONG>Synopsis:</STRONG></DT>
4473 <DD><TT>mod_query.query_shutdown(mplex)</TT>
4476 <DT><STRONG>Description:</STRONG></DT>
4477 <DD>This query asks whether the user wants to exit Ion (no session manager)
4478 or close the session (running under a session manager that supports such
4479 requests). If the answer is 'y', 'Y' or 'yes', so will happen.
4487 <DD><A NAME="fn:mod_query.query_ssh"></A>
4489 <DT><STRONG>Synopsis:</STRONG></DT>
4490 <DD><TT>mod_query.query_ssh(mplex, ssh)</TT>
4493 <DT><STRONG>Description:</STRONG></DT>
4494 <DD>This query asks for a host to connect to with SSH.
4495 Hosts to tab-complete are read from <SPAN CLASS="textit">~/.ssh/known_hosts</SPAN>.
4503 <DD><A NAME="fn:mod_query.query_workspace"></A>
4505 <DT><STRONG>Synopsis:</STRONG></DT>
4506 <DD><TT>mod_query.query_workspace(mplex)</TT>
4509 <DT><STRONG>Description:</STRONG></DT>
4510 <DD>This query asks for the name of a workspace. If a workspace
4511 (an object inheriting WGroupWS) with such a name exists,
4512 it will be switched to. Otherwise a new workspace with the
4513 entered name will be created and the user will be queried for
4514 the type of the workspace.
4522 <DD><A NAME="fn:mod_query.query_yesno"></A>
4524 <DT><STRONG>Synopsis:</STRONG></DT>
4525 <DD><TT>mod_query.query_yesno(mplex, prompt, handler)</TT>
4528 <DT><STRONG>Description:</STRONG></DT>
4529 <DD>This function query will display a query with prompt <TT>prompt</TT> in
4530 <TT>mplex</TT> and if the user answers affirmately, call <TT>handler</TT>
4531 with <TT>mplex</TT> as parameter.
4539 <DD><A NAME="fn:mod_query.show_about_ion"></A>
4541 <DT><STRONG>Synopsis:</STRONG></DT>
4542 <DD><TT>mod_query.show_about_ion(mplex)</TT>
4545 <DT><STRONG>Description:</STRONG></DT>
4546 <DD>Display an "About Ion" message in <TT>mplex</TT>.
4554 <DD><A NAME="fn:mod_query.show_tree"></A>
4556 <DT><STRONG>Synopsis:</STRONG></DT>
4557 <DD><TT>mod_query.show_tree(mplex, reg, max_depth)</TT>
4560 <DT><STRONG>Description:</STRONG></DT>
4561 <DD>Show information about a region tree
4569 <DD><A NAME="fn:mod_query.warn"></A>
4571 <DT><STRONG>Synopsis:</STRONG></DT>
4572 <DD><TT>mod_query.warn(mplex, str)</TT>
4575 <DT><STRONG>Description:</STRONG></DT>
4576 <DD>Display an error message box in the multiplexer <TT>mplex</TT>.
4583 <H3><A NAME="SECTION00731000000000000000">
4584 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">1</SPAN> WComplProxy functions</A>
4590 <DD><A NAME="fn:WComplProxy.set_completions"></A>
4592 <DT><STRONG>Synopsis:</STRONG></DT>
4593 <DD><TT>bool WComplProxy.set_completions(WComplProxy proxy, table compls)</TT>
4596 <DT><STRONG>Description:</STRONG></DT>
4597 <DD>Set completion list of the WEdln that <TT>proxy</TT> refers to to
4598 <TT>compls</TT>, if it is still waiting for this completion run. The
4599 numerical indexes of <TT>compls</TT> list the found completions. If the
4600 entry <TT>common_beg</TT> (<TT>common_end</TT>) exists, it gives an extra
4601 common prefix (suffix) of all found completions.
4608 <H3><A NAME="SECTION00732000000000000000">
4609 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN> WEdln functions</A>
4615 <DD><A NAME="fn:WEdln.back"></A>
4617 <DT><STRONG>Synopsis:</STRONG></DT>
4618 <DD><TT>void WEdln.back(WEdln wedln)</TT>
4621 <DT><STRONG>Description:</STRONG></DT>
4622 <DD>Move backward one character.
4630 <DD><A NAME="fn:WEdln.backspace"></A>
4632 <DT><STRONG>Synopsis:</STRONG></DT>
4633 <DD><TT>void WEdln.backspace(WEdln wedln)</TT>
4636 <DT><STRONG>Description:</STRONG></DT>
4637 <DD>Delete previous character.
4645 <DD><A NAME="fn:WEdln.bkill_word"></A>
4647 <DT><STRONG>Synopsis:</STRONG></DT>
4648 <DD><TT>void WEdln.bkill_word(WEdln wedln)</TT>
4651 <DT><STRONG>Description:</STRONG></DT>
4652 <DD>Starting from the previous characters, delete possible whitespace and
4653 preceding alphanumeric characters until previous non-alphanumeric character.
4661 <DD><A NAME="fn:WEdln.bol"></A>
4663 <DT><STRONG>Synopsis:</STRONG></DT>
4664 <DD><TT>void WEdln.bol(WEdln wedln)</TT>
4667 <DT><STRONG>Description:</STRONG></DT>
4668 <DD>Go to the beginning of line.
4676 <DD><A NAME="fn:WEdln.bskip_word"></A>
4678 <DT><STRONG>Synopsis:</STRONG></DT>
4679 <DD><TT>void WEdln.bskip_word(WEdln wedln)</TT>
4682 <DT><STRONG>Description:</STRONG></DT>
4683 <DD>Go to to beginning of current sequence of alphanumeric characters
4684 followed by whitespace.
4692 <DD><A NAME="fn:WEdln.clear_mark"></A>
4694 <DT><STRONG>Synopsis:</STRONG></DT>
4695 <DD><TT>void WEdln.clear_mark(WEdln wedln)</TT>
4698 <DT><STRONG>Description:</STRONG></DT>
4699 <DD>Clear <SPAN CLASS="textit">mark</SPAN>.
4707 <DD><A NAME="fn:WEdln.complete"></A>
4709 <DT><STRONG>Synopsis:</STRONG></DT>
4710 <DD><TT>void WEdln.complete(WEdln wedln, string cycle, string mode)</TT>
4713 <DT><STRONG>Description:</STRONG></DT>
4714 <DD>Call completion handler with the text between the beginning of line and
4715 current cursor position, or select next/previous completion from list if in
4716 auto-show-completions mode and <TT>cycle</TT> is set to `<TT>next</TT>' or
4717 `<TT>prev</TT>', respectively.
4718 The <TT>mode</TT> may be `<TT>history</TT>' or `<TT>normal</TT>'. If it is
4719 not set, the previous mode is used. Normally next entry is not cycled to
4720 despite the setting of <TT>cycle</TT> if mode switch occurs. To override
4721 this, use `<TT>next-always</TT>' and `<TT>prev-always</TT>' for <TT>cycle</TT>.
4729 <DD><A NAME="fn:WEdln.contents"></A>
4731 <DT><STRONG>Synopsis:</STRONG></DT>
4732 <DD><TT>string WEdln.contents(WEdln wedln)</TT>
4735 <DT><STRONG>Description:</STRONG></DT>
4736 <DD>Get line editor contents.
4744 <DD><A NAME="fn:WEdln.context"></A>
4746 <DT><STRONG>Synopsis:</STRONG></DT>
4747 <DD><TT>string WEdln.context(WEdln wedln)</TT>
4750 <DT><STRONG>Description:</STRONG></DT>
4751 <DD>Get history context for <TT>wedln</TT>.
4759 <DD><A NAME="fn:WEdln.copy"></A>
4761 <DT><STRONG>Synopsis:</STRONG></DT>
4762 <DD><TT>void WEdln.copy(WEdln wedln)</TT>
4765 <DT><STRONG>Description:</STRONG></DT>
4766 <DD>Copy text between <SPAN CLASS="textit">mark</SPAN> and current cursor position to clipboard.
4774 <DD><A NAME="fn:WEdln.cut"></A>
4776 <DT><STRONG>Synopsis:</STRONG></DT>
4777 <DD><TT>void WEdln.cut(WEdln wedln)</TT>
4780 <DT><STRONG>Description:</STRONG></DT>
4781 <DD>Copy text between <SPAN CLASS="textit">mark</SPAN> and current cursor position to clipboard
4782 and then delete that sequence.
4790 <DD><A NAME="fn:WEdln.delete"></A>
4792 <DT><STRONG>Synopsis:</STRONG></DT>
4793 <DD><TT>void WEdln.delete(WEdln wedln)</TT>
4796 <DT><STRONG>Description:</STRONG></DT>
4797 <DD>Delete current character.
4805 <DD><A NAME="fn:WEdln.eol"></A>
4807 <DT><STRONG>Synopsis:</STRONG></DT>
4808 <DD><TT>void WEdln.eol(WEdln wedln)</TT>
4811 <DT><STRONG>Description:</STRONG></DT>
4812 <DD>Go to the end of line.
4820 <DD><A NAME="fn:WEdln.finish"></A>
4822 <DT><STRONG>Synopsis:</STRONG></DT>
4823 <DD><TT>void WEdln.finish(WEdln wedln)</TT>
4826 <DT><STRONG>Description:</STRONG></DT>
4827 <DD>Close <TT>wedln</TT> and call any handlers.
4835 <DD><A NAME="fn:WEdln.forward"></A>
4837 <DT><STRONG>Synopsis:</STRONG></DT>
4838 <DD><TT>void WEdln.forward(WEdln wedln)</TT>
4841 <DT><STRONG>Description:</STRONG></DT>
4842 <DD>Move forward one character.
4850 <DD><A NAME="fn:WEdln.history_next"></A>
4852 <DT><STRONG>Synopsis:</STRONG></DT>
4853 <DD><TT>void WEdln.history_next(WEdln wedln, bool match)</TT>
4856 <DT><STRONG>Description:</STRONG></DT>
4857 <DD>Replace line editor contents with next entry in history if one exists.
4858 If <TT>match</TT> is <TT>true</TT>, the initial part of the history entry
4859 must match the current line from beginning to point.
4867 <DD><A NAME="fn:WEdln.history_prev"></A>
4869 <DT><STRONG>Synopsis:</STRONG></DT>
4870 <DD><TT>void WEdln.history_prev(WEdln wedln, bool match)</TT>
4873 <DT><STRONG>Description:</STRONG></DT>
4874 <DD>Replace line editor contents with previous in history if one exists.
4875 If <TT>match</TT> is <TT>true</TT>, the initial part of the history entry
4876 must match the current line from beginning to point.
4884 <DD><A NAME="fn:WEdln.insstr"></A>
4886 <DT><STRONG>Synopsis:</STRONG></DT>
4887 <DD><TT>void WEdln.insstr(WEdln wedln, string str)</TT>
4890 <DT><STRONG>Description:</STRONG></DT>
4891 <DD>Input <TT>str</TT> in wedln at current editing point.
4899 <DD><A NAME="fn:WEdln.is_histcompl"></A>
4901 <DT><STRONG>Synopsis:</STRONG></DT>
4902 <DD><TT>bool WEdln.is_histcompl(WEdln wedln)</TT>
4905 <DT><STRONG>Description:</STRONG></DT>
4906 <DD>Get history completion mode.
4914 <DD><A NAME="fn:WEdln.kill_line"></A>
4916 <DT><STRONG>Synopsis:</STRONG></DT>
4917 <DD><TT>void WEdln.kill_line(WEdln wedln)</TT>
4920 <DT><STRONG>Description:</STRONG></DT>
4921 <DD>Delete the whole line.
4929 <DD><A NAME="fn:WEdln.kill_to_bol"></A>
4931 <DT><STRONG>Synopsis:</STRONG></DT>
4932 <DD><TT>void WEdln.kill_to_bol(WEdln wedln)</TT>
4935 <DT><STRONG>Description:</STRONG></DT>
4936 <DD>Delete all characters from previous to beginning of line.
4944 <DD><A NAME="fn:WEdln.kill_to_eol"></A>
4946 <DT><STRONG>Synopsis:</STRONG></DT>
4947 <DD><TT>void WEdln.kill_to_eol(WEdln wedln)</TT>
4950 <DT><STRONG>Description:</STRONG></DT>
4951 <DD>Delete all characters from current to end of line.
4959 <DD><A NAME="fn:WEdln.kill_word"></A>
4961 <DT><STRONG>Synopsis:</STRONG></DT>
4962 <DD><TT>void WEdln.kill_word(WEdln wedln)</TT>
4965 <DT><STRONG>Description:</STRONG></DT>
4966 <DD>Starting from the current point, delete possible whitespace and
4967 following alphanumeric characters until next non-alphanumeric character.
4975 <DD><A NAME="fn:WEdln.mark"></A>
4977 <DT><STRONG>Synopsis:</STRONG></DT>
4978 <DD><TT>integer WEdln.mark(WEdln wedln)</TT>
4981 <DT><STRONG>Description:</STRONG></DT>
4982 <DD>Get current mark (start of selection) for <TT>wedln</TT>.
4983 Return value of -1 indicates that there is no mark, and
4984 0 is the beginning of the line.
4992 <DD><A NAME="fn:WEdln.next_completion"></A>
4994 <DT><STRONG>Synopsis:</STRONG></DT>
4995 <DD><TT>bool WEdln.next_completion(WEdln wedln)</TT>
4998 <DT><STRONG>Description:</STRONG></DT>
4999 <DD>Select next completion.
5007 <DD><A NAME="fn:WEdln.paste"></A>
5009 <DT><STRONG>Synopsis:</STRONG></DT>
5010 <DD><TT>void WEdln.paste(WEdln wedln)</TT>
5013 <DT><STRONG>Description:</STRONG></DT>
5014 <DD>Request selection from application holding such.
5017 Note that this function is asynchronous; the selection will not
5018 actually be inserted before Ion receives it. This will be no
5019 earlier than Ion return to its main loop.
5027 <DD><A NAME="fn:WEdln.point"></A>
5029 <DT><STRONG>Synopsis:</STRONG></DT>
5030 <DD><TT>integer WEdln.point(WEdln wedln)</TT>
5033 <DT><STRONG>Description:</STRONG></DT>
5034 <DD>Get current editing point.
5035 Beginning of the edited line is point 0.
5043 <DD><A NAME="fn:WEdln.prev_completion"></A>
5045 <DT><STRONG>Synopsis:</STRONG></DT>
5046 <DD><TT>bool WEdln.prev_completion(WEdln wedln)</TT>
5049 <DT><STRONG>Description:</STRONG></DT>
5050 <DD>Select previous completion.
5058 <DD><A NAME="fn:WEdln.set_context"></A>
5060 <DT><STRONG>Synopsis:</STRONG></DT>
5061 <DD><TT>void WEdln.set_context(WEdln wedln, string context)</TT>
5064 <DT><STRONG>Description:</STRONG></DT>
5065 <DD>Set history context for <TT>wedln</TT>.
5073 <DD><A NAME="fn:WEdln.set_mark"></A>
5075 <DT><STRONG>Synopsis:</STRONG></DT>
5076 <DD><TT>void WEdln.set_mark(WEdln wedln)</TT>
5079 <DT><STRONG>Description:</STRONG></DT>
5080 <DD>Set <SPAN CLASS="textit">mark</SPAN> to current cursor position.
5088 <DD><A NAME="fn:WEdln.skip_word"></A>
5090 <DT><STRONG>Synopsis:</STRONG></DT>
5091 <DD><TT>void WEdln.skip_word(WEdln wedln)</TT>
5094 <DT><STRONG>Description:</STRONG></DT>
5095 <DD>Go to to end of current sequence of whitespace followed by alphanumeric
5104 <DD><A NAME="fn:WEdln.transpose_chars"></A>
5106 <DT><STRONG>Synopsis:</STRONG></DT>
5107 <DD><TT>void WEdln.transpose_chars(WEdln wedln)</TT>
5110 <DT><STRONG>Description:</STRONG></DT>
5111 <DD>Transpose characters.
5119 <DD><A NAME="fn:WEdln.transpose_words"></A>
5121 <DT><STRONG>Synopsis:</STRONG></DT>
5122 <DD><TT>void WEdln.transpose_words(WEdln wedln)</TT>
5125 <DT><STRONG>Description:</STRONG></DT>
5126 <DD>Transpose words.
5133 <H3><A NAME="SECTION00733000000000000000">
5134 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN> WInput functions</A>
5140 <DD><A NAME="fn:WInput.cancel"></A>
5142 <DT><STRONG>Synopsis:</STRONG></DT>
5143 <DD><TT>void WInput.cancel(WInput input)</TT>
5146 <DT><STRONG>Description:</STRONG></DT>
5147 <DD>Close input not calling any possible finish handlers.
5155 <DD><A NAME="fn:WInput.scrolldown"></A>
5157 <DT><STRONG>Synopsis:</STRONG></DT>
5158 <DD><TT>void WInput.scrolldown(WInput input)</TT>
5161 <DT><STRONG>Description:</STRONG></DT>
5162 <DD>Scroll input <TT>input</TT> text contents down.
5170 <DD><A NAME="fn:WInput.scrollup"></A>
5172 <DT><STRONG>Synopsis:</STRONG></DT>
5173 <DD><TT>void WInput.scrollup(WInput input)</TT>
5176 <DT><STRONG>Description:</STRONG></DT>
5177 <DD>Scroll input <TT>input</TT> text contents up.
5184 <H2><A NAME="SECTION00740000000000000000"></A>
5185 <A NAME="sec:menuref"></A>
5187 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">4</SPAN> Functions defined in <SPAN CLASS="textit">mod_menu</SPAN>
5191 <DD><A NAME="fn:mod_menu.grabmenu"></A>
5193 <DT><STRONG>Synopsis:</STRONG></DT>
5194 <DD><TT>mod_menu.grabmenu(mplex, sub, menu_or_name, param)</TT>
5197 <DT><STRONG>Description:</STRONG></DT>
5198 <DD>This function is similar to <A HREF="#fn:mod_menu.menu"><TT>mod_menu.menu</TT></A>, but input
5199 is grabbed and the key used to active the menu can be used to
5200 cycle through menu entries.
5208 <DD><A NAME="fn:mod_menu.menu"></A>
5210 <DT><STRONG>Synopsis:</STRONG></DT>
5211 <DD><TT>mod_menu.menu(mplex, sub, menu_or_name, param)</TT>
5214 <DT><STRONG>Description:</STRONG></DT>
5215 <DD>Display a menu in the lower-left corner of <TT>mplex</TT>.
5216 The variable <TT>menu_or_name</TT> is either the name of a menu
5217 defined with <A HREF="#fn:mod_menu.defmenu"><TT>mod_menu.defmenu</TT></A> or directly a table similar
5218 to ones passesd to this function. When this function is
5219 called from a binding handler, <TT>sub</TT> should be set to
5220 the second argument of to the binding handler (<TT>_sub</TT>)
5221 so that the menu handler will get the same parameters as the
5222 binding handler. Extra options can be passed in the table
5223 <TT>param</TT>. The initial entry can be specified as the field
5224 <TT>initial</TT> as an integer starting from 1. Menus can be made
5225 to use a bigger style by setting the field <TT>big</TT> to <TT>true</TT>.
5233 <DD><A NAME="fn:mod_menu.get"></A>
5235 <DT><STRONG>Synopsis:</STRONG></DT>
5236 <DD><TT>table mod_menu.get()</TT>
5239 <DT><STRONG>Description:</STRONG></DT>
5240 <DD>Get module basic settings. For details, see <A HREF="#fn:mod_menu.set"><TT>mod_menu.set</TT></A>.
5248 <DD><A NAME="fn:mod_menu.set"></A>
5250 <DT><STRONG>Synopsis:</STRONG></DT>
5251 <DD><TT>void mod_menu.set(table tab)</TT>
5254 <DT><STRONG>Description:</STRONG></DT>
5255 <DD>Set module basic settings. The parameter table may contain the
5259 <TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
5260 <TR><TD ALIGN="LEFT">Field</TD>
5261 <TD ALIGN="LEFT">Description</TD>
5263 <TR><TD ALIGN="LEFT"><TT>scroll_amount</TT></TD>
5264 <TD ALIGN="LEFT">Number of pixels to scroll at a time
5265 pointer-controlled menus when one extends
5266 beyond a border of the screen and the pointer
5267 touches that border.</TD>
5269 <TR><TD ALIGN="LEFT"><TT>scroll_delay</TT></TD>
5270 <TD ALIGN="LEFT">Time between such scrolling events in
5281 <DD><A NAME="fn:mod_menu.pmenu"></A>
5283 <DT><STRONG>Synopsis:</STRONG></DT>
5284 <DD><TT>mod_menu.pmenu(win, sub, menu_or_name)</TT>
5287 <DT><STRONG>Description:</STRONG></DT>
5288 <DD>This function displays a drop-down menu and should only
5289 be called from a mouse press handler. The parameters are
5290 similar to those of <A HREF="#fn:mod_menu.menu"><TT>mod_menu.menu</TT></A>.
5297 <H3><A NAME="SECTION00741000000000000000">
5298 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN> WMenu functions</A>
5304 <DD><A NAME="fn:WMenu.cancel"></A>
5306 <DT><STRONG>Synopsis:</STRONG></DT>
5307 <DD><TT>void WMenu.cancel(WMenu menu)</TT>
5310 <DT><STRONG>Description:</STRONG></DT>
5311 <DD>Close <TT>menu</TT> not calling any possible finish handlers.
5319 <DD><A NAME="fn:WMenu.finish"></A>
5321 <DT><STRONG>Synopsis:</STRONG></DT>
5322 <DD><TT>void WMenu.finish(WMenu menu)</TT>
5325 <DT><STRONG>Description:</STRONG></DT>
5326 <DD>If selected entry is a submenu, display that.
5327 Otherwise destroy the menu and call handler for selected entry.
5335 <DD><A NAME="fn:WMenu.select_next"></A>
5337 <DT><STRONG>Synopsis:</STRONG></DT>
5338 <DD><TT>void WMenu.select_next(WMenu menu)</TT>
5341 <DT><STRONG>Description:</STRONG></DT>
5342 <DD>Select next entry in menu.
5350 <DD><A NAME="fn:WMenu.select_nth"></A>
5352 <DT><STRONG>Synopsis:</STRONG></DT>
5353 <DD><TT>void WMenu.select_nth(WMenu menu, integer n)</TT>
5356 <DT><STRONG>Description:</STRONG></DT>
5357 <DD>Select <TT>n</TT>:th entry in menu.
5365 <DD><A NAME="fn:WMenu.select_prev"></A>
5367 <DT><STRONG>Synopsis:</STRONG></DT>
5368 <DD><TT>void WMenu.select_prev(WMenu menu)</TT>
5371 <DT><STRONG>Description:</STRONG></DT>
5372 <DD>Select previous entry in menu.
5380 <DD><A NAME="fn:WMenu.typeahead_clear"></A>
5382 <DT><STRONG>Synopsis:</STRONG></DT>
5383 <DD><TT>void WMenu.typeahead_clear(WMenu menu)</TT>
5386 <DT><STRONG>Description:</STRONG></DT>
5387 <DD>Clear typeahead buffer.
5394 <H2><A NAME="SECTION00750000000000000000"></A>
5395 <A NAME="sec:dockref"></A>
5397 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">5</SPAN> Functions defined in <SPAN CLASS="textit">mod_dock</SPAN>
5401 <DD><A NAME="fn:mod_dock.set_floating_shown_on"></A>
5403 <DT><STRONG>Synopsis:</STRONG></DT>
5404 <DD><TT>void mod_dock.set_floating_shown_on(WMPlex mplex, string how)</TT>
5407 <DT><STRONG>Description:</STRONG></DT>
5408 <DD>Toggle floating docks on <TT>mplex</TT>.
5415 <H3><A NAME="SECTION00751000000000000000">
5416 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">1</SPAN> WDock functions</A>
5422 <DD><A NAME="fn:WDock.attach"></A>
5424 <DT><STRONG>Synopsis:</STRONG></DT>
5425 <DD><TT>bool WDock.attach(WDock dock, WRegion reg)</TT>
5428 <DT><STRONG>Description:</STRONG></DT>
5429 <DD>Attach <TT>reg</TT> to <TT>dock</TT>.
5437 <DD><A NAME="fn:WDock.get"></A>
5439 <DT><STRONG>Synopsis:</STRONG></DT>
5440 <DD><TT>table WDock.get(WDock dock)</TT>
5443 <DT><STRONG>Description:</STRONG></DT>
5444 <DD>Get <TT>dock</TT>'s configuration table. See <A HREF="#fn:WDock.set"><TT>WDock.set</TT></A> for a
5445 description of the table.
5453 <DD><A NAME="fn:WDock.resize"></A>
5455 <DT><STRONG>Synopsis:</STRONG></DT>
5456 <DD><TT>void WDock.resize(WDock dock)</TT>
5459 <DT><STRONG>Description:</STRONG></DT>
5460 <DD>Resizes and refreshes <TT>dock</TT>.
5468 <DD><A NAME="fn:WDock.set"></A>
5470 <DT><STRONG>Synopsis:</STRONG></DT>
5471 <DD><TT>void WDock.set(WDock dock, table conftab)</TT>
5474 <DT><STRONG>Description:</STRONG></DT>
5475 <DD>Configure <TT>dock</TT>. <TT>conftab</TT> is a table of key/value pairs:
5478 <TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
5479 <TR><TD ALIGN="LEFT">Key</TD>
5480 <TD ALIGN="LEFT">Values</TD>
5481 <TD ALIGN="LEFT">Description</TD>
5483 <TR><TD ALIGN="LEFT"><TT>name</TT></TD>
5484 <TD ALIGN="LEFT">string</TD>
5485 <TD ALIGN="LEFT">Name of dock</TD>
5487 <TR><TD ALIGN="LEFT"><TT>pos</TT></TD>
5488 <TD ALIGN="LEFT">string in <!-- MATH
5489 $\{t,m,b\}\times\{t,c,b\}$
5491 <SPAN CLASS="MATH"><IMG
5492 WIDTH="142" HEIGHT="36" ALIGN="MIDDLE" BORDER="0"
5494 ALT="$\{t,m,b\}\times\{t,c,b\}$"></SPAN></TD>
5495 <TD ALIGN="LEFT">Dock position.
5496 Can only be used in floating mode.</TD>
5498 <TR><TD ALIGN="LEFT"><TT>grow</TT></TD>
5499 <TD ALIGN="LEFT">up/down/left/right</TD>
5500 <TD ALIGN="LEFT">Growth direction where new dockapps are added. Also
5501 sets orientation for dock when working as WMPlex status
5502 display (see <A HREF="#fn:WMPlex.set_stdisp"><TT>WMPlex.set_stdisp</TT></A>).</TD>
5504 <TR><TD ALIGN="LEFT"><TT>is_auto</TT></TD>
5505 <TD ALIGN="LEFT">bool</TD>
5506 <TD ALIGN="LEFT">Should <TT>dock</TT> automatically manage new dockapps?</TD>
5511 Any parameters not explicitly set in <TT>conftab</TT> will be left unchanged.
5518 <H2><A NAME="SECTION00760000000000000000"></A>
5519 <A NAME="sec:spref"></A>
5521 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">6</SPAN> Functions defined in <SPAN CLASS="textit">mod_sp</SPAN>
5525 <DD><A NAME="fn:mod_sp.set_shown"></A>
5527 <DT><STRONG>Synopsis:</STRONG></DT>
5528 <DD><TT>bool mod_sp.set_shown(WFrame sp, string how)</TT>
5531 <DT><STRONG>Description:</STRONG></DT>
5532 <DD>Toggle displayed status of <TT>sp</TT>.
5533 The parameter <TT>how</TT> is one of
5534 `<TT>set</TT>', `<TT>unset</TT>', or `<TT>toggle</TT>'.
5535 The resulting status is returned.
5543 <DD><A NAME="fn:mod_sp.set_shown_on"></A>
5545 <DT><STRONG>Synopsis:</STRONG></DT>
5546 <DD><TT>bool mod_sp.set_shown_on(WMPlex mplex, string how)</TT>
5549 <DT><STRONG>Description:</STRONG></DT>
5550 <DD>Change displayed status of some scratchpad on <TT>mplex</TT> if one is
5551 found. The parameter <TT>how</TT> is one of
5552 `<TT>set</TT>', `<TT>unset</TT>', or `<TT>toggle</TT>'.
5553 The resulting status is returned.
5560 <H2><A NAME="SECTION00770000000000000000"></A>
5561 <A NAME="sec:statusbarref"></A>
5563 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">7</SPAN> Functions defined in <SPAN CLASS="textit">mod_statusbar</SPAN>
5567 <DD><A NAME="fn:mod_statusbar.create"></A>
5569 <DT><STRONG>Synopsis:</STRONG></DT>
5570 <DD><TT>mod_statusbar.create(param)</TT>
5573 <DT><STRONG>Description:</STRONG></DT>
5574 <DD>Create a statusbar. The possible parameters in the
5575 table <TT>param</TT> are:
5578 <TABLE CELLPADDING=3 WIDTH="100%">
5579 <TR><TD ALIGN="LEFT">Variable</TD>
5580 <TD ALIGN="LEFT">Type</TD>
5581 <TD ALIGN="LEFT">Description</TD>
5583 <TR><TD ALIGN="LEFT"><TT>template</TT></TD>
5584 <TD ALIGN="LEFT">string</TD>
5585 <TD ALIGN="LEFT">The template; see
5586 Section <A HREF="node4.html#sec:statusbar">3.6</A>.</TD>
5588 <TR><TD ALIGN="LEFT"><TT>pos</TT></TD>
5589 <TD ALIGN="LEFT">string</TD>
5590 <TD ALIGN="LEFT">Position: `<TT>tl</TT>', `<TT>tr</TT>',
5591 `<TT>bl</TT>' or `<TT>br</TT>'
5592 (for the obvious combinations of
5593 top/left/bottom/right).</TD>
5595 <TR><TD ALIGN="LEFT"><TT>screen</TT></TD>
5596 <TD ALIGN="LEFT">integer</TD>
5597 <TD ALIGN="LEFT">Screen number to create the statusbar on.</TD>
5599 <TR><TD ALIGN="LEFT"><TT>fullsize</TT></TD>
5600 <TD ALIGN="LEFT">boolean</TD>
5601 <TD ALIGN="LEFT">If set, the statusbar will waste
5602 space instead of adapting to layout.</TD>
5604 <TR><TD ALIGN="LEFT"><TT>systray</TT></TD>
5605 <TD ALIGN="LEFT">boolaen</TD>
5606 <TD ALIGN="LEFT">Swallow (KDE protocol) systray icons.</TD>
5616 <DD><A NAME="fn:mod_statusbar.inform"></A>
5618 <DT><STRONG>Synopsis:</STRONG></DT>
5619 <DD><TT>mod_statusbar.inform(name, value)</TT>
5622 <DT><STRONG>Description:</STRONG></DT>
5623 <DD>Inform of a value.
5631 <DD><A NAME="fn:mod_statusbar.launch_statusd"></A>
5633 <DT><STRONG>Synopsis:</STRONG></DT>
5634 <DD><TT>mod_statusbar.launch_statusd(cfg)</TT>
5637 <DT><STRONG>Description:</STRONG></DT>
5638 <DD>Load modules and launch <SPAN CLASS="textit">ion-statusd</SPAN> with configuration
5639 table <TT>cfg</TT>. The options for each <SPAN CLASS="textit">ion-statusd</SPAN> monitor
5640 script should be contained in the corresponding sub-table of <TT>cfg</TT>.
5648 <DD><A NAME="fn:mod_statusbar.statusbars"></A>
5650 <DT><STRONG>Synopsis:</STRONG></DT>
5651 <DD><TT>table mod_statusbar.statusbars()</TT>
5654 <DT><STRONG>Description:</STRONG></DT>
5655 <DD>Returns a list of all statusbars.
5663 <DD><A NAME="fn:mod_statusbar.update"></A>
5665 <DT><STRONG>Synopsis:</STRONG></DT>
5666 <DD><TT>mod_statusbar.update(update_templates)</TT>
5669 <DT><STRONG>Description:</STRONG></DT>
5670 <DD>Update statusbar contents. To be called after series
5671 of <A HREF="#fn:mod_statusbar.inform"><TT>mod_statusbar.inform</TT></A> calls.
5678 <H3><A NAME="SECTION00771000000000000000">
5679 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">7</SPAN>.<SPAN CLASS="arabic">1</SPAN> WStatusBar functions</A>
5685 <DD><A NAME="fn:WStatusBar.get_template_table"></A>
5687 <DT><STRONG>Synopsis:</STRONG></DT>
5688 <DD><TT>table WStatusBar.get_template_table(WStatusBar sb)</TT>
5691 <DT><STRONG>Description:</STRONG></DT>
5692 <DD>Get statusbar template as table.
5700 <DD><A NAME="fn:WStatusBar.is_systray"></A>
5702 <DT><STRONG>Synopsis:</STRONG></DT>
5703 <DD><TT>bool WStatusBar.is_systray(WStatusBar sb)</TT>
5706 <DT><STRONG>Description:</STRONG></DT>
5707 <DD>Is <TT>sb</TT> used as a systray?
5715 <DD><A NAME="fn:WStatusBar.set_systray"></A>
5717 <DT><STRONG>Synopsis:</STRONG></DT>
5718 <DD><TT>bool WStatusBar.set_systray(WStatusBar sb, string how)</TT>
5721 <DT><STRONG>Description:</STRONG></DT>
5722 <DD>Enable or disable use of <TT>sb</TT> as systray.
5723 The parameter <TT>how</TT> can be one of
5724 `<TT>set</TT>', `<TT>unset</TT>', or `<TT>toggle</TT>'.
5725 Resulting state is returned.
5733 <DD><A NAME="fn:WStatusBar.set_template"></A>
5735 <DT><STRONG>Synopsis:</STRONG></DT>
5736 <DD><TT>void WStatusBar.set_template(WStatusBar sb, string tmpl)</TT>
5739 <DT><STRONG>Description:</STRONG></DT>
5740 <DD>Set statusbar template.
5748 <DD><A NAME="fn:WStatusBar.set_template_table"></A>
5750 <DT><STRONG>Synopsis:</STRONG></DT>
5751 <DD><TT>void WStatusBar.set_template_table(WStatusBar sb, table t)</TT>
5754 <DT><STRONG>Description:</STRONG></DT>
5755 <DD>Set statusbar template as table.
5763 <DD><A NAME="fn:WStatusBar.update"></A>
5765 <DT><STRONG>Synopsis:</STRONG></DT>
5766 <DD><TT>void WStatusBar.update(WStatusBar sb, table t)</TT>
5769 <DT><STRONG>Description:</STRONG></DT>
5770 <DD>Set statusbar template.
5777 <H2><A NAME="SECTION00780000000000000000"></A>
5778 <A NAME="sec:deref"></A>
5780 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">8</SPAN> Functions defined in <SPAN CLASS="textit">de</SPAN>
5784 <DD><A NAME="fn:de.defstyle"></A>
5786 <DT><STRONG>Synopsis:</STRONG></DT>
5787 <DD><TT>bool de.defstyle(string name, table tab)</TT>
5790 <DT><STRONG>Description:</STRONG></DT>
5799 <DD><A NAME="fn:de.defstyle_rootwin"></A>
5801 <DT><STRONG>Synopsis:</STRONG></DT>
5802 <DD><TT>bool de.defstyle_rootwin(WRootWin rootwin, string name, table tab)</TT>
5805 <DT><STRONG>Description:</STRONG></DT>
5806 <DD>Define a style for the root window <TT>rootwin</TT>.
5814 <DD><A NAME="fn:de.reset"></A>
5816 <DT><STRONG>Synopsis:</STRONG></DT>
5817 <DD><TT>void de.reset()</TT>
5820 <DT><STRONG>Description:</STRONG></DT>
5821 <DD>Clear all styles from drawing engine memory.
5829 <DD><A NAME="fn:de.substyle"></A>
5831 <DT><STRONG>Synopsis:</STRONG></DT>
5832 <DD><TT>table de.substyle(string pattern, table tab)</TT>
5835 <DT><STRONG>Description:</STRONG></DT>
5836 <DD>Define a substyle.
5843 <H2><A NAME="SECTION00790000000000000000"></A>
5844 <A NAME="sec:hookref"></A>
5846 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">9</SPAN> Hooks
5852 <DD><A NAME="8270"></A>
5855 <DT><STRONG>Hook name:</STRONG></DT>
5856 <DD><A NAME="clientwin_do_manage_alt"></A><TT>clientwin_do_manage_alt</TT>
5859 <DT><STRONG>Parameters:</STRONG></DT>
5860 <DD><TT>(WClientWin, table)</TT>
5863 <DT><STRONG>Description:</STRONG></DT>
5864 <DD>Called when we want to manage a new client window.
5865 The table argument contains the following fields:
5868 <TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
5869 <TR><TD ALIGN="LEFT">Field</TD>
5870 <TD ALIGN="LEFT">Type</TD>
5871 <TD ALIGN="LEFT">Description</TD>
5873 <TR><TD ALIGN="LEFT"><TT>switchto</TT></TD>
5874 <TD ALIGN="LEFT">bool</TD>
5875 <TD ALIGN="LEFT">Do we want to switch to the client window.</TD>
5877 <TR><TD ALIGN="LEFT"><TT>jumpto</TT></TD>
5878 <TD ALIGN="LEFT">bool</TD>
5879 <TD ALIGN="LEFT">Do we want to jump to the client window.</TD>
5881 <TR><TD ALIGN="LEFT"><TT>userpos</TT></TD>
5882 <TD ALIGN="LEFT">bool</TD>
5883 <TD ALIGN="LEFT">Geometry set by user.</TD>
5885 <TR><TD ALIGN="LEFT"><TT>dockapp</TT></TD>
5886 <TD ALIGN="LEFT">bool</TD>
5887 <TD ALIGN="LEFT">Client window is a dock-app.</TD>
5889 <TR><TD ALIGN="LEFT"><TT>maprq</TT></TD>
5890 <TD ALIGN="LEFT">bool</TD>
5891 <TD ALIGN="LEFT">Map request (and not initialisation scan).</TD>
5893 <TR><TD ALIGN="LEFT"><TT>gravity</TT></TD>
5894 <TD ALIGN="LEFT">number</TD>
5895 <TD ALIGN="LEFT">Window gravity.</TD>
5897 <TR><TD ALIGN="LEFT"><TT>geom</TT></TD>
5898 <TD ALIGN="LEFT">table</TD>
5899 <TD ALIGN="LEFT">Requested geometry; <TT>x</TT>, <TT>y</TT>, <TT>w</TT>, <TT>h</TT>.</TD>
5901 <TR><TD ALIGN="LEFT"><TT>tfor</TT></TD>
5902 <TD ALIGN="LEFT">WClientWin</TD>
5903 <TD ALIGN="LEFT">Transient for window.</TD>
5908 This hook is not called in protected mode and can be used for
5909 arbitrary placement policies (deciding in which workspace a new
5910 WClientWin should go). In this case, you can call
5914 where <TT>reg</TT> is the region where the window should go, and
5915 <TT>cwin</TT> is the first argument of the function added to the
5924 <DD><A NAME="8271"></A>
5927 <DT><STRONG>Hook name:</STRONG></DT>
5928 <DD><A NAME="clientwin_mapped_hook"></A><TT>clientwin_mapped_hook</TT>
5931 <DT><STRONG>Parameters:</STRONG></DT>
5932 <DD><TT>WClientWin</TT>
5935 <DT><STRONG>Description:</STRONG></DT>
5936 <DD>Called when we have started to manage a client window.
5944 <DD><A NAME="8272"></A>
5947 <DT><STRONG>Hook name:</STRONG></DT>
5948 <DD><A NAME="clientwin_property_change_hook"></A><TT>clientwin_property_change_hook</TT>
5951 <DT><STRONG>Parameters:</STRONG></DT>
5952 <DD><TT>(WClientWin, integer)</TT>
5955 <DT><STRONG>Description:</STRONG></DT>
5956 <DD>Called when the property identified by the parameter atom id
5957 (integer) has changed on a client window.
5965 <DD><A NAME="8273"></A>
5968 <DT><STRONG>Hook name:</STRONG></DT>
5969 <DD><A NAME="clientwin_unmapped_hook"></A><TT>clientwin_unmapped_hook</TT>
5972 <DT><STRONG>Parameters:</STRONG></DT>
5976 <DT><STRONG>Description:</STRONG></DT>
5977 <DD>Called when we no longer manage a client window. The parameter
5978 is the X ID of the window; see <A HREF="#fn:WClientWin.xid"><TT>WClientWin.xid</TT></A>.
5986 <DD><A NAME="8274"></A>
5989 <DT><STRONG>Hook name:</STRONG></DT>
5990 <DD><A NAME="frame_managed_changed_hook"></A><TT>frame_managed_changed_hook</TT>
5993 <DT><STRONG>Parameters:</STRONG></DT>
5997 <DT><STRONG>Description:</STRONG></DT>
5998 <DD>Called when there are changes in the objects managed by a frame
5999 or their order. The table parameter has the following fields:
6002 <TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
6003 <TR><TD ALIGN="LEFT">Field</TD>
6004 <TD ALIGN="LEFT">Type</TD>
6005 <TD ALIGN="LEFT">Description</TD>
6007 <TR><TD ALIGN="LEFT"><TT>reg</TT></TD>
6008 <TD ALIGN="LEFT">WFrame</TD>
6009 <TD ALIGN="LEFT">The frame in question</TD>
6011 <TR><TD ALIGN="LEFT"><TT>mode</TT></TD>
6012 <TD ALIGN="LEFT">string</TD>
6013 <TD ALIGN="LEFT">`<TT>switchonly</TT>', `<TT>reorder</TT>',
6014 `<TT>add</TT>' or `<TT>remove</TT>'</TD>
6016 <TR><TD ALIGN="LEFT"><TT>sw</TT></TD>
6017 <TD ALIGN="LEFT">bool</TD>
6018 <TD ALIGN="LEFT">Switch occurred</TD>
6020 <TR><TD ALIGN="LEFT"><TT>sub</TT></TD>
6021 <TD ALIGN="LEFT">WRegion</TD>
6022 <TD ALIGN="LEFT">The managed region (primarily) affected</TD>
6032 <DD><A NAME="8275"></A>
6035 <DT><STRONG>Hook name:</STRONG></DT>
6036 <DD><A NAME="ioncore_sigchld_hook"></A><TT>ioncore_sigchld_hook</TT>
6039 <DT><STRONG>Parameters:</STRONG></DT>
6040 <DD><TT>integer</TT>
6043 <DT><STRONG>Description:</STRONG></DT>
6044 <DD>Called when a child process has exited. The parameter
6045 is the PID of the process.
6053 <DD><A NAME="8276"></A>
6056 <DT><STRONG>Hook name:</STRONG></DT>
6057 <DD><A NAME="ioncore_deinit_hook"></A><TT>ioncore_deinit_hook</TT>
6060 <DT><STRONG>Parameters:</STRONG></DT>
6064 <DT><STRONG>Description:</STRONG></DT>
6065 <DD>Called when Ion is deinitialising and about to quit.
6073 <DD><A NAME="8277"></A>
6076 <DT><STRONG>Hook name:</STRONG></DT>
6077 <DD><A NAME="ioncore_post_layout_setup_hook"></A><TT>ioncore_post_layout_setup_hook</TT>
6080 <DT><STRONG>Parameters:</STRONG></DT>
6084 <DT><STRONG>Description:</STRONG></DT>
6085 <DD>Called when Ion has done all initialisation and is almost ready to
6086 enter the main-loop, except no windows are yet being managed.
6094 <DD><A NAME="8278"></A>
6097 <DT><STRONG>Hook name:</STRONG></DT>
6098 <DD><A NAME="ioncore_snapshot_hook"></A><TT>ioncore_snapshot_hook</TT>
6101 <DT><STRONG>Parameters:</STRONG></DT>
6105 <DT><STRONG>Description:</STRONG></DT>
6106 <DD>Called to signal scripts and modules to save their state (if any).
6114 <DD><A NAME="8279"></A>
6117 <DT><STRONG>Hook name:</STRONG></DT>
6118 <DD><A NAME="ioncore_submap_ungrab_hook"></A><TT>ioncore_submap_ungrab_hook</TT>
6121 <DT><STRONG>Parameters:</STRONG></DT>
6125 <DT><STRONG>Description:</STRONG></DT>
6126 <DD>This hook is used to signal whenever Ion leaves the submap grab mode.
6134 <DD><A NAME="8280"></A>
6137 <DT><STRONG>Hook name:</STRONG></DT>
6138 <DD><A NAME="tiling_placement_alt"></A><TT>tiling_placement_alt</TT>
6141 <DT><STRONG>Parameters:</STRONG></DT>
6145 <DT><STRONG>Description:</STRONG></DT>
6146 <DD>Called when a client window is about to be managed by a WTiling
6147 to allow for alternative placement policies. The table has the
6149 <TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
6150 <TR><TD ALIGN="LEFT">Field</TD>
6151 <TD ALIGN="LEFT">Type</TD>
6152 <TD ALIGN="LEFT">Description</TD>
6154 <TR><TD ALIGN="LEFT"><TT>tiling</TT></TD>
6155 <TD ALIGN="LEFT">WTiling</TD>
6156 <TD ALIGN="LEFT">The tiling</TD>
6158 <TR><TD ALIGN="LEFT"><TT>reg</TT></TD>
6159 <TD ALIGN="LEFT">WRegion</TD>
6160 <TD ALIGN="LEFT">The region (always a WClientWin at
6161 the moment) to be placed</TD>
6163 <TR><TD ALIGN="LEFT"><TT>mp</TT></TD>
6164 <TD ALIGN="LEFT">table</TD>
6165 <TD ALIGN="LEFT">This table contains the same fields as
6166 the parameter of <A HREF="#fn:clientwin_do_manage_alt"><TT>clientwin_do_manage_alt</TT></A></TD>
6168 <TR><TD ALIGN="LEFT"><TT>res_frame</TT></TD>
6169 <TD ALIGN="LEFT">WFrame</TD>
6170 <TD ALIGN="LEFT">A successful handler should
6171 return the target frame here.</TD>
6174 This hook is just for placing within a given workspace after the
6175 workspace has been decided by the default workspace selection
6176 policy. It is called in protected mode. For arbitrary placement
6177 policies, <A HREF="#fn:clientwin_do_manage_alt"><TT>clientwin_do_manage_alt</TT></A> should be used; it
6178 isn't called in protected mode,
6186 <DD><A NAME="8281"></A>
6189 <DT><STRONG>Hook name:</STRONG></DT>
6190 <DD><A NAME="region_do_warp_alt"></A><TT>region_do_warp_alt</TT>
6193 <DT><STRONG>Parameters:</STRONG></DT>
6194 <DD><TT>WRegion</TT>
6197 <DT><STRONG>Description:</STRONG></DT>
6198 <DD>This alt-hook exist to allow for alternative pointer warping
6207 <DD><A NAME="8282"></A>
6210 <DT><STRONG>Hook name:</STRONG></DT>
6211 <DD><A NAME="screen_managed_changed_hook"></A><TT>screen_managed_changed_hook</TT>
6214 <DT><STRONG>Parameters:</STRONG></DT>
6218 <DT><STRONG>Description:</STRONG></DT>
6219 <DD>Called when there are changes in the objects managed by a screen
6220 or their order. The table parameter is similar to that of
6221 <A HREF="#fn:frame_managed_changed_hook"><TT>frame_managed_changed_hook</TT></A>.
6229 <DD><A NAME="8283"></A>
6232 <DT><STRONG>Hook name:</STRONG></DT>
6233 <DD><A NAME="region_notify_hook"></A><TT>region_notify_hook</TT>
6236 <DT><STRONG>Parameters:</STRONG></DT>
6237 <DD><TT>(WRegion, string)</TT>
6240 <DT><STRONG>Description:</STRONG></DT>
6241 <DD>Signalled when something (minor) has changed in relation to
6242 the first parameter region. The string argument gives the
6246 <TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
6247 <TR><TD ALIGN="LEFT">String</TD>
6248 <TD ALIGN="LEFT">Description</TD>
6250 <TR><TD ALIGN="LEFT"><TT>deinit</TT></TD>
6251 <TD ALIGN="LEFT">The region is about to be deinitialised.</TD>
6253 <TR><TD ALIGN="LEFT"><TT>activated</TT></TD>
6254 <TD ALIGN="LEFT">The region has received focus.</TD>
6256 <TR><TD ALIGN="LEFT"><TT>inactivated</TT></TD>
6257 <TD ALIGN="LEFT">The region has lost focus.</TD>
6259 <TR><TD ALIGN="LEFT"><TT>activity</TT></TD>
6260 <TD ALIGN="LEFT">There's been activity in the region itself.</TD>
6262 <TR><TD ALIGN="LEFT"><TT>sub_activity</TT></TD>
6263 <TD ALIGN="LEFT">There's been activity in some sub-region.</TD>
6265 <TR><TD ALIGN="LEFT"><TT>name</TT></TD>
6266 <TD ALIGN="LEFT">The name of the region has changed.</TD>
6268 <TR><TD ALIGN="LEFT"><TT>unset_manager</TT></TD>
6269 <TD ALIGN="LEFT">The region no longer has a manager.</TD>
6271 <TR><TD ALIGN="LEFT"><TT>set_manager</TT></TD>
6272 <TD ALIGN="LEFT">The region now has a manager.</TD>
6274 <TR><TD ALIGN="LEFT"><TT>tag</TT></TD>
6275 <TD ALIGN="LEFT">Tagging state has changed.</TD>
6277 <TR><TD ALIGN="LEFT"><TT>pseudoactivated</TT></TD>
6278 <TD ALIGN="LEFT">The region has become pseudo-active
6281 <TR><TD ALIGN="LEFT"><TT>pseudoinactivated</TT></TD>
6282 <TD ALIGN="LEFT">The region is no longer pseudo-active.</TD>
6287 A region is pseudo-active, when a) it is itself not active (does
6288 not not have the focus, and may not even have a window that could
6289 have it), but b) some region managed by it is active.
6298 <H2><A NAME="SECTION007100000000000000000"></A>
6299 <A NAME="sec:miscref"></A>
6301 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">10</SPAN> Miscellaneous
6306 <H3><A NAME="SECTION007101000000000000000"></A>
6307 <A NAME="sec:sizepolicies"></A>
6309 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">10</SPAN>.<SPAN CLASS="arabic">1</SPAN> Size policies
6313 Some functions accept a <TT>sizepolicy</TT> parameter. The possible
6320 `<TT>full_bounds</TT>',
6322 `<TT>free_glue</TT>',
6323 `<TT>northwest</TT>',
6325 `<TT>northeast</TT>',
6329 `<TT>southwest</TT>',
6331 `<TT>southeast</TT>',
6332 `<TT>stretch_top</TT>',
6333 `<TT>stretch_bottom</TT>',
6334 `<TT>stretch_left</TT>',
6335 `<TT>stretch_right</TT>',
6336 `<TT>free_glue_northwest</TT>',
6337 `<TT>free_glue_north</TT>',
6338 `<TT>free_glue_northeast</TT>',
6339 `<TT>free_glue_west</TT>',
6340 `<TT>free_glue_center</TT>',
6341 `<TT>free_glue_east</TT>',
6342 `<TT>free_glue_southwest</TT>',
6343 `<TT>free_glue_south</TT>', and
6344 `<TT>free_glue_southeast</TT>'.
6349 The ``free'' policies allow the managed
6350 object to be moved around, whereas the other versions do not.
6351 The ``glue'' policies glue the object to some border, while allowing
6352 it to be moved away from it by user action, but not automatically.
6353 The ``stretch'' policies stretch the object along the given border,
6354 while the coordinate-based policies simply place the object along
6361 <DIV CLASS="navigation"><HR>
6362 <!--Navigation Panel-->
6363 <A NAME="tex2html383"
6365 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
6366 <A NAME="tex2html377"
6367 HREF="ionconf.html">
6368 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
6369 <A NAME="tex2html371"
6371 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
6372 <A NAME="tex2html379"
6374 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
6375 <A NAME="tex2html381"
6377 <IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A>
6379 <B> Next:</B> <A NAME="tex2html384"
6380 HREF="node8.html">A. The GNU General</A>
6381 <B> Up:</B> <A NAME="tex2html378"
6382 HREF="ionconf.html">Configuring and extending Ion3</A>
6383 <B> Previous:</B> <A NAME="tex2html372"
6384 HREF="node6.html">5. Scripting</A>
6385 <B> <A NAME="tex2html380"
6386 HREF="node1.html">Contents</A></B>
6387 <B> <A NAME="tex2html382"
6388 HREF="node11.html">Index</A></B> </DIV>
6389 <!--End of Navigation Panel-->