Sophie

Sophie

distrib > Mandriva > 2008.0 > x86_64 > by-pkgid > 994c49a0619533b97528793e2dcc73fb > files > 80

ion-20040729-4mdk.x86_64.rpm

<!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>4. Graphical styles</TITLE>
<META NAME="description" CONTENT="4. Graphical styles">
<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="node6.html">
<LINK REL="previous" HREF="node4.html">
<LINK REL="up" HREF="ionconf.html">
<LINK REL="next" HREF="node6.html">
</HEAD>

<BODY >
<!--Navigation Panel-->
<A NAME="tex2html297"
  HREF="node6.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
<A NAME="tex2html291"
  HREF="ionconf.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
<A NAME="tex2html285"
  HREF="node4.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
<A NAME="tex2html293"
  HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
<A NAME="tex2html295"
  HREF="node10.html">
<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
<BR>
<B> Next:</B> <A NAME="tex2html298"
  HREF="node6.html">5. Scripting</A>
<B> Up:</B> <A NAME="tex2html292"
  HREF="ionconf.html">Ion: Configuring and extending</A>
<B> Previous:</B> <A NAME="tex2html286"
  HREF="node4.html">3. Basic configuration</A>
 &nbsp; <B>  <A NAME="tex2html294"
  HREF="node1.html">Contents</A></B> 
 &nbsp; <B>  <A NAME="tex2html296"
  HREF="node10.html">Index</A></B> 
<BR>
<BR>
<!--End of Navigation Panel-->
<!--Table of Child-Links-->
<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>

<UL>
<LI><A NAME="tex2html299"
  HREF="node5.html#SECTION00510000000000000000">4.1 Drawing engines, style specifications and sub-styles</A>
<UL>
<LI><A NAME="tex2html300"
  HREF="node5.html#SECTION00511000000000000000">4.1.1 Known styles and substyles</A>
<UL>
<LI><A NAME="tex2html301"
  HREF="node5.html#SECTION00511100000000000000">4.1.1.1 Frames</A>
<LI><A NAME="tex2html302"
  HREF="node5.html#SECTION00511200000000000000">4.1.1.2 Tabs and menu entries</A>
<LI><A NAME="tex2html303"
  HREF="node5.html#SECTION00511300000000000000">4.1.1.3 The rest</A>
</UL>
</UL>
<BR>
<LI><A NAME="tex2html304"
  HREF="node5.html#SECTION00520000000000000000">4.2 Defining styles for the default drawing engine</A>
<UL>
<LI><A NAME="tex2html305"
  HREF="node5.html#SECTION00521000000000000000">4.2.1 The structure of the configuration files</A>
<LI><A NAME="tex2html306"
  HREF="node5.html#SECTION00522000000000000000">4.2.2 Defining the styles</A>
<UL>
<LI><A NAME="tex2html307"
  HREF="node5.html#SECTION00522100000000000000">4.2.2.1 Colours</A>
<LI><A NAME="tex2html308"
  HREF="node5.html#SECTION00522200000000000000">4.2.2.2 Borders and widths</A>
<LI><A NAME="tex2html309"
  HREF="node5.html#SECTION00522300000000000000">4.2.2.3 Text</A>
<LI><A NAME="tex2html310"
  HREF="node5.html#SECTION00522400000000000000">4.2.2.4 Miscellaneous</A>
<LI><A NAME="tex2html311"
  HREF="node5.html#SECTION00522500000000000000">4.2.2.5 Substyles</A>
</UL>
<LI><A NAME="tex2html312"
  HREF="node5.html#SECTION00523000000000000000">4.2.3 An example</A>
</UL>
<BR>
<LI><A NAME="tex2html313"
  HREF="node5.html#SECTION00530000000000000000">4.3 Miscellaneous settings</A>
<UL>
<LI><A NAME="tex2html314"
  HREF="node5.html#SECTION00531000000000000000">4.3.1 Extra fields for style <TT>frame-ionframe</TT></A>
<LI><A NAME="tex2html315"
  HREF="node5.html#SECTION00532000000000000000">4.3.2 Extra fields for style <TT>frame-floatframe</TT></A>
<LI><A NAME="tex2html316"
  HREF="node5.html#SECTION00533000000000000000">4.3.3 Extra fields for style <TT>dock</TT></A>
