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.
1027 When data is received through the pipe, <TT>handler</TT> is called
1036 <DD><A NAME="fn:ioncore.progname"></A>
1038 <DT><STRONG>Synopsis:</STRONG></DT>
1039 <DD><TT>string ioncore.progname()</TT>
1042 <DT><STRONG>Description:</STRONG></DT>
1043 <DD>Returns the name of program using Ioncore.
1051 <DD><A NAME="fn:ioncore.region_i"></A>
1053 <DT><STRONG>Synopsis:</STRONG></DT>
1054 <DD><TT>bool ioncore.region_i(function fn, string typenam)</TT>
1057 <DT><STRONG>Description:</STRONG></DT>
1058 <DD>Iterate over all non-client window regions with (inherited) class
1059 <TT>typenam</TT> until <TT>iterfn</TT> returns <TT>false</TT>.
1060 The function itself returns <TT>true</TT> if it reaches the end of list
1061 without this happening.
1069 <DD><A NAME="fn:ioncore.request_selection"></A>
1071 <DT><STRONG>Synopsis:</STRONG></DT>
1072 <DD><TT>void ioncore.request_selection(function fn)</TT>
1075 <DT><STRONG>Description:</STRONG></DT>
1076 <DD>Request (string) selection. The function <TT>fn</TT> will be called
1077 with the selection when and if it is received.
1085 <DD><A NAME="fn:ioncore.resign"></A>
1087 <DT><STRONG>Synopsis:</STRONG></DT>
1088 <DD><TT>void ioncore.resign()</TT>
1091 <DT><STRONG>Description:</STRONG></DT>
1092 <DD>Causes the window manager to simply exit without saving
1101 <DD><A NAME="fn:ioncore.restart"></A>
1103 <DT><STRONG>Synopsis:</STRONG></DT>
1104 <DD><TT>void ioncore.restart()</TT>
1107 <DT><STRONG>Description:</STRONG></DT>
1108 <DD>Restart, saving session first.
1116 <DD><A NAME="fn:ioncore.restart_other"></A>
1118 <DT><STRONG>Synopsis:</STRONG></DT>
1119 <DD><TT>void ioncore.restart_other(string cmd)</TT>
1122 <DT><STRONG>Description:</STRONG></DT>
1123 <DD>Attempt to restart another window manager <TT>cmd</TT>.
1131 <DD><A NAME="fn:ioncore.set"></A>
1133 <DT><STRONG>Synopsis:</STRONG></DT>
1134 <DD><TT>void ioncore.set(table tab)</TT>
1137 <DT><STRONG>Description:</STRONG></DT>
1138 <DD>Set ioncore basic settings. The table <TT>tab</TT> may contain the
1142 <TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
1143 <TR><TD ALIGN="LEFT">Field</TD>
1144 <TD ALIGN="LEFT">Description</TD>
1146 <TR><TD ALIGN="LEFT"><TT>opaque_resize</TT></TD>
1147 <TD ALIGN="LEFT">(boolean) Controls whether interactive move and
1148 resize operations simply draw a rubberband during
1149 the operation (false) or immediately affect the
1150 object in question at every step (true).</TD>
1152 <TR><TD ALIGN="LEFT"><TT>warp</TT></TD>
1153 <TD ALIGN="LEFT">(boolean) Should focusing operations move the
1154 pointer to the object to be focused?</TD>
1156 <TR><TD ALIGN="LEFT"><TT>switchto</TT></TD>
1157 <TD ALIGN="LEFT">(boolean) Should a managing WMPlex switch
1158 to a newly mapped client window?</TD>
1160 <TR><TD ALIGN="LEFT"><TT>screen_notify</TT></TD>
1161 <TD ALIGN="LEFT">(boolean) Should notification tooltips be displayed
1162 for hidden workspaces with activity?</TD>
1164 <TR><TD ALIGN="LEFT"><TT>frame_default_index</TT></TD>
1165 <TD ALIGN="LEFT">(string) Specifies where to add new regions
1166 on the mutually exclusive list of a frame. One of
1167 `<TT>last</TT>', `<TT>next</TT>', (for after current),
1168 or `<TT>next-act</TT>'
1169 (for after current and anything with activity right
1172 <TR><TD ALIGN="LEFT"><TT>dblclick_delay</TT></TD>
1173 <TD ALIGN="LEFT">(integer) Delay between clicks of a double click.</TD>
1175 <TR><TD ALIGN="LEFT"><TT>kbresize_delay</TT></TD>
1176 <TD ALIGN="LEFT">(integer) Delay in milliseconds for ending keyboard
1177 resize mode after inactivity.</TD>
1179 <TR><TD ALIGN="LEFT"><TT>kbresize_t_max</TT></TD>
1180 <TD ALIGN="LEFT">(integer) Controls keyboard resize acceleration.
1181 See description below for details.</TD>
1183 <TR><TD ALIGN="LEFT"><TT>kbresize_t_min</TT></TD>
1184 <TD ALIGN="LEFT">(integer) See below.</TD>
1186 <TR><TD ALIGN="LEFT"><TT>kbresize_step</TT></TD>
1187 <TD ALIGN="LEFT">(floating point) See below.</TD>
1189 <TR><TD ALIGN="LEFT"><TT>kbresize_maxacc</TT></TD>
1190 <TD ALIGN="LEFT">(floating point) See below.</TD>
1192 <TR><TD ALIGN="LEFT"><TT>framed_transients</TT></TD>
1193 <TD ALIGN="LEFT">(boolean) Put transients in nested frames.</TD>
1195 <TR><TD ALIGN="LEFT"><TT>float_placement_method</TT></TD>
1196 <TD ALIGN="LEFT">(string) How to place floating frames.
1197 One of `<TT>udlr</TT>' (up-down, then left-right),
1198 `<TT>lrud</TT>' (left-right, then up-down), or
1199 `<TT>random</TT>'.</TD>
1201 <TR><TD ALIGN="LEFT"><TT>mousefocus</TT></TD>
1202 <TD ALIGN="LEFT">(string) Mouse focus mode:
1203 `<TT>disable</TT>' or `<TT>sloppy</TT>'.</TD>
1205 <TR><TD ALIGN="LEFT"><TT>unsqueeze</TT></TD>
1206 <TD ALIGN="LEFT">(boolean) Auto-unsqueeze transients/menus/queries/etc.</TD>
1208 <TR><TD ALIGN="LEFT"><TT>autoraise</TT></TD>
1209 <TD ALIGN="LEFT">(boolean) Autoraise regions in groups on goto.</TD>
1214 When a keyboard resize function is called, and at most <TT>kbresize_t_max</TT>
1215 milliseconds has passed from a previous call, acceleration factor is reset
1216 to 1.0. Otherwise, if at least <TT>kbresize_t_min</TT> milliseconds have
1217 passed from the from previous acceleration update or reset the squere root
1218 of the acceleration factor is incremented by <TT>kbresize_step</TT>. The
1219 maximum acceleration factor (pixels/call modulo size hints) is given by
1220 <TT>kbresize_maxacc</TT>. The default values are (200, 50, 30, 100).
1228 <DD><A NAME="fn:ioncore.set_paths"></A>
1230 <DT><STRONG>Synopsis:</STRONG></DT>
1231 <DD><TT>bool ioncore.set_paths(table tab)</TT>
1234 <DT><STRONG>Description:</STRONG></DT>
1235 <DD>Set important directories (the fields <TT>sessiondir</TT>, <TT>searchpath</TT>
1244 <DD><A NAME="fn:ioncore.set_selection"></A>
1246 <DT><STRONG>Synopsis:</STRONG></DT>
1247 <DD><TT>void ioncore.set_selection(string p)</TT>
1250 <DT><STRONG>Description:</STRONG></DT>
1251 <DD>Set primary selection and cutbuffer0 to <TT>p</TT>.
1259 <DD><A NAME="fn:ioncore.shutdown"></A>
1261 <DT><STRONG>Synopsis:</STRONG></DT>
1262 <DD><TT>void ioncore.shutdown()</TT>
1265 <DT><STRONG>Description:</STRONG></DT>
1266 <DD>End session saving it first.
1274 <DD><A NAME="fn:ioncore.snapshot"></A>
1276 <DT><STRONG>Synopsis:</STRONG></DT>
1277 <DD><TT>void ioncore.snapshot()</TT>
1280 <DT><STRONG>Description:</STRONG></DT>
1289 <DD><A NAME="fn:ioncore.tagged_clear"></A>
1291 <DT><STRONG>Synopsis:</STRONG></DT>
1292 <DD><TT>void ioncore.tagged_clear()</TT>
1295 <DT><STRONG>Description:</STRONG></DT>
1296 <DD>Untag all regions.
1304 <DD><A NAME="fn:ioncore.tagged_first"></A>
1306 <DT><STRONG>Synopsis:</STRONG></DT>
1307 <DD><TT>WRegion ioncore.tagged_first(bool untag)</TT>
1310 <DT><STRONG>Description:</STRONG></DT>
1311 <DD>Returns first tagged object, untagging it as well if <TT>untag</TT> is set.
1319 <DD><A NAME="fn:ioncore.tagged_i"></A>
1321 <DT><STRONG>Synopsis:</STRONG></DT>
1322 <DD><TT>bool ioncore.tagged_i(function iterfn)</TT>
1325 <DT><STRONG>Description:</STRONG></DT>
1326 <DD>Iterate over tagged regions until <TT>iterfn</TT> returns <TT>false</TT>.
1327 The function itself returns <TT>true</TT> if it reaches the end of list
1328 without this happening.
1336 <DD><A NAME="fn:ioncore.unsqueeze"></A>
1338 <DT><STRONG>Synopsis:</STRONG></DT>
1339 <DD><TT>void ioncore.unsqueeze(WRegion reg, bool override)</TT>
1342 <DT><STRONG>Description:</STRONG></DT>
1343 <DD>Try to detach <TT>reg</TT> if it fits poorly in its
1344 current location. This function does not do anything,
1345 unless <TT>override</TT> is set or the <TT>unsqueeze</TT> option
1346 of <A HREF="#fn:ioncore.set"><TT>ioncore.set</TT></A> is set.
1354 <DD><A NAME="fn:ioncore.version"></A>
1356 <DT><STRONG>Synopsis:</STRONG></DT>
1357 <DD><TT>string ioncore.version()</TT>
1360 <DT><STRONG>Description:</STRONG></DT>
1361 <DD>Returns Ioncore version string.
1369 <DD><A NAME="fn:ioncore.warn"></A>
1371 <DT><STRONG>Synopsis:</STRONG></DT>
1372 <DD><TT>void ioncore.warn(string str)</TT>
1375 <DT><STRONG>Description:</STRONG></DT>
1376 <DD>Issue a warning. How the message is displayed depends on the current
1385 <DD><A NAME="fn:ioncore.warn_traced"></A>
1387 <DT><STRONG>Synopsis:</STRONG></DT>
1388 <DD><TT>void ioncore.warn_traced(string str)</TT>
1391 <DT><STRONG>Description:</STRONG></DT>
1392 <DD>Similar to <A HREF="#fn:ioncore.warn"><TT>ioncore.warn</TT></A>, but also print Lua stack trace.
1400 <DD><A NAME="fn:ioncore.x_change_property"></A>
1402 <DT><STRONG>Synopsis:</STRONG></DT>
1403 <DD><TT>void ioncore.x_change_property(integer win, integer atom, integer atom_type, integer format, string mode, table tab)</TT>
1406 <DT><STRONG>Description:</STRONG></DT>
1407 <DD>Modify a window property. The <TT>mode</TT> is one of
1408 `<TT>replace</TT>', `<TT>prepend</TT>' or `<TT>append</TT>', and format
1409 is either 8, 16 or 32. Also see <A HREF="#fn:ioncore.x_get_window_property"><TT>ioncore.x_get_window_property</TT></A>
1410 and the <TT>XChangeProperty</TT>(3) manual page.
1418 <DD><A NAME="fn:ioncore.x_delete_property"></A>
1420 <DT><STRONG>Synopsis:</STRONG></DT>
1421 <DD><TT>void ioncore.x_delete_property(integer win, integer atom)</TT>
1424 <DT><STRONG>Description:</STRONG></DT>
1425 <DD>Delete a window property.
1433 <DD><A NAME="fn:ioncore.x_get_atom_name"></A>
1435 <DT><STRONG>Synopsis:</STRONG></DT>
1436 <DD><TT>string ioncore.x_get_atom_name(integer atom)</TT>
1439 <DT><STRONG>Description:</STRONG></DT>
1440 <DD>Get the name of an atom. See <TT>XGetAtomName</TT>(3) manual page for
1449 <DD><A NAME="fn:ioncore.x_get_text_property"></A>
1451 <DT><STRONG>Synopsis:</STRONG></DT>
1452 <DD><TT>table ioncore.x_get_text_property(integer win, integer atom)</TT>
1455 <DT><STRONG>Description:</STRONG></DT>
1456 <DD>Get a text property for a window. The fields in the returned
1457 table (starting from 1) are the null-separated parts of the property.
1458 See the <TT>XGetTextProperty</TT>(3) manual page for more information.
1466 <DD><A NAME="fn:ioncore.x_get_window_property"></A>
1468 <DT><STRONG>Synopsis:</STRONG></DT>
1469 <DD><TT>table ioncore.x_get_window_property(integer win, integer atom, integer atom_type, integer n32expected, bool more)</TT>
1472 <DT><STRONG>Description:</STRONG></DT>
1473 <DD>Get a property <TT>atom</TT> of type <TT>atom_type</TT> for window <TT>win</TT>.
1474 The <TT>n32expected</TT> parameter indicates the expected number of 32bit
1475 words, and <TT>more</TT> indicates whether all or just this amount of data
1476 should be fetched. Each 8, 16 or 32bit element of the property, as
1477 deciphered from <TT>atom_type</TT> is a field in the returned table.
1478 See <TT>XGetWindowProperty</TT>(3) manual page for more information.
1486 <DD><A NAME="fn:ioncore.x_intern_atom"></A>
1488 <DT><STRONG>Synopsis:</STRONG></DT>
1489 <DD><TT>integer ioncore.x_intern_atom(string name, bool only_if_exists)</TT>
1492 <DT><STRONG>Description:</STRONG></DT>
1493 <DD>Create a new atom. See <TT>XInternAtom</TT>(3) manual page for details.
1501 <DD><A NAME="fn:ioncore.x_set_text_property"></A>
1503 <DT><STRONG>Synopsis:</STRONG></DT>
1504 <DD><TT>void ioncore.x_set_text_property(integer win, integer atom, table tab)</TT>
1507 <DT><STRONG>Description:</STRONG></DT>
1508 <DD>Set a text property for a window. The fields of <TT>tab</TT> starting from
1509 1 should be the different null-separated parts of the property.
1510 See the <TT>XSetTextProperty</TT>(3) manual page for more information.
1518 <DD><A NAME="fn:ioncore.kpress"></A>
1520 <DT><STRONG>Synopsis:</STRONG></DT>
1521 <DD><TT>ioncore.kpress(keyspec, cmd, guard)</TT>
1524 <DT><STRONG>Description:</STRONG></DT>
1525 <DD>Creates a binding description table for the action of pressing a key given
1526 by <TT>keyspec</TT> (with possible modifiers) to the function <TT>func</TT>.
1527 For more information on bindings, see section <A HREF="node4.html#sec:bindings">3.3</A>.
1535 <DD><A NAME="fn:ioncore.kpress_wait"></A>
1537 <DT><STRONG>Synopsis:</STRONG></DT>
1538 <DD><TT>ioncore.kpress_wait(keyspec, cmd, guard)</TT>
1541 <DT><STRONG>Description:</STRONG></DT>
1542 <DD>This is similar to <A HREF="#fn:kpress"><TT>kpress</TT></A> but after calling <TT>cmd</TT>,
1543 Ioncore waits for all modifiers to be released before processing
1544 any further actions.
1545 For more information on bindings, see section <A HREF="node4.html#sec:bindings">3.3</A>.
1553 <DD><A NAME="fn:ioncore.defer"></A>
1555 <DT><STRONG>Synopsis:</STRONG></DT>
1556 <DD><TT>bool ioncore.defer(function fn)</TT>
1559 <DT><STRONG>Description:</STRONG></DT>
1560 <DD>Defer execution of <TT>fn</TT> until the main loop.
1568 <DD><A NAME="fn:ioncore.get_hook"></A>
1570 <DT><STRONG>Synopsis:</STRONG></DT>
1571 <DD><TT>WHook ioncore.get_hook(string name)</TT>
1574 <DT><STRONG>Description:</STRONG></DT>
1575 <DD>Find named hook <TT>name</TT>.
1583 <DD><A NAME="fn:ioncore.match_winprop_dflt"></A>
1585 <DT><STRONG>Synopsis:</STRONG></DT>
1586 <DD><TT>ioncore.match_winprop_dflt(prop, cwin, id)</TT>
1589 <DT><STRONG>Description:</STRONG></DT>
1590 <DD>The basic name-based winprop matching criteria.
1598 <DD><A NAME="fn:ioncore.mclick"></A>
1600 <DT><STRONG>Synopsis:</STRONG></DT>
1601 <DD><TT>ioncore.mclick(buttonspec, cmd, guard)</TT>
1604 <DT><STRONG>Description:</STRONG></DT>
1605 <DD>Creates a binding description table for the action of clicking a mouse
1606 button while possible modifier keys are pressed,
1607 both given by <TT>buttonspec</TT>, to the function <TT>func</TT>.
1608 For more information, see section <A HREF="node4.html#sec:bindings">3.3</A>.
1616 <DD><A NAME="fn:ioncore.mdblclick"></A>
1618 <DT><STRONG>Synopsis:</STRONG></DT>
1619 <DD><TT>ioncore.mdblclick(buttonspec, cmd, guard)</TT>
1622 <DT><STRONG>Description:</STRONG></DT>
1623 <DD>Similar to <A HREF="#fn:mclick"><TT>mclick</TT></A> but for double-click.
1624 Also see section <A HREF="node4.html#sec:bindings">3.3</A>.
1632 <DD><A NAME="fn:ioncore.mdrag"></A>
1634 <DT><STRONG>Synopsis:</STRONG></DT>
1635 <DD><TT>ioncore.mdrag(buttonspec, cmd, guard)</TT>
1638 <DT><STRONG>Description:</STRONG></DT>
1639 <DD>Creates a binding description table for the action of moving the mouse
1640 (or other pointing device) while the button given by <TT>buttonspec</TT>
1641 is held pressed and the modifiers given by <TT>buttonspec</TT> were pressed
1642 when the button was initially pressed.
1643 Also see section <A HREF="node4.html#sec:bindings">3.3</A>.
1651 <DD><A NAME="fn:ioncore.menuentry"></A>
1653 <DT><STRONG>Synopsis:</STRONG></DT>
1654 <DD><TT>ioncore.menuentry(name, cmd, guard_or_opts)</TT>
1657 <DT><STRONG>Description:</STRONG></DT>
1658 <DD>Use this function to define normal menu entries. The string <TT>name</TT>
1659 is the string shown in the visual representation of menu. The
1660 parameter <TT>cmd</TT> and <TT>guard_or_opts</TT> (when string) are similar
1661 to those of <A HREF="#fn:ioncore.defbindings"><TT>ioncore.defbindings</TT></A>. If <TT>guard_or_opts</TT> is
1662 a table, it may contains the <TT>guard</TT> field, and the <TT>priority</TT>
1663 field, for controlling positioning of entries in context menus.
1664 (The default priority is 1 for most entries, and -1 for auto-generated
1673 <DD><A NAME="fn:ioncore.mpress"></A>
1675 <DT><STRONG>Synopsis:</STRONG></DT>
1676 <DD><TT>ioncore.mpress(buttonspec, cmd, guard)</TT>
1679 <DT><STRONG>Description:</STRONG></DT>
1680 <DD>Similar to <A HREF="#fn:mclick"><TT>mclick</TT></A> but for just pressing the mouse button.
1681 Also see section <A HREF="node4.html#sec:bindings">3.3</A>.
1689 <DD><A NAME="fn:ioncore.refresh_stylelist"></A>
1691 <DT><STRONG>Synopsis:</STRONG></DT>
1692 <DD><TT>ioncore.refresh_stylelist()</TT>
1695 <DT><STRONG>Description:</STRONG></DT>
1696 <DD>Refresh list of known style files.
1704 <DD><A NAME="fn:ioncore.submap"></A>
1706 <DT><STRONG>Synopsis:</STRONG></DT>
1707 <DD><TT>ioncore.submap(kcb_, list)</TT>
1710 <DT><STRONG>Description:</STRONG></DT>
1711 <DD>Returns a function that creates a submap binding description table.
1712 When the key press action <TT>keyspec</TT> occurs, Ioncore will wait for
1713 a further key presse and act according to the submap.
1714 For details, see section <A HREF="node4.html#sec:bindings">3.3</A>.
1722 <DD><A NAME="fn:ioncore.submap_enter"></A>
1724 <DT><STRONG>Synopsis:</STRONG></DT>
1725 <DD><TT>ioncore.submap_enter(cmd, guard)</TT>
1728 <DT><STRONG>Description:</STRONG></DT>
1729 <DD>Submap enter event for bindings.
1737 <DD><A NAME="fn:ioncore.submap_wait"></A>
1739 <DT><STRONG>Synopsis:</STRONG></DT>
1740 <DD><TT>ioncore.submap_wait(cmd, guard)</TT>
1743 <DT><STRONG>Description:</STRONG></DT>
1744 <DD>Submap modifier release event for bindings.
1752 <DD><A NAME="fn:ioncore.submenu"></A>
1754 <DT><STRONG>Synopsis:</STRONG></DT>
1755 <DD><TT>ioncore.submenu(name, sub_or_name, options)</TT>
1758 <DT><STRONG>Description:</STRONG></DT>
1759 <DD>Use this function to define menu entries for submenus. The parameter
1760 <A HREF="#fn:sub_or_name"><TT>sub_or_name</TT></A> is either a table of menu entries or the name
1761 of an already defined menu. The initial menu entry to highlight can be
1762 specified by <TT>options.initial</TT> as either an integer starting from 1,
1763 or a function that returns such a number. Another option supported is
1764 <TT>options.noautoexpand</TT> that will cause <A HREF="#fn:mod_query.query_menu"><TT>mod_query.query_menu</TT></A>
1765 to not automatically expand this submenu.
1773 <DD><A NAME="fn:ioncore.tabnum.clear"></A>
1775 <DT><STRONG>Synopsis:</STRONG></DT>
1776 <DD><TT>ioncore.tabnum.clear()</TT>
1779 <DT><STRONG>Description:</STRONG></DT>
1780 <DD>Clear all tab numbers set by <A HREF="#fn:ioncore.tabnum.show"><TT>ioncore.tabnum.show</TT></A>.
1788 <DD><A NAME="fn:ioncore.tabnum.show"></A>
1790 <DT><STRONG>Synopsis:</STRONG></DT>
1791 <DD><TT>ioncore.tabnum.show(frame, delay)</TT>
1794 <DT><STRONG>Description:</STRONG></DT>
1795 <DD>Show tab numbers on <TT>frame</TT>, clearing them when submap
1796 grab is released the next time. If <TT>delay</TT> is given, in
1797 milliseconds, the numbers are not actually displayed until this
1806 <DD><A NAME="fn:ioncore.tagged_attach"></A>
1808 <DT><STRONG>Synopsis:</STRONG></DT>
1809 <DD><TT>ioncore.tagged_attach(reg, param)</TT>
1812 <DT><STRONG>Description:</STRONG></DT>
1813 <DD>Attach tagged regions to <TT>reg</TT>. The method of attach
1814 depends on the types of attached regions and whether <TT>reg</TT>
1815 implements <TT>attach_framed</TT> and <TT>attach</TT>. If <TT>param</TT>
1816 is not set, the default of <code>{switchto=true}</code> is used.
1823 <H3><A NAME="SECTION00711000000000000000">
1824 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN> WClientWin functions</A>
1830 <DD><A NAME="fn:WClientWin.get_ident"></A>
1832 <DT><STRONG>Synopsis:</STRONG></DT>
1833 <DD><TT>table WClientWin.get_ident(WClientWin cwin)</TT>
1836 <DT><STRONG>Description:</STRONG></DT>
1837 <DD>Returns a table containing the properties <TT>WM_CLASS</TT> (table entries
1838 <TT>instance</TT> and <TT>class</TT>) and <TT>WM_WINDOW_ROLE</TT> (<TT>role</TT>)
1839 properties for <TT>cwin</TT>. If a property is not set, the corresponding
1840 field(s) are unset in the table.
1848 <DD><A NAME="fn:WClientWin.kill"></A>
1850 <DT><STRONG>Synopsis:</STRONG></DT>
1851 <DD><TT>void WClientWin.kill(WClientWin cwin)</TT>
1854 <DT><STRONG>Description:</STRONG></DT>
1855 <DD>Attempt to kill (with <TT>XKillWindow</TT>) the client that owns
1856 the X window correspoding to <TT>cwin</TT>.
1864 <DD><A NAME="fn:WClientWin.nudge"></A>
1866 <DT><STRONG>Synopsis:</STRONG></DT>
1867 <DD><TT>void WClientWin.nudge(WClientWin cwin)</TT>
1870 <DT><STRONG>Description:</STRONG></DT>
1871 <DD>Attempts to fix window size problems with non-ICCCM compliant
1880 <DD><A NAME="fn:WClientWin.quote_next"></A>
1882 <DT><STRONG>Synopsis:</STRONG></DT>
1883 <DD><TT>void WClientWin.quote_next(WClientWin cwin)</TT>
1886 <DT><STRONG>Description:</STRONG></DT>
1887 <DD>Send next key press directly to <TT>cwin</TT>.
1895 <DD><A NAME="fn:WClientWin.xid"></A>
1897 <DT><STRONG>Synopsis:</STRONG></DT>
1898 <DD><TT>double WClientWin.xid(WClientWin cwin)</TT>
1901 <DT><STRONG>Description:</STRONG></DT>
1902 <DD>Return the X window id for the client window.
1909 <H3><A NAME="SECTION00712000000000000000">
1910 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">2</SPAN> WFrame functions</A>
1916 <DD><A NAME="fn:WFrame.is_shaded"></A>
1918 <DT><STRONG>Synopsis:</STRONG></DT>
1919 <DD><TT>bool WFrame.is_shaded(WFrame frame)</TT>
1922 <DT><STRONG>Description:</STRONG></DT>
1923 <DD>Is <TT>frame</TT> shaded?
1931 <DD><A NAME="fn:WFrame.maximize_horiz"></A>
1933 <DT><STRONG>Synopsis:</STRONG></DT>
1934 <DD><TT>void WFrame.maximize_horiz(WFrame frame)</TT>
1937 <DT><STRONG>Description:</STRONG></DT>
1938 <DD>Attempt to toggle horizontal maximisation of <TT>frame</TT>.
1946 <DD><A NAME="fn:WFrame.maximize_vert"></A>
1948 <DT><STRONG>Synopsis:</STRONG></DT>
1949 <DD><TT>void WFrame.maximize_vert(WFrame frame)</TT>
1952 <DT><STRONG>Description:</STRONG></DT>
1953 <DD>Attempt to toggle vertical maximisation of <TT>frame</TT>.
1961 <DD><A NAME="fn:WFrame.mode"></A>
1963 <DT><STRONG>Synopsis:</STRONG></DT>
1964 <DD><TT>string WFrame.mode(WFrame frame)</TT>
1967 <DT><STRONG>Description:</STRONG></DT>
1976 <DD><A NAME="fn:WFrame.p_switch_tab"></A>
1978 <DT><STRONG>Synopsis:</STRONG></DT>
1979 <DD><TT>void WFrame.p_switch_tab(WFrame frame)</TT>
1982 <DT><STRONG>Description:</STRONG></DT>
1983 <DD>Display the region corresponding to the tab that the user pressed on.
1984 This function should only be used by binding it to a mouse action.
1992 <DD><A NAME="fn:WFrame.p_tabdrag"></A>
1994 <DT><STRONG>Synopsis:</STRONG></DT>
1995 <DD><TT>void WFrame.p_tabdrag(WFrame frame)</TT>
1998 <DT><STRONG>Description:</STRONG></DT>
1999 <DD>Start dragging the tab that the user pressed on with the pointing device.
2000 This function should only be used by binding it to <SPAN CLASS="textit">mpress</SPAN> or
2001 <SPAN CLASS="textit">mdrag</SPAN> action with area `<TT>tab</TT>'.
2009 <DD><A NAME="fn:WFrame.set_grattr"></A>
2011 <DT><STRONG>Synopsis:</STRONG></DT>
2012 <DD><TT>bool WFrame.set_grattr(WFrame frame, string attr, string how)</TT>
2015 <DT><STRONG>Description:</STRONG></DT>
2016 <DD>Set extra drawing engine attributes for the frame.
2017 The parameter <TT>attr</TT> is the attribute, and <TT>how</TT> is
2018 one of `<TT>set</TT>', `<TT>unset</TT>', or `<TT>toggle</TT>'.
2026 <DD><A NAME="fn:WFrame.set_mode"></A>
2028 <DT><STRONG>Synopsis:</STRONG></DT>
2029 <DD><TT>bool WFrame.set_mode(WFrame frame, string modestr)</TT>
2032 <DT><STRONG>Description:</STRONG></DT>
2041 <DD><A NAME="fn:WFrame.set_shaded"></A>
2043 <DT><STRONG>Synopsis:</STRONG></DT>
2044 <DD><TT>bool WFrame.set_shaded(WFrame frame, string how)</TT>
2047 <DT><STRONG>Description:</STRONG></DT>
2048 <DD>Set shading state according to the parameter <TT>how</TT>
2049 (`<TT>set</TT>', `<TT>unset</TT>', or `<TT>toggle</TT>').
2050 Resulting state is returned, which may not be
2058 <H3><A NAME="SECTION00713000000000000000">
2059 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">3</SPAN> WGroup functions</A>
2065 <DD><A NAME="fn:WGroup.attach"></A>
2067 <DT><STRONG>Synopsis:</STRONG></DT>
2068 <DD><TT>WRegion WGroup.attach(WGroup ws, WRegion reg, table param)</TT>
2071 <DT><STRONG>Description:</STRONG></DT>
2072 <DD>Attach and reparent existing region <TT>reg</TT> to <TT>ws</TT>.
2073 The table <TT>param</TT> may contain the fields <TT>index</TT> and
2074 <TT>switchto</TT> that are interpreted as for <A HREF="#fn:WMPlex.attach_new"><TT>WMPlex.attach_new</TT></A>.
2082 <DD><A NAME="fn:WGroup.attach_new"></A>
2084 <DT><STRONG>Synopsis:</STRONG></DT>
2085 <DD><TT>WRegion WGroup.attach_new(WGroup ws, table param)</TT>
2088 <DT><STRONG>Description:</STRONG></DT>
2089 <DD>Create a new region to be managed by <TT>ws</TT>. At least the following
2090 fields in <TT>param</TT> are understood:
2093 <TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
2094 <TR><TD ALIGN="LEFT">Field</TD>
2095 <TD ALIGN="LEFT">Description</TD>
2097 <TR><TD ALIGN="LEFT"><TT>type</TT></TD>
2098 <TD ALIGN="LEFT">(string) Class of the object to be created. Mandatory.</TD>
2100 <TR><TD ALIGN="LEFT"><TT>name</TT></TD>
2101 <TD ALIGN="LEFT">(string) Name of the object to be created.</TD>
2103 <TR><TD ALIGN="LEFT"><TT>switchto</TT></TD>
2104 <TD ALIGN="LEFT">(boolean) Should the region be switched to?</TD>
2106 <TR><TD ALIGN="LEFT"><TT>level</TT></TD>
2107 <TD ALIGN="LEFT">(integer) Stacking level; default is 1.</TD>
2109 <TR><TD ALIGN="LEFT"><TT>modal</TT></TD>
2110 <TD ALIGN="LEFT">(boolean) Make object modal; ignored if level is set.</TD>
2112 <TR><TD ALIGN="LEFT"><TT>sizepolicy</TT></TD>
2113 <TD ALIGN="LEFT">(string) Size policy; see Section <A HREF="#sec:sizepolicies">6.10.1</A>.</TD>
2118 In addition parameters to the region to be created are passed in this
2127 <DD><A NAME="fn:WGroup.bottom"></A>
2129 <DT><STRONG>Synopsis:</STRONG></DT>
2130 <DD><TT>WRegion WGroup.bottom(WGroup ws)</TT>
2133 <DT><STRONG>Description:</STRONG></DT>
2134 <DD>Returns the `bottom' of <TT>ws</TT>.
2142 <DD><A NAME="fn:WGroup.is_fullscreen"></A>
2144 <DT><STRONG>Synopsis:</STRONG></DT>
2145 <DD><TT>bool WGroup.is_fullscreen(WGroup grp)</TT>
2148 <DT><STRONG>Description:</STRONG></DT>
2149 <DD>Is <TT>reg</TT> in full screen mode?
2157 <DD><A NAME="fn:WGroup.managed_i"></A>
2159 <DT><STRONG>Synopsis:</STRONG></DT>
2160 <DD><TT>bool WGroup.managed_i(WGroup ws, function iterfn)</TT>
2163 <DT><STRONG>Description:</STRONG></DT>
2164 <DD>Iterate over managed regions of <TT>ws</TT> until <TT>iterfn</TT> returns
2166 The function itself returns <TT>true</TT> if it reaches the end of list
2167 without this happening.
2175 <DD><A NAME="fn:WGroup.set_bottom"></A>
2177 <DT><STRONG>Synopsis:</STRONG></DT>
2178 <DD><TT>bool WGroup.set_bottom(WGroup ws, WRegion reg)</TT>
2181 <DT><STRONG>Description:</STRONG></DT>
2182 <DD>Sets the `bottom' of <TT>ws</TT>. The region <TT>reg</TT> must already
2183 be managed by <TT>ws</TT>, unless <TT>nil</TT>.
2191 <DD><A NAME="fn:WGroup.set_fullscreen"></A>
2193 <DT><STRONG>Synopsis:</STRONG></DT>
2194 <DD><TT>bool WGroup.set_fullscreen(WGroup grp, string how)</TT>
2197 <DT><STRONG>Description:</STRONG></DT>
2198 <DD>Set client window <TT>reg</TT> full screen state according to the
2199 parameter <TT>how</TT> (one of `<TT>set</TT>', `<TT>unset</TT>', or
2200 `<TT>toggle</TT>'). Resulting state is returned, which may not be
2208 <H3><A NAME="SECTION00714000000000000000">
2209 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">4</SPAN> WGroupCW functions</A>
2214 <H3><A NAME="SECTION00715000000000000000">
2215 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">5</SPAN> WGroupWS functions</A>
2221 <DD><A NAME="fn:WGroupWS.attach_framed"></A>
2223 <DT><STRONG>Synopsis:</STRONG></DT>
2224 <DD><TT>bool WGroupWS.attach_framed(WGroupWS ws, WRegion reg, table t)</TT>
2227 <DT><STRONG>Description:</STRONG></DT>
2228 <DD>Attach region <TT>reg</TT> on <TT>ws</TT>.
2229 At least the following fields in <TT>t</TT> are supported:
2232 <TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
2233 <TR><TD ALIGN="LEFT">Field</TD>
2234 <TD ALIGN="LEFT">Description</TD>
2236 <TR><TD ALIGN="LEFT"><TT>switchto</TT></TD>
2237 <TD ALIGN="LEFT">Should the region be switched to (boolean)? Optional.</TD>
2239 <TR><TD ALIGN="LEFT"><TT>geom</TT></TD>
2240 <TD ALIGN="LEFT">Geometry; <TT>x</TT> and <TT>y</TT>, if set, indicates top-left of
2241 the frame to be created while <TT>width</TT> and <TT>height</TT>, if set, indicate
2242 the size of the client window within that frame. Optional.</TD>
2251 <H3><A NAME="SECTION00716000000000000000">
2252 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">6</SPAN> WHook functions</A>
2258 <DD><A NAME="fn:WHook.add"></A>
2260 <DT><STRONG>Synopsis:</STRONG></DT>
2261 <DD><TT>bool WHook.add(WHook hk, function efn)</TT>
2264 <DT><STRONG>Description:</STRONG></DT>
2265 <DD>Add <TT>efn</TT> to the list of functions to be called when the
2266 hook <TT>hk</TT> is triggered.
2274 <DD><A NAME="fn:WHook.listed"></A>
2276 <DT><STRONG>Synopsis:</STRONG></DT>
2277 <DD><TT>bool WHook.listed(WHook hk, function efn)</TT>
2280 <DT><STRONG>Description:</STRONG></DT>
2281 <DD>Is <TT>fn</TT> hooked to hook <TT>hk</TT>?
2289 <DD><A NAME="fn:WHook.remove"></A>
2291 <DT><STRONG>Synopsis:</STRONG></DT>
2292 <DD><TT>bool WHook.remove(WHook hk, function efn)</TT>
2295 <DT><STRONG>Description:</STRONG></DT>
2296 <DD>Remove <TT>efn</TT> from the list of functions to be called when the
2297 hook <TT>hk</TT> is triggered.
2304 <H3><A NAME="SECTION00717000000000000000">
2305 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">7</SPAN> WInfoWin functions</A>
2311 <DD><A NAME="fn:WInfoWin.set_text"></A>
2313 <DT><STRONG>Synopsis:</STRONG></DT>
2314 <DD><TT>void WInfoWin.set_text(WInfoWin p, string str, integer maxw)</TT>
2317 <DT><STRONG>Description:</STRONG></DT>
2318 <DD>Set contents of the info window.
2325 <H3><A NAME="SECTION00718000000000000000">
2326 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">8</SPAN> WMPlex functions</A>
2332 <DD><A NAME="fn:WMPlex.attach"></A>
2334 <DT><STRONG>Synopsis:</STRONG></DT>
2335 <DD><TT>WRegion WMPlex.attach(WMPlex mplex, WRegion reg, table param)</TT>
2338 <DT><STRONG>Description:</STRONG></DT>
2339 <DD>Attach and reparent existing region <TT>reg</TT> to <TT>mplex</TT>.
2340 The table <TT>param</TT> may contain the fields <TT>index</TT> and
2341 <TT>switchto</TT> that are interpreted as for <A HREF="#fn:WMPlex.attach_new"><TT>WMPlex.attach_new</TT></A>.
2349 <DD><A NAME="fn:WMPlex.attach_new"></A>
2351 <DT><STRONG>Synopsis:</STRONG></DT>
2352 <DD><TT>WRegion WMPlex.attach_new(WMPlex mplex, table param)</TT>
2355 <DT><STRONG>Description:</STRONG></DT>
2356 <DD>Create a new region to be managed by <TT>mplex</TT>. At least the following
2357 fields in <TT>param</TT> are understood (all but <TT>type</TT> are optional).
2360 <TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
2361 <TR><TD ALIGN="LEFT">Field</TD>
2362 <TD ALIGN="LEFT">Description</TD>
2364 <TR><TD ALIGN="LEFT"><TT>type</TT></TD>
2365 <TD ALIGN="LEFT">(string) Class name (a string) of the object to be created.</TD>
2367 <TR><TD ALIGN="LEFT"><TT>name</TT></TD>
2368 <TD ALIGN="LEFT">(string) Name of the object to be created (a string).</TD>
2370 <TR><TD ALIGN="LEFT"><TT>switchto</TT></TD>
2371 <TD ALIGN="LEFT">(boolean) Should the region be switched to (boolean)?</TD>
2373 <TR><TD ALIGN="LEFT"><TT>unnumbered</TT></TD>
2374 <TD ALIGN="LEFT">(boolean) Do not put on the numbered mutually
2375 exclusive list.</TD>
2377 <TR><TD ALIGN="LEFT"><TT>index</TT></TD>
2378 <TD ALIGN="LEFT">(integer) Index on this list, same as for
2379 <A HREF="#fn:WMPlex.set_index"><TT>WMPlex.set_index</TT></A>.</TD>
2381 <TR><TD ALIGN="LEFT"><TT>level</TT></TD>
2382 <TD ALIGN="LEFT">(integer) Stacking level.</TD>
2384 <TR><TD ALIGN="LEFT"><TT>modal</TT></TD>
2385 <TD ALIGN="LEFT">(boolean) Shortcut for modal stacking level.</TD>
2387 <TR><TD ALIGN="LEFT"><TT>hidden</TT></TD>
2388 <TD ALIGN="LEFT">(boolean) Attach hidden, if not prevented
2389 by e.g. the mutually exclusive list being empty.
2390 This option overrides <TT>switchto</TT>.</TD>
2392 <TR><TD ALIGN="LEFT"><TT>pseudomodal</TT></TD>
2393 <TD ALIGN="LEFT">(boolean) The attached region is ``pseudomodal''
2394 if the stacking level dictates it to be modal.
2395 This means that the region may be hidden to display
2396 regions with lesser stacking levels.</TD>
2398 <TR><TD ALIGN="LEFT"><TT>sizepolicy</TT></TD>
2399 <TD ALIGN="LEFT">(string) Size policy; see Section <A HREF="#sec:sizepolicies">6.10.1</A>.</TD>
2401 <TR><TD ALIGN="LEFT"><TT>geom</TT></TD>
2402 <TD ALIGN="LEFT">(table) Geometry specification.</TD>
2407 In addition parameters to the region to be created are passed in this
2416 <DD><A NAME="fn:WMPlex.dec_index"></A>
2418 <DT><STRONG>Synopsis:</STRONG></DT>
2419 <DD><TT>void WMPlex.dec_index(WMPlex mplex, WRegion r)</TT>
2422 <DT><STRONG>Description:</STRONG></DT>
2423 <DD>Move <TT>r</TT> ``left'' within objects managed by <TT>mplex</TT> on list 1.
2431 <DD><A NAME="fn:WMPlex.get_index"></A>
2433 <DT><STRONG>Synopsis:</STRONG></DT>
2434 <DD><TT>integer WMPlex.get_index(WMPlex mplex, WRegion reg)</TT>
2437 <DT><STRONG>Description:</STRONG></DT>
2438 <DD>Get index of <TT>reg</TT> on the mutually exclusive list of <TT>mplex</TT>.
2439 The indices begin from zero.. If <TT>reg</TT> is not on the list,
2448 <DD><A NAME="fn:WMPlex.get_stdisp"></A>
2450 <DT><STRONG>Synopsis:</STRONG></DT>
2451 <DD><TT>table WMPlex.get_stdisp(WMPlex mplex)</TT>
2454 <DT><STRONG>Description:</STRONG></DT>
2455 <DD>Get status display information. See <A HREF="#fn:WMPlex.get_stdisp"><TT>WMPlex.get_stdisp</TT></A> for
2456 information on the fields.
2464 <DD><A NAME="fn:WMPlex.inc_index"></A>
2466 <DT><STRONG>Synopsis:</STRONG></DT>
2467 <DD><TT>void WMPlex.inc_index(WMPlex mplex, WRegion r)</TT>
2470 <DT><STRONG>Description:</STRONG></DT>
2471 <DD>Move <TT>r</TT> ``right'' within objects managed by <TT>mplex</TT> on list 1.
2479 <DD><A NAME="fn:WMPlex.is_hidden"></A>
2481 <DT><STRONG>Synopsis:</STRONG></DT>
2482 <DD><TT>bool WMPlex.is_hidden(WMPlex mplex, WRegion reg)</TT>
2485 <DT><STRONG>Description:</STRONG></DT>
2486 <DD>Is <TT>reg</TT> on within <TT>mplex</TT> and hidden?
2494 <DD><A NAME="fn:WMPlex.managed_i"></A>
2496 <DT><STRONG>Synopsis:</STRONG></DT>
2497 <DD><TT>bool WMPlex.managed_i(WMPlex mplex, function iterfn)</TT>
2500 <DT><STRONG>Description:</STRONG></DT>
2501 <DD>Iterate over managed regions of <TT>mplex</TT> until <TT>iterfn</TT> returns
2503 The function itself returns <TT>true</TT> if it reaches the end of list
2504 without this happening.
2512 <DD><A NAME="fn:WMPlex.mx_count"></A>
2514 <DT><STRONG>Synopsis:</STRONG></DT>
2515 <DD><TT>integer WMPlex.mx_count(WMPlex mplex)</TT>
2518 <DT><STRONG>Description:</STRONG></DT>
2519 <DD>Returns the number of objects on the mutually exclusive list of <TT>mplex</TT>.
2527 <DD><A NAME="fn:WMPlex.mx_current"></A>
2529 <DT><STRONG>Synopsis:</STRONG></DT>
2530 <DD><TT>WRegion WMPlex.mx_current(WMPlex mplex)</TT>
2533 <DT><STRONG>Description:</STRONG></DT>
2534 <DD>Returns the managed object currently active within the mutually exclusive
2535 list of <TT>mplex</TT>.
2543 <DD><A NAME="fn:WMPlex.mx_i"></A>
2545 <DT><STRONG>Synopsis:</STRONG></DT>
2546 <DD><TT>bool WMPlex.mx_i(WMPlex mplex, function iterfn)</TT>
2549 <DT><STRONG>Description:</STRONG></DT>
2550 <DD>Iterate over numbered/mutually exclusive region list of <TT>mplex</TT>
2551 until <TT>iterfn</TT> returns <TT>false</TT>.
2552 The function itself returns <TT>true</TT> if it reaches the end of list
2553 without this happening.
2561 <DD><A NAME="fn:WMPlex.mx_nth"></A>
2563 <DT><STRONG>Synopsis:</STRONG></DT>
2564 <DD><TT>WRegion WMPlex.mx_nth(WMPlex mplex, integer n)</TT>
2567 <DT><STRONG>Description:</STRONG></DT>
2568 <DD>Returns the <TT>n</TT>:th object managed by <TT>mplex</TT> on the
2569 <TT>l</TT>:th layer.
2577 <DD><A NAME="fn:WMPlex.set_hidden"></A>
2579 <DT><STRONG>Synopsis:</STRONG></DT>
2580 <DD><TT>bool WMPlex.set_hidden(WMPlex mplex, WRegion reg, string how)</TT>
2583 <DT><STRONG>Description:</STRONG></DT>
2584 <DD>Set the visibility of the region <TT>reg</TT> on <TT>mplex</TT>
2585 as specified with the parameter <TT>how</TT>
2586 (one of `<TT>set</TT>', `<TT>unset</TT>', or `<TT>toggle</TT>').
2587 The resulting state is returned.
2595 <DD><A NAME="fn:WMPlex.set_index"></A>
2597 <DT><STRONG>Synopsis:</STRONG></DT>
2598 <DD><TT>void WMPlex.set_index(WMPlex mplex, WRegion reg, integer index)</TT>
2601 <DT><STRONG>Description:</STRONG></DT>
2602 <DD>Set index of <TT>reg</TT> to <TT>index</TT> within the mutually exclusive
2603 list of <TT>mplex</TT>. Special values for <TT>index</TT> are:
2604 <TABLE CELLPADDING=3 WIDTH="100%">
2605 <TR><TD ALIGN="LEFT"><SPAN CLASS="MATH"><IMG
2606 WIDTH="27" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
2608 ALT="$-1$"></SPAN></TD>
2609 <TD ALIGN="LEFT">Last.</TD>
2611 <TR><TD ALIGN="LEFT"><SPAN CLASS="MATH"><IMG
2612 WIDTH="27" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
2614 ALT="$-2$"></SPAN></TD>
2615 <TD ALIGN="LEFT">After <A HREF="#fn:WMPlex.mx_current"><TT>WMPlex.mx_current</TT></A>.</TD>
2625 <DD><A NAME="fn:WMPlex.set_stdisp"></A>
2627 <DT><STRONG>Synopsis:</STRONG></DT>
2628 <DD><TT>WRegion WMPlex.set_stdisp(WMPlex mplex, table t)</TT>
2631 <DT><STRONG>Description:</STRONG></DT>
2632 <DD>Set/create status display for <TT>mplex</TT>. Table is a standard
2633 description of the object to be created (as passed to e.g.
2634 <A HREF="#fn:WMPlex.attach_new"><TT>WMPlex.attach_new</TT></A>). In addition, the following fields are
2638 <TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
2639 <TR><TD ALIGN="LEFT">Field</TD>
2640 <TD ALIGN="LEFT">Description</TD>
2642 <TR><TD ALIGN="LEFT"><TT>pos</TT></TD>
2643 <TD ALIGN="LEFT">The corner of the screen to place the status display
2644 in: one of `<TT>tl</TT>', `<TT>tr</TT>', `<TT>bl</TT>'
2645 or `<TT>br</TT>'.</TD>
2647 <TR><TD ALIGN="LEFT"><TT>action</TT></TD>
2648 <TD ALIGN="LEFT">If this field is set to `<TT>keep</TT>', <TT>corner</TT>
2649 and <TT>orientation</TT> are changed for the existing
2650 status display. If this field is set to `<TT>remove</TT>',
2651 the existing status display is removed. If this
2652 field is not set or is set to `<TT>replace</TT>', a
2653 new status display is created and the old, if any,
2664 <DD><A NAME="fn:WMPlex.switch_next"></A>
2666 <DT><STRONG>Synopsis:</STRONG></DT>
2667 <DD><TT>void WMPlex.switch_next(WMPlex mplex)</TT>
2670 <DT><STRONG>Description:</STRONG></DT>
2671 <DD>Have <TT>mplex</TT> display next (wrt. currently selected) object managed
2680 <DD><A NAME="fn:WMPlex.switch_nth"></A>
2682 <DT><STRONG>Synopsis:</STRONG></DT>
2683 <DD><TT>void WMPlex.switch_nth(WMPlex mplex, integer n)</TT>
2686 <DT><STRONG>Description:</STRONG></DT>
2687 <DD>Have <TT>mplex</TT> display the <TT>n</TT>:th object managed by it.
2695 <DD><A NAME="fn:WMPlex.switch_prev"></A>
2697 <DT><STRONG>Synopsis:</STRONG></DT>
2698 <DD><TT>void WMPlex.switch_prev(WMPlex mplex)</TT>
2701 <DT><STRONG>Description:</STRONG></DT>
2702 <DD>Have <TT>mplex</TT> display previous (wrt. currently selected) object
2710 <H3><A NAME="SECTION00719000000000000000">
2711 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN> WMoveresMode functions</A>
2717 <DD><A NAME="fn:WMoveresMode.cancel"></A>
2719 <DT><STRONG>Synopsis:</STRONG></DT>
2720 <DD><TT>void WMoveresMode.cancel(WMoveresMode mode)</TT>
2723 <DT><STRONG>Description:</STRONG></DT>
2724 <DD>Return from move/resize cancelling changes if opaque
2725 move/resize has not been enabled.
2733 <DD><A NAME="fn:WMoveresMode.finish"></A>
2735 <DT><STRONG>Synopsis:</STRONG></DT>
2736 <DD><TT>void WMoveresMode.finish(WMoveresMode mode)</TT>
2739 <DT><STRONG>Description:</STRONG></DT>
2740 <DD>Return from move/resize mode and apply changes unless opaque
2741 move/resize is enabled.
2749 <DD><A NAME="fn:WMoveresMode.geom"></A>
2751 <DT><STRONG>Synopsis:</STRONG></DT>
2752 <DD><TT>table WMoveresMode.geom(WMoveresMode mode)</TT>
2755 <DT><STRONG>Description:</STRONG></DT>
2756 <DD>Returns current geometry.
2764 <DD><A NAME="fn:WMoveresMode.move"></A>
2766 <DT><STRONG>Synopsis:</STRONG></DT>
2767 <DD><TT>void WMoveresMode.move(WMoveresMode mode, integer horizmul, integer vertmul)</TT>
2770 <DT><STRONG>Description:</STRONG></DT>
2771 <DD>Move resize mode target one step:
2774 <TABLE CELLPADDING=3 BORDER="1">
2775 <TR><TD ALIGN="RIGHT"><TT>horizmul</TT>/<TT>vertmul</TT></TD>
2776 <TD ALIGN="LEFT">effect</TD>
2778 <TR><TD ALIGN="RIGHT">-1</TD>
2779 <TD ALIGN="LEFT">Move left/up</TD>
2781 <TR><TD ALIGN="RIGHT">0</TD>
2782 <TD ALIGN="LEFT">No effect</TD>
2784 <TR><TD ALIGN="RIGHT">1</TD>
2785 <TD ALIGN="LEFT">Move right/down</TD>
2795 <DD><A NAME="fn:WMoveresMode.resize"></A>
2797 <DT><STRONG>Synopsis:</STRONG></DT>
2798 <DD><TT>void WMoveresMode.resize(WMoveresMode mode, integer left, integer right, integer top, integer bottom)</TT>
2801 <DT><STRONG>Description:</STRONG></DT>
2802 <DD>Shrink or grow resize mode target one step in each direction.
2803 Acceptable values for the parameters <TT>left</TT>, <TT>right</TT>, <TT>top</TT>
2804 and <TT>bottom</TT> are as follows: -1: shrink along,
2805 0: do not change, 1: grow along corresponding border.
2813 <DD><A NAME="fn:WMoveresMode.rqgeom"></A>
2815 <DT><STRONG>Synopsis:</STRONG></DT>
2816 <DD><TT>table WMoveresMode.rqgeom(WMoveresMode mode, table g)</TT>
2819 <DT><STRONG>Description:</STRONG></DT>
2820 <DD>Request exact geometry in move/resize mode. For details on parameters,
2821 see <A HREF="#fn:WRegion.rqgeom"><TT>WRegion.rqgeom</TT></A>.
2828 <H3><A NAME="SECTION007110000000000000000">
2829 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">10</SPAN> WRegion functions</A>
2835 <DD><A NAME="fn:WRegion.begin_kbresize"></A>
2837 <DT><STRONG>Synopsis:</STRONG></DT>
2838 <DD><TT>WMoveresMode WRegion.begin_kbresize(WRegion reg)</TT>
2841 <DT><STRONG>Description:</STRONG></DT>
2842 <DD>Enter move/resize mode for <TT>reg</TT>. The bindings set with
2843 <A HREF="#fn:ioncore.set_bindings"><TT>ioncore.set_bindings</TT></A> for WMoveresMode are used in
2844 this mode. Of the functions exported by the Ion C core, only
2845 <A HREF="#fn:WMoveresMode.resize"><TT>WMoveresMode.resize</TT></A>, <A HREF="#fn:WMoveresMode.move"><TT>WMoveresMode.move</TT></A>,
2846 <A HREF="#fn:WMoveresMode.cancel"><TT>WMoveresMode.cancel</TT></A> and <A HREF="#fn:WMoveresMode.end"><TT>WMoveresMode.end</TT></A> are
2847 allowed to be called while in this mode.
2855 <DD><A NAME="fn:WRegion.current"></A>
2857 <DT><STRONG>Synopsis:</STRONG></DT>
2858 <DD><TT>WRegion WRegion.current(WRegion mgr)</TT>
2861 <DT><STRONG>Description:</STRONG></DT>
2862 <DD>Return the object, if any, that is considered ``currently active''
2863 within the objects managed by <TT>mplex</TT>.
2871 <DD><A NAME="fn:WRegion.geom"></A>
2873 <DT><STRONG>Synopsis:</STRONG></DT>
2874 <DD><TT>table WRegion.geom(WRegion reg)</TT>
2877 <DT><STRONG>Description:</STRONG></DT>
2878 <DD>Returns the geometry of <TT>reg</TT> within its parent; a table with fields
2879 <TT>x</TT>, <TT>y</TT>, <TT>w</TT> and <TT>h</TT>.
2887 <DD><A NAME="fn:WRegion.get_configuration"></A>
2889 <DT><STRONG>Synopsis:</STRONG></DT>
2890 <DD><TT>table WRegion.get_configuration(WRegion reg, bool clientwins)</TT>
2893 <DT><STRONG>Description:</STRONG></DT>
2894 <DD>Get configuration tree. If <TT>clientwins</TT> is unset, client windows
2903 <DD><A NAME="fn:WRegion.goto"></A>
2905 <DT><STRONG>Synopsis:</STRONG></DT>
2906 <DD><TT>bool WRegion.goto(WRegion reg)</TT>
2909 <DT><STRONG>Description:</STRONG></DT>
2910 <DD>Attempt to display <TT>reg</TT>, save region activity status and then
2911 warp to (or simply set focus to if warping is disabled) <TT>reg</TT>.
2914 Note that this function is asynchronous; the region will not
2915 actually have received the focus when this function returns.
2923 <DD><A NAME="fn:WRegion.groupleader_of"></A>
2925 <DT><STRONG>Synopsis:</STRONG></DT>
2926 <DD><TT>WRegion WRegion.groupleader_of(WRegion reg)</TT>
2929 <DT><STRONG>Description:</STRONG></DT>
2930 <DD>Returns the group of <TT>reg</TT>, if <TT>reg</TT> is its bottom,
2931 and <TT>reg</TT> itself otherwise.
2939 <DD><A NAME="fn:WRegion.is_active"></A>
2941 <DT><STRONG>Synopsis:</STRONG></DT>
2942 <DD><TT>bool WRegion.is_active(WRegion reg)</TT>
2945 <DT><STRONG>Description:</STRONG></DT>
2946 <DD>Is <TT>reg</TT> active/does it or one of it's children of focus?
2954 <DD><A NAME="fn:WRegion.is_activity"></A>
2956 <DT><STRONG>Synopsis:</STRONG></DT>
2957 <DD><TT>bool WRegion.is_activity(WRegion reg)</TT>
2960 <DT><STRONG>Description:</STRONG></DT>
2961 <DD>Is activity notification set on <TT>reg</TT>.
2969 <DD><A NAME="fn:WRegion.is_mapped"></A>
2971 <DT><STRONG>Synopsis:</STRONG></DT>
2972 <DD><TT>bool WRegion.is_mapped(WRegion reg)</TT>
2975 <DT><STRONG>Description:</STRONG></DT>
2976 <DD>Is <TT>reg</TT> visible/is it and all it's ancestors mapped?
2984 <DD><A NAME="fn:WRegion.is_tagged"></A>
2986 <DT><STRONG>Synopsis:</STRONG></DT>
2987 <DD><TT>bool WRegion.is_tagged(WRegion reg)</TT>
2990 <DT><STRONG>Description:</STRONG></DT>
2991 <DD>Is <TT>reg</TT> tagged?
2999 <DD><A NAME="fn:WRegion.manager"></A>
3001 <DT><STRONG>Synopsis:</STRONG></DT>
3002 <DD><TT>WRegion WRegion.manager(WRegion reg)</TT>
3005 <DT><STRONG>Description:</STRONG></DT>
3006 <DD>Returns the region that manages <TT>reg</TT>.
3014 <DD><A NAME="fn:WRegion.name"></A>
3016 <DT><STRONG>Synopsis:</STRONG></DT>
3017 <DD><TT>string WRegion.name(WRegion reg)</TT>
3020 <DT><STRONG>Description:</STRONG></DT>
3021 <DD>Returns the name for <TT>reg</TT>.
3029 <DD><A NAME="fn:WRegion.parent"></A>
3031 <DT><STRONG>Synopsis:</STRONG></DT>
3032 <DD><TT>WWindow WRegion.parent(WRegion reg)</TT>
3035 <DT><STRONG>Description:</STRONG></DT>
3036 <DD>Returns the parent region of <TT>reg</TT>.
3044 <DD><A NAME="fn:WRegion.rootwin_of"></A>
3046 <DT><STRONG>Synopsis:</STRONG></DT>
3047 <DD><TT>WRootWin WRegion.rootwin_of(WRegion reg)</TT>
3050 <DT><STRONG>Description:</STRONG></DT>
3051 <DD>Returns the root window <TT>reg</TT> is on.
3059 <DD><A NAME="fn:WRegion.rqclose"></A>
3061 <DT><STRONG>Synopsis:</STRONG></DT>
3062 <DD><TT>void WRegion.rqclose(WRegion reg, bool relocate)</TT>
3065 <DT><STRONG>Description:</STRONG></DT>
3066 <DD>Attempt to close/destroy <TT>reg</TT>. Whether this operation works
3067 depends on whether the particular type of region in question has
3068 implemented the feature and, in case of client windows, whether
3069 the client supports the <TT>WM_DELETE</TT> protocol (see also
3070 <A HREF="#fn:WClientWin.kill"><TT>WClientWin.kill</TT></A>). The region will not be destroyed when
3071 this function returns. To find out if and when it is destroyed,
3072 use the `<TT>deinit</TT>' notification. If <TT>relocate</TT> is not set,
3073 and <TT>reg</TT> manages other regions, it will not be closed. Otherwise
3074 the managed regions will be attempted to be relocated.
3082 <DD><A NAME="fn:WRegion.rqclose_propagate"></A>
3084 <DT><STRONG>Synopsis:</STRONG></DT>
3085 <DD><TT>WRegion WRegion.rqclose_propagate(WRegion reg, WRegion maybe_sub)</TT>
3088 <DT><STRONG>Description:</STRONG></DT>
3089 <DD>Recursively attempt to close a region or one of the regions managed by
3090 it. If <TT>sub</TT> is set, it will be used as the managed region, otherwise
3091 <A HREF="#fn:WRegion.current"><TT>WRegion.current</TT></A><TT>(reg)</TT>. The object to be closed is
3092 returned, or NULL if nothing can be closed. For further details, see
3093 notes for <A HREF="#fn:WRegion.rqclose"><TT>WRegion.rqclose</TT></A>.
3101 <DD><A NAME="fn:WRegion.rqgeom"></A>
3103 <DT><STRONG>Synopsis:</STRONG></DT>
3104 <DD><TT>table WRegion.rqgeom(WRegion reg, table g)</TT>
3107 <DT><STRONG>Description:</STRONG></DT>
3108 <DD>Attempt to resize and/or move <TT>reg</TT>. The table <TT>g</TT> is a usual
3109 geometry specification (fields <TT>x</TT>, <TT>y</TT>, <TT>w</TT> and <TT>h</TT>),
3110 but may contain missing fields, in which case, <TT>reg</TT>'s manager may
3111 attempt to leave that attribute unchanged.
3119 <DD><A NAME="fn:WRegion.rqorder"></A>
3121 <DT><STRONG>Synopsis:</STRONG></DT>
3122 <DD><TT>bool WRegion.rqorder(WRegion reg, string ord)</TT>
3125 <DT><STRONG>Description:</STRONG></DT>
3126 <DD>Request ordering. Currently supported values for <TT>ord</TT>
3127 are `<TT>front</TT>' and `<TT>back</TT>'.
3135 <DD><A NAME="fn:WRegion.screen_of"></A>
3137 <DT><STRONG>Synopsis:</STRONG></DT>
3138 <DD><TT>WScreen WRegion.screen_of(WRegion reg)</TT>
3141 <DT><STRONG>Description:</STRONG></DT>
3142 <DD>Returns the screen <TT>reg</TT> is on.
3150 <DD><A NAME="fn:WRegion.set_activity"></A>
3152 <DT><STRONG>Synopsis:</STRONG></DT>
3153 <DD><TT>bool WRegion.set_activity(WRegion reg, string how)</TT>
3156 <DT><STRONG>Description:</STRONG></DT>
3157 <DD>Set activity flag of <TT>reg</TT>. The <TT>how</TT> parameter must be
3158 one of `<TT>set</TT>', `<TT>unset</TT>' or `<TT>toggle</TT>'.
3166 <DD><A NAME="fn:WRegion.set_name"></A>
3168 <DT><STRONG>Synopsis:</STRONG></DT>
3169 <DD><TT>bool WRegion.set_name(WRegion reg, string p)</TT>
3172 <DT><STRONG>Description:</STRONG></DT>
3173 <DD>Set the name of <TT>reg</TT> to <TT>p</TT>. If the name is already in use,
3174 an instance number suffix `<TT><n></TT>' will be attempted. If <TT>p</TT> has
3175 such a suffix, it will be modified, otherwise such a suffix will be
3176 added. Setting <TT>p</TT> to nil will cause current name to be removed.
3184 <DD><A NAME="fn:WRegion.set_name_exact"></A>
3186 <DT><STRONG>Synopsis:</STRONG></DT>
3187 <DD><TT>bool WRegion.set_name_exact(WRegion reg, string p)</TT>
3190 <DT><STRONG>Description:</STRONG></DT>
3191 <DD>Similar to <A HREF="#fn:WRegion.set_name"><TT>WRegion.set_name</TT></A> except if the name is already in use,
3192 other instance numbers will not be attempted. The string <TT>p</TT> should
3193 not contain a `<TT><n></TT>' suffix or this function will fail.
3201 <DD><A NAME="fn:WRegion.set_tagged"></A>
3203 <DT><STRONG>Synopsis:</STRONG></DT>
3204 <DD><TT>bool WRegion.set_tagged(WRegion reg, string how)</TT>
3207 <DT><STRONG>Description:</STRONG></DT>
3208 <DD>Change tagging state of <TT>reg</TT> as defined by <TT>how</TT>
3209 (one of `<TT>set</TT>', `<TT>unset</TT>', or `<TT>toggle</TT>').
3210 The resulting state is returned.
3218 <DD><A NAME="fn:WRegion.size_hints"></A>
3220 <DT><STRONG>Synopsis:</STRONG></DT>
3221 <DD><TT>table WRegion.size_hints(WRegion reg)</TT>
3224 <DT><STRONG>Description:</STRONG></DT>
3225 <DD>Returns size hints for <TT>reg</TT>. The returned table always contains the
3226 fields <TT>min_?</TT>, <TT>base_?</TT> and sometimes the fields <TT>max_?</TT>,
3227 <TT>base_?</TT> and <TT>inc_?</TT>, where <TT>?</TT>=<TT>w</TT>, <TT>h</TT>.
3234 <H3><A NAME="SECTION007111000000000000000">
3235 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">11</SPAN> WRootWin functions</A>
3241 <DD><A NAME="fn:WRootWin.current_scr"></A>
3243 <DT><STRONG>Synopsis:</STRONG></DT>
3244 <DD><TT>WScreen WRootWin.current_scr(WRootWin rootwin)</TT>
3247 <DT><STRONG>Description:</STRONG></DT>
3248 <DD>Returns previously active screen on root window <TT>rootwin</TT>.
3255 <H3><A NAME="SECTION007112000000000000000">
3256 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">12</SPAN> WScreen functions</A>
3262 <DD><A NAME="fn:WScreen.id"></A>
3264 <DT><STRONG>Synopsis:</STRONG></DT>
3265 <DD><TT>integer WScreen.id(WScreen scr)</TT>
3268 <DT><STRONG>Description:</STRONG></DT>
3269 <DD>Return the numerical id for screen <TT>scr</TT>.
3277 <DD><A NAME="fn:WScreen.set_managed_offset"></A>
3279 <DT><STRONG>Synopsis:</STRONG></DT>
3280 <DD><TT>bool WScreen.set_managed_offset(WScreen scr, table offset)</TT>
3283 <DT><STRONG>Description:</STRONG></DT>
3284 <DD>Set offset of objects managed by the screen from actual screen geometry.
3285 The table <TT>offset</TT> should contain the entries <TT>x</TT>, <TT>y</TT>,
3286 <TT>w</TT> and <TT>h</TT> indicating offsets of that component of screen
3294 <H3><A NAME="SECTION007113000000000000000">
3295 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">13</SPAN> WTimer functions</A>
3301 <DD><A NAME="fn:WTimer.is_set"></A>
3303 <DT><STRONG>Synopsis:</STRONG></DT>
3304 <DD><TT>bool WTimer.is_set(WTimer timer)</TT>
3307 <DT><STRONG>Description:</STRONG></DT>
3316 <DD><A NAME="fn:WTimer.reset"></A>
3318 <DT><STRONG>Synopsis:</STRONG></DT>
3319 <DD><TT>void WTimer.reset(WTimer timer)</TT>
3322 <DT><STRONG>Description:</STRONG></DT>
3331 <DD><A NAME="fn:WTimer.set"></A>
3333 <DT><STRONG>Synopsis:</STRONG></DT>
3334 <DD><TT>void WTimer.set(WTimer timer, integer msecs, function fn)</TT>
3337 <DT><STRONG>Description:</STRONG></DT>
3338 <DD>Set <TT>timer</TT> to call <TT>fn</TT> in <TT>msecs</TT> milliseconds.
3345 <H3><A NAME="SECTION007114000000000000000">
3346 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">14</SPAN> WWindow functions</A>
3352 <DD><A NAME="fn:WWindow.p_move"></A>
3354 <DT><STRONG>Synopsis:</STRONG></DT>
3355 <DD><TT>void WWindow.p_move(WWindow wwin)</TT>
3358 <DT><STRONG>Description:</STRONG></DT>
3359 <DD>Start moving <TT>wwin</TT> with the mouse or other pointing device.
3360 This function should only be used by binding it to <SPAN CLASS="textit">mpress</SPAN> or
3361 <SPAN CLASS="textit">mdrag</SPAN> action.
3369 <DD><A NAME="fn:WWindow.p_resize"></A>
3371 <DT><STRONG>Synopsis:</STRONG></DT>
3372 <DD><TT>void WWindow.p_resize(WWindow wwin)</TT>
3375 <DT><STRONG>Description:</STRONG></DT>
3376 <DD>Start resizing <TT>wwin</TT> with the mouse or other pointing device.
3377 This function should only be used by binding it to <SPAN CLASS="textit">mpress</SPAN> or
3378 <SPAN CLASS="textit">mdrag</SPAN> action.
3386 <DD><A NAME="fn:WWindow.xid"></A>
3388 <DT><STRONG>Synopsis:</STRONG></DT>
3389 <DD><TT>double WWindow.xid(WWindow wwin)</TT>
3392 <DT><STRONG>Description:</STRONG></DT>
3393 <DD>Return the X window id for <TT>wwin</TT>.
3400 <H3><A NAME="SECTION007115000000000000000">
3401 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">15</SPAN> global functions</A>
3407 <DD><A NAME="fn:export"></A>
3409 <DT><STRONG>Synopsis:</STRONG></DT>
3410 <DD><TT>export(lib, ...)</TT>
3413 <DT><STRONG>Description:</STRONG></DT>
3414 <DD>Export a list of functions from <TT>lib</TT> into global namespace.
3421 <H3><A NAME="SECTION007116000000000000000">
3422 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">16</SPAN> gr functions</A>
3428 <DD><A NAME="fn:gr.read_config"></A>
3430 <DT><STRONG>Synopsis:</STRONG></DT>
3431 <DD><TT>void gr.read_config()</TT>
3434 <DT><STRONG>Description:</STRONG></DT>
3435 <DD>Read drawing engine configuration file <SPAN CLASS="textit">look.lua</SPAN>.
3443 <DD><A NAME="fn:gr.refresh"></A>
3445 <DT><STRONG>Synopsis:</STRONG></DT>
3446 <DD><TT>void gr.refresh()</TT>
3449 <DT><STRONG>Description:</STRONG></DT>
3450 <DD>Refresh objects' brushes to update them to use newly loaded style.
3458 <DD><A NAME="fn:gr.select_engine"></A>
3460 <DT><STRONG>Synopsis:</STRONG></DT>
3461 <DD><TT>bool gr.select_engine(string engine)</TT>
3464 <DT><STRONG>Description:</STRONG></DT>
3465 <DD>Future requests for ``brushes'' are to be forwarded to the drawing engine
3466 <TT>engine</TT>. If no engine of such name is known, a module with that name
3467 is attempted to be loaded. This function is only intended to be called from
3468 colour scheme etc. configuration files and can not be used to change the
3469 look of existing objects; for that use <A HREF="#fn:gr.read_config"><TT>gr.read_config</TT></A>.
3476 <H3><A NAME="SECTION007117000000000000000">
3477 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">17</SPAN> string functions</A>
3483 <DD><A NAME="fn:string.shell_safe"></A>
3485 <DT><STRONG>Synopsis:</STRONG></DT>
3486 <DD><TT>string.shell_safe(str)</TT>
3489 <DT><STRONG>Description:</STRONG></DT>
3490 <DD>Make <TT>str</TT> shell-safe.
3497 <H3><A NAME="SECTION007118000000000000000">
3498 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">18</SPAN> table functions</A>
3504 <DD><A NAME="fn:table.append"></A>
3506 <DT><STRONG>Synopsis:</STRONG></DT>
3507 <DD><TT>table.append(t1, t2)</TT>
3510 <DT><STRONG>Description:</STRONG></DT>
3511 <DD>Add entries that do not exist in <TT>t1</TT> from <TT>t2</TT> to <TT>t1</TT>.
3519 <DD><A NAME="fn:table.copy"></A>
3521 <DT><STRONG>Synopsis:</STRONG></DT>
3522 <DD><TT>table.copy(t, deep)</TT>
3525 <DT><STRONG>Description:</STRONG></DT>
3526 <DD>Make copy of <TT>table</TT>. If <TT>deep</TT> is unset, shallow one-level
3527 copy is made, otherwise a deep copy is made.
3535 <DD><A NAME="fn:table.icat"></A>
3537 <DT><STRONG>Synopsis:</STRONG></DT>
3538 <DD><TT>table.icat(t1, t2)</TT>
3541 <DT><STRONG>Description:</STRONG></DT>
3542 <DD>Insert all positive integer entries from t2 into t1.
3550 <DD><A NAME="fn:table.join"></A>
3552 <DT><STRONG>Synopsis:</STRONG></DT>
3553 <DD><TT>table.join(t1, t2)</TT>
3556 <DT><STRONG>Description:</STRONG></DT>
3557 <DD>Create a table containing all entries from <TT>t1</TT> and those from
3558 <TT>t2</TT> that are missing from <TT>t1</TT>.
3566 <DD><A NAME="fn:table.map"></A>
3568 <DT><STRONG>Synopsis:</STRONG></DT>
3569 <DD><TT>table.map(f, t)</TT>
3572 <DT><STRONG>Description:</STRONG></DT>
3573 <DD>Map all entries of <TT>t</TT> by <TT>f</TT>.
3580 <H2><A NAME="SECTION00720000000000000000"></A>
3581 <A NAME="sec:tilingref"></A>
3583 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN> Functions defined in <SPAN CLASS="textit">mod_tiling</SPAN>
3587 <DD><A NAME="fn:mod_tiling.get"></A>
3589 <DT><STRONG>Synopsis:</STRONG></DT>
3590 <DD><TT>table mod_tiling.get()</TT>
3593 <DT><STRONG>Description:</STRONG></DT>
3594 <DD>Get parameters. For details see <A HREF="#fn:mod_tiling.set"><TT>mod_tiling.set</TT></A>.
3602 <DD><A NAME="fn:mod_tiling.mkbottom"></A>
3604 <DT><STRONG>Synopsis:</STRONG></DT>
3605 <DD><TT>bool mod_tiling.mkbottom(WRegion reg)</TT>
3608 <DT><STRONG>Description:</STRONG></DT>
3609 <DD>Create a new WTiling 'bottom' for the group of <TT>reg</TT>,
3610 consisting of <TT>reg</TT>.
3618 <DD><A NAME="fn:mod_tiling.set"></A>
3620 <DT><STRONG>Synopsis:</STRONG></DT>
3621 <DD><TT>void mod_tiling.set(table tab)</TT>
3624 <DT><STRONG>Description:</STRONG></DT>
3625 <DD>Set parameters. Currently only <TT>raise_delay</TT> (in milliseconds)
3634 <DD><A NAME="fn:mod_tiling.untile"></A>
3636 <DT><STRONG>Synopsis:</STRONG></DT>
3637 <DD><TT>bool mod_tiling.untile(WTiling tiling)</TT>
3640 <DT><STRONG>Description:</STRONG></DT>
3641 <DD>If <TT>tiling</TT> is managed by some group, float the frames in
3642 the tiling in that group, and dispose of <TT>tiling</TT>.
3649 <H3><A NAME="SECTION00721000000000000000">
3650 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN> WSplit functions</A>
3656 <DD><A NAME="fn:WSplit.geom"></A>
3658 <DT><STRONG>Synopsis:</STRONG></DT>
3659 <DD><TT>table WSplit.geom(WSplit split)</TT>
3662 <DT><STRONG>Description:</STRONG></DT>
3663 <DD>Returns the area of workspace used by the regions under <TT>split</TT>.
3671 <DD><A NAME="fn:WSplit.parent"></A>
3673 <DT><STRONG>Synopsis:</STRONG></DT>
3674 <DD><TT>WSplitInner WSplit.parent(WSplit split)</TT>
3677 <DT><STRONG>Description:</STRONG></DT>
3678 <DD>Return parent split for <TT>split</TT>.
3686 <DD><A NAME="fn:WSplit.rqgeom"></A>
3688 <DT><STRONG>Synopsis:</STRONG></DT>
3689 <DD><TT>table WSplit.rqgeom(WSplit node, table g)</TT>
3692 <DT><STRONG>Description:</STRONG></DT>
3693 <DD>Attempt to resize and/or move the split tree starting at <TT>node</TT>.
3694 Behaviour and the <TT>g</TT> parameter are as for <A HREF="#fn:WRegion.rqgeom"><TT>WRegion.rqgeom</TT></A>
3695 operating on <TT>node</TT> (if it were a WRegion).
3703 <DD><A NAME="fn:WSplit.transpose"></A>
3705 <DT><STRONG>Synopsis:</STRONG></DT>
3706 <DD><TT>void WSplit.transpose(WSplit node)</TT>
3709 <DT><STRONG>Description:</STRONG></DT>
3710 <DD>Transpose contents of <TT>node</TT>.
3717 <H3><A NAME="SECTION00722000000000000000">
3718 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN> WSplitInner functions</A>
3724 <DD><A NAME="fn:WSplitInner.current"></A>
3726 <DT><STRONG>Synopsis:</STRONG></DT>
3727 <DD><TT>WSplit WSplitInner.current(WSplitInner node)</TT>
3730 <DT><STRONG>Description:</STRONG></DT>
3731 <DD>Returns the most previously active child node of <TT>split</TT>.
3738 <H3><A NAME="SECTION00723000000000000000">
3739 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">3</SPAN> WSplitRegion functions</A>
3745 <DD><A NAME="fn:WSplitRegion.reg"></A>
3747 <DT><STRONG>Synopsis:</STRONG></DT>
3748 <DD><TT>WRegion WSplitRegion.reg(WSplitRegion node)</TT>
3751 <DT><STRONG>Description:</STRONG></DT>
3752 <DD>Returns the region contained in <TT>node</TT>.
3759 <H3><A NAME="SECTION00724000000000000000">
3760 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">4</SPAN> WSplitSplit functions</A>
3766 <DD><A NAME="fn:WSplitSplit.br"></A>
3768 <DT><STRONG>Synopsis:</STRONG></DT>
3769 <DD><TT>WSplit WSplitSplit.br(WSplitSplit split)</TT>
3772 <DT><STRONG>Description:</STRONG></DT>
3773 <DD>Returns the bottom or right child node of <TT>split</TT> depending
3774 on the direction of the split.
3782 <DD><A NAME="fn:WSplitSplit.dir"></A>
3784 <DT><STRONG>Synopsis:</STRONG></DT>
3785 <DD><TT>string WSplitSplit.dir(WSplitSplit split)</TT>
3788 <DT><STRONG>Description:</STRONG></DT>
3789 <DD>Returns the direction of <TT>split</TT>; either `<TT>vertical</TT>' or
3790 `<TT>horizontal</TT>'.
3798 <DD><A NAME="fn:WSplitSplit.flip"></A>
3800 <DT><STRONG>Synopsis:</STRONG></DT>
3801 <DD><TT>void WSplitSplit.flip(WSplitSplit split)</TT>
3804 <DT><STRONG>Description:</STRONG></DT>
3805 <DD>Flip contents of <TT>node</TT>.
3813 <DD><A NAME="fn:WSplitSplit.tl"></A>
3815 <DT><STRONG>Synopsis:</STRONG></DT>
3816 <DD><TT>WSplit WSplitSplit.tl(WSplitSplit split)</TT>
3819 <DT><STRONG>Description:</STRONG></DT>
3820 <DD>Returns the top or left child node of <TT>split</TT> depending
3821 on the direction of the split.
3828 <H3><A NAME="SECTION00725000000000000000">
3829 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">5</SPAN> WTiling functions</A>
3835 <DD><A NAME="fn:WTiling.flip_at"></A>
3837 <DT><STRONG>Synopsis:</STRONG></DT>
3838 <DD><TT>bool WTiling.flip_at(WTiling ws, WRegion reg)</TT>
3841 <DT><STRONG>Description:</STRONG></DT>
3842 <DD>Flip <TT>ws</TT> at <TT>reg</TT> or root if nil.
3850 <DD><A NAME="fn:WTiling.transpose_at"></A>
3852 <DT><STRONG>Synopsis:</STRONG></DT>
3853 <DD><TT>bool WTiling.transpose_at(WTiling ws, WRegion reg)</TT>
3856 <DT><STRONG>Description:</STRONG></DT>
3857 <DD>Transpose <TT>ws</TT> at <TT>reg</TT> or root if nil.
3865 <DD><A NAME="fn:WTiling.farthest"></A>
3867 <DT><STRONG>Synopsis:</STRONG></DT>
3868 <DD><TT>WRegion WTiling.farthest(WTiling ws, string dirstr, bool any)</TT>
3871 <DT><STRONG>Description:</STRONG></DT>
3872 <DD>Return the most previously active region on <TT>ws</TT> with no
3873 other regions next to it in direction <TT>dirstr</TT>
3874 (`<TT>left</TT>', `<TT>right</TT>', `<TT>up</TT>', or `<TT>down</TT>').
3875 If <TT>any</TT> is not set, the status display is not considered.
3883 <DD><A NAME="fn:WTiling.managed_i"></A>
3885 <DT><STRONG>Synopsis:</STRONG></DT>
3886 <DD><TT>bool WTiling.managed_i(WTiling ws, function iterfn)</TT>
3889 <DT><STRONG>Description:</STRONG></DT>
3890 <DD>Iterate over managed regions of <TT>ws</TT> until <TT>iterfn</TT> returns
3892 The function itself returns <TT>true</TT> if it reaches the end of list
3893 without this happening.
3901 <DD><A NAME="fn:WTiling.nextto"></A>
3903 <DT><STRONG>Synopsis:</STRONG></DT>
3904 <DD><TT>WRegion WTiling.nextto(WTiling ws, WRegion reg, string dirstr, bool any)</TT>
3907 <DT><STRONG>Description:</STRONG></DT>
3908 <DD>Return the most previously active region next to <TT>reg</TT> in
3909 direction <TT>dirstr</TT> (`<TT>left</TT>', `<TT>right</TT>', `<TT>up</TT>',
3910 or `<TT>down</TT>'). The region <TT>reg</TT>
3911 must be managed by <TT>ws</TT>. If <TT>any</TT> is not set, the status display
3920 <DD><A NAME="fn:WTiling.node_of"></A>
3922 <DT><STRONG>Synopsis:</STRONG></DT>
3923 <DD><TT>WSplitRegion WTiling.node_of(WTiling ws, WRegion reg)</TT>
3926 <DT><STRONG>Description:</STRONG></DT>
3927 <DD>For region <TT>reg</TT> managed by <TT>ws</TT> return the WSplit
3928 a leaf of which <TT>reg</TT> is.
3936 <DD><A NAME="fn:WTiling.set_floating_at"></A>
3938 <DT><STRONG>Synopsis:</STRONG></DT>
3939 <DD><TT>bool WTiling.set_floating_at(WTiling ws, WRegion reg, string how, string dirstr)</TT>
3942 <DT><STRONG>Description:</STRONG></DT>
3943 <DD>Toggle floating of the sides of a split containin <TT>reg</TT> as indicated
3944 by the parameters <TT>how</TT> (`<TT>set</TT>', `<TT>unset</TT>', or
3945 `<TT>toggle</TT>') and <TT>dirstr</TT> (`<TT>left</TT>', `<TT>right</TT>',
3946 `<TT>up</TT>', or `<TT>down</TT>'). The new status is returned
3947 (and <TT>false</TT> also on error).
3955 <DD><A NAME="fn:WTiling.set_floating"></A>
3957 <DT><STRONG>Synopsis:</STRONG></DT>
3958 <DD><TT>WSplitSplit WTiling.set_floating(WTiling ws, WSplitSplit split, string how)</TT>
3961 <DT><STRONG>Description:</STRONG></DT>
3962 <DD>Toggle floating of a split's sides at <TT>split</TT> as indicated by the
3963 parameter <TT>how</TT> (`<TT>set</TT>', `<TT>unset</TT>', or `<TT>toggle</TT>').
3964 A split of the appropriate is returned, if there was a change.
3972 <DD><A NAME="fn:WTiling.split"></A>
3974 <DT><STRONG>Synopsis:</STRONG></DT>
3975 <DD><TT>WFrame WTiling.split(WTiling ws, WSplit node, string dirstr)</TT>
3978 <DT><STRONG>Description:</STRONG></DT>
3979 <DD>Create a new frame on <TT>ws</TT> `<TT>above</TT>', `<TT>below</TT>'
3980 `<TT>left</TT>' of, or `<TT>right</TT>' of <TT>node</TT> as indicated
3981 by <TT>dirstr</TT>. If <TT>dirstr</TT> is prefixed with
3982 `<TT>floating:</TT>' a floating split is created.
3990 <DD><A NAME="fn:WTiling.split_at"></A>
3992 <DT><STRONG>Synopsis:</STRONG></DT>
3993 <DD><TT>WFrame WTiling.split_at(WTiling ws, WFrame frame, string dirstr, bool attach_current)</TT>
3996 <DT><STRONG>Description:</STRONG></DT>
3997 <DD>Split <TT>frame</TT> creating a new frame to direction <TT>dirstr</TT>
3998 (one of `<TT>left</TT>', `<TT>right</TT>', `<TT>top</TT>' or
3999 `<TT>bottom</TT>') of <TT>frame</TT>.
4000 If <TT>attach_current</TT> is set, the region currently displayed in
4001 <TT>frame</TT>, if any, is moved to thenew frame.
4002 If <TT>dirstr</TT> is prefixed with `<TT>floating:</TT>', a floating
4011 <DD><A NAME="fn:WTiling.split_top"></A>
4013 <DT><STRONG>Synopsis:</STRONG></DT>
4014 <DD><TT>WFrame WTiling.split_top(WTiling ws, string dirstr)</TT>
4017 <DT><STRONG>Description:</STRONG></DT>
4018 <DD>Same as <A HREF="#fn:WTiling.split"><TT>WTiling.split</TT></A> at the root of the split tree.
4026 <DD><A NAME="fn:WTiling.split_tree"></A>
4028 <DT><STRONG>Synopsis:</STRONG></DT>
4029 <DD><TT>WSplit WTiling.split_tree(WTiling ws)</TT>
4032 <DT><STRONG>Description:</STRONG></DT>
4033 <DD>Returns the root of the split tree.
4041 <DD><A NAME="fn:WTiling.unsplit_at"></A>
4043 <DT><STRONG>Synopsis:</STRONG></DT>
4044 <DD><TT>void WTiling.unsplit_at(WTiling ws, WRegion reg)</TT>
4047 <DT><STRONG>Description:</STRONG></DT>
4048 <DD>Try to relocate regions managed by <TT>reg</TT> to another frame
4049 and, if possible, destroy it.
4056 <H2><A NAME="SECTION00730000000000000000"></A>
4057 <A NAME="sec:queryref"></A>
4059 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN> Functions defined in <SPAN CLASS="textit">mod_query</SPAN>
4063 <DD><A NAME="fn:mod_query.defcmd"></A>
4065 <DT><STRONG>Synopsis:</STRONG></DT>
4066 <DD><TT>mod_query.defcmd(cmd, fn)</TT>
4069 <DT><STRONG>Description:</STRONG></DT>
4070 <DD>Define a command override for the <A HREF="#fn:mod_query.query_exec"><TT>query_exec</TT></A> query.
4078 <DD><A NAME="fn:mod_query.message"></A>
4080 <DT><STRONG>Synopsis:</STRONG></DT>
4081 <DD><TT>mod_query.message(mplex, str)</TT>
4084 <DT><STRONG>Description:</STRONG></DT>
4085 <DD>Display a message in <TT>mplex</TT>.
4093 <DD><A NAME="fn:mod_query.get"></A>
4095 <DT><STRONG>Synopsis:</STRONG></DT>
4096 <DD><TT>table mod_query.get()</TT>
4099 <DT><STRONG>Description:</STRONG></DT>
4100 <DD>Get module configuration. For more information see
4101 <A HREF="#fn:mod_query.set"><TT>mod_query.set</TT></A>.
4109 <DD><A NAME="fn:mod_query.history_clear"></A>
4111 <DT><STRONG>Synopsis:</STRONG></DT>
4112 <DD><TT>void mod_query.history_clear()</TT>
4115 <DT><STRONG>Description:</STRONG></DT>
4116 <DD>Clear line editor history.
4124 <DD><A NAME="fn:mod_query.history_get"></A>
4126 <DT><STRONG>Synopsis:</STRONG></DT>
4127 <DD><TT>string mod_query.history_get(integer n)</TT>
4130 <DT><STRONG>Description:</STRONG></DT>
4131 <DD>Get entry at index <TT>n</TT> in line editor history, 0 being the latest.
4139 <DD><A NAME="fn:mod_query.history_push"></A>
4141 <DT><STRONG>Synopsis:</STRONG></DT>
4142 <DD><TT>bool mod_query.history_push(string str)</TT>
4145 <DT><STRONG>Description:</STRONG></DT>
4146 <DD>Push an entry into line editor history.
4154 <DD><A NAME="fn:mod_query.history_search"></A>
4156 <DT><STRONG>Synopsis:</STRONG></DT>
4157 <DD><TT>integer mod_query.history_search(string s, integer from, bool bwd, bool exact)</TT>
4160 <DT><STRONG>Description:</STRONG></DT>
4161 <DD>Try to find matching history entry. Returns -1 if none was
4162 found. The parameter <TT>from</TT> specifies where to start
4163 searching from, and <TT>bwd</TT> causes backward search from
4164 that point. If <TT>exact</TT> is not set, <TT>s</TT> only required
4165 to be a prefix of the match.
4173 <DD><A NAME="fn:mod_query.history_table"></A>
4175 <DT><STRONG>Synopsis:</STRONG></DT>
4176 <DD><TT>table mod_query.history_table()</TT>
4179 <DT><STRONG>Description:</STRONG></DT>
4180 <DD>Return table of history entries.
4188 <DD><A NAME="fn:mod_query.set"></A>
4190 <DT><STRONG>Synopsis:</STRONG></DT>
4191 <DD><TT>void mod_query.set(table tab)</TT>
4194 <DT><STRONG>Description:</STRONG></DT>
4195 <DD>Set module configuration. The following are supported:
4198 <TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
4199 <TR><TD ALIGN="LEFT">Field</TD>
4200 <TD ALIGN="LEFT">Description</TD>
4202 <TR><TD ALIGN="LEFT"><TT>autoshowcompl</TT></TD>
4203 <TD ALIGN="LEFT">(boolean) Is auto-show-completions enabled?
4204 (default: true).</TD>
4206 <TR><TD ALIGN="LEFT"><TT>autoshowcompl_delay</TT></TD>
4207 <TD ALIGN="LEFT">(integer) auto-show-completions delay
4208 in milliseconds (default: 250).</TD>
4210 <TR><TD ALIGN="LEFT"><TT>caseicompl</TT></TD>
4211 <TD ALIGN="LEFT">(boolean) Turn some completions case-insensitive
4212 (default: false).</TD>
4222 <DD><A NAME="fn:mod_query.popen_completions"></A>
4224 <DT><STRONG>Synopsis:</STRONG></DT>
4225 <DD><TT>mod_query.popen_completions(cp, cmd, fn, reshnd)</TT>
4228 <DT><STRONG>Description:</STRONG></DT>
4229 <DD>This function can be used to read completions from an external source.
4230 The parameter <TT>cp</TT> is the completion proxy to be used,
4231 and the string <TT>cmd</TT> the shell command to be executed. To its stdout,
4232 the command should on the first line write the <TT>common_beg</TT>
4233 parameter of <A HREF="#fn:WComplProxy.set_completions"><TT>WComplProxy.set_completions</TT></A> (which <TT>fn</TT> maybe used
4234 to override) and a single actual completion on each of the successive lines.
4235 The function <TT>reshnd</TT> may be used to override a result table
4244 <DD><A NAME="fn:mod_query.query"></A>
4246 <DT><STRONG>Synopsis:</STRONG></DT>
4247 <DD><TT>mod_query.query(mplex, prompt, initvalue, handler, completor,
4251 <DT><STRONG>Description:</STRONG></DT>
4252 <DD>Low-level query routine. <TT>mplex</TT> is the WMPlex to display
4253 the query in, <TT>prompt</TT> the prompt string, and <TT>initvalue</TT>
4254 the initial contents of the query box. <TT>handler</TT> is a function
4255 that receives (<TT>mplex</TT>, result string) as parameter when the
4256 query has been succesfully completed, <TT>completor</TT> the completor
4257 routine which receives a (<TT>cp</TT>, <TT>str</TT>, <TT>point</TT>) as parameters.
4258 The parameter <TT>str</TT> is the string to be completed and <TT>point</TT>
4259 cursor's location within it. Completions should be eventually,
4260 possibly asynchronously, set with <A HREF="#fn:WComplProxy.set_completions"><TT>WComplProxy.set_completions</TT></A>
4269 <DD><A NAME="fn:mod_query.query_attachclient"></A>
4271 <DT><STRONG>Synopsis:</STRONG></DT>
4272 <DD><TT>mod_query.query_attachclient(mplex)</TT>
4275 <DT><STRONG>Description:</STRONG></DT>
4276 <DD>This query asks for the name of a client window and attaches
4277 it to the frame the query was opened in. It uses the completion
4278 function <A HREF="#fn:ioncore.complete_clientwin"><TT>ioncore.complete_clientwin</TT></A>.
4286 <DD><A NAME="fn:mod_query.query_editfile"></A>
4288 <DT><STRONG>Synopsis:</STRONG></DT>
4289 <DD><TT>mod_query.query_editfile(mplex, script, prompt)</TT>
4292 <DT><STRONG>Description:</STRONG></DT>
4293 <DD>Asks for a file to be edited. This script uses
4294 <TT>run-mailcap -mode=edit</TT> by default, but you may provide an
4295 alternative script to use. The default prompt is "Edit file:" (translated).
4303 <DD><A NAME="fn:mod_query.query_exec"></A>
4305 <DT><STRONG>Synopsis:</STRONG></DT>
4306 <DD><TT>mod_query.query_exec(mplex)</TT>
4309 <DT><STRONG>Description:</STRONG></DT>
4310 <DD>This function asks for a command to execute with <SPAN CLASS="textit">/bin/sh</SPAN>.
4311 If the command is prefixed with a colon (':'), the command will
4312 be run in an XTerm (or other terminal emulator) using the script
4313 <SPAN CLASS="textit">ion-runinxterm</SPAN>. Two colons ('::') will ask you to press
4314 enter after the command has finished.
4322 <DD><A NAME="fn:mod_query.query_gotoclient"></A>
4324 <DT><STRONG>Synopsis:</STRONG></DT>
4325 <DD><TT>mod_query.query_gotoclient(mplex)</TT>
4328 <DT><STRONG>Description:</STRONG></DT>
4329 <DD>This query asks for the name of a client window and switches
4330 focus to the one entered. It uses the completion function
4331 <A HREF="#fn:ioncore.complete_clientwin"><TT>ioncore.complete_clientwin</TT></A>.
4339 <DD><A NAME="fn:mod_query.query_lua"></A>
4341 <DT><STRONG>Synopsis:</STRONG></DT>
4342 <DD><TT>mod_query.query_lua(mplex)</TT>
4345 <DT><STRONG>Description:</STRONG></DT>
4346 <DD>This query asks for Lua code to execute. It sets the variable '<TT>_</TT>'
4347 in the local environment of the string to point to the mplex where the
4348 query was created. It also sets the table <TT>arg</TT> in the local
4349 environment to <TT>{_, _:current()}</TT>.
4357 <DD><A NAME="fn:mod_query.query_man"></A>
4359 <DT><STRONG>Synopsis:</STRONG></DT>
4360 <DD><TT>mod_query.query_man(mplex, prog)</TT>
4363 <DT><STRONG>Description:</STRONG></DT>
4364 <DD>This query asks for a manual page to display. By default it runs the
4365 <TT>man</TT> command in an <TT>xterm</TT> using <TT>ion-runinxterm</TT>,
4366 but it is possible to pass another program as the <TT>prog</TT> argument.
4374 <DD><A NAME="fn:mod_query.query_menu"></A>
4376 <DT><STRONG>Synopsis:</STRONG></DT>
4377 <DD><TT>mod_query.query_menu(mplex, sub, themenu, prompt)</TT>
4380 <DT><STRONG>Description:</STRONG></DT>
4381 <DD>This query can be used to create a query of a defined menu.
4389 <DD><A NAME="fn:mod_query.query_renameframe"></A>
4391 <DT><STRONG>Synopsis:</STRONG></DT>
4392 <DD><TT>mod_query.query_renameframe(frame)</TT>
4395 <DT><STRONG>Description:</STRONG></DT>
4396 <DD>This function asks for a name new for the frame where the query
4405 <DD><A NAME="fn:mod_query.query_renameworkspace"></A>
4407 <DT><STRONG>Synopsis:</STRONG></DT>
4408 <DD><TT>mod_query.query_renameworkspace(mplex, ws)</TT>
4411 <DT><STRONG>Description:</STRONG></DT>
4412 <DD>This function asks for a name new for the workspace <TT>ws</TT>,
4413 or the one on which <TT>mplex</TT> resides, if it is not set.
4414 If <TT>mplex</TT> is not set, one is looked for.
4422 <DD><A NAME="fn:mod_query.query_restart"></A>
4424 <DT><STRONG>Synopsis:</STRONG></DT>
4425 <DD><TT>mod_query.query_restart(mplex)</TT>
4428 <DT><STRONG>Description:</STRONG></DT>
4429 <DD>This query asks whether the user wants restart Ioncore.
4430 If the answer is 'y', 'Y' or 'yes', so will happen.
4438 <DD><A NAME="fn:mod_query.query_runfile"></A>
4440 <DT><STRONG>Synopsis:</STRONG></DT>
4441 <DD><TT>mod_query.query_runfile(mplex, script, prompt)</TT>
4444 <DT><STRONG>Description:</STRONG></DT>
4445 <DD>Asks for a file to be viewed. This script uses
4446 <TT>run-mailcap -action=view</TT> by default, but you may provide an
4447 alternative script to use. The default prompt is "View file:" (translated).
4455 <DD><A NAME="fn:mod_query.query_shutdown"></A>
4457 <DT><STRONG>Synopsis:</STRONG></DT>
4458 <DD><TT>mod_query.query_shutdown(mplex)</TT>
4461 <DT><STRONG>Description:</STRONG></DT>
4462 <DD>This query asks whether the user wants to exit Ion (no session manager)
4463 or close the session (running under a session manager that supports such
4464 requests). If the answer is 'y', 'Y' or 'yes', so will happen.
4472 <DD><A NAME="fn:mod_query.query_ssh"></A>
4474 <DT><STRONG>Synopsis:</STRONG></DT>
4475 <DD><TT>mod_query.query_ssh(mplex, ssh)</TT>
4478 <DT><STRONG>Description:</STRONG></DT>
4479 <DD>This query asks for a host to connect to with SSH.
4480 Hosts to tab-complete are read from <SPAN CLASS="textit">~/.ssh/known_hosts</SPAN>.
4488 <DD><A NAME="fn:mod_query.query_workspace"></A>
4490 <DT><STRONG>Synopsis:</STRONG></DT>
4491 <DD><TT>mod_query.query_workspace(mplex)</TT>
4494 <DT><STRONG>Description:</STRONG></DT>
4495 <DD>This query asks for the name of a workspace. If a workspace
4496 (an object inheriting WGroupWS) with such a name exists,
4497 it will be switched to. Otherwise a new workspace with the
4498 entered name will be created and the user will be queried for
4499 the type of the workspace.
4507 <DD><A NAME="fn:mod_query.query_yesno"></A>
4509 <DT><STRONG>Synopsis:</STRONG></DT>
4510 <DD><TT>mod_query.query_yesno(mplex, prompt, handler)</TT>
4513 <DT><STRONG>Description:</STRONG></DT>
4514 <DD>This function query will display a query with prompt <TT>prompt</TT> in
4515 <TT>mplex</TT> and if the user answers affirmately, call <TT>handler</TT>
4516 with <TT>mplex</TT> as parameter.
4524 <DD><A NAME="fn:mod_query.show_about_ion"></A>
4526 <DT><STRONG>Synopsis:</STRONG></DT>
4527 <DD><TT>mod_query.show_about_ion(mplex)</TT>
4530 <DT><STRONG>Description:</STRONG></DT>
4531 <DD>Display an "About Ion" message in <TT>mplex</TT>.
4539 <DD><A NAME="fn:mod_query.show_tree"></A>
4541 <DT><STRONG>Synopsis:</STRONG></DT>
4542 <DD><TT>mod_query.show_tree(mplex, reg, max_depth)</TT>
4545 <DT><STRONG>Description:</STRONG></DT>
4546 <DD>Show information about a region tree
4554 <DD><A NAME="fn:mod_query.warn"></A>
4556 <DT><STRONG>Synopsis:</STRONG></DT>
4557 <DD><TT>mod_query.warn(mplex, str)</TT>
4560 <DT><STRONG>Description:</STRONG></DT>
4561 <DD>Display an error message box in the multiplexer <TT>mplex</TT>.
4568 <H3><A NAME="SECTION00731000000000000000">
4569 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">1</SPAN> WComplProxy functions</A>
4575 <DD><A NAME="fn:WComplProxy.set_completions"></A>
4577 <DT><STRONG>Synopsis:</STRONG></DT>
4578 <DD><TT>bool WComplProxy.set_completions(WComplProxy proxy, table compls)</TT>
4581 <DT><STRONG>Description:</STRONG></DT>
4582 <DD>Set completion list of the WEdln that <TT>proxy</TT> refers to to
4583 <TT>compls</TT>, if it is still waiting for this completion run. The
4584 numerical indexes of <TT>compls</TT> list the found completions. If the
4585 entry <TT>common_beg</TT> (<TT>common_end</TT>) exists, it gives an extra
4586 common prefix (suffix) of all found completions.
4593 <H3><A NAME="SECTION00732000000000000000">
4594 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN> WEdln functions</A>
4600 <DD><A NAME="fn:WEdln.back"></A>
4602 <DT><STRONG>Synopsis:</STRONG></DT>
4603 <DD><TT>void WEdln.back(WEdln wedln)</TT>
4606 <DT><STRONG>Description:</STRONG></DT>
4607 <DD>Move backward one character.
4615 <DD><A NAME="fn:WEdln.backspace"></A>
4617 <DT><STRONG>Synopsis:</STRONG></DT>
4618 <DD><TT>void WEdln.backspace(WEdln wedln)</TT>
4621 <DT><STRONG>Description:</STRONG></DT>
4622 <DD>Delete previous character.
4630 <DD><A NAME="fn:WEdln.bkill_word"></A>
4632 <DT><STRONG>Synopsis:</STRONG></DT>
4633 <DD><TT>void WEdln.bkill_word(WEdln wedln)</TT>
4636 <DT><STRONG>Description:</STRONG></DT>
4637 <DD>Starting from the previous characters, delete possible whitespace and
4638 preceding alphanumeric characters until previous non-alphanumeric character.
4646 <DD><A NAME="fn:WEdln.bol"></A>
4648 <DT><STRONG>Synopsis:</STRONG></DT>
4649 <DD><TT>void WEdln.bol(WEdln wedln)</TT>
4652 <DT><STRONG>Description:</STRONG></DT>
4653 <DD>Go to the beginning of line.
4661 <DD><A NAME="fn:WEdln.bskip_word"></A>
4663 <DT><STRONG>Synopsis:</STRONG></DT>
4664 <DD><TT>void WEdln.bskip_word(WEdln wedln)</TT>
4667 <DT><STRONG>Description:</STRONG></DT>
4668 <DD>Go to to beginning of current sequence of alphanumeric characters
4669 followed by whitespace.
4677 <DD><A NAME="fn:WEdln.clear_mark"></A>
4679 <DT><STRONG>Synopsis:</STRONG></DT>
4680 <DD><TT>void WEdln.clear_mark(WEdln wedln)</TT>
4683 <DT><STRONG>Description:</STRONG></DT>
4684 <DD>Clear <SPAN CLASS="textit">mark</SPAN>.
4692 <DD><A NAME="fn:WEdln.complete"></A>
4694 <DT><STRONG>Synopsis:</STRONG></DT>
4695 <DD><TT>void WEdln.complete(WEdln wedln, string cycle, string mode)</TT>
4698 <DT><STRONG>Description:</STRONG></DT>
4699 <DD>Call completion handler with the text between the beginning of line and
4700 current cursor position, or select next/previous completion from list if in
4701 auto-show-completions mode and <TT>cycle</TT> is set to `<TT>next</TT>' or
4702 `<TT>prev</TT>', respectively.
4703 The <TT>mode</TT> may be `<TT>history</TT>' or `<TT>normal</TT>'. If it is
4704 not set, the previous mode is used. Normally next entry is not cycled to
4705 despite the setting of <TT>cycle</TT> if mode switch occurs. To override
4706 this, use `<TT>next-always</TT>' and `<TT>prev-always</TT>' for <TT>cycle</TT>.
4714 <DD><A NAME="fn:WEdln.contents"></A>
4716 <DT><STRONG>Synopsis:</STRONG></DT>
4717 <DD><TT>string WEdln.contents(WEdln wedln)</TT>
4720 <DT><STRONG>Description:</STRONG></DT>
4721 <DD>Get line editor contents.
4729 <DD><A NAME="fn:WEdln.context"></A>
4731 <DT><STRONG>Synopsis:</STRONG></DT>
4732 <DD><TT>string WEdln.context(WEdln wedln)</TT>
4735 <DT><STRONG>Description:</STRONG></DT>
4736 <DD>Get history context for <TT>wedln</TT>.
4744 <DD><A NAME="fn:WEdln.copy"></A>
4746 <DT><STRONG>Synopsis:</STRONG></DT>
4747 <DD><TT>void WEdln.copy(WEdln wedln)</TT>
4750 <DT><STRONG>Description:</STRONG></DT>
4751 <DD>Copy text between <SPAN CLASS="textit">mark</SPAN> and current cursor position to clipboard.
4759 <DD><A NAME="fn:WEdln.cut"></A>
4761 <DT><STRONG>Synopsis:</STRONG></DT>
4762 <DD><TT>void WEdln.cut(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
4767 and then delete that sequence.
4775 <DD><A NAME="fn:WEdln.delete"></A>
4777 <DT><STRONG>Synopsis:</STRONG></DT>
4778 <DD><TT>void WEdln.delete(WEdln wedln)</TT>
4781 <DT><STRONG>Description:</STRONG></DT>
4782 <DD>Delete current character.
4790 <DD><A NAME="fn:WEdln.eol"></A>
4792 <DT><STRONG>Synopsis:</STRONG></DT>
4793 <DD><TT>void WEdln.eol(WEdln wedln)</TT>
4796 <DT><STRONG>Description:</STRONG></DT>
4797 <DD>Go to the end of line.
4805 <DD><A NAME="fn:WEdln.finish"></A>
4807 <DT><STRONG>Synopsis:</STRONG></DT>
4808 <DD><TT>void WEdln.finish(WEdln wedln)</TT>
4811 <DT><STRONG>Description:</STRONG></DT>
4812 <DD>Close <TT>wedln</TT> and call any handlers.
4820 <DD><A NAME="fn:WEdln.forward"></A>
4822 <DT><STRONG>Synopsis:</STRONG></DT>
4823 <DD><TT>void WEdln.forward(WEdln wedln)</TT>
4826 <DT><STRONG>Description:</STRONG></DT>
4827 <DD>Move forward one character.
4835 <DD><A NAME="fn:WEdln.history_next"></A>
4837 <DT><STRONG>Synopsis:</STRONG></DT>
4838 <DD><TT>void WEdln.history_next(WEdln wedln, bool match)</TT>
4841 <DT><STRONG>Description:</STRONG></DT>
4842 <DD>Replace line editor contents with next entry in history if one exists.
4843 If <TT>match</TT> is <TT>true</TT>, the initial part of the history entry
4844 must match the current line from beginning to point.
4852 <DD><A NAME="fn:WEdln.history_prev"></A>
4854 <DT><STRONG>Synopsis:</STRONG></DT>
4855 <DD><TT>void WEdln.history_prev(WEdln wedln, bool match)</TT>
4858 <DT><STRONG>Description:</STRONG></DT>
4859 <DD>Replace line editor contents with previous in history if one exists.
4860 If <TT>match</TT> is <TT>true</TT>, the initial part of the history entry
4861 must match the current line from beginning to point.
4869 <DD><A NAME="fn:WEdln.insstr"></A>
4871 <DT><STRONG>Synopsis:</STRONG></DT>
4872 <DD><TT>void WEdln.insstr(WEdln wedln, string str)</TT>
4875 <DT><STRONG>Description:</STRONG></DT>
4876 <DD>Input <TT>str</TT> in wedln at current editing point.
4884 <DD><A NAME="fn:WEdln.is_histcompl"></A>
4886 <DT><STRONG>Synopsis:</STRONG></DT>
4887 <DD><TT>bool WEdln.is_histcompl(WEdln wedln)</TT>
4890 <DT><STRONG>Description:</STRONG></DT>
4891 <DD>Get history completion mode.
4899 <DD><A NAME="fn:WEdln.kill_line"></A>
4901 <DT><STRONG>Synopsis:</STRONG></DT>
4902 <DD><TT>void WEdln.kill_line(WEdln wedln)</TT>
4905 <DT><STRONG>Description:</STRONG></DT>
4906 <DD>Delete the whole line.
4914 <DD><A NAME="fn:WEdln.kill_to_bol"></A>
4916 <DT><STRONG>Synopsis:</STRONG></DT>
4917 <DD><TT>void WEdln.kill_to_bol(WEdln wedln)</TT>
4920 <DT><STRONG>Description:</STRONG></DT>
4921 <DD>Delete all characters from previous to beginning of line.
4929 <DD><A NAME="fn:WEdln.kill_to_eol"></A>
4931 <DT><STRONG>Synopsis:</STRONG></DT>
4932 <DD><TT>void WEdln.kill_to_eol(WEdln wedln)</TT>
4935 <DT><STRONG>Description:</STRONG></DT>
4936 <DD>Delete all characters from current to end of line.
4944 <DD><A NAME="fn:WEdln.kill_word"></A>
4946 <DT><STRONG>Synopsis:</STRONG></DT>
4947 <DD><TT>void WEdln.kill_word(WEdln wedln)</TT>
4950 <DT><STRONG>Description:</STRONG></DT>
4951 <DD>Starting from the current point, delete possible whitespace and
4952 following alphanumeric characters until next non-alphanumeric character.
4960 <DD><A NAME="fn:WEdln.mark"></A>
4962 <DT><STRONG>Synopsis:</STRONG></DT>
4963 <DD><TT>integer WEdln.mark(WEdln wedln)</TT>
4966 <DT><STRONG>Description:</STRONG></DT>
4967 <DD>Get current mark (start of selection) for <TT>wedln</TT>.
4968 Return value of -1 indicates that there is no mark, and
4969 0 is the beginning of the line.
4977 <DD><A NAME="fn:WEdln.next_completion"></A>
4979 <DT><STRONG>Synopsis:</STRONG></DT>
4980 <DD><TT>bool WEdln.next_completion(WEdln wedln)</TT>
4983 <DT><STRONG>Description:</STRONG></DT>
4984 <DD>Select next completion.
4992 <DD><A NAME="fn:WEdln.paste"></A>
4994 <DT><STRONG>Synopsis:</STRONG></DT>
4995 <DD><TT>void WEdln.paste(WEdln wedln)</TT>
4998 <DT><STRONG>Description:</STRONG></DT>
4999 <DD>Request selection from application holding such.
5002 Note that this function is asynchronous; the selection will not
5003 actually be inserted before Ion receives it. This will be no
5004 earlier than Ion return to its main loop.
5012 <DD><A NAME="fn:WEdln.point"></A>
5014 <DT><STRONG>Synopsis:</STRONG></DT>
5015 <DD><TT>integer WEdln.point(WEdln wedln)</TT>
5018 <DT><STRONG>Description:</STRONG></DT>
5019 <DD>Get current editing point.
5020 Beginning of the edited line is point 0.
5028 <DD><A NAME="fn:WEdln.prev_completion"></A>
5030 <DT><STRONG>Synopsis:</STRONG></DT>
5031 <DD><TT>bool WEdln.prev_completion(WEdln wedln)</TT>
5034 <DT><STRONG>Description:</STRONG></DT>
5035 <DD>Select previous completion.
5043 <DD><A NAME="fn:WEdln.set_context"></A>
5045 <DT><STRONG>Synopsis:</STRONG></DT>
5046 <DD><TT>void WEdln.set_context(WEdln wedln, string context)</TT>
5049 <DT><STRONG>Description:</STRONG></DT>
5050 <DD>Set history context for <TT>wedln</TT>.
5058 <DD><A NAME="fn:WEdln.set_mark"></A>
5060 <DT><STRONG>Synopsis:</STRONG></DT>
5061 <DD><TT>void WEdln.set_mark(WEdln wedln)</TT>
5064 <DT><STRONG>Description:</STRONG></DT>
5065 <DD>Set <SPAN CLASS="textit">mark</SPAN> to current cursor position.
5073 <DD><A NAME="fn:WEdln.skip_word"></A>
5075 <DT><STRONG>Synopsis:</STRONG></DT>
5076 <DD><TT>void WEdln.skip_word(WEdln wedln)</TT>
5079 <DT><STRONG>Description:</STRONG></DT>
5080 <DD>Go to to end of current sequence of whitespace followed by alphanumeric
5089 <DD><A NAME="fn:WEdln.transpose_chars"></A>
5091 <DT><STRONG>Synopsis:</STRONG></DT>
5092 <DD><TT>void WEdln.transpose_chars(WEdln wedln)</TT>
5095 <DT><STRONG>Description:</STRONG></DT>
5096 <DD>Transpose characters.
5104 <DD><A NAME="fn:WEdln.transpose_words"></A>
5106 <DT><STRONG>Synopsis:</STRONG></DT>
5107 <DD><TT>void WEdln.transpose_words(WEdln wedln)</TT>
5110 <DT><STRONG>Description:</STRONG></DT>
5111 <DD>Transpose words.
5118 <H3><A NAME="SECTION00733000000000000000">
5119 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN> WInput functions</A>
5125 <DD><A NAME="fn:WInput.cancel"></A>
5127 <DT><STRONG>Synopsis:</STRONG></DT>
5128 <DD><TT>void WInput.cancel(WInput input)</TT>
5131 <DT><STRONG>Description:</STRONG></DT>
5132 <DD>Close input not calling any possible finish handlers.
5140 <DD><A NAME="fn:WInput.scrolldown"></A>
5142 <DT><STRONG>Synopsis:</STRONG></DT>
5143 <DD><TT>void WInput.scrolldown(WInput input)</TT>
5146 <DT><STRONG>Description:</STRONG></DT>
5147 <DD>Scroll input <TT>input</TT> text contents down.
5155 <DD><A NAME="fn:WInput.scrollup"></A>
5157 <DT><STRONG>Synopsis:</STRONG></DT>
5158 <DD><TT>void WInput.scrollup(WInput input)</TT>
5161 <DT><STRONG>Description:</STRONG></DT>
5162 <DD>Scroll input <TT>input</TT> text contents up.
5169 <H2><A NAME="SECTION00740000000000000000"></A>
5170 <A NAME="sec:menuref"></A>
5172 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">4</SPAN> Functions defined in <SPAN CLASS="textit">mod_menu</SPAN>
5176 <DD><A NAME="fn:mod_menu.grabmenu"></A>
5178 <DT><STRONG>Synopsis:</STRONG></DT>
5179 <DD><TT>mod_menu.grabmenu(mplex, sub, menu_or_name, param)</TT>
5182 <DT><STRONG>Description:</STRONG></DT>
5183 <DD>This function is similar to <A HREF="#fn:mod_menu.menu"><TT>mod_menu.menu</TT></A>, but input
5184 is grabbed and the key used to active the menu can be used to
5185 cycle through menu entries.
5193 <DD><A NAME="fn:mod_menu.menu"></A>
5195 <DT><STRONG>Synopsis:</STRONG></DT>
5196 <DD><TT>mod_menu.menu(mplex, sub, menu_or_name, param)</TT>
5199 <DT><STRONG>Description:</STRONG></DT>
5200 <DD>Display a menu in the lower-left corner of <TT>mplex</TT>.
5201 The variable <TT>menu_or_name</TT> is either the name of a menu
5202 defined with <A HREF="#fn:mod_menu.defmenu"><TT>mod_menu.defmenu</TT></A> or directly a table similar
5203 to ones passesd to this function. When this function is
5204 called from a binding handler, <TT>sub</TT> should be set to
5205 the second argument of to the binding handler (<TT>_sub</TT>)
5206 so that the menu handler will get the same parameters as the
5207 binding handler. Extra options can be passed in the table
5208 <TT>param</TT>. The initial entry can be specified as the field
5209 <TT>initial</TT> as an integer starting from 1. Menus can be made
5210 to use a bigger style by setting the field <TT>big</TT> to <TT>true</TT>.
5218 <DD><A NAME="fn:mod_menu.get"></A>
5220 <DT><STRONG>Synopsis:</STRONG></DT>
5221 <DD><TT>table mod_menu.get()</TT>
5224 <DT><STRONG>Description:</STRONG></DT>
5225 <DD>Get module basic settings. For details, see <A HREF="#fn:mod_menu.set"><TT>mod_menu.set</TT></A>.
5233 <DD><A NAME="fn:mod_menu.set"></A>
5235 <DT><STRONG>Synopsis:</STRONG></DT>
5236 <DD><TT>void mod_menu.set(table tab)</TT>
5239 <DT><STRONG>Description:</STRONG></DT>
5240 <DD>Set module basic settings. The parameter table may contain the
5244 <TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
5245 <TR><TD ALIGN="LEFT">Field</TD>
5246 <TD ALIGN="LEFT">Description</TD>
5248 <TR><TD ALIGN="LEFT"><TT>scroll_amount</TT></TD>
5249 <TD ALIGN="LEFT">Number of pixels to scroll at a time
5250 pointer-controlled menus when one extends
5251 beyond a border of the screen and the pointer
5252 touches that border.</TD>
5254 <TR><TD ALIGN="LEFT"><TT>scroll_delay</TT></TD>
5255 <TD ALIGN="LEFT">Time between such scrolling events in
5266 <DD><A NAME="fn:mod_menu.pmenu"></A>
5268 <DT><STRONG>Synopsis:</STRONG></DT>
5269 <DD><TT>mod_menu.pmenu(win, sub, menu_or_name)</TT>
5272 <DT><STRONG>Description:</STRONG></DT>
5273 <DD>This function displays a drop-down menu and should only
5274 be called from a mouse press handler. The parameters are
5275 similar to those of <A HREF="#fn:mod_menu.menu"><TT>mod_menu.menu</TT></A>.
5282 <H3><A NAME="SECTION00741000000000000000">
5283 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN> WMenu functions</A>
5289 <DD><A NAME="fn:WMenu.cancel"></A>
5291 <DT><STRONG>Synopsis:</STRONG></DT>
5292 <DD><TT>void WMenu.cancel(WMenu menu)</TT>
5295 <DT><STRONG>Description:</STRONG></DT>
5296 <DD>Close <TT>menu</TT> not calling any possible finish handlers.
5304 <DD><A NAME="fn:WMenu.finish"></A>
5306 <DT><STRONG>Synopsis:</STRONG></DT>
5307 <DD><TT>void WMenu.finish(WMenu menu)</TT>
5310 <DT><STRONG>Description:</STRONG></DT>
5311 <DD>If selected entry is a submenu, display that.
5312 Otherwise destroy the menu and call handler for selected entry.
5320 <DD><A NAME="fn:WMenu.select_next"></A>
5322 <DT><STRONG>Synopsis:</STRONG></DT>
5323 <DD><TT>void WMenu.select_next(WMenu menu)</TT>
5326 <DT><STRONG>Description:</STRONG></DT>
5327 <DD>Select next entry in menu.
5335 <DD><A NAME="fn:WMenu.select_nth"></A>
5337 <DT><STRONG>Synopsis:</STRONG></DT>
5338 <DD><TT>void WMenu.select_nth(WMenu menu, integer n)</TT>
5341 <DT><STRONG>Description:</STRONG></DT>
5342 <DD>Select <TT>n</TT>:th entry in menu.
5350 <DD><A NAME="fn:WMenu.select_prev"></A>
5352 <DT><STRONG>Synopsis:</STRONG></DT>
5353 <DD><TT>void WMenu.select_prev(WMenu menu)</TT>
5356 <DT><STRONG>Description:</STRONG></DT>
5357 <DD>Select previous entry in menu.
5365 <DD><A NAME="fn:WMenu.typeahead_clear"></A>
5367 <DT><STRONG>Synopsis:</STRONG></DT>
5368 <DD><TT>void WMenu.typeahead_clear(WMenu menu)</TT>
5371 <DT><STRONG>Description:</STRONG></DT>
5372 <DD>Clear typeahead buffer.
5379 <H2><A NAME="SECTION00750000000000000000"></A>
5380 <A NAME="sec:dockref"></A>
5382 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">5</SPAN> Functions defined in <SPAN CLASS="textit">mod_dock</SPAN>
5386 <DD><A NAME="fn:mod_dock.set_floating_shown_on"></A>
5388 <DT><STRONG>Synopsis:</STRONG></DT>
5389 <DD><TT>void mod_dock.set_floating_shown_on(WMPlex mplex, string how)</TT>
5392 <DT><STRONG>Description:</STRONG></DT>
5393 <DD>Toggle floating docks on <TT>mplex</TT>.
5400 <H3><A NAME="SECTION00751000000000000000">
5401 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">1</SPAN> WDock functions</A>
5407 <DD><A NAME="fn:WDock.attach"></A>
5409 <DT><STRONG>Synopsis:</STRONG></DT>
5410 <DD><TT>bool WDock.attach(WDock dock, WRegion reg)</TT>
5413 <DT><STRONG>Description:</STRONG></DT>
5414 <DD>Attach <TT>reg</TT> to <TT>dock</TT>.
5422 <DD><A NAME="fn:WDock.get"></A>
5424 <DT><STRONG>Synopsis:</STRONG></DT>
5425 <DD><TT>table WDock.get(WDock dock)</TT>
5428 <DT><STRONG>Description:</STRONG></DT>
5429 <DD>Get <TT>dock</TT>'s configuration table. See <A HREF="#fn:WDock.set"><TT>WDock.set</TT></A> for a
5430 description of the table.
5438 <DD><A NAME="fn:WDock.resize"></A>
5440 <DT><STRONG>Synopsis:</STRONG></DT>
5441 <DD><TT>void WDock.resize(WDock dock)</TT>
5444 <DT><STRONG>Description:</STRONG></DT>
5445 <DD>Resizes and refreshes <TT>dock</TT>.
5453 <DD><A NAME="fn:WDock.set"></A>
5455 <DT><STRONG>Synopsis:</STRONG></DT>
5456 <DD><TT>void WDock.set(WDock dock, table conftab)</TT>
5459 <DT><STRONG>Description:</STRONG></DT>
5460 <DD>Configure <TT>dock</TT>. <TT>conftab</TT> is a table of key/value pairs:
5463 <TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
5464 <TR><TD ALIGN="LEFT">Key</TD>
5465 <TD ALIGN="LEFT">Values</TD>
5466 <TD ALIGN="LEFT">Description</TD>
5468 <TR><TD ALIGN="LEFT"><TT>name</TT></TD>
5469 <TD ALIGN="LEFT">string</TD>
5470 <TD ALIGN="LEFT">Name of dock</TD>
5472 <TR><TD ALIGN="LEFT"><TT>pos</TT></TD>
5473 <TD ALIGN="LEFT">string in <!-- MATH
5474 $\{t,m,b\}\times\{t,c,b\}$
5476 <SPAN CLASS="MATH"><IMG
5477 WIDTH="142" HEIGHT="36" ALIGN="MIDDLE" BORDER="0"
5479 ALT="$\{t,m,b\}\times\{t,c,b\}$"></SPAN></TD>
5480 <TD ALIGN="LEFT">Dock position.
5481 Can only be used in floating mode.</TD>
5483 <TR><TD ALIGN="LEFT"><TT>grow</TT></TD>
5484 <TD ALIGN="LEFT">up/down/left/right</TD>
5485 <TD ALIGN="LEFT">Growth direction where new dockapps are added. Also
5486 sets orientation for dock when working as WMPlex status
5487 display (see <A HREF="#fn:WMPlex.set_stdisp"><TT>WMPlex.set_stdisp</TT></A>).</TD>
5489 <TR><TD ALIGN="LEFT"><TT>is_auto</TT></TD>
5490 <TD ALIGN="LEFT">bool</TD>
5491 <TD ALIGN="LEFT">Should <TT>dock</TT> automatically manage new dockapps?</TD>
5496 Any parameters not explicitly set in <TT>conftab</TT> will be left unchanged.
5503 <H2><A NAME="SECTION00760000000000000000"></A>
5504 <A NAME="sec:spref"></A>
5506 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">6</SPAN> Functions defined in <SPAN CLASS="textit">mod_sp</SPAN>
5510 <DD><A NAME="fn:mod_sp.set_shown"></A>
5512 <DT><STRONG>Synopsis:</STRONG></DT>
5513 <DD><TT>bool mod_sp.set_shown(WFrame sp, string how)</TT>
5516 <DT><STRONG>Description:</STRONG></DT>
5517 <DD>Toggle displayed status of <TT>sp</TT>.
5518 The parameter <TT>how</TT> is one of
5519 `<TT>set</TT>', `<TT>unset</TT>', or `<TT>toggle</TT>'.
5520 The resulting status is returned.
5528 <DD><A NAME="fn:mod_sp.set_shown_on"></A>
5530 <DT><STRONG>Synopsis:</STRONG></DT>
5531 <DD><TT>bool mod_sp.set_shown_on(WMPlex mplex, string how)</TT>
5534 <DT><STRONG>Description:</STRONG></DT>
5535 <DD>Change displayed status of some scratchpad on <TT>mplex</TT> if one is
5536 found. The parameter <TT>how</TT> is one of
5537 `<TT>set</TT>', `<TT>unset</TT>', or `<TT>toggle</TT>'.
5538 The resulting status is returned.
5545 <H2><A NAME="SECTION00770000000000000000"></A>
5546 <A NAME="sec:statusbarref"></A>
5548 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">7</SPAN> Functions defined in <SPAN CLASS="textit">mod_statusbar</SPAN>
5552 <DD><A NAME="fn:mod_statusbar.create"></A>
5554 <DT><STRONG>Synopsis:</STRONG></DT>
5555 <DD><TT>mod_statusbar.create(param)</TT>
5558 <DT><STRONG>Description:</STRONG></DT>
5559 <DD>Create a statusbar. The possible parameters in the
5560 table <TT>param</TT> are:
5563 <TABLE CELLPADDING=3 WIDTH="100%">
5564 <TR><TD ALIGN="LEFT">Variable</TD>
5565 <TD ALIGN="LEFT">Type</TD>
5566 <TD ALIGN="LEFT">Description</TD>
5568 <TR><TD ALIGN="LEFT"><TT>template</TT></TD>
5569 <TD ALIGN="LEFT">string</TD>
5570 <TD ALIGN="LEFT">The template; see
5571 Section <A HREF="node4.html#sec:statusbar">3.6</A>.</TD>
5573 <TR><TD ALIGN="LEFT"><TT>pos</TT></TD>
5574 <TD ALIGN="LEFT">string</TD>
5575 <TD ALIGN="LEFT">Position: <TT>"tl"</TT>, <TT>"tr"</TT>,
5576 <TT>"bl"</TT> or <TT>"br"</TT>
5577 (for the obvious combinations of
5578 top/left/bottom/right).</TD>
5580 <TR><TD ALIGN="LEFT"><TT>screen</TT></TD>
5581 <TD ALIGN="LEFT">integer</TD>
5582 <TD ALIGN="LEFT">Screen number to create the statusbar on.</TD>
5584 <TR><TD ALIGN="LEFT"><TT>fullsize</TT></TD>
5585 <TD ALIGN="LEFT">boolean</TD>
5586 <TD ALIGN="LEFT">If set, the statusbar will waste
5587 space instead of adapting to layout.</TD>
5589 <TR><TD ALIGN="LEFT"><TT>systray</TT></TD>
5590 <TD ALIGN="LEFT">boolaen</TD>
5591 <TD ALIGN="LEFT">Swallow (KDE protocol) systray icons.</TD>
5601 <DD><A NAME="fn:mod_statusbar.inform"></A>
5603 <DT><STRONG>Synopsis:</STRONG></DT>
5604 <DD><TT>mod_statusbar.inform(name, value)</TT>
5607 <DT><STRONG>Description:</STRONG></DT>
5608 <DD>Inform of a value.
5616 <DD><A NAME="fn:mod_statusbar.launch_statusd"></A>
5618 <DT><STRONG>Synopsis:</STRONG></DT>
5619 <DD><TT>mod_statusbar.launch_statusd(cfg)</TT>
5622 <DT><STRONG>Description:</STRONG></DT>
5623 <DD>Load modules and launch <SPAN CLASS="textit">ion-statusd</SPAN> with configuration
5624 table <TT>cfg</TT>. The options for each <SPAN CLASS="textit">ion-statusd</SPAN> monitor
5625 script should be contained in the corresponding sub-table of <TT>cfg</TT>.
5633 <DD><A NAME="fn:mod_statusbar.statusbars"></A>
5635 <DT><STRONG>Synopsis:</STRONG></DT>
5636 <DD><TT>table mod_statusbar.statusbars()</TT>
5639 <DT><STRONG>Description:</STRONG></DT>
5640 <DD>Returns a list of all statusbars.
5648 <DD><A NAME="fn:mod_statusbar.update"></A>
5650 <DT><STRONG>Synopsis:</STRONG></DT>
5651 <DD><TT>mod_statusbar.update(update_templates)</TT>
5654 <DT><STRONG>Description:</STRONG></DT>
5655 <DD>Update statusbar contents. To be called after series
5656 of <A HREF="#fn:mod_statusbar.inform"><TT>mod_statusbar.inform</TT></A> calls.
5663 <H3><A NAME="SECTION00771000000000000000">
5664 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">7</SPAN>.<SPAN CLASS="arabic">1</SPAN> WStatusBar functions</A>
5670 <DD><A NAME="fn:WStatusBar.get_template_table"></A>
5672 <DT><STRONG>Synopsis:</STRONG></DT>
5673 <DD><TT>table WStatusBar.get_template_table(WStatusBar sb)</TT>
5676 <DT><STRONG>Description:</STRONG></DT>
5677 <DD>Get statusbar template as table.
5685 <DD><A NAME="fn:WStatusBar.is_systray"></A>
5687 <DT><STRONG>Synopsis:</STRONG></DT>
5688 <DD><TT>bool WStatusBar.is_systray(WStatusBar sb)</TT>
5691 <DT><STRONG>Description:</STRONG></DT>
5692 <DD>Is <TT>sb</TT> used as a systray?
5700 <DD><A NAME="fn:WStatusBar.set_systray"></A>
5702 <DT><STRONG>Synopsis:</STRONG></DT>
5703 <DD><TT>bool WStatusBar.set_systray(WStatusBar sb, string how)</TT>
5706 <DT><STRONG>Description:</STRONG></DT>
5707 <DD>Enable or disable use of <TT>sb</TT> as systray.
5708 The parameter <TT>how</TT> can be one of
5709 `<TT>set</TT>', `<TT>unset</TT>', or `<TT>toggle</TT>'.
5710 Resulting state is returned.
5718 <DD><A NAME="fn:WStatusBar.set_template"></A>
5720 <DT><STRONG>Synopsis:</STRONG></DT>
5721 <DD><TT>void WStatusBar.set_template(WStatusBar sb, string tmpl)</TT>
5724 <DT><STRONG>Description:</STRONG></DT>
5725 <DD>Set statusbar template.
5733 <DD><A NAME="fn:WStatusBar.set_template_table"></A>
5735 <DT><STRONG>Synopsis:</STRONG></DT>
5736 <DD><TT>void WStatusBar.set_template_table(WStatusBar sb, table t)</TT>
5739 <DT><STRONG>Description:</STRONG></DT>
5740 <DD>Set statusbar template as table.
5748 <DD><A NAME="fn:WStatusBar.update"></A>
5750 <DT><STRONG>Synopsis:</STRONG></DT>
5751 <DD><TT>void WStatusBar.update(WStatusBar sb, table t)</TT>
5754 <DT><STRONG>Description:</STRONG></DT>
5755 <DD>Set statusbar template.
5762 <H2><A NAME="SECTION00780000000000000000"></A>
5763 <A NAME="sec:deref"></A>
5765 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">8</SPAN> Functions defined in <SPAN CLASS="textit">de</SPAN>
5769 <DD><A NAME="fn:de.defstyle"></A>
5771 <DT><STRONG>Synopsis:</STRONG></DT>
5772 <DD><TT>bool de.defstyle(string name, table tab)</TT>
5775 <DT><STRONG>Description:</STRONG></DT>
5784 <DD><A NAME="fn:de.defstyle_rootwin"></A>
5786 <DT><STRONG>Synopsis:</STRONG></DT>
5787 <DD><TT>bool de.defstyle_rootwin(WRootWin rootwin, string name, table tab)</TT>
5790 <DT><STRONG>Description:</STRONG></DT>
5791 <DD>Define a style for the root window <TT>rootwin</TT>.
5799 <DD><A NAME="fn:de.reset"></A>
5801 <DT><STRONG>Synopsis:</STRONG></DT>
5802 <DD><TT>void de.reset()</TT>
5805 <DT><STRONG>Description:</STRONG></DT>
5806 <DD>Clear all styles from drawing engine memory.
5814 <DD><A NAME="fn:de.substyle"></A>
5816 <DT><STRONG>Synopsis:</STRONG></DT>
5817 <DD><TT>table de.substyle(string pattern, table tab)</TT>
5820 <DT><STRONG>Description:</STRONG></DT>
5821 <DD>Define a substyle.
5828 <H2><A NAME="SECTION00790000000000000000"></A>
5829 <A NAME="sec:hookref"></A>
5831 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">9</SPAN> Hooks
5837 <DD><A NAME="8232"></A>
5840 <DT><STRONG>Hook name:</STRONG></DT>
5841 <DD><A NAME="clientwin_do_manage_alt"></A><TT>clientwin_do_manage_alt</TT>
5844 <DT><STRONG>Parameters:</STRONG></DT>
5845 <DD><TT>(WClientWin, table)</TT>
5848 <DT><STRONG>Description:</STRONG></DT>
5849 <DD>Called when we want to manage a new client window.
5850 The table argument contains the following fields:
5853 <TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
5854 <TR><TD ALIGN="LEFT">Field</TD>
5855 <TD ALIGN="LEFT">Type</TD>
5856 <TD ALIGN="LEFT">Description</TD>
5858 <TR><TD ALIGN="LEFT"><TT>switchto</TT></TD>
5859 <TD ALIGN="LEFT">bool</TD>
5860 <TD ALIGN="LEFT">Do we want to switch to the client window.</TD>
5862 <TR><TD ALIGN="LEFT"><TT>jumpto</TT></TD>
5863 <TD ALIGN="LEFT">bool</TD>
5864 <TD ALIGN="LEFT">Do we want to jump to the client window.</TD>
5866 <TR><TD ALIGN="LEFT"><TT>userpos</TT></TD>
5867 <TD ALIGN="LEFT">bool</TD>
5868 <TD ALIGN="LEFT">Geometry set by user.</TD>
5870 <TR><TD ALIGN="LEFT"><TT>dockapp</TT></TD>
5871 <TD ALIGN="LEFT">bool</TD>
5872 <TD ALIGN="LEFT">Client window is a dock-app.</TD>
5874 <TR><TD ALIGN="LEFT"><TT>maprq</TT></TD>
5875 <TD ALIGN="LEFT">bool</TD>
5876 <TD ALIGN="LEFT">Map request (and not initialisation scan).</TD>
5878 <TR><TD ALIGN="LEFT"><TT>gravity</TT></TD>
5879 <TD ALIGN="LEFT">number</TD>
5880 <TD ALIGN="LEFT">Window gravity.</TD>
5882 <TR><TD ALIGN="LEFT"><TT>geom</TT></TD>
5883 <TD ALIGN="LEFT">table</TD>
5884 <TD ALIGN="LEFT">Requested geometry; <TT>x</TT>, <TT>y</TT>, <TT>w</TT>, <TT>h</TT>.</TD>
5886 <TR><TD ALIGN="LEFT"><TT>tfor</TT></TD>
5887 <TD ALIGN="LEFT">WClientWin</TD>
5888 <TD ALIGN="LEFT">Transient for window.</TD>
5893 This hook is not called in protected mode and can be used for
5894 arbitrary placement policies (deciding in which workspace a new
5895 WClientWin should go). In this case, you can call
5899 where <TT>reg</TT> is the region where the window should go, and
5900 <TT>cwin</TT> is the first argument of the function added to the
5909 <DD><A NAME="8233"></A>
5912 <DT><STRONG>Hook name:</STRONG></DT>
5913 <DD><A NAME="clientwin_mapped_hook"></A><TT>clientwin_mapped_hook</TT>
5916 <DT><STRONG>Parameters:</STRONG></DT>
5917 <DD><TT>WClientWin</TT>
5920 <DT><STRONG>Description:</STRONG></DT>
5921 <DD>Called when we have started to manage a client window.
5929 <DD><A NAME="8234"></A>
5932 <DT><STRONG>Hook name:</STRONG></DT>
5933 <DD><A NAME="clientwin_property_change_hook"></A><TT>clientwin_property_change_hook</TT>
5936 <DT><STRONG>Parameters:</STRONG></DT>
5937 <DD><TT>(WClientWin, integer)</TT>
5940 <DT><STRONG>Description:</STRONG></DT>
5941 <DD>Called when the property identified by the parameter atom id
5942 (integer) has changed on a client window.
5950 <DD><A NAME="8235"></A>
5953 <DT><STRONG>Hook name:</STRONG></DT>
5954 <DD><A NAME="clientwin_unmapped_hook"></A><TT>clientwin_unmapped_hook</TT>
5957 <DT><STRONG>Parameters:</STRONG></DT>
5961 <DT><STRONG>Description:</STRONG></DT>
5962 <DD>Called when we no longer manage a client window. The parameter
5963 is the X ID of the window; see <A HREF="#fn:WClientWin.xid"><TT>WClientWin.xid</TT></A>.
5971 <DD><A NAME="8236"></A>
5974 <DT><STRONG>Hook name:</STRONG></DT>
5975 <DD><A NAME="frame_managed_changed_hook"></A><TT>frame_managed_changed_hook</TT>
5978 <DT><STRONG>Parameters:</STRONG></DT>
5982 <DT><STRONG>Description:</STRONG></DT>
5983 <DD>Called when there are changes in the objects managed by a frame
5984 or their order. The table parameter has the following fields:
5987 <TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
5988 <TR><TD ALIGN="LEFT">Field</TD>
5989 <TD ALIGN="LEFT">Type</TD>
5990 <TD ALIGN="LEFT">Description</TD>
5992 <TR><TD ALIGN="LEFT"><TT>reg</TT></TD>
5993 <TD ALIGN="LEFT">WFrame</TD>
5994 <TD ALIGN="LEFT">The frame in question</TD>
5996 <TR><TD ALIGN="LEFT"><TT>mode</TT></TD>
5997 <TD ALIGN="LEFT">string</TD>
5998 <TD ALIGN="LEFT">`<TT>switchonly</TT>', `<TT>reorder</TT>',
5999 `<TT>add</TT>' or `<TT>remove</TT>'</TD>
6001 <TR><TD ALIGN="LEFT"><TT>sw</TT></TD>
6002 <TD ALIGN="LEFT">bool</TD>
6003 <TD ALIGN="LEFT">Switch occurred</TD>
6005 <TR><TD ALIGN="LEFT"><TT>sub</TT></TD>
6006 <TD ALIGN="LEFT">WRegion</TD>
6007 <TD ALIGN="LEFT">The managed region (primarily) affected</TD>
6017 <DD><A NAME="8237"></A>
6020 <DT><STRONG>Hook name:</STRONG></DT>
6021 <DD><A NAME="ioncore_sigchld_hook"></A><TT>ioncore_sigchld_hook</TT>
6024 <DT><STRONG>Parameters:</STRONG></DT>
6025 <DD><TT>integer</TT>
6028 <DT><STRONG>Description:</STRONG></DT>
6029 <DD>Called when a child process has exited. The parameter
6030 is the PID of the process.
6038 <DD><A NAME="8238"></A>
6041 <DT><STRONG>Hook name:</STRONG></DT>
6042 <DD><A NAME="ioncore_deinit_hook"></A><TT>ioncore_deinit_hook</TT>
6045 <DT><STRONG>Parameters:</STRONG></DT>
6049 <DT><STRONG>Description:</STRONG></DT>
6050 <DD>Called when Ion is deinitialising and about to quit.
6058 <DD><A NAME="8239"></A>
6061 <DT><STRONG>Hook name:</STRONG></DT>
6062 <DD><A NAME="ioncore_post_layout_setup_hook"></A><TT>ioncore_post_layout_setup_hook</TT>
6065 <DT><STRONG>Parameters:</STRONG></DT>
6069 <DT><STRONG>Description:</STRONG></DT>
6070 <DD>Called when Ion has done all initialisation and is almost ready to
6071 enter the main-loop, except no windows are yet being managed.
6079 <DD><A NAME="8240"></A>
6082 <DT><STRONG>Hook name:</STRONG></DT>
6083 <DD><A NAME="ioncore_snapshot_hook"></A><TT>ioncore_snapshot_hook</TT>
6086 <DT><STRONG>Parameters:</STRONG></DT>
6090 <DT><STRONG>Description:</STRONG></DT>
6091 <DD>Called to signal scripts and modules to save their state (if any).
6099 <DD><A NAME="8241"></A>
6102 <DT><STRONG>Hook name:</STRONG></DT>
6103 <DD><A NAME="ioncore_submap_ungrab_hook"></A><TT>ioncore_submap_ungrab_hook</TT>
6106 <DT><STRONG>Parameters:</STRONG></DT>
6110 <DT><STRONG>Description:</STRONG></DT>
6111 <DD>This hook is used to signal whenever Ion leaves the submap grab mode.
6119 <DD><A NAME="8242"></A>
6122 <DT><STRONG>Hook name:</STRONG></DT>
6123 <DD><A NAME="tiling_placement_alt"></A><TT>tiling_placement_alt</TT>
6126 <DT><STRONG>Parameters:</STRONG></DT>
6130 <DT><STRONG>Description:</STRONG></DT>
6131 <DD>Called when a client window is about to be managed by a WTiling
6132 to allow for alternative placement policies. The table has the
6134 <TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
6135 <TR><TD ALIGN="LEFT">Field</TD>
6136 <TD ALIGN="LEFT">Type</TD>
6137 <TD ALIGN="LEFT">Description</TD>
6139 <TR><TD ALIGN="LEFT"><TT>tiling</TT></TD>
6140 <TD ALIGN="LEFT">WTiling</TD>
6141 <TD ALIGN="LEFT">The tiling</TD>
6143 <TR><TD ALIGN="LEFT"><TT>reg</TT></TD>
6144 <TD ALIGN="LEFT">WRegion</TD>
6145 <TD ALIGN="LEFT">The region (always a WClientWin at
6146 the moment) to be placed</TD>
6148 <TR><TD ALIGN="LEFT"><TT>mp</TT></TD>
6149 <TD ALIGN="LEFT">table</TD>
6150 <TD ALIGN="LEFT">This table contains the same fields as
6151 the parameter of <A HREF="#fn:clientwin_do_manage_alt"><TT>clientwin_do_manage_alt</TT></A></TD>
6153 <TR><TD ALIGN="LEFT"><TT>res_frame</TT></TD>
6154 <TD ALIGN="LEFT">WFrame</TD>
6155 <TD ALIGN="LEFT">A successful handler should
6156 return the target frame here.</TD>
6159 This hook is just for placing within a given workspace after the
6160 workspace has been decided by the default workspace selection
6161 policy. It is called in protected mode. For arbitrary placement
6162 policies, <A HREF="#fn:clientwin_do_manage_alt"><TT>clientwin_do_manage_alt</TT></A> should be used; it
6163 isn't called in protected mode,
6171 <DD><A NAME="8243"></A>
6174 <DT><STRONG>Hook name:</STRONG></DT>
6175 <DD><A NAME="region_do_warp_alt"></A><TT>region_do_warp_alt</TT>
6178 <DT><STRONG>Parameters:</STRONG></DT>
6179 <DD><TT>WRegion</TT>
6182 <DT><STRONG>Description:</STRONG></DT>
6183 <DD>This alt-hook exist to allow for alternative pointer warping
6192 <DD><A NAME="8244"></A>
6195 <DT><STRONG>Hook name:</STRONG></DT>
6196 <DD><A NAME="screen_managed_changed_hook"></A><TT>screen_managed_changed_hook</TT>
6199 <DT><STRONG>Parameters:</STRONG></DT>
6203 <DT><STRONG>Description:</STRONG></DT>
6204 <DD>Called when there are changes in the objects managed by a screen
6205 or their order. The table parameter is similar to that of
6206 <A HREF="#fn:frame_managed_changed_hook"><TT>frame_managed_changed_hook</TT></A>.
6214 <DD><A NAME="8245"></A>
6217 <DT><STRONG>Hook name:</STRONG></DT>
6218 <DD><A NAME="region_notify_hook"></A><TT>region_notify_hook</TT>
6221 <DT><STRONG>Parameters:</STRONG></DT>
6222 <DD><TT>(WRegion, string)</TT>
6225 <DT><STRONG>Description:</STRONG></DT>
6226 <DD>Signalled when something (minor) has changed in relation to
6227 the first parameter region. The string argument gives the
6231 <TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
6232 <TR><TD ALIGN="LEFT">String</TD>
6233 <TD ALIGN="LEFT">Description</TD>
6235 <TR><TD ALIGN="LEFT"><TT>deinit</TT></TD>
6236 <TD ALIGN="LEFT">The region is about to be deinitialised.</TD>
6238 <TR><TD ALIGN="LEFT"><TT>activated</TT></TD>
6239 <TD ALIGN="LEFT">The region has received focus.</TD>
6241 <TR><TD ALIGN="LEFT"><TT>inactivated</TT></TD>
6242 <TD ALIGN="LEFT">The region has lost focus.</TD>
6244 <TR><TD ALIGN="LEFT"><TT>activity</TT></TD>
6245 <TD ALIGN="LEFT">There's been activity in the region itself.</TD>
6247 <TR><TD ALIGN="LEFT"><TT>sub_activity</TT></TD>
6248 <TD ALIGN="LEFT">There's been activity in some sub-region.</TD>
6250 <TR><TD ALIGN="LEFT"><TT>name</TT></TD>
6251 <TD ALIGN="LEFT">The name of the region has changed.</TD>
6253 <TR><TD ALIGN="LEFT"><TT>unset_manager</TT></TD>
6254 <TD ALIGN="LEFT">The region no longer has a manager.</TD>
6256 <TR><TD ALIGN="LEFT"><TT>set_manager</TT></TD>
6257 <TD ALIGN="LEFT">The region now has a manager.</TD>
6259 <TR><TD ALIGN="LEFT"><TT>tag</TT></TD>
6260 <TD ALIGN="LEFT">Tagging state has changed.</TD>
6262 <TR><TD ALIGN="LEFT"><TT>pseudoactivated</TT></TD>
6263 <TD ALIGN="LEFT">The region has become pseudo-active
6266 <TR><TD ALIGN="LEFT"><TT>pseudoinactivated</TT></TD>
6267 <TD ALIGN="LEFT">The region is no longer pseudo-active.</TD>
6272 A region is pseudo-active, when a) it is itself not active (does
6273 not not have the focus, and may not even have a window that could
6274 have it), but b) some region managed by it is active.
6283 <H2><A NAME="SECTION007100000000000000000"></A>
6284 <A NAME="sec:miscref"></A>
6286 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">10</SPAN> Miscellaneous
6291 <H3><A NAME="SECTION007101000000000000000"></A>
6292 <A NAME="sec:sizepolicies"></A>
6294 <SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">10</SPAN>.<SPAN CLASS="arabic">1</SPAN> Size policies
6298 Some functions accept a <TT>sizepolicy</TT> parameter. The possible
6305 `<TT>full_bounds</TT>',
6307 `<TT>free_glue</TT>',
6308 `<TT>northwest</TT>',
6310 `<TT>northeast</TT>',
6314 `<TT>southwest</TT>',
6316 `<TT>southeast</TT>',
6317 `<TT>stretch_top</TT>',
6318 `<TT>stretch_bottom</TT>',
6319 `<TT>stretch_left</TT>',
6320 `<TT>stretch_right</TT>',
6321 `<TT>free_glue_northwest</TT>',
6322 `<TT>free_glue_north</TT>',
6323 `<TT>free_glue_northeast</TT>',
6324 `<TT>free_glue_west</TT>',
6325 `<TT>free_glue_center</TT>',
6326 `<TT>free_glue_east</TT>',
6327 `<TT>free_glue_southwest</TT>',
6328 `<TT>free_glue_south</TT>', and
6329 `<TT>free_glue_southeast</TT>'.
6334 The ``free'' policies allow the managed
6335 object to be moved around, whereas the other versions do not.
6336 The ``glue'' policies glue the object to some border, while allowing
6337 it to be moved away from it by user action, but not automatically.
6338 The ``stretch'' policies stretch the object along the given border,
6339 while the coordinate-based policies simply place the object along
6346 <DIV CLASS="navigation"><HR>
6347 <!--Navigation Panel-->
6348 <A NAME="tex2html383"
6350 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
6351 <A NAME="tex2html377"
6352 HREF="ionconf.html">
6353 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
6354 <A NAME="tex2html371"
6356 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
6357 <A NAME="tex2html379"
6359 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
6360 <A NAME="tex2html381"
6362 <IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A>
6364 <B> Next:</B> <A NAME="tex2html384"
6365 HREF="node8.html">A. The GNU General</A>
6366 <B> Up:</B> <A NAME="tex2html378"
6367 HREF="ionconf.html">Configuring and extending Ion3</A>
6368 <B> Previous:</B> <A NAME="tex2html372"
6369 HREF="node6.html">5. Scripting</A>
6370 <B> <A NAME="tex2html380"
6371 HREF="node1.html">Contents</A></B>
6372 <B> <A NAME="tex2html382"
6373 HREF="node11.html">Index</A></B> </DIV>
6374 <!--End of Navigation Panel-->