Difference between revisions of "X resources"

From ArchWiki
Jump to: navigation, search
(clarify that ~/.Xresources isn't loaded by X itself, but instead by the DM or .xinitrc)
(Commenting: rename to #Comments, clarify)
 
(129 intermediate revisions by 32 users not shown)
Line 1: Line 1:
 +
[[Category:Configuration files]]
 +
[[Category:X server]]
 
[[de:Xdefaults]]
 
[[de:Xdefaults]]
 +
[[ja:X resources]]
 
[[ru:X resources]]
 
[[ru:X resources]]
[[Category:Dotfiles]]
+
{{Related articles start}}
[[Category:X Server]]
+
{{Related|X Logical Font Description}}
{{accuracy|reason=xrdb can load any file (including here docs/strings).}}
+
{{Related|dotfiles}}
'''Xresources''' and '''Xdefaults''' are user-level configuration ''dotfiles'', typically located at {{ic|~/.Xresources}} and {{ic|~/.Xdefaults}}. They can be used to set [[Wikipedia:X resources|X resources]], which are configuration parameters for X client applications.
+
{{Related articles end}}
 +
'''Xresources''' is a user-level configuration ''dotfile'', typically located at {{ic|~/.Xresources}}.
 +
It can be used to set [[Wikipedia:X resources|X resources]], which are configuration parameters for X client applications.
  
They can do many operations, including:
+
Among other things they can be used to:
  
* defining terminal colours
+
* configure terminal preferences (e.g. terminal colors)
* configuring terminal preferences
+
* set DPI, anti-aliasing, hinting and other X font settings
* setting DPI, antialiasing, hinting and other X font settings
+
* change the Xcursor theme
* changing the Xcursor theme
+
* theme [[XScreenSaver]]
* theming xscreensaver
+
* configure low-level X applications like: {{Pkg|xorg-xclock}}, {{Pkg|xpdf}}, [[rxvt-unicode]]
* altering preferences on low-level X applications (xclock ({{Pkg|xorg-xclock}}), {{Pkg|xpdf}}, {{Pkg|rxvt-unicode}}, etc.)
 
  
{{Note|Using {{ic|~/.Xdefaults}} is deprecated, so this article will only refer to resources loaded with xrdb}}
+
== Installation ==
  
==Getting started==
+
[[Install]] the {{pkg|xorg-xrdb}} package.
  
===Parsing .Xresources===
+
== Usage ==
The file {{ic|~/.Xresources}} does not exist by default. Being a plain-text file, you can create and edit it with the text editor of your choice.  Once present, it will be parsed by the {{ic|xrdb}} (Xorg resource database) program automatically provided that you either:
 
* are using a [[Display Manager]] to log into X. Most DM will autoload the {{ic|~/.Xresources}} file on login.
 
* if you are using {{ic|startx}}, you have to edit your {{ic|~/.[[xinitrc]]}}. See below for details. 
 
The resources will be stored in the X server so the file does not need to be read every time an app is started. 
 
  
To reread your .Xresources file, and throw away your old resources:
+
=== Load resource file ===
  
xrdb ~/.Xresources
+
Resources are stored in the X server, so have to only be read once. They are also accessible to ''remote'' X11 clients (such as those [[Secure_Shell#X11_forwarding|forwarded over SSH]]).
  
To reread your .Xresources file, and keep your old resources:
+
Load a resource file (such as the conventional {{ic|.Xresources}}), replacing any current settings:
  
  xrdb -merge ~/.Xresources
+
  $ xrdb ''~/.Xresources''
 +
 
 +
Load a resource file, and merge with the current settings:
 +
 
 +
$ xrdb -merge ''~/.Xresources''
  
 
{{Note|
 
{{Note|
* {{ic|.Xresources}} is just a naming convention, xrdb can load any file. If you use xrdb manually, you can put such a file anywhere you want (for example, {{ic|~/.config/Xresources}}).
+
* Most [[Display manager]]s load the {{ic|~/.Xresources}} file on login.
* If you background the execution of xrdb in a chain of commands in {{ic|~/.xinitrc}}, the programs launched in the same chain might not be able to make use of it, so it is recommended to ''never'' background the xrdb command within {{ic|~/.xinitrc}}.
+
* The older {{ic|~/.Xdefaults}} file is read when an X11 program starts, but only if ''xrdb'' has not been used in the current session. [https://groups.google.com/forum/#!msg/comp.windows.x/hQBEdql8l-Q/hF3DETcIHGwJ]
* Resources loaded with xrdb are also accessible to ''remote'' X11 clients (such as those forwarded over SSH).
 
* The older (deprecated) {{ic|~/.Xdefaults}} file is read every time you start an X11 program such as {{ic|xterm}}, but '''only''' if {{ic|xrdb}} has not '''ever''' been used in the current X session. [http://groups.google.com/group/comp.windows.x/msg/6c1c083711c35d84]
 
 
}}
 
}}
  
===Adding to xinitrc===
+
=== xinitrc ===
If you do not use a [[Desktop Environment|desktop environment]], you probably need to add the following line to your {{ic|~/.[[xinitrc]]}}:
+
 
  <nowiki>[[ -f ~/.Xresources ]] && xrdb -merge ~/.Xresources</nowiki>
+
If you are using a copy of the default [[xinitrc]] as your {{ic|.xinitrc}} it already merges {{ic|~/.Xresources}}.
 +
 
 +
If you are using a custom {{ic|.xinitrc}} add the following line:
 +
 
 +
  <nowiki>[[ -f ~/.Xresources ]] && xrdb -merge -I$HOME ~/.Xresources</nowiki>
 +
 
 +
{{Note|Do not background the xrdb command within {{ic|~/.xinitrc}}. Otherwise, programs launched after xrdb may look for resources before it has finished loading them.}}
 +
 
 +
=== Default settings ===
  
===Default settings===
 
 
To see the default settings for your installed X11 apps, look in {{ic|/usr/share/X11/app-defaults/}}.
 
To see the default settings for your installed X11 apps, look in {{ic|/usr/share/X11/app-defaults/}}.
  
Detailed information on program specific resources is usually provided in the man page for that app. Xterms manpage is a good example, containing a list of resources and the default value.
+
Detailed information on program-specific resources is usually provided in the man page for the program. xterm's man page is a good example, as it contains a list of X resources and their default values.
  
To see the current loaded resources:
+
To see the currently loaded resources:
  xrdb -query -all
+
 
 +
  $ xrdb -query -all
  
 
===Xresources syntax===
 
===Xresources syntax===
====The basic syntax====
+
 
 +
====Basic syntax====
 +
 
 
The syntax of an Xresources file is as follows:
 
The syntax of an Xresources file is as follows:
 
  '''name.Class.resource: value'''
 
  '''name.Class.resource: value'''
Line 60: Line 72:
  
 
;name
 
;name
:The name of the application, such xterm, xpdf, etc
+
:The name of the application, such as xterm, xpdf, etc
  
 
;class
 
;class
Line 72: Line 84:
 
:* Integer (whole numbers)
 
:* Integer (whole numbers)
 
:* Boolean (true/false, yes/no, on/off)
 
:* Boolean (true/false, yes/no, on/off)
:* String (a string of characters) (for example a word (white), a color (#ffffff), or a path (/usr/bin/firefox))
+
:* String (a string of characters) (for example a word ({{ic|white}}), a color ({{ic|#ffffff}}), or a path ({{ic|/usr/bin/firefox}}))
  
 
;delimiters
 
;delimiters
:A period ('''.''') is used to signify each step down into the hierarchy -- in the above example we start at name, then descend into Class, and finally into the resource itself. A colon (''':''') is used to separate the resource declaration from the actual value.
+
:A dot ({{ic|'''.'''}}) is used to signify each step down into the hierarchy — in the above example we start at name, then descend into Class, and finally into the resource itself. A colon ({{ic|''':'''}}) is used to separate the resource declaration from the actual value.
 +
 
 +
{{Note|For more information about Xresources file syntax see {{man|3|XrmGetDatabase|FILE_SYNTAX}}.}}
  
 
====Wildcard matching====
 
====Wildcard matching====
The asterisk can be used as a wildcard, making it easy to write a single rule that can be applied to many different applications or elements.
 
  
Using the previous example, if you want to apply the same font to all programs (not just xscreensaver) that contain the class name ''Dialog'' which contains the resource name ''headingFont'', you would write:
+
Question mark ({{ic|?}}) and asterisk ({{ic|*}}) can be used as wildcards, making it easy to write a single rule that can be applied to many different applications or elements. {{ic|?}} is used to match any single component name, while {{ic|*}} is used to represent any number of intervening components including none.
'''*'''Dialog.headingFont:    -*-fixed-bold-r-*-*-*-100-*-*-*-*-iso8859-1
 
  
If you want to apply this same rule to all programs that contain the resource ''headingFont'' regardless of its class, you would write:
+
Using the previous example, if you want to apply the same font to all programs (not just XScreenSaver) that contain the class name {{ic|Dialog}} which contains the resource name {{ic|headingFont}}, you could write:
'''*'''headingFont:    -*-fixed-bold-r-*-*-*-100-*-*-*-*-iso8859-1
 
  
====Commenting====
+
  '''?'''.Dialog.headingFont:     -*-fixed-bold-r-*-*-*-100-*-*-*-*-iso8859-1
To add a comment to your Xresources file, simply prefix it with an exclamation point (!), for example:
 
  ! This is a comment placed above some Xft settings
 
Xft.dpi:       96      ! this is an inline comment
 
  
! The following rule will be ignored because it has been commented out
+
If you want to apply this same rule to all programs that contain the resource {{ic|headingFont}}, regardless of its class, you could write:
!Xft.antialias:       true
 
  
==Sample usage==
+
'''*'''headingFont:    -*-fixed-bold-r-*-*-*-100-*-*-*-*-iso8859-1
The following samples should provide a good understanding of how application settings can be modified using an Xresources file. For full details, refer to the man page of the application in question.
 
  
===Terminal colors===
+
For more information about wildcard matching rules see {{man|3|XrmGetResource|MATCHING_RULES}}.
Most terminals, including [[xterm]] and [[urxvt]], support at least 16 basic colors. The following is an example of a 16-color scheme. The colors 0-7 are the 'normal' colors, while colors 8-15 are their 'bright' counterparts, used for highlighting and such. A good place to start when making your Xresources, is to define the default terminal colors:
 
{{bc|
 
! terminal colors ------------------------------------------------------------
 
  
! tangoesque scheme
+
==== Comments ====
*background: #111111
 
*foreground: #babdb6
 
! Black (not tango) + DarkGrey
 
*color0:  #000000
 
*color8:  #555753
 
! DarkRed + Red
 
*color1:  #ff6565
 
*color9:  #ff8d8d
 
! DarkGreen + Green
 
*color2:  #93d44f
 
*color10: #c8e7a8
 
! DarkYellow + Yellow
 
*color3:  #eab93d
 
*color11: #ffc123
 
! DarkBlue + Blue
 
*color4:  #204a87
 
*color12: #3465a4
 
! DarkMagenta + Magenta
 
*color5:  #ce5c00
 
*color13: #f57900
 
!DarkCyan + Cyan (both not tango)
 
*color6:  #89b6e2
 
*color14: #46a4ff
 
! LightGrey + White
 
*color7:  #cccccc
 
*color15: #ffffff
 
}}
 
  
See [[Man_Page#Colored_man_pages_on_xterm_or_rxvt-unicode]] for how to color bold and underlined text automatically xterm and rxvt.
+
Lines starting with an exclamation mark ({{ic|!}}) are ignored, for example:
  
For more examples of color schemes, see the [[#Contributed examples]] section at the bottom of this article.
+
  ! The following rule will be ignored because it has been commented out
 
+
  !Xft.antialias: true
===Xcursor resources===
 
Set the theme and size of your mouse cursor:
 
 
 
  ! Xcursor --------------------------------------------------------------------
 
   
 
Xcursor.theme: Vanilla-DMZ-AA
 
Xcursor.size:  22
 
  
Available themes reside in {{ic|/usr/share/icons}} and local themes can be installed to {{ic|~/.icons}}.
+
==== Include files ====
 +
{{Note|You need to have a C preprocessor, such as {{ic|GNU CPP}}, installed to use this functionality.}}
  
===Xft resources===
+
To use different files for each application, use {{ic|#include}} in the main file. For example:
You can define basic font resources without the need of a {{ic|fonts.conf}} file or a desktop environment. Note however, the use of a desktop environment and/or {{ic|fonts.conf}} can override these settings. Your best option is to use one or the other, but not both.
 
  
! Xft settings ---------------------------------------------------------------
+
{{hc|~/.Xresources|
+
#include ".Xresources.d/xterm"
Xft.dpi:        96
+
#include ".Xresources.d/rxvt-unicode"
Xft.antialias:  true
+
#include ".Xresources.d/fonts"
Xft.rgba:      rgb
+
#include ".Xresources.d/xscreensaver"
Xft.hinting:    true
 
Xft.hintstyle:  hintslight
 
 
 
===Xterm resources===
 
The following resources will open [[xterm]] in an 80x25 character window with a scroll-bar and scroll capability for the last 512 lines. The specified [[Fonts#Terminal|Terminus]] facename is a popular and clean terminal font.
 
 
 
! xterm ----------------------------------------------------------------------
 
 
xterm*VT100.geometry:    80x25
 
xterm*faceName:          Terminus:style=Regular:size=10
 
!xterm*font:              -*-dina-medium-r-*-*-16-*-*-*-*-*-*-*
 
xterm*dynamicColors:      true
 
xterm*utf8:              2
 
xterm*eightBitInput:      true
 
xterm*saveLines:          512
 
xterm*scrollKey:          true
 
xterm*scrollTtyOutput:    false
 
xterm*scrollBar:          true
 
xterm*rightScrollBar:    true
 
xterm*jumpScroll:        true
 
xterm*multiScroll:        true
 
xterm*toolBar:            false
 
 
 
===rxvt-unicode (urxvt) resources===
 
{{Pkg|rxvt-unicode}} features an extensive list of options which can be configured via {{ic|~/.Xresources}}. Refer to the urxvt man page or [[Urxvt#Creating_.7E.2F.Xresources|this wiki article]] for details.
 
 
 
===Aterm preferences===
 
Sample settings for aterm (very similar to urxvt):
 
 
 
!aterm settings-------------------------------------------------------------   
 
 
aterm*background:              black
 
aterm*foreground:              white
 
aterm*transparent:              true
 
aterm*shading:                  30
 
aterm*cursorColor:              gray
 
aterm*saveLines:                2000
 
!aterm*tinting:                gray
 
aterm*scrollBar:                false
 
!aterm*scrollBar_right:          true
 
aterm*transpscrollbar:          true
 
aterm*borderwidth:              0
 
aterm*font:                    -*-terminus-*-*-*-*-*-*-*-*-*-*-*-*
 
aterm*geometry:                80x25
 
!aterm*fading:                  70 
 
 
 
===Xpdf resources===
 
Following are some basic resources for [[xpdf]], a lightweight PDF viewer:
 
 
 
! xpdf -----------------------------------------------------------------------
 
 
xpdf*enableFreetype:    yes
 
xpdf*antialias:        yes
 
xpdf*foreground:        black
 
xpdf*background:        white
 
xpdf*urlCommand:        /usr/bin/firefox %s
 
 
 
Anything more detailed than the above you should be putting in {{ic|~/.xpdfrc}} instead. See the xpdf man page for more information. Note that {{ic|viKeys}} is deprecated.
 
 
 
===Lal clock resources===
 
 
 
! lal clock ------------------------------------------------------------------
 
 
lal*font:      Arial
 
lal*fontsize:  12
 
lal*bold:      true
 
lal*color:      #ffffff
 
lal*width:      150
 
lal*format:    %a %b %d %l:%M%P
 
 
 
===Xclock preferences===
 
Some basic xclock settings. See the xclock man page for all X resources.
 
 
 
! xclock ---------------------------------------------------------------------
 
 
xclock*update:            1
 
xclock*analog:            false
 
xclock*Foreground:        white
 
xclock*background:        black
 
 
 
===X11-ssh-askpass resources===
 
 
 
! x11-ssh-askpass ------------------------------------------------------------
 
 
x11-ssh-askpass*font:                  -*-dina-medium-r-*-*-12-*-*-*-*-*-*-*
 
x11-ssh-askpass*background:            #000000
 
x11-ssh-askpass*foreground:            #ffffff
 
x11-ssh-askpass.Button*background:      #000000
 
x11-ssh-askpass.Indicator*foreground:  #ff9900
 
x11-ssh-askpass.Indicator*background:  #090909
 
x11-ssh-askpass*topShadowColor:        #000000
 
x11-ssh-askpass*bottomShadowColor:      #000000
 
x11-ssh-askpass.*borderWidth:          1
 
 
 
===XScreenSaver resources===
 
The following is a sample [[Xscreensaver|XScreenSaver]] theme. For more information, refer to the XScreenSaver man page.
 
 
 
{{Note|If the {{ic|~/.xscreensaver}} file exists, it overrides any settings in the X resource database.}}
 
 
 
! xscreensaver ---------------------------------------------------------------
 
 
!font settings
 
xscreensaver.Dialog.headingFont:        -*-dina-bold-r-*-*-12-*-*-*-*-*-*-*
 
xscreensaver.Dialog.bodyFont:          -*-dina-medium-r-*-*-12-*-*-*-*-*-*-*
 
xscreensaver.Dialog.labelFont:          -*-dina-medium-r-*-*-12-*-*-*-*-*-*-*
 
xscreensaver.Dialog.unameFont:          -*-dina-medium-r-*-*-12-*-*-*-*-*-*-*
 
xscreensaver.Dialog.buttonFont:        -*-dina-bold-r-*-*-12-*-*-*-*-*-*-*
 
xscreensaver.Dialog.dateFont:          -*-dina-medium-r-*-*-12-*-*-*-*-*-*-*
 
xscreensaver.passwd.passwdFont:        -*-dina-bold-r-*-*-12-*-*-*-*-*-*-*
 
!general dialog box (affects main hostname, username, password text)
 
xscreensaver.Dialog.foreground:        #ffffff
 
xscreensaver.Dialog.background:        #111111
 
xscreensaver.Dialog.topShadowColor:    #111111
 
xscreensaver.Dialog.bottomShadowColor:  #111111
 
xscreensaver.Dialog.Button.foreground:  #666666
 
xscreensaver.Dialog.Button.background:  #ffffff
 
!username/password input box and date text colour
 
xscreensaver.Dialog.text.foreground:    #666666
 
xscreensaver.Dialog.text.background:    #ffffff
 
xscreensaver.Dialog.internalBorderWidth:24
 
xscreensaver.Dialog.borderWidth:        20
 
xscreensaver.Dialog.shadowThickness:    2
 
!timeout bar (background is actually determined by Dialog.text.background)
 
xscreensaver.passwd.thermometer.foreground:  #ff0000
 
xscreensaver.passwd.thermometer.background:  #000000
 
xscreensaver.passwd.thermometer.width:      8
 
!datestamp format--see the strftime(3) manual page for details
 
xscreensaver.dateFormat:    %I:%M%P %a %b %d, %Y
 
 
 
===Xcalc resources===
 
Following are some xcalc resources to colorize and customize buttons.
 
 
 
!xcalc-----------------------------------------------------------------------
 
 
xcalc*geometry:                        200x275
 
xcalc.ti.bevel.background:            #111111
 
xcalc.ti.bevel.screen.background:      #000000
 
xcalc.ti.bevel.screen.DEG.background:  #000000
 
xcalc.ti.bevel.screen.DEG.foreground:  LightSeaGreen
 
xcalc.ti.bevel.screen.GRAD.background: #000000
 
xcalc.ti.bevel.screen.GRAD.foreground: LightSeaGreen
 
xcalc.ti.bevel.screen.RAD.background:  #000000
 
xcalc.ti.bevel.screen.RAD.foreground:  LightSeaGreen
 
xcalc.ti.bevel.screen.INV.background:  #000000
 
xcalc.ti.bevel.screen.INV.foreground:  Red
 
xcalc.ti.bevel.screen.LCD.background:  #000000
 
xcalc.ti.bevel.screen.LCD.foreground:  LightSeaGreen
 
xcalc.ti.bevel.screen.LCD.shadowWidth: 0
 
xcalc.ti.bevel.screen.M.background:    #000000
 
xcalc.ti.bevel.screen.M.foreground:    LightSeaGreen
 
xcalc.ti.bevel.screen.P.background:    #000000
 
xcalc.ti.bevel.screen.P.foreground:    Yellow
 
xcalc.ti.Command.foreground:  White
 
xcalc.ti.Command.background:  #777777
 
xcalc.ti.button5.background:  Orange3
 
xcalc.ti.button19.background: #611161
 
xcalc.ti.button18.background: #611161
 
xcalc.ti.button20.background: #611111
 
!uncomment to change label on division button
 
!xcalc.ti.button20.label:      /
 
xcalc.ti.button25.background: #722222
 
xcalc.ti.button30.background: #833333
 
xcalc.ti.button35.background: #944444
 
xcalc.ti.button40.background: #a55555
 
xcalc.ti.button22.background: #222262
 
xcalc.ti.button23.background: #222262
 
xcalc.ti.button24.background: #222272
 
xcalc.ti.button27.background: #333373
 
xcalc.ti.button28.background: #333373
 
xcalc.ti.button29.background: #333373
 
xcalc.ti.button32.background: #444484
 
xcalc.ti.button33.background: #444484
 
xcalc.ti.button34.background: #444484
 
xcalc.ti.button37.background: #555595
 
xcalc.ti.button38.background: #555595
 
xcalc.ti.button39.background: #555595
 
XCalc*Cursor:                hand2
 
XCalc*ShapeStyle:            rectangle
 
 
 
==Color scheme commands==
 
Here are some fast bash commands you can run right in your shell.
 
 
 
===Display all 256 colors===
 
Prints all 256 colors across the screen, very quick.
 
<nowiki>(x=`tput op` y=`printf %76s`;for i in {0..256};do o=00$i;echo -e ${o:${#o}-3:3} `tput setaf $i;tput setab $i`${y// /=}$x;done)</nowiki>
 
 
 
===Display tput escape codes===
 
Replace 'tput op' with whatever tput you want to trace. '''op''' is the default foreground and background color.
 
{{hc
 
|<nowiki>$ ( strace -s5000 -e write tput op 2>&2 2>&1 ) | tee -a /dev/stderr | grep -o '"[^"]*"'</nowiki>
 
|033[\033[1;34m"\33[39;49m"\033[00m
 
 
}}
 
}}
  
===Enumerating colors supported by terminals===
+
If files fail to load, specify the directory to ''xrdb'' with the {{ic|-I}} parameter. For example:
The following command will let you discover all the terminals you have terminfo support for, and the number of colors each terminal supports. The possible values are: 8, 15, 16, 52, 64, 88 and 256.
 
{{hc
 
|<nowiki>$ for T in `find /usr/share/terminfo -type f -printf '%f '`;do echo "$T `tput -T $T colors`";done|sort -nk2</nowiki>
 
|Eterm-88color 88
 
rxvt-88color 88
 
xterm+88color 88
 
xterm-88color 88
 
Eterm-256color 256
 
gnome-256color 256
 
konsole-256color 256
 
putty-256color 256
 
rxvt-256color 256
 
screen-256color 256
 
screen-256color-bce 256
 
screen-256color-bce-s 256
 
screen-256color-s 256
 
xterm+256color 256
 
xterm-256color 256
 
}}
 
  
===Enumerating terminal capabilities===
+
{{hc|~/.xinitrc|
This command is useful to see what features that are supported by your terminal.
+
xrdb -I''$HOME'' ~/.Xresources
{{hc
 
|<nowiki>$ infocmp -1 | sed -nu 's/^[ \000\t]*//;s/[ \000\t]*$//;/[^ \t\000]\{1,\}/!d;/acsc/d;s/=.*,//p'|column -c80</nowiki>
 
|bel cuu ich kb2 kf15 kf3 kf44 kf59 mc0 rmso smul
 
blink cuu1 il kbs kf16 kf30 kf45 kf6 mc4 rmul tbc
 
bold cvvis il1 kcbt kf17 kf31 kf46 kf60 mc5 rs1 u6
 
cbt dch ind kcub1 kf18 kf32 kf47 kf61 meml rs2 u7
 
civis dch1 indn kcud1 kf19 kf33 kf48 kf62 memu sc u8
 
clear dl initc kcuf1 kf2 kf34 kf49 kf63 op setab u9
 
cnorm dl1 invis kcuu1 kf20 kf35 kf5 kf7 rc setaf vpa
 
 
}}
 
}}
  
==Color scheme scripts==
+
=== Getting resource values ===
Any of the following scripts will display a chart of your current terminal color scheme.  Handy for testing and whatnot.
 
  
===Script #1===
+
If you want to get the value of a resource (for example if you want to use it in a bash script) you can use {{AUR|xgetres}}:
{{bc|1=
 
#!/bin/bash
 
#
 
#  This file echoes a bunch of color codes to the  
 
#  terminal to demonstrate what's available.  Each
 
#  line is the color code of one forground color,
 
#  out of 17 (default + 16 escapes), followed by a
 
#  test use of that color on all nine background
 
#  colors (default + 8 escapes).
 
#
 
  
T='gYw'  # The test text
+
$ xgetres xscreensaver.Dialog.headingFont
 +
-*-fixed-bold-r-*-*-*-100-*-*-*-*-iso8859-1
  
echo -e "\n                40m    41m    42m    43m\
+
== Sample usage ==
    44m    45m    46m    47m";
+
The following samples should provide a good understanding of how application settings can be modified using an Xresources file. See [https://gist.github.com/anonymous/fa98de9fd70b51611303] for more examples. Refer to the man page of the application in question otherwise.
  
for FGs in '    m' '  1m' '  30m' '1;30m' '  31m' '1;31m' '  32m' \
+
* [[Color output in console#Terminal emulators]]
          '1;32m' '  33m' '1;33m' '  34m' '1;34m' '  35m' '1;35m' \
+
* [[Cursor themes#X resources]]
          '  36m' '1;36m' '  37m' '1;37m';
+
* [[Font configuration#Applications without fontconfig support]]
  do FG=${FGs// /}
+
* [[Xterm#Configuration]]
  echo -en " $FGs \033[$FG  $T  "
+
* [[rxvt-unicode#Configuration]]
  for BG in 40m 41m 42m 43m 44m 45m 46m 47m;
+
* {{man|1|xpdf|OPTIONS}}
    do echo -en "$EINS \033[$FG\033[$BG  $T  \033[0m";
 
  done
 
  echo;
 
done
 
echo
 
}}
 
  
===Script #2===
+
== Troubleshooting ==
{{bc|1=
 
#!/bin/bash
 
# Original: http://frexx.de/xterm-256-notes/
 
#          http://frexx.de/xterm-256-notes/data/colortable16.sh
 
# Modified by Aaron Griffin
 
# and further by Kazuo Teramoto
 
FGNAMES=(' black ' '  red  ' ' green ' ' yellow' '  blue ' 'magenta' '  cyan ' ' white ')
 
BGNAMES=('DFT' 'BLK' 'RED' 'GRN' 'YEL' 'BLU' 'MAG' 'CYN' 'WHT')
 
  
echo "    ┌──────────────────────────────────────────────────────────────────────────┐"
+
=== Parsing errors ===
for b in {0..8}; do
 
  ((b>0)) && bg=$((b+39))
 
  
  echo -en "\033[0m ${BGNAMES[b]} │ "
+
[[Display manager]]s such as [[GDM]] may use the {{ic|--nocpp}} argument for ''xrdb''.
 
 
  for f in {0..7}; do
 
    echo -en "\033[${bg}m\033[$((f+30))m ${FGNAMES[f]} "
 
  done
 
 
 
  echo -en "\033[0m │"
 
  echo -en "\033[0m\n\033[0m    │ "
 
 
 
  for f in {0..7}; do
 
    echo -en "\033[${bg}m\033[1;$((f+30))m ${FGNAMES[f]} "
 
  done
 
  
  echo -en "\033[0m │"
+
==See also==
  echo -e "\033[0m"
 
 
 
  ((b<8)) &&
 
  echo "    ├──────────────────────────────────────────────────────────────────────────┤"
 
done
 
echo "    └──────────────────────────────────────────────────────────────────────────┘"
 
}}
 
 
 
===Script #3===
 
{{bc|1=
 
#!/bin/bash
 
# Original: http://frexx.de/xterm-256-notes/
 
#          http://frexx.de/xterm-256-notes/data/colortable16.sh
 
# Modified by Aaron Griffin
 
# and further by Kazuo Teramoto
 
 
 
 
 
FGNAMES=(' black ' '  red  ' ' green ' ' yellow' '  blue ' 'magenta' '  cyan ' ' white ')
 
BGNAMES=('DFT' 'BLK' 'RED' 'GRN' 'YEL' 'BLU' 'MAG' 'CYN' 'WHT')
 
echo "    ----------------------------------------------------------------------------"
 
for b in $(seq 0 8); do
 
    if [ "$b" -gt 0 ]; then
 
      bg=$(($b+39))
 
    fi
 
 
 
    echo -en "\033[0m ${BGNAMES[$b]} : "
 
    for f in $(seq 0 7); do
 
      echo -en "\033[${bg}m\033[$(($f+30))m ${FGNAMES[$f]} "
 
    done
 
    echo -en "\033[0m :"
 
 
 
    echo -en "\033[0m\n\033[0m    : "
 
    for f in $(seq 0 7); do
 
      echo -en "\033[${bg}m\033[1;$(($f+30))m ${FGNAMES[$f]} "
 
    done
 
    echo -en "\033[0m :"
 
        echo -e "\033[0m"
 
       
 
  if [ "$b" -lt 8 ]; then
 
    echo "    ----------------------------------------------------------------------------"
 
  fi
 
done
 
echo "    ----------------------------------------------------------------------------"
 
}}
 
 
 
===Script #4===
 
{{bc|1=
 
#!/usr/bin/env lua
 
 
 
function cl(e)
 
return string.format('\27[%sm', e)
 
end
 
 
 
function print_fg(bg, pre)
 
for fg = 30,37 do
 
fg = pre..fg
 
io.write(cl(bg), cl(fg), string.format(' %6s ', fg), cl(0))
 
end
 
end
 
 
 
for bg = 40,47 do
 
io.write(cl(0), ' ', bg, ' ')
 
print_fg(bg, ' ')
 
io.write('\n    ')
 
print_fg(bg, '1;')
 
io.write('\n\n')
 
end
 
 
 
-- Andres P
 
}}
 
 
 
===Script #5===
 
{{bc|1=
 
#!/bin/bash
 
#
 
# ANSI color scheme script featuring Space Invaders
 
#
 
# Original: http://crunchbanglinux.org/forums/post/126921/#p126921
 
# Modified by lolilolicon
 
#
 
 
 
f=3 b=4
 
for j in f b; do
 
  for i in {0..7}; do
 
    printf -v $j$i %b "\e[${!j}${i}m"
 
  done
 
done
 
bld=$'\e[1m'
 
rst=$'\e[0m'
 
 
 
cat << EOF
 
 
 
$f1  ▀▄  ▄▀    $f2 ▄▄▄████▄▄▄    $f3  ▄██▄    $f4  ▀▄  ▄▀    $f5 ▄▄▄████▄▄▄    $f6  ▄██▄  $rst
 
$f1 ▄█▀███▀█▄    $f2███▀▀██▀▀███  $f3▄█▀██▀█▄  $f4 ▄█▀███▀█▄    $f5███▀▀██▀▀███  $f6▄█▀██▀█▄$rst
 
$f1█▀███████▀█  $f2▀▀███▀▀███▀▀  $f3▀█▀██▀█▀  $f4█▀███████▀█  $f5▀▀███▀▀███▀▀  $f6▀█▀██▀█▀$rst
 
$f1▀ ▀▄▄ ▄▄▀ ▀  $f2 ▀█▄ ▀▀ ▄█▀    $f3▀▄    ▄▀  $f4▀ ▀▄▄ ▄▄▀ ▀  $f5 ▀█▄ ▀▀ ▄█▀    $f6▀▄    ▄▀$rst
 
 
 
$bld$f1▄ ▀▄  ▄▀ ▄  $f2 ▄▄▄████▄▄▄    $f3  ▄██▄    $f4▄ ▀▄  ▄▀ ▄  $f5 ▄▄▄████▄▄▄    $f6  ▄██▄  $rst
 
$bld$f1█▄█▀███▀█▄█  $f2███▀▀██▀▀███  $f3▄█▀██▀█▄  $f4█▄█▀███▀█▄█  $f5███▀▀██▀▀███  $f6▄█▀██▀█▄$rst
 
$bld$f1▀█████████▀  $f2▀▀▀██▀▀██▀▀▀  $f3▀▀█▀▀█▀▀  $f4▀█████████▀  $f5▀▀▀██▀▀██▀▀▀  $f6▀▀█▀▀█▀▀$rst
 
$bld$f1 ▄▀    ▀▄    $f2▄▄▀▀ ▀▀ ▀▀▄▄  $f3▄▀▄▀▀▄▀▄  $f4 ▄▀    ▀▄    $f5▄▄▀▀ ▀▀ ▀▀▄▄  $f6▄▀▄▀▀▄▀▄$rst
 
 
 
 
 
                                    $f7▌$rst
 
 
 
                                  $f7▌$rst
 
  
                              $f7    ▄█▄    $rst
 
                              $f7▄█████████▄$rst
 
                              $f7▀▀▀▀▀▀▀▀▀▀▀$rst
 
 
EOF
 
}}
 
 
===Script #6===
 
{{bc|1=
 
#!/usr/bin/env ruby
 
# coding: utf-8
 
 
# ANSI color scheme script
 
# Author: Ivaylo Kuzev < Ivo >
 
# Original: http://crunchbanglinux.org/forums/post/134749/#p134749
 
# Modified using Ruby.
 
 
CL = "\e[0m"
 
BO = "\e[1m"
 
 
R = "\e[31m"
 
G = "\e[32m"
 
Y = "\e[33m"
 
B = "\e[34m"
 
P = "\e[35m"
 
C = "\e[36m"
 
 
 
print <<EOF
 
 
#{BO}#{R}  ██████  #{CL} #{BO}#{G}██████  #{CL}#{BO}#{Y}  ██████#{CL} #{BO}#{B}██████ #{CL}  #{BO}#{P}  ██████#{CL} #{BO}#{C}  ███████#{CL}
 
#{BO}#{R}  ████████#{CL} #{BO}#{G}██    ██ #{CL}#{BO}#{Y}██ #{CL}      #{BO}#{B}██    ██#{CL} #{BO}#{P}██████ #{CL} #{BO}#{C} █████████#{CL}
 
#{R}  ██  ████#{CL} #{G}██  ████#{CL}#{Y} ████    #{CL} #{B}████  ██#{CL} #{P}████ #{CL}    #{C}█████ #{CL}
 
#{R}  ██    ██#{CL} #{G}██████ #{CL}#{Y}  ████████#{CL} #{B}██████ #{CL}  #{P}████████#{CL} #{C}██ #{CL}
 
 
EOF
 
}}
 
 
==Contributed examples==
 
Check out these links for some real world examples of X resource files, contributed by fellow community members.
 
{{Note|{{ic|~/.Xdefaults}} has the same syntax as {{ic|~/.Xresources}}, and it is recommended that you use {{ic|~/.Xresources}} because {{ic|~/.Xdefaults}} is deprecated upstream.}}
 
 
* http://dotfiles.org/~buttons/.Xdefaults
 
* http://code.suckless.org/hg/dextra/file/513faba2591f/dolby/Xdefaults
 
* http://github.com/jelly/dotfiles/tree/master/.Xdefaults
 
* https://github.com/sunaku/home/blob/master/.Xdefaults
 
 
==See also==
 
 
* [https://engineering.purdue.edu/ECN/Support/KB/Docs/UsingTheXdefaultsFil Using the Xdefaults File] - An in-depth article on how X interprets the Xdefaults file
 
* [https://engineering.purdue.edu/ECN/Support/KB/Docs/UsingTheXdefaultsFil Using the Xdefaults File] - An in-depth article on how X interprets the Xdefaults file
* [http://wiki.afterstep.org/index.php?title=Rxvt-Unicode_Configuration_Tutorial Rxvt-unicode Configuration Tutorial] - lots of information for urxvt users
 
* [http://mkaz.com/ref/xterm_colors.html Example Colors and their names] - listing of example colors and their color names for xterm and other X-applications.
 
* [http://web.archive.org/web/20090130061234/http://phraktured.net/terminal-colors/ Color Themes] - Extensive list of terminal color themes by Phraktured.
 
* [http://xcolors.net/ Xcolors.net] List of user-contributed terminal color themes.
 

Latest revision as of 14:45, 11 October 2018

Xresources is a user-level configuration dotfile, typically located at ~/.Xresources. It can be used to set X resources, which are configuration parameters for X client applications.

Among other things they can be used to:

  • configure terminal preferences (e.g. terminal colors)
  • set DPI, anti-aliasing, hinting and other X font settings
  • change the Xcursor theme
  • theme XScreenSaver
  • configure low-level X applications like: xorg-xclock, xpdf, rxvt-unicode

Installation

Install the xorg-xrdb package.

Usage

Load resource file

Resources are stored in the X server, so have to only be read once. They are also accessible to remote X11 clients (such as those forwarded over SSH).

Load a resource file (such as the conventional .Xresources), replacing any current settings:

$ xrdb ~/.Xresources

Load a resource file, and merge with the current settings:

$ xrdb -merge ~/.Xresources
Note:
  • Most Display managers load the ~/.Xresources file on login.
  • The older ~/.Xdefaults file is read when an X11 program starts, but only if xrdb has not been used in the current session. [1]

xinitrc

If you are using a copy of the default xinitrc as your .xinitrc it already merges ~/.Xresources.

If you are using a custom .xinitrc add the following line:

[[ -f ~/.Xresources ]] && xrdb -merge -I$HOME ~/.Xresources
Note: Do not background the xrdb command within ~/.xinitrc. Otherwise, programs launched after xrdb may look for resources before it has finished loading them.

Default settings

To see the default settings for your installed X11 apps, look in /usr/share/X11/app-defaults/.

Detailed information on program-specific resources is usually provided in the man page for the program. xterm's man page is a good example, as it contains a list of X resources and their default values.

To see the currently loaded resources:

$ xrdb -query -all

Xresources syntax

Basic syntax

The syntax of an Xresources file is as follows:

name.Class.resource: value

and here is a real world example:

xscreensaver.Dialog.headingFont: -*-fixed-bold-r-*-*-*-100-*-*-*-*-iso8859-1
name
The name of the application, such as xterm, xpdf, etc
class
The classification used to group resources together. Class names are typically uppercase.
resource
The name of the resource whose value is to be changed. Resources are typically lowercase with uppercase concatenation.
value
The actual value of the resource. This can be 1 of 3 types:
  • Integer (whole numbers)
  • Boolean (true/false, yes/no, on/off)
  • String (a string of characters) (for example a word (white), a color (#ffffff), or a path (/usr/bin/firefox))
delimiters
A dot (.) is used to signify each step down into the hierarchy — in the above example we start at name, then descend into Class, and finally into the resource itself. A colon (:) is used to separate the resource declaration from the actual value.
Note: For more information about Xresources file syntax see XrmGetDatabase(3).

Wildcard matching

Question mark (?) and asterisk (*) can be used as wildcards, making it easy to write a single rule that can be applied to many different applications or elements. ? is used to match any single component name, while * is used to represent any number of intervening components including none.

Using the previous example, if you want to apply the same font to all programs (not just XScreenSaver) that contain the class name Dialog which contains the resource name headingFont, you could write:

?.Dialog.headingFont:     -*-fixed-bold-r-*-*-*-100-*-*-*-*-iso8859-1

If you want to apply this same rule to all programs that contain the resource headingFont, regardless of its class, you could write:

*headingFont:    -*-fixed-bold-r-*-*-*-100-*-*-*-*-iso8859-1

For more information about wildcard matching rules see XrmGetResource(3).

Comments

Lines starting with an exclamation mark (!) are ignored, for example:

! The following rule will be ignored because it has been commented out
!Xft.antialias: true

Include files

Note: You need to have a C preprocessor, such as GNU CPP, installed to use this functionality.

To use different files for each application, use #include in the main file. For example:

~/.Xresources
#include ".Xresources.d/xterm"
#include ".Xresources.d/rxvt-unicode"
#include ".Xresources.d/fonts"
#include ".Xresources.d/xscreensaver"

If files fail to load, specify the directory to xrdb with the -I parameter. For example:

~/.xinitrc
xrdb -I$HOME ~/.Xresources

Getting resource values

If you want to get the value of a resource (for example if you want to use it in a bash script) you can use xgetresAUR:

$ xgetres xscreensaver.Dialog.headingFont
-*-fixed-bold-r-*-*-*-100-*-*-*-*-iso8859-1

Sample usage

The following samples should provide a good understanding of how application settings can be modified using an Xresources file. See [2] for more examples. Refer to the man page of the application in question otherwise.

Troubleshooting

Parsing errors

Display managers such as GDM may use the --nocpp argument for xrdb.

See also