</UL></UL>
<!--End of Table of Child-Links-->
<HR>

<H1><A NAME="SECTION00500000000000000000"></A>
<A NAME="chap:gr"></A>
<BR>
4. Graphical styles
</H1>

<P>
This chapter first gives in section <A HREF="#sec:engines">4.1</A> a general outline 
of how drawing engines are used, of style specifications and then
in section <A HREF="#sec:defaultde">4.2</A> describes how to specify styles
for the default drawing engine.

<P>

<H2><A NAME="SECTION00510000000000000000"></A>
<A NAME="sec:engines"></A><A NAME="1617"></A><A NAME="1618"></A>
<BR>
4.1 Drawing engines, style specifications and sub-styles
</H2>

<P>
Ion's drawing routines are abstracted into so-called drawing engine
modules that can, again depending on the system, be dynamically
loaded as needed. The drawing engine modules provide ''brushes''
that objects can use to draw some high-level primitives such
as borders and text boxes (in addition to simple text and rectangle
drawing) on their windows and configure e.g. the shape and 
background of the window. While the drawing engines therefore
do not directly implement looks for each possible object (that
would hardly be maintainable), different brush styles can be
used to give a distinctive look to different objects and engines
could interpret some styles as special cases. Style specifications 
are strings of the form

<P>
<PRE>
element1-element2-...-elementn
</PRE>

<P>
An example of such a style specification is <TT>tab-frame</TT>;
see the table in subsection <A HREF="#sec:styles">4.1.1</A> for more styles.

<P>
When an object asks for a brush of certain style, the selected
drawing engine will attempt to find the closest match to this
specification. The styles/brushes defined by the drawing engines 
may have asterisks (<code>*</code>) as some of the elements indicating
a match to anything. Exact matches are preferred to asterisk
matches and longer matches to shorter. For example, let a brush
for style <TT>foo-bar-baz</TT> be queried, then the following
brushes are in order of preference:

<P>
<PRE>
foo-bar-baz
foo-*-baz
foo-bar
*
foo-baz   -- Doesn't match, not selected!
</PRE>

<P>
Some of the drawing primitives allow extra attributes to be
specified, also in the form
<PRE>
attr1-attr2-...-attrn
</PRE>
These extra attributes are called <I>substyles</I><A NAME="1629"></A>
and allow, for example, the state of the object to be indicated 
by  different colour sets while keeping the interface at an 
abstract level and the drawing engine completely ignorant 
of the semantics - only the writer of the drawing engine
configuration file has to know them. However the drawing 
engine can again interpret known substyles as special cases
and the default engine indeed does so with frame tab 
tag and drag states.)

<P>

<H3><A NAME="SECTION00511000000000000000"></A>
<A NAME="sec:styles"></A>
<BR>
4.1.1 Known styles and substyles
</H3>

<P>

<H4><A NAME="SECTION00511100000000000000">
4.1.1.1 Frames</A>
</H4>

<P>
<TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
<TR><TD ALIGN="LEFT">Style name</TD>
<TD ALIGN="LEFT">Description</TD>
</TR>
<TR><TD ALIGN="LEFT"><TT>frame</TT></TD>
<TD ALIGN="LEFT">Style for frames. 
	Substyles: <TT>active</TT>, <TT>inactive</TT>.</TD>
</TR>
<TR><TD ALIGN="LEFT"><TT>frame-ionframe</TT></TD>
<TD ALIGN="LEFT">A more specific style for WIonFrames. 
	Substyles as for <TT>frame</TT>.</TD>
</TR>
<TR><TD ALIGN="LEFT"><TT>frame-floatframe</TT></TD>
<TD ALIGN="LEFT">A more specific style for WFloatFrames. 
	Substyles as for <TT>frame</TT>.</TD>
</TR>
</TABLE>

<P>

<H4><A NAME="SECTION00511200000000000000">
4.1.1.2 Tabs and menu entries</A>
</H4>

<P>
<TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
<TR><TD ALIGN="LEFT">Style name</TD>
<TD ALIGN="LEFT">Description</TD>
</TR>
<TR><TD ALIGN="LEFT"><TT>tab</TT></TD>
<TD ALIGN="LEFT">Style for frames' tabs and menu entries. 
	Substyles: combinations of the form <TT>a-s</TT> where
	<TT>a</TT> is one of <TT>active</TT>/<TT>inactive</TT> and
	<TT>s</TT> is one of <TT>selected</TT>/<TT>unselected</TT></TD>
