<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> <!--Converted with LaTeX2HTML 2002-1 (1.69) original version by: Nikos Drakos, CBLU, University of Leeds * revised and updated by: Marcus Hennecke, Ross Moore, Herb Swan * with significant contributions from: Jens Lippmann, Marek Rouchal, Martin Wilck and others --> <HTML> <HEAD> <TITLE>Ion: Configuring and extending with Lua</TITLE> <META NAME="description" CONTENT="Ion: Configuring and extending with Lua"> <META NAME="keywords" CONTENT="ionconf"> <META NAME="resource-type" CONTENT="document"> <META NAME="distribution" CONTENT="global"> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1"> <META NAME="Generator" CONTENT="LaTeX2HTML v2002-1"> <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css"> <LINK REL="STYLESHEET" HREF="ionconf.css"> <LINK REL="next" HREF="node1.html"> </HEAD> <BODY > <!--Navigation Panel--> <A NAME="tex2html18" HREF="node1.html"> <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> <A NAME="tex2html12" HREF="http://iki.fi/tuomov/ion/"> <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev_g.png"> <A NAME="tex2html14" HREF="node1.html"> <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> <A NAME="tex2html16" HREF="node10.html"> <IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> <BR> <B> Next:</B> <A NAME="tex2html19" HREF="node1.html">Contents</A> <B> Up:</B> <A NAME="tex2html13" HREF="http://iki.fi/tuomov/ion/">Ion homepage</A> <B> <A NAME="tex2html15" HREF="node1.html">Contents</A></B> <B> <A NAME="tex2html17" HREF="node10.html">Index</A></B> <BR> <BR> <!--End of Navigation Panel--> <P> <H1 ALIGN="CENTER">Ion: Configuring and extending with Lua</H1> <DIV> <P ALIGN="CENTER"><STRONG>Tuomo Valkonen</STRONG></P> <P ALIGN="CENTER"><I>tuomov at iki.fi</I></P> <P ALIGN="CENTER"><STRONG>2004-07-29</STRONG></P> </DIV> <P> Ion: Configuring and extending with Lua <BR> Copyright © 2003-2004 Tuomo Valkonen. <P> This document is free; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. <P> This document is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the chapter entitled ''GNU General Public License'' for more details. <P> <BR><HR> <!--Table of Child-Links--> <A NAME="CHILD_LINKS"></A> <UL> <LI><A NAME="tex2html20" HREF="node1.html">Contents</A> <LI><A NAME="tex2html21" HREF="node2.html">1. Introduction</A> <LI><A NAME="tex2html22" HREF="node3.html">2. Preliminaries: Key concepts and relations</A> <UL> <LI><A NAME="tex2html23" HREF="node3.html#SECTION00310000000000000000">2.1 Modules</A> <LI><A NAME="tex2html24" HREF="node3.html#SECTION00320000000000000000">2.2 Class and object hierarchies</A> <UL> <LI><A NAME="tex2html25" HREF="node3.html#SECTION00321000000000000000">2.2.1 Class hierarchy</A> <LI><A NAME="tex2html26" HREF="node3.html#SECTION00322000000000000000">2.2.2 Object hierarchies: WRegion parents and managers</A> <LI><A NAME="tex2html27" HREF="node3.html#SECTION00323000000000000000">2.2.3 Summary</A> </UL> </UL> <BR> <LI><A NAME="tex2html28" HREF="node4.html">3. Basic configuration</A> <UL> <LI><A NAME="tex2html29" HREF="node4.html#SECTION00410000000000000000">3.1 The configuration files</A> <LI><A NAME="tex2html30" HREF="node4.html#SECTION00420000000000000000">3.2 A walk through <I>ion.lua</I></A> <LI><A NAME="tex2html31" HREF="node4.html#SECTION00430000000000000000">3.3 Keys and rodents</A> <UL> <LI><A NAME="tex2html32" HREF="node4.html#SECTION00431000000000000000">3.3.1 The binding setup functions</A> <UL> <LI><A NAME="tex2html33" HREF="node4.html#SECTION00431100000000000000">3.3.1.1 Ioncore binding setup functions</A> <LI><A NAME="tex2html34" HREF="node4.html#SECTION00431200000000000000">3.3.1.2 IonWS module binding setup functions</A> <LI><A NAME="tex2html35" HREF="node4.html#SECTION00431300000000000000">3.3.1.3 FloatWS module binding setup functions</A> <LI><A NAME="tex2html36" HREF="node4.html#SECTION00431400000000000000">3.3.1.4 Query module binding setup functions</A> <LI><A NAME="tex2html37" HREF="node4.html#SECTION00431500000000000000">3.3.1.5 Menu module binding setup functions</A> </UL> <LI><A NAME="tex2html38" HREF="node4.html#SECTION00432000000000000000">3.3.2 Defining the bindings</A> <LI><A NAME="tex2html39" HREF="node4.html#SECTION00433000000000000000">3.3.3 An example</A> <LI><A NAME="tex2html40" HREF="node4.html#SECTION00434000000000000000">3.3.4 Another example</A> <LI><A NAME="tex2html41" HREF="node4.html#SECTION00435000000000000000">3.3.5 Key and button specifications</A> <LI><A NAME="tex2html42" HREF="node4.html#SECTION00436000000000000000">3.3.6 A further note on the default binding configuration</A> <LI><A NAME="tex2html43" HREF="node4.html#SECTION00437000000000000000">3.3.7 Client window bindings</A> </UL> <LI><A NAME="tex2html44" HREF="node4.html#SECTION00440000000000000000">3.4 Winprops</A> <UL> <LI><A NAME="tex2html45" HREF="node4.html#SECTION00441000000000000000">3.4.1 Classes, roles and instances</A> <LI><A NAME="tex2html46" HREF="node4.html#SECTION00442000000000000000">3.4.2 Finding window identification with <TT>xprop</TT></A> <LI><A NAME="tex2html47" HREF="node4.html#SECTION00443000000000000000">3.4.3 Supported winprops</A> <LI><A NAME="tex2html48" HREF="node4.html#SECTION00444000000000000000">3.4.4 Some common examples</A> <UL> <LI><A NAME="tex2html49" HREF="node4.html#SECTION00444100000000000000">3.4.4.1 Acrobat Reader</A> <LI><A NAME="tex2html50" HREF="node4.html#SECTION00444200000000000000">3.4.4.2 Fixing a Mozilla Firebird transient</A> <LI><A NAME="tex2html51" HREF="node4.html#SECTION00444300000000000000">3.4.4.3 Forcing newly created windows in named frames</A> </UL> </UL> <LI><A NAME="tex2html52" HREF="node4.html#SECTION00450000000000000000">3.5 The query library</A> <LI><A NAME="tex2html53" HREF="node4.html#SECTION00460000000000000000">3.6 Menus</A> <UL> <LI><A NAME="tex2html54" HREF="node4.html#SECTION00461000000000000000">3.6.1 Defining menus</A> <LI><A NAME="tex2html55" HREF="node4.html#SECTION00462000000000000000">3.6.2 Special menus</A> <LI><A NAME="tex2html56" HREF="node4.html#SECTION00463000000000000000">3.6.3 Displaying menus</A> </UL> <LI><A NAME="tex2html57" HREF="node4.html#SECTION00470000000000000000">3.7 Some common configuration tasks</A> <UL> <LI><A NAME="tex2html58" HREF="node4.html#SECTION00471000000000000000">3.7.1 Binding a key to execute a program</A> </UL> </UL> <BR> <LI><A NAME="tex2html59" HREF="node5.html">4. Graphical styles</A> <UL> <LI><A NAME="tex2html60" HREF="node5.html#SECTION00510000000000000000">4.1 Drawing engines, style specifications and sub-styles</A> <UL> <LI><A NAME="tex2html61" HREF="node5.html#SECTION00511000000000000000">4.1.1 Known styles and substyles</A> <UL> <LI><A NAME="tex2html62" HREF="node5.html#SECTION00511100000000000000">4.1.1.1 Frames</A> <LI><A NAME="tex2html63" HREF="node5.html#SECTION00511200000000000000">4.1.1.2 Tabs and menu entries</A> <LI><A NAME="tex2html64" HREF="node5.html#SECTION00511300000000000000">4.1.1.3 The rest</A> </UL> </UL> <LI><A NAME="tex2html65" HREF="node5.html#SECTION00520000000000000000">4.2 Defining styles for the default drawing engine</A> <UL> <LI><A NAME="tex2html66" HREF="node5.html#SECTION00521000000000000000">4.2.1 The structure of the configuration files</A> <LI><A NAME="tex2html67" HREF="node5.html#SECTION00522000000000000000">4.2.2 Defining the styles</A> <UL> <LI><A NAME="tex2html68" HREF="node5.html#SECTION00522100000000000000">4.2.2.1 Colours</A> <LI><A NAME="tex2html69" HREF="node5.html#SECTION00522200000000000000">4.2.2.2 Borders and widths</A> <LI><A NAME="tex2html70" HREF="node5.html#SECTION00522300000000000000">4.2.2.3 Text</A> <LI><A NAME="tex2html71" HREF="node5.html#SECTION00522400000000000000">4.2.2.4 Miscellaneous</A> <LI><A NAME="tex2html72" HREF="node5.html#SECTION00522500000000000000">4.2.2.5 Substyles</A> </UL> <LI><A NAME="tex2html73" HREF="node5.html#SECTION00523000000000000000">4.2.3 An example</A> </UL> <LI><A NAME="tex2html74" HREF="node5.html#SECTION00530000000000000000">4.3 Miscellaneous settings</A> <UL> <LI><A NAME="tex2html75" HREF="node5.html#SECTION00531000000000000000">4.3.1 Extra fields for style <TT>frame-ionframe</TT></A> <LI><A NAME="tex2html76" HREF="node5.html#SECTION00532000000000000000">4.3.2 Extra fields for style <TT>frame-floatframe</TT></A> <LI><A NAME="tex2html77" HREF="node5.html#SECTION00533000000000000000">4.3.3 Extra fields for style <TT>dock</TT></A> </UL> </UL> <BR> <LI><A NAME="tex2html78" HREF="node6.html">5. Scripting</A> <UL> <LI><A NAME="tex2html79" HREF="node6.html#SECTION00610000000000000000">5.1 Hooks and other callbacks</A> <UL> <LI><A NAME="tex2html80" HREF="node6.html#SECTION00611000000000000000">5.1.1 Hooks</A> <LI><A NAME="tex2html81" HREF="node6.html#SECTION00612000000000000000">5.1.2 Placement methods</A> </UL> <LI><A NAME="tex2html82" HREF="node6.html#SECTION00620000000000000000">5.2 Referring to regions</A> <UL> <LI><A NAME="tex2html83" HREF="node6.html#SECTION00621000000000000000">5.2.1 Direct object references</A> <LI><A NAME="tex2html84" HREF="node6.html#SECTION00622000000000000000">5.2.2 Name-based lookups</A> </UL> <LI><A NAME="tex2html85" HREF="node6.html#SECTION00630000000000000000">5.3 Alternative winprop selection criteria</A> </UL> <BR> <LI><A NAME="tex2html86" HREF="node7.html">6. Function reference</A> <UL> <LI><A NAME="tex2html87" HREF="node7.html#SECTION00710000000000000000">6.1 Functions exported by Ioncore</A> <UL> <LI><A NAME="tex2html88" HREF="node7.html#SECTION00711000000000000000">6.1.1 WClientWin functions</A> <LI><A NAME="tex2html89" HREF="node7.html#SECTION00712000000000000000">6.1.2 WGenFrame functions</A> <LI><A NAME="tex2html90" HREF="node7.html#SECTION00713000000000000000">6.1.3 WMPlex functions</A> <LI><A NAME="tex2html91" HREF="node7.html#SECTION00714000000000000000">6.1.4 WRegion functions</A> <LI><A NAME="tex2html92" HREF="node7.html#SECTION00715000000000000000">6.1.5 WRootWin functions</A> <LI><A NAME="tex2html93" HREF="node7.html#SECTION00716000000000000000">6.1.6 WScreen functions</A> </UL> <LI><A NAME="tex2html94" HREF="node7.html#SECTION00720000000000000000">6.2 Functions exported by the ionws module</A> <UL> <LI><A NAME="tex2html95" HREF="node7.html#SECTION00721000000000000000">6.2.1 WIonFrame functions</A> <LI><A NAME="tex2html96" HREF="node7.html#SECTION00722000000000000000">6.2.2 WIonWS functions</A> <LI><A NAME="tex2html97" HREF="node7.html#SECTION00723000000000000000">6.2.3 WWsSplit functions</A> </UL> <LI><A NAME="tex2html98" HREF="node7.html#SECTION00730000000000000000">6.3 Functions exported by the floatws module</A> <UL> <LI><A NAME="tex2html99" HREF="node7.html#SECTION00731000000000000000">6.3.1 WFloatFrame functions</A> <LI><A NAME="tex2html100" HREF="node7.html#SECTION00732000000000000000">6.3.2 WFloatWS functions</A> </UL> <LI><A NAME="tex2html101" HREF="node7.html#SECTION00740000000000000000">6.4 Functions exported by the query module</A> <UL> <LI><A NAME="tex2html102" HREF="node7.html#SECTION00741000000000000000">6.4.1 WEdln functions</A> <LI><A NAME="tex2html103" HREF="node7.html#SECTION00742000000000000000">6.4.2 WInput functions</A> </UL> <LI><A NAME="tex2html104" HREF="node7.html#SECTION00750000000000000000">6.5 Functions exported by the menu module</A> <UL> <LI><A NAME="tex2html105" HREF="node7.html#SECTION00751000000000000000">6.5.1 WMenu functions</A> </UL> <LI><A NAME="tex2html106" HREF="node7.html#SECTION00760000000000000000">6.6 Functions exported by the de module</A> <LI><A NAME="tex2html107" HREF="node7.html#SECTION00770000000000000000">6.7 Functions exported by the dock module</A> <UL> <LI><A NAME="tex2html108" HREF="node7.html#SECTION00771000000000000000">6.7.1 WDock functions</A> </UL> <LI><A NAME="tex2html109" HREF="node7.html#SECTION00780000000000000000">6.8 Functions defined in <I>ioncorelib</I></A> <LI><A NAME="tex2html110" HREF="node7.html#SECTION00790000000000000000">6.9 Functions defined in <I>querylib</I></A> <LI><A NAME="tex2html111" HREF="node7.html#SECTION007100000000000000000">6.10 Functions defined in <I>delib</I></A> <LI><A NAME="tex2html112" HREF="node7.html#SECTION007110000000000000000">6.11 Functions defined in <I>menulib</I></A> </UL> <BR> <LI><A NAME="tex2html113" HREF="node8.html">A. The GNU General Public License</A> <UL> <LI><A NAME="tex2html114" HREF="node8.html#SECTION00810000000000000000">Appendix: How to Apply These Terms to Your New Programs</A> </UL> <BR> <LI><A NAME="tex2html115" HREF="node9.html">List of functions</A> <LI><A NAME="tex2html116" HREF="node10.html">Index</A> <LI><A NAME="tex2html117" HREF="node11.html">About this document ...</A> </UL> <!--End of Table of Child-Links--> <BR><HR> </BODY> </HTML>