aboutsummaryrefslogtreecommitdiffstats
path: root/man
diff options
context:
space:
mode:
authorJan Djärv2003-01-19 21:50:03 +0000
committerJan Djärv2003-01-19 21:50:03 +0000
commit488dd4c404eba70d48e4ee70141b8abcce2f863b (patch)
tree741ec2bb5abe963b292521e3a478e716a4ebb999 /man
parent3c77dc44b8052a9bcb19486a605a861cf120b31e (diff)
downloademacs-488dd4c404eba70d48e4ee70141b8abcce2f863b.tar.gz
emacs-488dd4c404eba70d48e4ee70141b8abcce2f863b.zip
GTK version
Diffstat (limited to 'man')
-rw-r--r--man/ChangeLog7
-rw-r--r--man/xresources.texi395
2 files changed, 401 insertions, 1 deletions
diff --git a/man/ChangeLog b/man/ChangeLog
index 1b1f0ab7bc1..9f4f2c03ff9 100644
--- a/man/ChangeLog
+++ b/man/ChangeLog
@@ -1,3 +1,10 @@
12003-01-19 Jan D. <jan.h.d@swipnet.se>
2
3 * xresources.texi (GTK resources): New node.
4 (GTK widget names): New node.
5 (GTK names in Emacs): New node.
6 (GTK styles): New node.
7
12003-01-15 ShengHuo ZHU <zsh@cs.rochester.edu> 82003-01-15 ShengHuo ZHU <zsh@cs.rochester.edu>
2 9
3 * gnus.texi: Do not use `path' in several locations. 10 * gnus.texi: Do not use `path' in several locations.
diff --git a/man/xresources.texi b/man/xresources.texi
index 9312507b59f..e6451e76998 100644
--- a/man/xresources.texi
+++ b/man/xresources.texi
@@ -1,5 +1,5 @@
1@c This is part of the Emacs manual. 1@c This is part of the Emacs manual.
2@c Copyright (C) 1987,93,94,95,1997,2001 Free Software Foundation, Inc. 2@c Copyright (C) 1987,93,94,95,1997,2001,03 Free Software Foundation, Inc.
3@c See file emacs.texi for copying conditions. 3@c See file emacs.texi for copying conditions.
4@node X Resources, Antinews, Command Arguments, Top 4@node X Resources, Antinews, Command Arguments, Top
5@appendix X Options and Resources 5@appendix X Options and Resources
@@ -18,6 +18,7 @@ describes the X resources that Emacs recognizes and how to use them.
18* Face Resources:: X resources for customizing faces. 18* Face Resources:: X resources for customizing faces.
19* Lucid Resources:: X resources for Lucid menus. 19* Lucid Resources:: X resources for Lucid menus.
20* LessTif Resources:: X resources for LessTif and Motif menus. 20* LessTif Resources:: X resources for LessTif and Motif menus.
21* GTK resources:: Resources for GTK widgets.
21@end menu 22@end menu
22 23
23@node Resources 24@node Resources
@@ -520,3 +521,395 @@ The color for the border shadow, on the bottom and the right.
520@item topShadowColor 521@item topShadowColor
521The color for the border shadow, on the top and the left. 522The color for the border shadow, on the top and the left.
522@end table 523@end table
524
525
526@node GTK resources
527@appendixsec GTK resources
528@cindex GTK resources and customization
529@cindex resource files for GTK
530@cindex @file{~/.gtkrc-2.0} file
531@cindex @file{~/.emacs.d/gtkrc} file
532
533 If the Emacs installed at your site was built to use the GTK widget set,
534then the menu bar, scroll bar and the dialogs can be customized with
535the standard GTK @file{~/.gtkrc-2.0} file or with the Emacs specific
536@file{~/.emacs.d/gtkrc} file; note that these files are only for
537customizing specific GTK widget features. To customize Emacs font,
538background, faces etc., use the normal X resources, see @ref{Resources}.
539
540In these files you first defines a style and then how to apply that style
541to widgets (@pxref{GTK widget names}). Here is an example of how to
542change the font for Emacs menus:
543
544@smallexample
545# This is a comment.
546style "menufont"
547@{
548 font_name = "helvetica bold 14" # This is a Pango font name
549@}
550
551widget "*emacs-menuitem*" style "menufont"
552
553@end smallexample
554
555 There are some things you can set without using any style or widget name,
556which affect GTK as a whole. Most of these are poorly documented, but can
557be found in the `Properties' section of the documentation page for
558@code{GtkSetting}, in the GTK document references below.
559
560One property of interest is @code{gtk-font-name} which sets the default
561font for GTK; you must use Pango font names (@pxref{GTK styles}). A
562@file{~/.gtkrc-2.0} file that just sets a default font looks like this:
563
564@smallexample
565gtk-font-name = "courier 12"
566@end smallexample
567
568
569 If GTK at your site is installed under @var{prefix},
570the resource file syntax is fully described in the GTK API
571document
572@file{@var{prefix}/share/gtk-doc/html/gtk/gtk-resource-files.html}.
573@var{prefix} is usually @file{/usr} or @file{/usr/local}.
574You can find the same document online at
575@uref{http://developer.gnome.org/doc/API/2.0/gtk/gtk-Resource-Files.html}.
576
577
578@menu
579* GTK widget names:: How widgets in GTK are named in general.
580* GTK names in Emacs:: GTK widget names in Emacs.
581* GTK styles:: What can be customized in a GTK widget.
582@end menu
583
584
585@node GTK widget names
586@appendixsubsec GTK widget names
587@cindex GTK widget names
588
589 Widgets are specified by widget class or by widget name.
590The widget class is the type of the widget, for example @code{GtkMenuBar}.
591The widget name is the name given to a specific widget within a program.
592A widget always have a class but it is not mandatory to give a name to
593a widget. Absolute names are sequences of widget names or
594widget classes, corresponding to hierarchies of widgets embedded within
595other widgets. For example, if a @code{GtkWindow} contains a @code{GtkVBox}
596which in turn contains a @code{GtkMenuBar}, the absolute class name
597is @code{GtkWindow.GtkVBox.GtkMenuBar}.
598
599@noindent
600If the widgets are named ``top'', ``box'' and ``menubar'', the absolute
601widget name is @code{top.box.menubar},
602
603 When assigning a style to a widget, you can use the absolute class
604name or the absolute widget name.
605There are two commands: @code{widget_class} will assign a style to
606widgets, matching only against the absolute class name.
607The command @code{widget} will match the absolute widget name,
608but if there is no name for a widget in the hierarchy, the class is matched.
609These commands require the absolute name and the style name to be
610within double quotes. These commands are written at the top level in a
611@file{~/.gtkrc-2.0} file, like this:
612
613@smallexample
614style "menufont"
615@{
616 font_name = "helvetica bold 14"
617@}
618
619widget "top.box.menubar" style "menufont"
620widget_class "GtkWindow.GtkVBox.GtkMenuBar" style "menufont"
621@end smallexample
622
623
624 Matching of absolute names is done with shell ``glob'' syntax, that is
625@samp{*} matches zero or more characters and @samp{?} matches one character.
626So the following would assign @code{base_style} to all widgets:
627
628@smallexample
629widget "*" style "base_style"
630@end smallexample
631
632 Given the absolute class name @code{GtkWindow.GtkVBox.GtkMenuBar}
633and the corresponding absolute widget name @code{top.box.menubar},
634the following all assign @code{my_style} to the menu bar:
635
636@smallexample
637widget_class "GtkWindow.GtkVBox.GtkMenuBar" style "my_style"
638widget_class "GtkWindow.*.GtkMenuBar" style "my_style"
639widget_class "*GtkMenuBar" style "my_style"
640widget "top.box.menubar" style "my_style"
641widget "*box*menubar" style "my_style"
642widget "*menubar" style "my_style"
643widget "*menu*" style "my_style"
644@end smallexample
645
646@node GTK names in Emacs
647@appendixsubsec GTK names in Emacs
648@cindex GTK widget names
649@cindex GTK widget classes
650
651 In Emacs the top level widget for a frame is a @code{GtkWindow} that
652contains a @code{GtkVBox}. The @code{GtkVBox} contains the
653@code{GtkMenuBar} and a @code{GtkFixed} widget.
654The vertical scroll bars, @code{GtkVScrollbar},
655are contained in the @code{GtkFixed} widget.
656The text you write in Emacs is drawn in the @code{GtkFixed} widget.
657
658 Dialogs in Emacs are @code{GtkDialog} widgets. The file dialog is a
659@code{GtkFileSelection} widget.
660
661@noindent
662To set a style for the menu bar using the absolute class name, use:
663
664@smallexample
665widget_class "GtkWindow.GtkVBox.GtkMenuBar" style "my_style"
666@end smallexample
667
668@noindent
669For the scroll bar, the absolute class name is:
670
671@smallexample
672widget_class
673 "GtkWindow.GtkVBox.GtkFixed.GtkVScrollbar"
674 style "my_style"
675@end smallexample
676
677@noindent
678The names for the emacs widgets, and their classes, are:
679
680@multitable {@code{verticalScrollbar plus}} {@code{GtkFileSelection} and some}
681@item @code{emacs-filedialog}
682@tab @code{GtkFileSelection}
683@item @code{emacs-dialog}
684@tab @code{GtkDialog}
685@item @code{Emacs}
686@tab @code{GtkWindow}
687@item @code{pane}
688@tab @code{GtkVHbox}
689@item @code{emacs}
690@tab @code{GtkFixed}
691@item @code{menubar}
692@tab @code{GtkMenuBar}
693@item @code{verticalScrollbar}
694@tab @code{GtkVScrollbar}
695@item @code{emacs-menuitem}
696@tab anything in menus
697@end multitable
698
699@noindent
700Thus, for Emacs you can write the two examples above as:
701
702@smallexample
703widget "Emacs.pane.menubar" style "my_style"
704widget "Emacs.pane.emacs.verticalScrollbar" style "my_style"
705@end smallexample
706
707 GTK absolute names are quite strange when it comes to menus
708and dialogs. The names do not start with @samp{Emacs}, as they are
709free-standing windows and not contained (in the GTK sense) by the
710Emacs GtkWindow. To customize the dialogs and menus, use wildcards like this:
711
712@smallexample
713widget "*emacs-dialog*" style "my_dialog_style"
714widget "*emacs-filedialog* style "my_file_style"
715widget "*emacs-menuitem* style "my_menu_style"
716@end smallexample
717
718 An alternative is to put customization into @file{~/.emacs.d/gtkrc}.
719This file is only read by Emacs, so anything in @file{~/.emacs.d/gtkrc}
720affects Emacs but leaves other applications unaffected.
721For example, the drop down menu in the file dialog can not
722be customized by any absolute widget name, only by an absolute
723class name. This is so because the widgets in the drop down menu does not
724have names and the menu is not contained in the Emacs GtkWindow.
725To have all menus in Emacs look the same, use this in @file{~/.emacs.d/gtkrc}:
726
727@smallexample
728widget_class "*Menu*" style "my_menu_style"
729@end smallexample
730
731@node GTK styles
732@appendixsubsec GTK styles
733@cindex GTK styles
734
735 In a GTK style you specify the appearance widgets shall have. You
736can specify foreground and background color, background pixmap and font.
737The edit widget (where you edit the text) in Emacs is a GTK widget,
738but trying to specify a style for the edit widget will have no effect.
739This is so that Emacs compiled for GTK is compatible with Emacs compiled
740for other X toolkits. The settings for foreground, background and font
741for the edit widget is taken from the X resources; @pxref{Resources}.
742Here is an example of two style declarations, ``default'' and ``ruler'':
743
744@smallexample
745
746pixmap_path "/usr/share/pixmaps:/usr/include/X11/pixmaps"
747
748style "default"
749@{
750 font_name = "helvetica 12"
751
752 bg[NORMAL] = @{ 0.83, 0.80, 0.73 @}
753 bg[SELECTED] = @{ 0.0, 0.55, 0.55 @}
754 bg[INSENSITIVE] = @{ 0.77, 0.77, 0.66 @}
755 bg[ACTIVE] = @{ 0.0, 0.55, 0.55 @}
756 bg[PRELIGHT] = @{ 0.0, 0.55, 0.55 @}
757
758 fg[NORMAL] = "black"
759 fg[SELECTED] = @{ 0.9, 0.9, 0.9 @}
760 fg[ACTIVE] = "black"
761 fg[PRELIGHT] = @{ 0.9, 0.9, 0.9 @}
762
763 base[INSENSITIVE] = "#777766"
764 text[INSENSITIVE] = @{ 0.60, 0.65, 0.57 @}
765
766 bg_pixmap[NORMAL] = "background.xpm"
767 bg_pixmap[INSENSITIVE] = "background.xpm"
768 bg_pixmap[ACTIVE] = "background.xpm"
769 bg_pixmap[PRELIGHT] = "<none>"
770
771@}
772
773style "ruler" = "default"
774@{
775 font_name = "helvetica 8"
776@}
777
778@end smallexample
779
780 The style ``ruler'' inherits from ``default''. This way you can build
781on existing styles. The syntax for fonts and colors is described below.
782
783 As this example shows, it is possible to specify several values
784for foreground and background depending on which state the widget has.
785The possible states are
786@table @code
787@item NORMAL
788This is the default state for widgets.
789@item ACTIVE
790This is the state for a widget that is ready to do something. It is
791also for the trough of a scroll bar, i.e. @code{bg[ACTIVE] = "red"}
792sets the scroll bar trough to red. Buttons that have been pressed but
793not released yet (``armed'') are in this state.
794@item PRELIGHT
795This is the state when widgets that can be manipulated have the mouse
796pointer over them. For example when the mouse is over the thumb in the
797scroll bar or over a menu item. When the mouse is over a button that
798is not pressed, the button is in this state.
799@item SELECTED
800This is the state when some data has been selected by the user. It can
801be selected text or items selected in a list.
802There is no place in Emacs where this setting has any effect.
803@item INSENSITIVE
804This is the state for widgets that are visible, but they can not be
805manipulated like they normally can. For example, buttons that can't be
806pressed and menu items that can't be selected.
807Text for menu items that are not available can be set to yellow with
808@code{fg[INSENSITIVE] = "yellow"}.
809@end table
810
811Here are the things that can go in a style declaration:
812
813@table @code
814@item bg[@var{state}] = @var{color}
815This is the background color widgets use. This background is not used for
816editable text, use @code{base} for that.
817
818@item base[@var{state}] = @var{color}
819This is the background color for editable text.
820In Emacs, this color is used for the background of the text fields in the
821file dialog.
822
823@item bg_pixmap[@var{state}] = "@var{pixmap}"
824You can specify a pixmap to be used instead of the background color.
825@var{pixmap} is a file name. GTK can use a number of file formats,
826including XPM, XBM, GIF, JPEG and PNG. If you want a widget to use the same
827pixmap as its parent, use @samp{<parent>}. If you don't want any
828pixmap use @samp{<none>}. Using @samp{<none>} can be useful
829if your style inherits a style that does specify a pixmap.
830
831 GTK looks for the pixmap in directories specified in @code{pixmap_path}.
832It is not possible to refer to a file by its absolute path name.
833@code{pixmap_path} is a colon-separated list of directories within double
834quotes, specified at the top level in a @file{gtkrc} file (i.e. not inside
835a style definition; see example above):
836
837@smallexample
838pixmap_path "/usr/share/pixmaps:/usr/include/X11/pixmaps"
839@end smallexample
840
841@item fg[@var{state}] = @var{color}
842This is the foreground color widgets use. This is the color
843of text in menus and buttons. It is also the color for the arrows in the
844scroll bar. For editable text, use @code{text}.
845
846@item text[@var{state}] = @var{color}
847This is the color for editable text. In Emacs, this color is used for the
848text fields in the file dialog.
849
850@item font_name = "@var{font}"
851This is the font a widget shall use. @var{font} is a Pango font name,
852for example ``Sans Italic 10'', ``Helvetica Bold 12'', ``Courier 14'',
853``Times 18''. See below for exact syntax. The names are case insensitive.
854@end table
855
856 Colors are specified in three ways, a name, a hexadecimal form or
857an RGB triplet.
858
859@noindent
860A color name is written within double quotes, for example @code{"red"}.
861
862@noindent
863A hexadecimal form is written within double quotes. There are four forms,
864@code{#rrrrggggbbbb}, @code{#rrrgggbbb},
865@code{#rrggbb}, or @code{#rgb}. In each of these r, g and b are hex digits.
866
867@noindent
868An RGB triplet looks like @code{@{ r, g, b @}}, where r, g and b are either
869integers in the range 0-65535 or floats in the range 0.0-1.0.
870
871 Pango font names have the form ``@var{family-list} @var{style-options}
872@var{size}''.
873@cindex Pango font name
874@noindent
875@var{family-list} is a comma separated list of font families optionally
876terminated by a comma. This way you can specify several families and the
877first one found will be used. @var{family} corresponds to the second part in
878an X font name, for example in
879
880@smallexample
881-adobe-times-medium-r-normal--12-120-75-75-p-64-iso10646-1
882@end smallexample
883
884@noindent
885the family name is ``times''.
886
887@noindent
888@var{style-options} is a whitespace separated list of words where each word
889is a style, variant, weight, or stretch. The default value for all of
890these is @code{normal}.
891
892@noindent
893A `style' corresponds to the fourth part of an X font name. In X font
894names it is the character ``r'', ``i'' or ``o''; in Pango font names the
895corresponding values are @code{normal}, @code{italic}, or @code{oblique}.
896
897@noindent
898A `variant' is either @code{normal} or @code{small-caps}.
899Small caps is a font with the lower case characters replaced by
900smaller variants of the capital characters.
901
902@noindent
903Weight describes the ``boldness'' of a font. It corresponds to the third
904part of an X font name. It is one of @code{ultra-light}, @code{light},
905@code{normal}, @code{bold}, @code{ultra-bold}, or @code{heavy}.
906
907@noindent
908Stretch gives the width of the font relative to other designs within a
909family. It corresponds to the fifth part of an X font name. It is one of
910@code{ultra-condensed}, @code{extra-condensed}, @code{condensed},
911@code{semi-condensed}, @code{normal}, @code{semi-expanded},
912@code{expanded}, @code{extra-expanded}, or @code{ultra-expanded}.
913
914@noindent
915@var{size} is a decimal number that describes the font size in points.