Difference between revisions of "X resources"

From ArchWiki
Jump to: navigation, search
(Xterm resources: Traded "size" for "pixelsize"; "Regular" for "bold".)
(See also: move color samples to Color output in console)
 
(109 intermediate revisions by 26 users not shown)
Line 1: Line 1:
 +
[[Category:Dotfiles]]
 +
[[Category:X server]]
 
[[de:Xdefaults]]
 
[[de:Xdefaults]]
 +
[[ja:X resources]]
 
[[ru:X resources]]
 
[[ru:X resources]]
[[Category:Dotfiles]]
+
'''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.
[[Category:X Server]]
+
{{accuracy|reason=~/.Xresources is just a naming convention, xrdb can load any file (including here docs/strings). Additionally, Xorg does '''not''' automatically load the resources from ~/.Xresources - some display managers and desktop environments do.}}
+
'''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.
+
  
 
They can do many operations, including:
 
They can do many operations, including:
Line 15: Line 15:
 
* altering preferences on low-level X applications (xclock ({{Pkg|xorg-xclock}}), {{Pkg|xpdf}}, {{Pkg|rxvt-unicode}}, etc.)
 
* 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 when [[Xorg]] is started, storing the resources in the X server so the file does not need to be re-read.  You must re-run {{ic|xrdb ~/.Xresources}} every time you change the file, or restart Xorg.
+
  
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 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|
* If you use xrdb manually, you can put the file anywhere you want (for example, {{ic|~/.config/Xresources}}). However, when named {{ic|~/.Xresources}}, it will be loaded automatically by GDM, LightDM and possibly other DMs.
+
* Most [[Display manager]]s will 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>
 +
 
 +
{{Warning|Never 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 current 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 57: Line 68:
  
 
;name
 
;name
:The name of the application, such xterm, xpdf, etc
+
:The name of the application, such as xterm, xpdf, etc
  
 
;class
 
;class
Line 69: Line 80:
 
:* 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.
  
 
====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.  
 
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:
+
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 would write:
 +
 
 
  '''*'''Dialog.headingFont:    -*-fixed-bold-r-*-*-*-100-*-*-*-*-iso8859-1
 
  '''*'''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:
+
If you want to apply this same rule to all programs that contain the resource {{ic|headingFont}}, regardless of its class, you would write:
 +
 
 
  '''*'''headingFont:    -*-fixed-bold-r-*-*-*-100-*-*-*-*-iso8859-1
 
  '''*'''headingFont:    -*-fixed-bold-r-*-*-*-100-*-*-*-*-iso8859-1
  
====Commenting====
+
==== Commenting ====
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
+
To add a comment to your Xresources file, simply prefix it with an exclamation mark ({{ic|!}}), for example:
Xft.dpi:      96      ! this is an inline comment
+
  
 
  ! The following rule will be ignored because it has been commented out
 
  ! The following rule will be ignored because it has been commented out
 
  !Xft.antialias:        true
 
  !Xft.antialias:        true
  
==Sample usage==
+
==== Include files ====
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===
+
To use different files for each application, use {{ic|#include}} in the main file. For example:
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
+
{{hc|~/.Xresources|
*background: #111111
+
#include ".Xresources.d/xterm"
*foreground: #babdb6
+
#include ".Xresources.d/rxvt-unicode"
! Black (not tango) + DarkGrey
+
#include ".Xresources.d/fonts"
*color0:  #000000
+
#include ".Xresources.d/xscreensaver"
*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.
+
If files fail to load, specify the directory to ''xrdb'' with the {{ic|-I}} parameter. For example:
  
For more examples of color schemes, see the [[#Contributed examples]] section at the bottom of this article.
+
{{hc|~/.xinitrc|
 
+
xrdb -I''$HOME'' ~/.Xresources
===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}}.
+
 
+
===Xft resources===
+
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 ---------------------------------------------------------------
+
+
Xft.dpi:        96
+
Xft.antialias:  true
+
Xft.rgba:      rgb
+
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===
+
==Sample usage==
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.
+
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.
{{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===
+
===Terminal colors===
This command is useful to see what features that are supported by your terminal.
+
{{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==
+
See [[Color output in console#Terminal emulators]].
Any of the following scripts will display a chart of your current terminal color scheme.  Handy for testing and whatnot.
+
  
===Script #1===
+
=== Xcursor ===
{{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
+
See [[Cursor themes#X resources]].
  
echo -e "\n                40m    41m    42m    43m\
+
=== Xft ===
    44m    45m    46m    47m";
+
  
for FGs in '    m' '  1m' '  30m' '1;30m' '  31m' '1;31m' '  32m' \
+
See [[Font configuration#Applications without fontconfig support]].
          '1;32m' '  33m' '1;33m' '  34m' '1;34m' '  35m' '1;35m' \
+
          '  36m' '1;36m' '  37m' '1;37m';
+
  do FG=${FGs// /}
+
  echo -en " $FGs \033[$FG  $T  "
+
  for BG in 40m 41m 42m 43m 44m 45m 46m 47m;
+
    do echo -en "$EINS \033[$FG\033[$BG  $T  \033[0m";
+
  done
+
  echo;
+
done
+
echo
+
}}
+
  
===Script #2===
+
=== Xterm ===
{{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 "    ┌──────────────────────────────────────────────────────────────────────────┐"
+
See [[Xterm#Configuration]].
for b in {0..8}; do
+
  ((b>0)) && bg=$((b+39))
+
  
  echo -en "\033[0m ${BGNAMES[b]} │ "
+
=== rxvt-unicode ===
 
+
  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 [[Rxvt-unicode#Configuration]].
  echo -e "\033[0m"
+
  
  ((b<8)) &&
+
=== Xpdf ===
  echo "    ├──────────────────────────────────────────────────────────────────────────┤"
+
done
+
echo "    └──────────────────────────────────────────────────────────────────────────┘"
+
}}
+
  
===Script #3===
+
See {{ic|'''Options'''}} in [http://linux.die.net/man/1/xpdf man xpdf].
{{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
+
  
 +
== Troubleshooting ==
  
FGNAMES=(' black ' '  red  ' ' green ' ' yellow' '  blue ' 'magenta' '  cyan ' ' white ')
+
=== Parsing errors ===
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]} : "
+
[[Display manager]]s such as [[GDM]] may use the {{ic|--nocpp}} argument for ''xrdb''.
    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    : "
+
==See also==
    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 21:51, 11 August 2016

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.

They can do many operations, including:

  • defining terminal colours
  • configuring terminal preferences
  • setting DPI, antialiasing, hinting and other X font settings
  • changing the Xcursor theme
  • theming xscreensaver
  • altering preferences on low-level X applications (xclock (xorg-xclock), xpdf, rxvt-unicode, etc.)

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 will 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
Warning: Never 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 current 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.

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:

*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:

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

Commenting

To add a comment to your Xresources file, simply prefix it with an exclamation mark (!), for example:

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

Include files

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

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.

Terminal colors

See Color output in console#Terminal emulators.

Xcursor

See Cursor themes#X resources.

Xft

See Font configuration#Applications without fontconfig support.

Xterm

See Xterm#Configuration.

rxvt-unicode

See Rxvt-unicode#Configuration.

Xpdf

See Options in man xpdf.

Troubleshooting

Parsing errors

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

See also