1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-02-05 23:21:22 -08:00

Merge text from xresmini.

This commit is contained in:
Jan Djärv 2006-11-18 14:46:40 +00:00
parent fbb7c02f78
commit e8fd09cc7b

View file

@ -8,15 +8,25 @@
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, the Mac Carbon port emulates X
@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
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
`GTK resources', which we will also describe.
@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).
@ -57,6 +67,18 @@ 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
@ -95,9 +117,12 @@ borders, but overrides this value with 4 for the external border:
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.
@ -145,13 +170,19 @@ 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 and allows you to edit them.
Changes take effect immediately if you click on the @samp{Apply} button.
(See the @code{editres} man page for more details.)
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
@ -164,25 +195,31 @@ with the class that it belongs to:
@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 for text (or fontset name, @pxref{Fontsets}).
Font name (or fontset name, @pxref{Fontsets}) for @code{default} font.
@item @code{foreground} (class @code{Foreground})
Color name for text.
@ -197,14 +234,15 @@ 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 all frames created, not just the initial
one.
Note that this applies to the initial frame only.
@end ifnottex
@item @code{iconName} (class @code{Title})
Name to display in the icon.
@ -219,10 +257,16 @@ 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}. @xref{Lucid Resources}, and @ref{LessTif Resources}, for
how to control the appearance of the menu bar if you have one.
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.
@ -230,10 +274,12 @@ 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.
@ -241,12 +287,14 @@ 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}.
@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
@ -262,6 +310,7 @@ A value of 0 means wait as long as necessary.
@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.
@ -286,6 +335,7 @@ especially slow X client/server links.
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.
@ -296,6 +346,7 @@ The value should start with one of @samp{TrueColor},
@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
@ -358,6 +409,7 @@ Italic flag for face @var{face}---instead of @code{attributeSlant}.
@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}
@ -371,6 +423,14 @@ Emacs.pane.menubar.@var{resource}: @var{value}
@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
@ -378,37 +438,43 @@ Emacs.pane.menubar.font: 8x16
@noindent
Resources for @emph{non-menubar} toolkit pop-up menus have
@samp{menu*}, in like fashion. For example, to specify the font
@samp{8x16} for the pop-up menu items, write this:
@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} instead of @samp{menu}:
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 XCreateFontSet. To enable
multilingual menu text you specify a fontSet resource instead of the font
resource. If both font and fontSet resources are specified, the fontSet
resource is used. To specify
@samp{-*-helvetica-medium-r-*--*-120-*-*-*-*-*-*,*} for both the popup and
menu bar menus, write this:
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*fontSet: -*-helvetica-medium-r-*--*-120-*-*-*-*-*-*,*
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.}.
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:
@ -423,6 +489,7 @@ Color of the foreground.
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
@ -440,10 +507,12 @@ 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)
@ -576,10 +645,145 @@ 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
@ -996,6 +1200,7 @@ family. It corresponds to the fifth part of an X font name. It is one of
@noindent
@var{size} is a decimal number that describes the font size in points.
@end ifnottex
@ignore
arch-tag: 9b6ff773-48b6-41f6-b2f9-f114b8bdd97f