</TR>
<TR><TD ALIGN="LEFT"><TT>tab-frame</TT></TD>
<TD ALIGN="LEFT">A more specific style for frames' tabs.
	Substyles: combinations of the form <TT>a-s-t-d-u</TT> where
	<TT>a</TT> and <TT>s</TT> are as above and
      	<TT>t</TT> is one of <TT>tagged</TT>/<TT>not_tagged</TT>,
	<TT>d</TT> is one of <TT>dragged</TT>/<TT>not_dragged</TT> and
	<TT>u</TT> is one of <TT>activity</TT>/<TT>no_activity</TT>.</TD>
</TR>
<TR><TD ALIGN="LEFT"><TT>tab-frame-ionframe</TT></TD>
<TD ALIGN="LEFT">A more specific style for WIonFrames' 
	tabs. Substyles as for <TT>tab-frame</TT>.</TD>
</TR>
<TR><TD ALIGN="LEFT"><TT>tab-frame-floatframe</TT></TD>
<TD ALIGN="LEFT">A more specific style for 
	WFloatFrames' tabs.</TD>
</TR>
<TR><TD ALIGN="LEFT"><TT>tab-menuentry</TT></TD>
<TD ALIGN="LEFT">A more specific style for entries in WMenus.</TD>
</TR>
<TR><TD ALIGN="LEFT"><TT>tab-menuentry-bigmenu</TT></TD>
<TD ALIGN="LEFT">An alternate style for entries in WMenus.</TD>
</TR>
</TABLE>

<P>

<H4><A NAME="SECTION00511300000000000000">
4.1.1.3 The rest</A>
</H4>

<P>
<TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
<TR><TD ALIGN="LEFT">Style name</TD>
<TD ALIGN="LEFT">Description</TD>
</TR>
<TR><TD ALIGN="LEFT"><TT>input</TT></TD>
<TD ALIGN="LEFT">A style for WInputs.</TD>
</TR>
<TR><TD ALIGN="LEFT"><TT>input-edln</TT></TD>
<TD ALIGN="LEFT">A more specific style for WEdlns. 
	Substyles: <TT>selection</TT> for selected text and
	<TT>cursor</TT> for the cursor indicating current editing point.</TD>
</TR>
<TR><TD ALIGN="LEFT"><TT>input-message</TT></TD>
<TD ALIGN="LEFT">A more specific style for WMessages.</TD>
</TR>
<TR><TD ALIGN="LEFT"><TT>input-menu</TT></TD>
<TD ALIGN="LEFT">A more specific style for WMenus.</TD>
</TR>
<TR><TD ALIGN="LEFT"><TT>input-menu-bigmenu</TT></TD>
<TD ALIGN="LEFT">An alternate style for WMenus.</TD>
</TR>
<TR><TD ALIGN="LEFT"><TT>moveres_display</TT></TD>
<TD ALIGN="LEFT">The box displaying position/size when
	moving or resizing frames.</TD>
</TR>
<TR><TD ALIGN="LEFT"><TT>dock</TT></TD>
<TD ALIGN="LEFT">The dock.</TD>
</TR>
</TABLE>

<P>

<H2><A NAME="SECTION00520000000000000000"></A>
<A NAME="sec:defaultde"></A>
<BR>
4.2 Defining styles for the default drawing engine
</H2>

<P>
Drawing engine style files are usually named
<I>look-foo.lua</I> where <I>foo</I> is the name of the
style. The file that Ion loads on startup or when
<A HREF="node7.html#fn:gr_read_config"><TT>gr_read_config</TT></A> is called, however, is <I>draw.lua</I>
and should usually be symlinked to or a copy of of some
<I>look-foo.lua</I>.

<P>

<H3><A NAME="SECTION00521000000000000000">
4.2.1 The structure of the configuration files</A>
</H3>

<P>
The first thing to do in a stylefile is to choose the drawing
engine, possibly loading the module as well. This is done
with the following chunk of code.

<P>
<PRE>
if not gr_select_engine("de") then 
    return 
end
</PRE>

