changeset 84274:cf017d5aa8c1

Move here from ../../man
author Glenn Morris <rgm@gnu.org>
date Thu, 06 Sep 2007 04:49:19 +0000
parents d409e8e5c28f
children 89ef17e17e61
files doc/emacs/xresources.texi
diffstat 1 files changed, 1216 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/emacs/xresources.texi	Thu Sep 06 04:49:19 2007 +0000
@@ -0,0 +1,1216 @@
+@c This is part of the Emacs manual.
+@c Copyright (C) 1987, 1993, 1994, 1995, 1997, 2001, 2002, 2003,
+@c   2004, 2005, 2006, 2007 Free Software Foundation, Inc.
+@c See file emacs.texi for copying conditions.
+@node X Resources, Antinews, Emacs Invocation, Top
+@appendix X Options and Resources
+
+  You can customize some X-related aspects of Emacs behavior using X
+resources, as is usual for programs that use X.  On MS-Windows, you
+can customize some of the same aspects using the system registry.
+@xref{MS-Windows Registry}.  Likewise, Emacs on MacOS Carbon emulates X
+resources using the Preferences system.  @xref{Mac Environment Variables}.
+
+  When Emacs is built using an ``X toolkit'', such as Lucid or
+LessTif, you need to use X resources to customize the appearance of
+the widgets, including the menu-bar, scroll-bar, and dialog boxes.
+This is because the libraries that implement these don't provide for
+customization through Emacs.  GTK+ widgets use a separate system of
+@ifnottex
+``GTK resources'', which we will also describe.
+@end ifnottex
+@iftex
+``GTK resources.''  In this chapter we describe the most commonly used
+resource specifications.  For full documentation, see the online
+manual.
+
+@c Add xref for LessTif/Motif menu resources.
+@end iftex
+
+
+@menu
+* Resources::           Using X resources with Emacs (in general).
+* Table of Resources::  Table of specific X resources that affect Emacs.
+* Face Resources::      X resources for customizing faces.
+* Lucid Resources::     X resources for Lucid menus.
+* LessTif Resources::   X resources for LessTif and Motif menus.
+* GTK resources::       Resources for GTK widgets.
+@end menu
+
+@node Resources
+@appendixsec X Resources
+@cindex resources
+@cindex X resources
+@cindex @file{~/.Xdefaults} file
+@cindex @file{~/.Xresources} file
+
+  Programs running under the X Window System organize their user
+options under a hierarchy of classes and resources.  You can specify
+default values for these options in your X resources file, usually
+named @file{~/.Xdefaults} or @file{~/.Xresources}.
+If changes in @file{~/.Xdefaults} do not
+take effect, it is because your X server stores its own list of
+resources; to update them, use the shell command @command{xrdb}---for
+instance, @samp{xrdb ~/.Xdefaults}.
+
+  Each line in the file specifies a value for one option or for a
+collection of related options, for one program or for several programs
+(optionally even for all programs).
+
+@cindex Registry (MS-Windows)
+  MS-Windows systems do not support @file{~/.Xdefaults} files, so
+instead Emacs compiled for Windows looks for X resources in the
+Windows Registry, first under the key
+@samp{HKEY_CURRENT_USER\SOFTWARE\GNU\Emacs} and then under the key
+@samp{HKEY_LOCAL_MACHINE\SOFTWARE\GNU\Emacs}.  The menu and scroll
+bars are native widgets on MS-Windows, so they are only customizable
+via the system-wide settings in the Display Control Panel.  You can
+also set resources using the @samp{-xrm} command line option (see
+below.)
+
+@iftex
+  Applications such as Emacs look for resources with specific names
+and their particular meanings.  Case distinctions are significant in
+these names.  Each resource specification in @file{~/.Xdefaults}
+states the name of the program and the name of the resource.  For
+Emacs, the program name is @samp{Emacs}.  It looks like this:
+
+@example
+Emacs.borderWidth: 2
+@end example
+@end iftex
+@ifnottex
+  Programs define named resources with particular meanings.  They also
+define how to group resources into named classes.  For instance, in
+Emacs, the @samp{internalBorder} resource controls the width of the
+internal border, and the @samp{borderWidth} resource controls the width
+of the external border.  Both of these resources are part of the
+@samp{BorderWidth} class.  Case distinctions are significant in these
+names.
+
+  Every resource definition is associated with a specific program
+name---the name of the executable file that you ran.  For Emacs, that
+is normally @samp{emacs}.  To specify a definition for all instances
+of Emacs, regardless of their names, use @samp{Emacs}.
+
+  In @file{~/.Xdefaults}, you can specify a value for a single resource
+on one line, like this:
+
+@example
+emacs.borderWidth: 2
+@end example
+
+@noindent
+Or you can use a class name to specify the same value for all resources
+in that class.  Here's an example:
+
+@example
+emacs.BorderWidth: 2
+@end example
+
+  If you specify a value for a class, it becomes the default for all
+resources in that class.  You can specify values for individual
+resources as well; these override the class value, for those particular
+resources.  Thus, this example specifies 2 as the default width for all
+borders, but overrides this value with 4 for the external border:
+
+@example
+emacs.BorderWidth: 2
+emacs.borderWidth: 4
+@end example
+@end ifnottex
+
+  The order in which the lines appear in the file does not matter.
+Also, command-line options always override the X resources file.
+
+@ifnottex
+Here is a list of X command-line options and their corresponding
+resource names.
+
+@table @samp
+@item -name @var{name}
+@opindex --name
+@itemx --name=@var{name}
+@cindex resource name, command-line argument
+Use @var{name} as the resource name (and the title) for the initial
+Emacs frame.  This option does not affect subsequent frames, but Lisp
+programs can specify frame names when they create frames.
+
+If you don't specify this option, the default is to use the Emacs
+executable's name as the resource name.
+
+@item -xrm @var{resource-values}
+@opindex --xrm
+@itemx --xrm=@var{resource-values}
+@cindex resource values, command-line argument
+Specify X resource values for this Emacs job (see below).
+@end table
+
+  For consistency, @samp{-name} also specifies the name to use for
+other resource values that do not belong to any particular frame.
+
+  The resources that name Emacs invocations also belong to a class; its
+name is @samp{Emacs}.  If you write @samp{Emacs} instead of
+@samp{emacs}, the resource applies to all frames in all Emacs jobs,
+regardless of frame titles and regardless of the name of the executable
+file.  Here is an example:
+
+@example
+Emacs.BorderWidth: 2
+Emacs.borderWidth: 4
+@end example
+
+  You can specify a string of additional resource values for Emacs to
+use with the command line option @samp{-xrm @var{resources}}.  The text
+@var{resources} should have the same format that you would use inside a file
+of X resources.  To include multiple resource specifications in
+@var{resources}, put a newline between them, just as you would in a file.
+You can also use @samp{#include "@var{filename}"} to include a file full
+of resource specifications.  Resource values specified with @samp{-xrm}
+take precedence over all other resource specifications.
+
+  One way to experiment with the effect of different resource settings
+is to use the @code{editres} program.  Select @samp{Get Tree} from the
+@end ifnottex
+@iftex
+  You can experiment with the effect of different resource settings
+with the @code{editres} program.  Select @samp{Get Tree} from the
+@end iftex
+@samp{Commands} menu, then click on an Emacs frame.  This will display
+a tree showing the structure of X toolkit widgets used in an Emacs
+frame.  Select one of them, such as @samp{menubar}, then select
+@samp{Show Resource Box} from the @samp{Commands} menu.  This displays
+a list of all the meaningful X resources for that widget, and allows
+you to edit them.  Changes take effect when you click on the
+@samp{Apply} button.  (See the @code{editres} man page for more
+details.)
+
+@node Table of Resources
+@appendixsec Table of X Resources for Emacs
+
+  This table lists the resource names that designate options for
+Emacs, not counting those for the appearance of the menu bar, each
+with the class that it belongs to:
+
+@table @asis
+@item @code{background} (class @code{Background})
+Background color name.
+
+@ifnottex
+@item @code{bitmapIcon} (class @code{BitmapIcon})
+Use a bitmap icon (a picture of a gnu) if @samp{on}, let the window
+manager choose an icon if @samp{off}.
+@end ifnottex
+
+@item @code{borderColor} (class @code{BorderColor})
+Color name for the external border.
+
+@ifnottex
+@item @code{borderWidth} (class @code{BorderWidth})
+Width in pixels of the external border.
+@end ifnottex
+
+@item @code{cursorColor} (class @code{Foreground})
+Color name for text cursor (point).
+
+@ifnottex
+@item @code{cursorBlink} (class @code{CursorBlink})
+Specifies whether to make the cursor blink. The default is @samp{on}.  Use
+@samp{off} or @samp{false} to turn cursor blinking off.
+@end ifnottex
+
+@item @code{font} (class @code{Font})
+Font name (or fontset name, @pxref{Fontsets}) for @code{default} font.
+
+@item @code{foreground} (class @code{Foreground})
+Color name for text.
+
+@item @code{geometry} (class @code{Geometry})
+Window size and position.  Be careful not to specify this resource as
+@samp{emacs*geometry}, because that may affect individual menus as well
+as the Emacs frame itself.
+
+If this resource specifies a position, that position applies only to the
+initial Emacs frame (or, in the case of a resource for a specific frame
+name, only that frame).  However, the size, if specified here, applies to
+all frames.
+
+@ifnottex
+@item @code{fullscreen} (class @code{Fullscreen})
+The desired fullscreen size.  The value can be one of @code{fullboth},
+@code{fullwidth} or @code{fullheight}, which correspond to
+the command-line options @samp{-fs}, @samp{-fw}, and @samp{-fh}
+(@pxref{Window Size X}).
+
+Note that this applies to the initial frame only.
+@end ifnottex
+
+@item @code{iconName} (class @code{Title})
+Name to display in the icon.
+
+@item @code{internalBorder} (class @code{BorderWidth})
+Width in pixels of the internal border.
+
+@item @code{lineSpacing} (class @code{LineSpacing})
+@cindex line spacing
+@cindex leading
+Additional space (@dfn{leading}) between lines, in pixels.
+
+@item @code{menuBar} (class @code{MenuBar})
+@cindex menu bar
+Give frames menu bars if @samp{on}; don't have menu bars if @samp{off}.
+@ifnottex
+@xref{Lucid Resources}, and @ref{LessTif Resources},
+@end ifnottex
+@iftex
+@xref{Lucid Resources},
+@end iftex
+for how to control the appearance of the menu bar if you have one.
+
+@ifnottex
+@item @code{minibuffer} (class @code{Minibuffer})
+If @samp{none}, don't make a minibuffer in this frame.
+It will use a separate minibuffer frame instead.
+
+@item @code{paneFont} (class @code{Font})
+@cindex font for menus
+Font name for menu pane titles, in non-toolkit versions of Emacs.
+@end ifnottex
+
+@item @code{pointerColor} (class @code{Foreground})
+Color of the mouse cursor.
+
+@ifnottex
+@item @code{privateColormap} (class @code{PrivateColormap})
+If @samp{on}, use a private color map, in the case where the ``default
+visual'' of class PseudoColor and Emacs is using it.
+
+@item @code{reverseVideo} (class @code{ReverseVideo})
+Switch foreground and background default colors if @samp{on}, use colors as
+specified if @samp{off}.
+@end ifnottex
+
+@item @code{screenGamma} (class @code{ScreenGamma})
+@cindex gamma correction
+Gamma correction for colors, equivalent to the frame parameter
+@code{screen-gamma}.
+
+@item @code{scrollBarWidth} (class @code{ScrollBarWidth})
+@cindex scrollbar width
+The scroll bar width in pixels, equivalent to the frame parameter
+@code{scroll-bar-width}.
+
+@ifnottex
+@item @code{selectionFont} (class @code{SelectionFont})
+Font name for pop-up menu items, in non-toolkit versions of Emacs.  (For
+toolkit versions, see @ref{Lucid Resources}, also see @ref{LessTif
+Resources}.)
+
+@item @code{selectionTimeout} (class @code{SelectionTimeout})
+Number of milliseconds to wait for a selection reply.
+If the selection owner doesn't reply in this time, we give up.
+A value of 0 means wait as long as necessary.
+
+@item @code{synchronous} (class @code{Synchronous})
+@cindex debugging X problems
+@cindex synchronous X mode
+Run Emacs in synchronous mode if @samp{on}.  Synchronous mode is
+useful for debugging X problems.
+@end ifnottex
+
+@item @code{title} (class @code{Title})
+Name to display in the title bar of the initial Emacs frame.
+
+@item @code{toolBar} (class @code{ToolBar})
+@cindex tool bar
+Number of lines to reserve for the tool bar.  A zero value suppresses
+the tool bar.  If the value is non-zero and
+@code{auto-resize-tool-bars} is non-@code{nil}, the tool bar's size
+will be changed automatically so that all tool bar items are visible.
+  If the value of @code{auto-resize-tool-bars} is @code{grow-only},
+the tool bar expands automatically, but does not contract automatically.
+To contract the tool bar, you must redraw the frame by entering @kbd{C-l}.
+
+@item @code{useXIM} (class @code{UseXIM})
+@cindex XIM
+@cindex X input methods
+@cindex input methods, X
+Turn off use of X input methods (XIM) if @samp{false} or @samp{off}.
+This is only relevant if your Emacs is actually built with XIM
+support.  It is potentially useful to turn off XIM for efficiency,
+especially slow X client/server links.
+
+@item @code{verticalScrollBars} (class @code{ScrollBars})
+Give frames scroll bars if @samp{on}; don't have scroll bars if
+@samp{off}.
+
+@ifnottex
+@item @code{visualClass} (class @code{VisualClass})
+Specify the ``visual'' that X should use.  This tells X how to handle
+colors.
+
+The value should start with one of @samp{TrueColor},
+@samp{PseudoColor}, @samp{DirectColor}, @samp{StaticColor},
+@samp{GrayScale}, and @samp{StaticGray}, followed by
+@samp{-@var{depth}}, where @var{depth} is the number of color planes.
+Most terminals only allow a few ``visuals,'' and the @samp{dpyinfo}
+program outputs information saying which ones.
+@end ifnottex
+@end table
+
+@node Face Resources
+@appendixsec X Resources for Faces
+
+  You can use resources to customize the appearance of particular
+faces (@pxref{Faces}):
+
+@table @code
+@item @var{face}.attributeForeground
+Foreground color for face @var{face}.
+@item @var{face}.attributeBackground
+Background color for face @var{face}.
+@item @var{face}.attributeUnderline
+Underline flag for face @var{face}.  Use @samp{on} or @samp{true} for
+yes.
+@item @var{face}.attributeStrikeThrough
+@itemx @var{face}.attributeOverline
+@itemx @var{face}.attributeBox
+@itemx @var{face}.attributeInverse
+Likewise, for other boolean font attributes.
+@item @var{face}.attributeStipple
+The name of a pixmap data file to use for the stipple pattern, or
+@code{false} to not use stipple for the face @var{face}.
+@item @var{face}.attributeBackgroundPixmap
+The background pixmap for the face @var{face}.  Should be a name of a
+pixmap file or @code{false}.
+@item @var{face}.attributeFont
+Font name (full XFD name or valid X abbreviation) for face @var{face}.
+Instead of this, you can specify the font through separate attributes.
+@end table
+
+  Instead of using @code{attributeFont} to specify a font name, you can
+select a font through these separate attributes:
+
+@table @code
+@item @var{face}.attributeFamily
+Font family for face @var{face}.
+@item @var{face}.attributeHeight
+Height of the font to use for face @var{face}: either an integer
+specifying the height in units of 1/10@dmn{pt}, or a floating point
+number that specifies a scale factor to scale the underlying face's
+default font, or a function to be called with the default height which
+will return a new height.
+@item @var{face}.attributeWidth
+@itemx @var{face}.attributeWeight
+@itemx @var{face}.attributeSlant
+Each of these resources corresponds to a like-named font attribute,
+and you write the resource value the same as the symbol you would use
+for the font attribute value.
+@item @var{face}.attributeBold
+Bold flag for face @var{face}---instead of @code{attributeWeight}.  Use @samp{on} or @samp{true} for
+yes.
+@item @var{face}.attributeItalic
+Italic flag for face @var{face}---instead of @code{attributeSlant}.
+@end table
+
+@node Lucid Resources
+@appendixsec Lucid Menu X Resources
+@cindex Menu X Resources (Lucid widgets)
+@cindex Lucid Widget X Resources
+
+@ifnottex
+  If the Emacs installed at your site was built to use the X toolkit
+with the Lucid menu widgets, then the menu bar is a separate widget and
+has its own resources.  The resource names contain @samp{pane.menubar}
+(following, as always, the name of the Emacs invocation, or @samp{Emacs},
+which stands for all Emacs invocations).  Specify them like this:
+
+@example
+Emacs.pane.menubar.@var{resource}:  @var{value}
+@end example
+
+@noindent
+For example, to specify the font @samp{8x16} for the menu-bar items,
+write this:
+@end ifnottex
+@iftex
+   If the Emacs installed at your site was built to use the X toolkit
+with the Lucid menu widgets, then the menu bar is a separate widget
+and has its own resources.  The resource specifications start with
+@samp{Emacs.pane.menubar}---for instance, to specify the font
+@samp{8x16} for the menu-bar items, write this:
+@end iftex
+
+@example
+Emacs.pane.menubar.font:  8x16
+@end example
+
+@noindent
+Resources for @emph{non-menubar} toolkit pop-up menus have
+@samp{menu*} instead of @samp{pane.menubar}.  For example, to specify
+the font @samp{8x16} for the pop-up menu items, write this:
+
+@example
+Emacs.menu*.font:	8x16
+@end example
+
+@noindent
+For dialog boxes, use @samp{dialog*}:
+
+@example
+Emacs.dialog*.font:	8x16
+@end example
+
+@noindent
+The Lucid menus can display multilingual text in your locale.  For
+more information about fontsets see the man page for
+@code{XCreateFontSet}.  To enable multilingual menu text you specify a
+@code{fontSet} resource instead of the font resource.  If both
+@code{font} and @code{fontSet} resources are specified, the
+@code{fontSet} resource is used.
+
+  Thus, to specify @samp{-*-helvetica-medium-r-*--*-120-*-*-*-*-*-*,*}
+for both the popup and menu bar menus, write this:
+
+@example
+Emacs*menu*fontSet:  -*-helvetica-medium-r-*--*-120-*-*-*-*-*-*,*
+@end example
+
+@noindent
+The @samp{*menu*} as a wildcard matches @samp{pane.menubar} and
+@samp{menu@dots{}}.
+
+Experience shows that on some systems you may need to add
+@samp{shell.}@: before the @samp{pane.menubar} or @samp{menu*}.  On
+some other systems, you must not add @samp{shell.}.  The generic wildcard
+approach should work on both kinds of systems.
+
+  Here is a list of the specific resources for menu bars and pop-up menus:
+
+@table @code
+@item font
+Font for menu item text.
+@item fontSet
+Fontset for menu item text.
+@item foreground
+Color of the foreground.
+@item background
+Color of the background.
+@item buttonForeground
+In the menu bar, the color of the foreground for a selected item.
+@ifnottex
+@item horizontalSpacing
+Horizontal spacing in pixels between items.  Default is 3.
+@item verticalSpacing
+Vertical spacing in pixels between items.  Default is 2.
+@item arrowSpacing
+Horizontal spacing between the arrow (which indicates a submenu) and
+the associated text.  Default is 10.
+@item shadowThickness
+Thickness of shadow line around the widget.  Default is 1.
+
+Also determines the thickness of shadow lines around other objects,
+for instance 3D buttons and arrows.  If you have the impression that
+the arrows in the menus do not stand out clearly enough or that the
+difference between ``in'' and ``out'' buttons is difficult to see, set
+this to 2.  If you have no problems with visibility, the default
+probably looks better.  The background color may also have some effect
+on the contrast.
+@end ifnottex
+@item margin
+The margin of the menu bar, in characters.  Default is 1.
+@end table
+
+@ifnottex
+@node LessTif Resources
+@appendixsec LessTif Menu X Resources
+@cindex Menu X Resources (LessTif widgets)
+@cindex LessTif Widget X Resources
+
+  If the Emacs installed at your site was built to use the X toolkit
+with the LessTif or Motif widgets, then the menu bar, the dialog
+boxes, the pop-up menus, and the file-selection box are separate
+widgets and have their own resources.
+
+  The resource names for the menu bar contain @samp{pane.menubar}
+(following, as always, the name of the Emacs invocation, or
+@samp{Emacs}, which stands for all Emacs invocations).  Specify them
+like this:
+
+@smallexample
+Emacs.pane.menubar.@var{subwidget}.@var{resource}:  @var{value}
+@end smallexample
+
+  Each individual string in the menu bar is a subwidget; the subwidget's
+name is the same as the menu item string.  For example, the word
+@samp{File} in the menu bar is part of a subwidget named
+@samp{emacs.pane.menubar.File}.  Most likely, you want to specify the
+same resources for the whole menu bar.  To do this, use @samp{*} instead
+of a specific subwidget name.  For example, to specify the font
+@samp{8x16} for the menu-bar items, write this:
+
+@smallexample
+Emacs.pane.menubar.*.fontList:  8x16
+@end smallexample
+
+@noindent
+This also specifies the resource value for submenus.
+
+  Each item in a submenu in the menu bar also has its own name for X
+resources; for example, the @samp{File} submenu has an item named
+@samp{Save (current buffer)}.  A resource specification for a submenu
+item looks like this:
+
+@smallexample
+Emacs.pane.menubar.popup_*.@var{menu}.@var{item}.@var{resource}: @var{value}
+@end smallexample
+
+@noindent
+For example, here's how to specify the font for the @samp{Save (current
+buffer)} item:
+
+@smallexample
+Emacs.pane.menubar.popup_*.File.Save (current buffer).fontList: 8x16
+@end smallexample
+
+@noindent
+For an item in a second-level submenu, such as @samp{Complete Word}
+under @samp{Spell Checking} under @samp{Tools}, the resource fits this
+template:
+
+@smallexample
+Emacs.pane.menubar.popup_*.popup_*.@var{menu}.@var{resource}: @var{value}
+@end smallexample
+
+@noindent
+For example,
+
+@smallexample
+Emacs.pane.menubar.popup_*.popup_*.Spell Checking.Complete Word: @var{value}
+@end smallexample
+
+@noindent
+(This should be one long line.)
+
+  It's impossible to specify a resource for all the menu-bar items
+without also specifying it for the submenus as well.  So if you want the
+submenu items to look different from the menu bar itself, you must ask
+for that in two steps.  First, specify the resource for all of them;
+then, override the value for submenus alone.  Here is an example:
+
+@smallexample
+Emacs.pane.menubar.*.fontList:  8x16
+Emacs.pane.menubar.popup_*.fontList: 8x16
+@end smallexample
+
+@noindent
+For LessTif pop-up menus, use @samp{menu*} instead of
+@samp{pane.menubar}.  For example, to specify the font @samp{8x16} for
+the pop-up menu items, write this:
+
+@smallexample
+Emacs.menu*.fontList:  8x16
+@end smallexample
+
+@noindent
+For LessTif dialog boxes, use @samp{dialog} instead of @samp{menu}:
+
+@example
+Emacs.dialog*.fontList: 8x16
+Emacs.dialog*.foreground: hotpink
+@end example
+
+To specify resources for the LessTif file-selection box, use
+@samp{fsb*}, like this:
+
+@example
+Emacs.fsb*.fontList: 8x16
+@end example
+
+@iftex
+@medbreak
+@end iftex
+  Here is a list of the specific resources for LessTif menu bars and
+pop-up menus:
+
+@table @code
+@item armColor
+The color to show in an armed button.
+@item fontList
+The font to use.
+@item marginBottom
+@itemx marginHeight
+@itemx marginLeft
+@itemx marginRight
+@itemx marginTop
+@itemx marginWidth
+Amount of space to leave around the item, within the border.
+@item borderWidth
+The width of the border around the menu item, on all sides.
+@item shadowThickness
+The width of the border shadow.
+@item bottomShadowColor
+The color for the border shadow, on the bottom and the right.
+@item topShadowColor
+The color for the border shadow, on the top and the left.
+@end table
+@end ifnottex
+
+
+@node GTK resources
+@appendixsec GTK resources
+@iftex
+  The most common way to customize the GTK widgets Emacs uses (menus, dialogs
+tool bars and scroll bars) is by choosing an appropriate theme, for example
+with the GNOME theme selector.  You can also do Emacs specific customization
+by inserting GTK style directives in the file @file{~/.emacs.d/gtkrc}.  Some GTK
+themes ignore customizations in @file{~/.emacs.d/gtkrc} so not everything
+works with all themes.  To customize Emacs font, background, faces, etc., use
+the normal X resources (@pxref{Resources}).  We will present some examples of
+customizations here, but for a more detailed description, see the online manual
+
+  The first example is just one line.  It changes the font on all GTK widgets
+to courier with size 12:
+
+@smallexample
+gtk-font-name = "courier 12"
+@end smallexample
+
+  The thing to note is that the font name is not an X font name, like
+-*-helvetica-medium-r-*--*-120-*-*-*-*-*-*, but a Pango font name.  A Pango
+font name is basically of the format "family style size", where the style
+is optional as in the case above.  A name with a style could be for example:
+
+@smallexample
+gtk-font-name = "helvetica bold 10"
+@end smallexample
+
+  To customize widgets you first define a style and then apply the style to
+the widgets.  Here is an example that sets the font for menus, but not
+for other widgets:
+
+@smallexample
+# @r{Define the style @samp{menufont}.}
+style "menufont"
+@{
+  font_name = "helvetica bold 14"  # This is a Pango font name
+@}
+
+# @r{Specify that widget type @samp{*emacs-menuitem*} uses @samp{menufont}.}
+widget "*emacs-menuitem*" style "menufont"
+@end smallexample
+
+The widget name in this example contains wildcards, so the style will be
+applied to all widgets that match "*emacs-menuitem*".  The widgets are
+named by the way they are contained, from the outer widget to the inner widget.
+So to apply the style "my_style" (not shown) with the full, absolute name, for
+the menubar and the scroll bar in Emacs we use:
+
+@smallexample
+widget "Emacs.pane.menubar" style "my_style"
+widget "Emacs.pane.emacs.verticalScrollBar" style "my_style"
+@end smallexample
+
+But to avoid having to type it all, wildcards are often used.  @samp{*}
+matches zero or more characters and @samp{?} matches one character.  So "*"
+matches all widgets.
+
+  Each widget has a class (for example GtkMenuItem) and a name (emacs-menuitem).
+You can assign styles by name or by class.  In this example we have used the
+class:
+
+@smallexample
+style "menufont"
+@{
+  font_name = "helvetica bold 14"
+@}
+
+widget_class "*GtkMenuBar" style "menufont"
+@end smallexample
+
+@noindent
+The names and classes for the GTK widgets Emacs uses are:
+
+@multitable {@code{verticalScrollbar plus}} {@code{GtkFileSelection} and some}
+@item @code{emacs-filedialog}
+@tab @code{GtkFileSelection}
+@item @code{emacs-dialog}
+@tab @code{GtkDialog}
+@item @code{Emacs}
+@tab @code{GtkWindow}
+@item @code{pane}
+@tab @code{GtkVHbox}
+@item @code{emacs}
+@tab @code{GtkFixed}
+@item @code{verticalScrollBar}
+@tab @code{GtkVScrollbar}
+@item @code{emacs-toolbar}
+@tab @code{GtkToolbar}
+@item @code{menubar}
+@tab @code{GtkMenuBar}
+@item @code{emacs-menuitem}
+@tab anything in menus
+@end multitable
+
+  GTK absolute names are quite strange when it comes to menus
+and dialogs.  The names do not start with @samp{Emacs}, as they are
+free-standing windows and not contained (in the GTK sense) by the
+Emacs GtkWindow.  To customize the dialogs and menus, use wildcards like this:
+
+@smallexample
+widget "*emacs-dialog*" style "my_dialog_style"
+widget "*emacs-filedialog* style "my_file_style"
+widget "*emacs-menuitem* style "my_menu_style"
+@end smallexample
+
+  If you specify a customization in @file{~/.emacs.d/gtkrc}, then it
+automatically applies only to Emacs, since other programs don't read
+that file.  For example, the drop down menu in the file dialog can not
+be customized by any absolute widget name, only by an absolute class
+name.  This is because the widgets in the drop down menu do not
+have names and the menu is not contained in the Emacs GtkWindow.  To
+have all menus in Emacs look the same, use this in
+@file{~/.emacs.d/gtkrc}:
+
+@smallexample
+widget_class "*Menu*" style "my_menu_style"
+@end smallexample
+
+  Here is a more elaborate example, showing how to change the parts of
+the scroll bar:
+
+@smallexample
+style "scroll"
+@{
+  fg[NORMAL] = "red"@ @ @ @ @ # @r{The arrow color.}
+  bg[NORMAL] = "yellow"@ @ # @r{The thumb and background around the arrow.}
+  bg[ACTIVE] = "blue"@ @ @ @ # @r{The trough color.}
+  bg[PRELIGHT] = "white"@ # @r{The thumb color when the mouse is over it.}
+@}
+
+widget "*verticalScrollBar*" style "scroll"
+@end smallexample
+@end iftex
+
+@ifnottex
+@cindex GTK resources and customization
+@cindex resource files for GTK
+@cindex @file{~/.gtkrc-2.0} file
+@cindex @file{~/.emacs.d/gtkrc} file
+
+  If Emacs was built to use the GTK widget set, then the menu bar, tool bar,
+scroll bar and the dialogs are customized with the standard GTK
+customization file, @file{~/.gtkrc-2.0}, or with the Emacs specific
+file @file{~/.emacs.d/gtkrc}.  We recommend that you use
+@file{~/.emacs.d/gtkrc} for customizations, since @file{~/.gtkrc-2.0}
+seems to be ignored when running GConf with GNOME.  These files apply
+only to GTK widget features.  To customize Emacs font, background,
+faces, etc., use the normal X resources (@pxref{Resources}).
+
+  Some GTK themes override these mechanisms, which means that using
+these mechanisms will not work to customize them.
+
+  In these files you first define a style and say what it means; then
+you specify to apply the style to various widget types (@pxref{GTK
+widget names}).  Here is an example of how to change the font for
+Emacs menus:
+
+@smallexample
+# @r{Define the style @samp{menufont}.}
+style "menufont"
+@{
+  font_name = "helvetica bold 14"  # This is a Pango font name
+@}
+
+# @r{Specify that widget type @samp{*emacs-menuitem*} uses @samp{menufont}.}
+widget "*emacs-menuitem*" style "menufont"
+@end smallexample
+
+  Here is a more elaborate example, showing how to change the parts of
+the scroll bar:
+
+@smallexample
+style "scroll"
+@{
+  fg[NORMAL] = "red"@ @ @ @ @ # @r{The arrow color.}
+  bg[NORMAL] = "yellow"@ @ # @r{The thumb and background around the arrow.}
+  bg[ACTIVE] = "blue"@ @ @ @ # @r{The trough color.}
+  bg[PRELIGHT] = "white"@ # @r{The thumb color when the mouse is over it.}
+@}
+
+widget "*verticalScrollBar*" style "scroll"
+@end smallexample
+
+  There are also parameters that affect GTK as a whole.  For example,
+the property @code{gtk-font-name} sets the default font for GTK.  You
+must use Pango font names (@pxref{GTK styles}).  A GTK resources file
+that just sets a default font looks like this:
+
+@smallexample
+gtk-font-name = "courier 12"
+@end smallexample
+
+  The GTK resources file is fully described in the GTK API document.
+This can be found in
+@file{@var{prefix}/share/gtk-doc/html/gtk/gtk-resource-files.html},
+where @file{prefix} is the directory in which the GTK libraries were
+installed (usually @file{/usr} or @file{/usr/local}).  You can also
+find the document online, at
+@uref{http://developer.gnome.org/doc/API/2.0/gtk/gtk-Resource-Files.html}.
+
+@menu
+* GTK widget names::      How widgets in GTK are named in general.
+* GTK Names in Emacs::    GTK widget names in Emacs.
+* GTK styles::            What can be customized in a GTK widget.
+@end menu
+
+@node GTK widget names
+@appendixsubsec GTK widget names
+@cindex GTK widget names
+
+  A GTK widget is specified by its @dfn{widget class} and
+@dfn{widget name}.  The widget class is the type of the widget: for
+example, @code{GtkMenuBar}.  The widget name is the name given to a
+specific widget.  A widget always has a class, but need not have a
+name.
+
+  @dfn{Absolute names} are sequences of widget names or widget
+classes, corresponding to hierarchies of widgets embedded within
+other widgets.  For example, if a @code{GtkWindow} named @code{top}
+contains a @code{GtkVBox} named @code{box}, which in turn contains
+a @code{GtkMenuBar} called @code{menubar}, the absolute class name
+of the menu-bar widget is @code{GtkWindow.GtkVBox.GtkMenuBar}, and
+its absolute widget name is @code{top.box.menubar}.
+
+  When assigning a style to a widget, you can use the absolute class
+name or the absolute widget name.
+
+  There are two commands to specify changes for widgets:
+
+@table @asis
+@item @code{widget_class}
+specifies a style for widgets based on the absolute class name.
+
+@item @code{widget}
+specifies a style for widgets based on the absolute class name,
+or just the class.
+@end table
+
+@noindent
+You must specify the class and the style in double-quotes, and put
+these commands at the top level in the GTK customization file, like
+this:
+
+@smallexample
+style "menufont"
+@{
+  font_name = "helvetica bold 14"
+@}
+
+widget "top.box.menubar" style "menufont"
+widget_class "GtkWindow.GtkVBox.GtkMenuBar" style "menufont"
+@end smallexample
+
+  Matching of absolute names uses shell wildcard syntax: @samp{*}
+matches zero or more characters and @samp{?} matches one character.
+This example assigns @code{base_style} to all widgets:
+
+@smallexample
+widget "*" style "base_style"
+@end smallexample
+
+  Given the absolute class name @code{GtkWindow.GtkVBox.GtkMenuBar}
+and the corresponding absolute widget name @code{top.box.menubar}, all
+these examples specify @code{my_style} for the menu bar:
+
+@smallexample
+widget_class "GtkWindow.GtkVBox.GtkMenuBar" style "my_style"
+widget_class "GtkWindow.*.GtkMenuBar" style "my_style"
+widget_class "*GtkMenuBar" style "my_style"
+widget "top.box.menubar" style "my_style"
+widget "*box*menubar" style "my_style"
+widget "*menubar" style "my_style"
+widget "*menu*" style "my_style"
+@end smallexample
+
+@node GTK Names in Emacs
+@appendixsubsec GTK Widget Names in Emacs
+@cindex GTK widget names
+@cindex GTK widget classes
+
+  In Emacs, the top level widget for a frame is a @code{GtkWindow}
+that contains a @code{GtkVBox}.  The @code{GtkVBox} contains the
+@code{GtkMenuBar} and a @code{GtkFixed} widget.  The vertical scroll
+bars, @code{GtkVScrollbar}, are contained in the @code{GtkFixed}
+widget.  The text you write in Emacs is drawn in the @code{GtkFixed}
+widget.
+
+  Dialogs in Emacs are @code{GtkDialog} widgets.  The file dialog is a
+@code{GtkFileSelection} widget.
+
+@noindent
+To set a style for the menu bar using the absolute class name, use:
+
+@smallexample
+widget_class "GtkWindow.GtkVBox.GtkMenuBar" style "my_style"
+@end smallexample
+
+@noindent
+For the scroll bar, the absolute class name is:
+
+@smallexample
+widget_class
+  "GtkWindow.GtkVBox.GtkFixed.GtkVScrollbar"
+     style "my_style"
+@end smallexample
+
+@noindent
+The names for the emacs widgets, and their classes, are:
+
+@multitable {@code{verticalScrollbar plus}} {@code{GtkFileSelection} and some}
+@item @code{emacs-filedialog}
+@tab @code{GtkFileSelection}
+@item @code{emacs-dialog}
+@tab @code{GtkDialog}
+@item @code{Emacs}
+@tab @code{GtkWindow}
+@item @code{pane}
+@tab @code{GtkVHbox}
+@item @code{emacs}
+@tab @code{GtkFixed}
+@item @code{verticalScrollBar}
+@tab @code{GtkVScrollbar}
+@item @code{emacs-toolbar}
+@tab @code{GtkToolbar}
+@item @code{menubar}
+@tab @code{GtkMenuBar}
+@item @code{emacs-menuitem}
+@tab anything in menus
+@end multitable
+
+@noindent
+Thus, for Emacs you can write the two examples above as:
+
+@smallexample
+widget "Emacs.pane.menubar" style "my_style"
+widget "Emacs.pane.emacs.verticalScrollBar" style "my_style"
+@end smallexample
+
+  GTK absolute names are quite strange when it comes to menus
+and dialogs.  The names do not start with @samp{Emacs}, as they are
+free-standing windows and not contained (in the GTK sense) by the
+Emacs GtkWindow.  To customize the dialogs and menus, use wildcards like this:
+
+@smallexample
+widget "*emacs-dialog*" style "my_dialog_style"
+widget "*emacs-filedialog* style "my_file_style"
+widget "*emacs-menuitem* style "my_menu_style"
+@end smallexample
+
+  If you specify a customization in @file{~/.emacs.d/gtkrc}, then it
+automatically applies only to Emacs, since other programs don't read
+that file.  For example, the drop down menu in the file dialog can not
+be customized by any absolute widget name, only by an absolute class
+name.  This is because the widgets in the drop down menu do not
+have names and the menu is not contained in the Emacs GtkWindow.  To
+have all menus in Emacs look the same, use this in
+@file{~/.emacs.d/gtkrc}:
+
+@smallexample
+widget_class "*Menu*" style "my_menu_style"
+@end smallexample
+
+@node GTK styles
+@appendixsubsec GTK styles
+@cindex GTK styles
+
+  In a GTK style you specify the appearance widgets shall have.  You
+can specify foreground and background color, background pixmap and
+font.  The edit widget (where you edit the text) in Emacs is a GTK
+widget, but trying to specify a style for the edit widget will have no
+effect.  This is so that Emacs compiled for GTK is compatible with
+Emacs compiled for other X toolkits.  The settings for foreground,
+background and font for the edit widget is taken from the X resources;
+@pxref{Resources}.  Here is an example of two style declarations,
+@samp{default} and @samp{ruler}:
+
+@smallexample
+pixmap_path "/usr/share/pixmaps:/usr/include/X11/pixmaps"
+
+style "default"
+@{
+  font_name = "helvetica 12"
+
+  bg[NORMAL] = @{ 0.83, 0.80, 0.73 @}
+  bg[SELECTED] = @{ 0.0, 0.55, 0.55 @}
+  bg[INSENSITIVE] = @{ 0.77, 0.77, 0.66 @}
+  bg[ACTIVE] = @{ 0.0, 0.55, 0.55 @}
+  bg[PRELIGHT] = @{ 0.0, 0.55, 0.55 @}
+
+  fg[NORMAL] = "black"
+  fg[SELECTED] = @{ 0.9, 0.9, 0.9 @}
+  fg[ACTIVE] = "black"
+  fg[PRELIGHT] = @{ 0.9, 0.9, 0.9 @}
+
+  base[INSENSITIVE] = "#777766"
+  text[INSENSITIVE] = @{ 0.60, 0.65, 0.57 @}
+
+  bg_pixmap[NORMAL] = "background.xpm"
+  bg_pixmap[INSENSITIVE] = "background.xpm"
+  bg_pixmap[ACTIVE] = "background.xpm"
+  bg_pixmap[PRELIGHT] = "<none>"
+
+@}
+
+style "ruler" = "default"
+@{
+  font_name = "helvetica 8"
+@}
+
+@end smallexample
+
+  The style @samp{ruler} inherits from @samp{default}.  This way you can build
+on existing styles.  The syntax for fonts and colors is described below.
+
+  As this example shows, it is possible to specify several values for
+foreground and background depending on the widget's @dfn{state}.  The
+possible states are:
+
+@table @code
+@item NORMAL
+This is the default state for widgets.
+@item ACTIVE
+This is the state for a widget that is ready to do something.  It is
+also for the trough of a scroll bar, i.e.  @code{bg[ACTIVE] = "red"}
+sets the scroll bar trough to red.  Buttons that have been pressed but
+not released yet (``armed'') are in this state.
+@item PRELIGHT
+This is the state for a widget that can be manipulated, when the mouse
+pointer is over it---for example when the mouse is over the thumb in
+the scroll bar or over a menu item.  When the mouse is over a button
+that is not pressed, the button is in this state.
+@item SELECTED
+This is the state for data that has been selected by the user.  It can
+be selected text or items selected in a list.  This state is not used
+in Emacs.
+@item INSENSITIVE
+This is the state for widgets that are visible, but they can not be
+manipulated in the usual way---for example, buttons that can't be
+pressed, and disabled menu items.  To display disabled menu items in
+yellow, use @code{fg[INSENSITIVE] = "yellow"}.
+@end table
+
+  Here are the things that can go in a style declaration:
+
+@table @code
+@item bg[@var{state}] = @var{color}
+This specifies the background color for the widget.  Note that
+editable text doesn't use @code{bg}; it uses @code{base} instead.
+
+@item base[@var{state}] = @var{color}
+This specifies the background color for editable text.  In Emacs, this
+color is used for the background of the text fields in the file
+dialog.
+
+@item bg_pixmap[@var{state}] = "@var{pixmap}"
+This specifies an image background (instead of a background color).
+@var{pixmap} should be the image file name.  GTK can use a number of
+image file formats, including XPM, XBM, GIF, JPEG and PNG.  If you
+want a widget to use the same image as its parent, use
+@samp{<parent>}.  If you don't want any image, use @samp{<none>}.
+@samp{<none>} is the way to cancel a background image inherited from a
+parent style.
+
+You can't specify the file by its absolute file name.  GTK looks for
+the pixmap file in directories specified in @code{pixmap_path}.
+@code{pixmap_path} is a colon-separated list of directories within
+double quotes, specified at the top level in a @file{gtkrc} file
+(i.e. not inside a style definition; see example above):
+
+@smallexample
+pixmap_path "/usr/share/pixmaps:/usr/include/X11/pixmaps"
+@end smallexample
+
+@item fg[@var{state}] = @var{color}
+This specifies the foreground color for widgets to use.  It is the
+color of text in menus and buttons, and the color for the arrows in
+the scroll bar.  For editable text, use @code{text}.
+
+@item text[@var{state}] = @var{color}
+This is the color for editable text.  In Emacs, this color is used for the
+text fields in the file dialog.
+
+@item font_name = "@var{font}"
+This specifies the font for text in the widget.  @var{font} is a
+Pango font name, for example @samp{Sans Italic 10}, @samp{Helvetica
+Bold 12}, @samp{Courier 14}, @samp{Times 18}.  See below for exact
+syntax.  The names are case insensitive.
+@end table
+
+  There are three ways to specify a color: by name, in hexadecimal
+form, and with an RGB triplet.
+
+@noindent
+A color name is written within double quotes, for example @code{"red"}.
+
+@noindent
+Hexadecimal form is the same as in X:
+@code{#@var{rrrr}@var{gggg}@var{bbbb}}, where all three color specs
+must have the same number of hex digits (1, 2, 3 or 4).
+
+@noindent
+An RGB triplet looks like @code{@{ @var{r}, @var{g}, @var{b} @}},
+where @var{r}, @var{g} and @var{b} are either integers in the range
+0-65535 or floats in the range 0.0-1.0.
+
+  Pango font names have the form ``@var{family-list} @var{style-options}
+@var{size}.''
+@cindex Pango font name
+@noindent
+@var{family-list} is a comma separated list of font families optionally
+terminated by a comma.  This way you can specify several families and the
+first one found will be used.  @var{family} corresponds to the second part in
+an X font name, for example in
+
+@smallexample
+-adobe-times-medium-r-normal--12-120-75-75-p-64-iso10646-1
+@end smallexample
+
+@noindent
+the family name is @samp{times}.
+
+@noindent
+@var{style-options} is a whitespace separated list of words where each word
+is a style, variant, weight, or stretch.  The default value for all of
+these is @code{normal}.
+
+@noindent
+A `style' corresponds to the fourth part of an X font name.  In X font
+names it is the character @samp{r}, @samp{i} or @samp{o}; in Pango
+font names the corresponding values are @code{normal}, @code{italic},
+or @code{oblique}.
+
+@noindent
+A `variant' is either @code{normal} or @code{small-caps}.
+Small caps is a font with the lower case characters replaced by
+smaller variants of the capital characters.
+
+@noindent
+Weight describes the ``boldness'' of a font.  It corresponds to the third
+part of an X font name.  It is one of @code{ultra-light}, @code{light},
+@code{normal}, @code{bold}, @code{ultra-bold}, or @code{heavy}.
+
+@noindent
+Stretch gives the width of the font relative to other designs within a
+family.  It corresponds to the fifth part of an X font name.  It is one of
+@code{ultra-condensed}, @code{extra-condensed}, @code{condensed},
+@code{semi-condensed}, @code{normal}, @code{semi-expanded},
+@code{expanded}, @code{extra-expanded}, or @code{ultra-expanded}.
+
+@noindent
+@var{size} is a decimal number that describes the font size in points.
+@end ifnottex
+
+@ignore
+   arch-tag: 9b6ff773-48b6-41f6-b2f9-f114b8bdd97f
+@end ignore