Index of /ProgramDocuments/XenoStep_HeliX

      Name                    Last modified       Size  Description

[DIR] Parent Directory 07-Nov-2004 19:19 - [DIR] gtk/ 11-Jan-2004 22:40 - [IMG] buds.png 11-Jan-2004 22:40 1k [IMG] holes.png 11-Jan-2004 22:40 1k [IMG] lines.png 11-Jan-2004 22:40 1k [IMG] arrows.png 11-Jan-2004 22:40 1k [IMG] buttons.png 11-Jan-2004 22:40 1k [IMG] dimple.png 11-Jan-2004 22:40 1k [TXT] xeno.css 11-Jan-2004 22:40 1k

Xenophilia Theme


Xenophilia Theme


Xenophilia is a theme engine for GTK+. Its look could be described as a mix of NextStep, Windows 95 and Amiga, or in other words: plain. Xenophilia was made this way because the default look of GTK (author's opinion) was worse than any of the ones mentioned above, and it was also lacking in a few areas which could be improved upon through the application of common user interface design principles.

By the way, both Windows 95 and Amiga are borrowing much of their visuals from NextStep to begin with.



When a GTK+ program is loaded, the GTK library parses the file $HOME/.gtkrc, any application-specific style files and any files that they refer to. These files are in the same text-based format and consist of two types of paragraphs: styles and application of these styles onto widget classes and named widgets. More about the format of these files can be found in the GTK+ documentation and in a tutorial at

Xenophilia is a theme engine. In order to activate the engine and bind it to a style, the style's definition must include a specific clause: engine "xeno" { }. The quoted name tells GTK to use the engine with that name. The curly brackets are mandatory, and any engine-specific options should be placed within them.

The options are in the form option = value. If you do not define an option, the default or inherited value for the option will be used. You always override an inherited value if you define it defined, even if the new value is true and the inherited value was false.

By the way, you should not put a semicolon at the end. =)


The Xenophilia theme engine applies a few patches to the scrollbar widget which can be configured using the options below:
scrollbar_knob = ( normal | dimple | lines | holes | buds )
If the option is set to anything but normal, an image will be drawn on the center of each scrollbar to indicate that it can be moved.
A dimple is a little hole as found on the NextStep scrollbars.
The lines are drawn as the lines on the scrollbars in MacOS.
holes, and
buds are also common patters used to indicate movable objects.
scrollbar_width = integer_number
Sets the width of the scrollbar in pixels. Default is 15.
stepper_arrows = ( true | false )
If true the stepper arrows will be drawn in the default GTK style, i.e. they will be bevelled and drawn without any surrounding box. The default is false.
stepper_arrows = false
stepper_arrows = true
stepper_ends = ( true | false )
If true the steppers will be placed at either end of the scrollbar instead of in the corner, which is the default.
stepper_box = ( true | false )
Draw boxes around the stepper arrows. This option is per default set to the inverse of the option stepper_arrows, but can also be set explicitly. Having no boxes around black arrows is rather ugly, but some people (especially old Amigans) like to put boxes around bevelled arrows.=)

Other widgets

paned_knob = ( normal | dimple | lines | holes | buds )
The Xenophilia theme engine patches the GtkVPaned and GtkHPaned widget classes to make the resize-knob into a resize-bar that spans the entire length of the gutter. This options define how this resizebar should be drawn. Default is normal, which means that the resizebar should be drawn with an etched-in frame, in the style of previous versions of Xenophilia.
handle_knob = ( normal | lines | holes | buds )
The normal look of the handle box knob is made resemble the ones Netscape 4.x have, which is also the default. If it is set to buds or holes, the buds will be organized in a regular grid. If you set it to lines it will be drawn like handle boxes in Windows 98.

General options

thin = ( true | false )
If thin is set to true, then all frames for the style will be drawn with thin frames. Also, the border thickness of the widgets will be one pixel instead of the default two pixels, which means that the widgets could also be smaller than otherwise. I propose that you set thin to true for GtkFrame and other widgets that use the etched-in frames extensivelly.
shine [ [ state_type ] ] = real_number
shade [ [ state_type ] ] = real_number
The values for shine and shade are shading factors used to blend the background color into the light and dark colors to draw the frames with. State_type is one of NORMAL, PRELIGHT, ACTIVE, SELECTED and INSENSITIVE as usual. The state_type and its brackets may be omitted to set the factors for all states.