<P>
The <A HREF="node7.html#fn:gr_select_engine"><TT>gr_select_engine</TT></A> function sees if the engine
given as argument is registered (the default drawing engine is
simply called ''de''). If the engine could not be found, it
tries to load a module of the same name. If the engine still
is not registered, <A HREF="node7.html#fn:gr_select_engine"><TT>gr_select_engine</TT></A> returns <TT>false</TT>
and in this case we also exit the style setup script.
If the engine was found, <A HREF="node7.html#fn:gr_select_engine"><TT>gr_select_engine</TT></A> sees that
further requests for brushes are forwarded to that engine
and returns <TT>true</TT>.

<P>
Before defining new styles it may be a good idea to clear old
styles from memory so if the old configuration defines more
specific styles than the new, the old styles don't override 
those specified by the new configuration. That can be done by
calling

<P>
<PRE>
de_reset()
</PRE>

<P>
After this the new styles can be defined with <A HREF="node7.html#fn:de_define_style"><TT>de_define_style</TT></A>
as explained in the next subsection. Finally, after the styles have
been defined we must ask objects on the screen to look up new brushes
to reflect the changes in configuration. This is done with

<P>
<PRE>
gr_refresh()
</PRE>

<P>

<H3><A NAME="SECTION00522000000000000000">
4.2.2 Defining the styles</A>
</H3>

<P>
Styles for the default drawing engine are defined with the
function <A HREF="node7.html#fn:de_define_style"><TT>de_define_style</TT></A>. It has two arguments the first being
a style specification as explained in previous sections and the second
a table whose fields describe the style:

<P>
<PRE>
de_define_style("some-style", {
    attribute = value,
    ...
})
</PRE>

<P>
The supported attributes are described in tables below. The different
border elements and styles referred to there are explained in Figure
<A HREF="#fig:borders">4.1</A>.

<P>

<DIV ALIGN="CENTER"><A NAME="fig:borders"></A><A NAME="1728"></A>
<TABLE>
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 4.1:</STRONG>
Sketch of different border styles and elements</CAPTION>
<TR><TD><PRE>
Elevated:        Inlaid:         Ridge:            Groove:        
  hhhhhhhhhhhs     ............	   hhhhhhhhhhhs      sssssssssssh
  h..........s     .sssssssssh.	   h..........s      s..........h
  h.        .s     .s        h.	   h.sssssssh.s      s.hhhhhhhs.h
  h.        .s     .s        h.	   h.s      h.s      s.h      s.h
  h.        .s     .s        h.	   h.shhhhhhh.s      s.hsssssss.h
  h..........s     .shhhhhhhhh.	   h..........s      s..........h
  hsssssssssss     ............	   hsssssssssss      shhhhhhhhhhh

h = highlight, s = shadow, . = padding
</PRE></TD></TR>
</TABLE>
</DIV>

<P>

<H4><A NAME="SECTION00522100000000000000">
4.2.2.1 Colours</A>
</H4>

<P>
Each of these fields a string of the form that can be
passed to <TT>XAllocNamedColor</TT>. Valid strings are e.g.
hexadecimal RGB specifications of the form
<TT>#RRGGBB</TT> and colour names as specified
in <I>/usr/X11R6/lib/X11/rgb.txt</I> (exact path varying).

<P>
<TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
<TR><TD ALIGN="LEFT">Field</TD>
<TD ALIGN="LEFT">Description</TD>
</TR>
<TR><TD ALIGN="LEFT"><TT>highlight_colour</TT></TD>
<TD ALIGN="LEFT">Colour for the ''highlight'' part of a border.</TD>
</TR>
<TR><TD ALIGN="LEFT"><TT>shadow_colour</TT></TD>
<TD ALIGN="LEFT">Colour for the ''highlight'' part of a border.</TD>
</TR>
<TR><TD ALIGN="LEFT"><TT>foreground_colour</TT></TD>
<TD ALIGN="LEFT">Colour for the normal drawing operations, e.g. text.</TD>
</TR>
<TR><TD ALIGN="LEFT"><TT>background_colour</TT></TD>
<TD ALIGN="LEFT">Window background colour (unless transparency is enabled) and
	background colour boxes.</TD>
</TR>
<TR><TD ALIGN="LEFT"><TT>padding_colour</TT></TD>
<TD ALIGN="LEFT">Colour for the ''padding'' part of a border border. Set to 
	<TT>background_colour</TT> if unset.</TD>
</TR>
</TABLE>

<P>

<H4><A NAME="SECTION00522200000000000000">
4.2.2.2 Borders and widths</A>
</H4>

<P>
All other fields below except <TT>border_style</TT> are non-negative integers
indicating a number of pixels.

<P>
<TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
<TR><TD ALIGN="LEFT">Field</TD>
<TD ALIGN="LEFT">Description</TD>
</TR>
<TR><TD ALIGN="LEFT"><TT>border_style</TT></TD>
<TD ALIGN="LEFT">A string indicating the style of border; one of
		     elevated/inlaid/ridge/groove as seen in the
		     above sketch.</TD>
</TR>
<TR><TD ALIGN="LEFT"><TT>highlight_pixels</TT></TD>
<TD ALIGN="LEFT">Width of the highlight part of the border in pixels.</TD>
</TR>
<TR><TD ALIGN="LEFT"><TT>shadow_pixels</TT></TD>
<TD ALIGN="LEFT">Width of the shadow part of the border in pixels.</TD>
</TR>
<TR><TD ALIGN="LEFT"><TT>padding_pixels</TT></TD>
<TD ALIGN="LEFT">Width of the padding part of the border in pixels.</TD>
</TR>
<TR><TD ALIGN="LEFT"><TT>spacing</TT></TD>
<TD ALIGN="LEFT">Space to be left between all kinds of boxes.</TD>
</TR>
</TABLE>

<P>

<H4><A NAME="SECTION00522300000000000000">
4.2.2.3 Text</A>
</H4>

<P>
<TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
<TR><TD ALIGN="LEFT">Field</TD>
<TD ALIGN="LEFT">Description</TD>
</TR>
<TR><TD ALIGN="LEFT"><TT>font</TT></TD>
<TD ALIGN="LEFT">Font to be used in text-drawing operations; standard X font
	     name.</TD>
</TR>
<TR><TD ALIGN="LEFT"><TT>text_align</TT></TD>
<TD ALIGN="LEFT">How text is to be aligned in text boxes/tabs; one of
		   the strings left/right/center.</TD>
</TR>
</TABLE>

<P>

<H4><A NAME="SECTION00522400000000000000">
4.2.2.4 Miscellaneous</A>
</H4>

<P>
<TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
<TR><TD ALIGN="LEFT">Field</TD>
<TD ALIGN="LEFT">Description</TD>
</TR>
<TR><TD ALIGN="LEFT"><TT>transparent_background</TT></TD>
<TD ALIGN="LEFT">Should windows' that use this style
	background be transparent? true/false.</TD>
</TR>
<TR><TD ALIGN="LEFT"><TT>based_on</TT></TD>
<TD ALIGN="LEFT">The name of a previously defined style that this
	style should be based on.</TD>
</TR>
</TABLE>

<P>

<H4><A NAME="SECTION00522500000000000000">
4.2.2.5 Substyles</A>
</H4>

<P>
As discussed in previous sections, styles may have substyles to e.g.
indicate different states of the object being drawn. The ''de'' engine
limits what can be configured in substyles to the set of colours in the
first table above, but also specifically interprets for the main style
<TT>tab-frame</TT> the substyles <TT>*-*-tagged</TT> and <TT>*-*-*-dragged</TT>
by, respectively, drawing a right angle shape at the top right corner 
of a tab and by shading the tab with a stipple pattern. Also for
menus the substyles <TT>*-*-submenu</TT> are handled as a special case.

<P>
Substyles are defined with the function <A HREF="node7.html#fn:de_substyle"><TT>de_substyle</TT></A> within the
table defining the main style. The parameters to this function are 
similar to those of <A HREF="node7.html#fn:de_define_style"><TT>de_define_style</TT></A>.

<P>
<PRE>
de_define_style("some-style", {
   ...
   de_substyle("some-substyle", {
      ...
   }),
   ...
})
</PRE>

<P>

<H3><A NAME="SECTION00523000000000000000">
4.2.3 An example</A>
</H3>

<P>
The following shortened segment from <I>look-cleanviolet.lua</I>
should help to clarify the matters discussed in the previous
subsection.

<P>
<PRE>
de_define_style("*", {
    -- Gray background
    highlight_colour = "#eeeeee",
    shadow_colour = "#eeeeee",
    background_colour = "#aaaaaa",
    foreground_colour = "#000000",
    
    shadow_pixels = 1,
    highlight_pixels = 1,
    padding_pixels = 1,
    spacing = 0,
    border_style = "elevated",
    
    font = "-*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*",
    text_align = "center",
})

de_define_style("tab-frame", {
    based_on = "*",
    
    de_substyle("active-selected", {
        -- Violet tab
        highlight_colour = "#aaaacc",
        shadow_colour = "#aaaacc",
        background_colour = "#666699",
        foreground_colour = "#eeeeee",
    }),

    --  More substyles would follow ...
})
</PRE>

<P>

<H2><A NAME="SECTION00530000000000000000">
4.3 Miscellaneous settings</A>
</H2>

<P>
The following style fields are independent of the drawing engine used,
but are related to objects' styles and therefore configured in the drawing
engine configuration file.

<P>

<H3><A NAME="SECTION00531000000000000000">
4.3.1 Extra fields for style <TT>frame-ionframe</TT></A>
</H3>

<P>
<TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
<TR><TD ALIGN="LEFT">Field</TD>
<TD ALIGN="LEFT">Description</TD>
</TR>
<TR><TD ALIGN="LEFT"><TT>ionframe_bar_inside_border</TT></TD>
<TD ALIGN="LEFT">Controls whether the tab-bar
	appears inside or outside of the frame's borders. true/false.</TD>
</TR>
</TABLE>

<P>

<H3><A NAME="SECTION00532000000000000000">
4.3.2 Extra fields for style <TT>frame-floatframe</TT></A>
</H3>

<P>
<TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
<TR><TD ALIGN="LEFT">Field</TD>
<TD ALIGN="LEFT">Description</TD>
</TR>
<TR><TD ALIGN="LEFT"><TT>floatframe_tab_min_w</TT></TD>
<TD ALIGN="LEFT">Minimum tab width in pixels, given
	that this number times number of tabs doesn't exceed frame width.</TD>
</TR>
<TR><TD ALIGN="LEFT"><TT>floatframe_bar_max_w_q</TT></TD>
<TD ALIGN="LEFT">Maximum tab-bar width quotient of
	frame width. A number in the interval <IMG
 WIDTH="40" HEIGHT="35" ALIGN="MIDDLE" BORDER="0"
 SRC="img2.png"
 ALT="$(0, 1]$">.</TD>
</TR>
</TABLE>	

<P>

<H3><A NAME="SECTION00533000000000000000">
4.3.3 Extra fields for style <TT>dock</TT></A>
</H3>

<P>
<TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
<TR><TD ALIGN="LEFT">Field</TD>
<TD ALIGN="LEFT">Description</TD>
</TR>
<TR><TD ALIGN="LEFT"><TT>outline_style</TT></TD>
<TD ALIGN="LEFT">How borders are drawn:
			<TT>"none"</TT> - no border,
			<TT>"all"</TT> - border around whole dock,
			<TT>"each"</TT> - border around each dockapp.</TD>
</TR>
<TR><TD ALIGN="LEFT"><TT>tile_size</TT></TD>
<TD ALIGN="LEFT">A table with entries <TT>width</TT> and <TT>height</TT>,
	indicating the width and height of tiles in pixels.</TD>
</TR>
</TABLE>

<P>
Hopefully that's enough to get you started in writing new style
configuration files for Ion. When in doubt, study the existing
style configuration files.

<P>

<P>
<HR>
<!--Navigation Panel-->
<A NAME="tex2html297"
  HREF="node6.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
<A NAME="tex2html291"
  HREF="ionconf.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
<A NAME="tex2html285"
  HREF="node4.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
<A NAME="tex2html293"
  HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
<A NAME="tex2html295"
  HREF="node10.html">
<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
<BR>
<B> Next:</B> <A NAME="tex2html298"
  HREF="node6.html">5. Scripting</A>
<B> Up:</B> <A NAME="tex2html292"
  HREF="ionconf.html">Ion: Configuring and extending</A>
<B> Previous:</B> <A NAME="tex2html286"
  HREF="node4.html">3. Basic configuration</A>
 &nbsp; <B>  <A NAME="tex2html294"
  HREF="node1.html">Contents</A></B> 
 &nbsp; <B>  <A NAME="tex2html296"
  HREF="node10.html">Index</A></B> 
<!--End of Navigation Panel-->

</BODY>
</HTML>