XTerm customization

xterm is an underrated terminal emulator for the X Window System. It's powerful, customizable and lightweight. It supports 256 colors and UTF-8. It does not support tabs, but that's something which is actually not really useful, I prefer multiple xterm windows and I also use workspaces extensively because I use the i3 window manager.

Once xterm is started it looks awful, has a tiny font and lacks some features. To enable all of that simply create file .Xresources in your home directory and paste the following content (change USERNAME on line 8 to your username). The “!” at the beginning of a line marks a comment.

! info: pressing Alt+Enter toggles fullscreen,
! pressing Shift+Insert pastes X11 selection (also middle mouse button)

*customization: -color
xterm*termName: xterm-256color
xterm*utf8: 1

#include "/home/USERNAME/.local/share/colorthemes/numix.xres"

! truetype fonts are supported, you can also disable antialias
xterm*faceName: DejaVu Sans Mono:antialias=true
!xterm*faceName: DejaVu Sans Mono
xterm*faceSize: 10
xterm*renderFont: true

! adjust line spacing, 0.9 .. 1.5, default 1.0
!XTerm.vt100.scaleHeight: 1.05

! VT Font Menu: Unreadable
xterm*faceSize1: 6
! VT font menu: Tiny
xterm*faceSize2: 8
! VT font menu: Medium
xterm*faceSize3: 10
! VT font menu: Large
xterm*faceSize4: 12
! VT font menu: Huge
xterm*faceSize5: 14

! bitmap fonts are set like this, iso10646 is an alias for Unicode
!xterm*font: -xos4-terminus-medium-*-*-*-18-*-*-*-*-*-iso10646-1
! see also output of command "xterm -report-fonts"

! do not scroll when there is new input e.g. tail -f /var/syslog
xterm*scrollTtyOutput: false

! zoom in/out/reset, works on main keyboard (not on numpad)
! + handy keyboard shortcuts to jump to the beginning/end of buffer
! + Shift+mousebutton on selected text to open in default app
xterm*vt100.Translations: #override \
	Ctrl <Key> minus: smaller-vt-font() \n\
	Ctrl <Key> plus: larger-vt-font() \n\
	Ctrl <Key> 0: set-vt-font(d) \n\
	Ctrl <KeyPress> Home:  scroll-to(begin) \n\
	Ctrl <KeyPress> End:   scroll-to(end) \n\
	Shift <Btn1Up>: exec-formatted("xdg-open '%t'", PRIMARY)  select-start() select-end()

xterm*highlightSelection: true
! Remove trailing spaces
xterm*trimSelection: true

! Lines of output that you can scroll back over
xterm*saveLines: 4096

!XTerm.vt100.scrollBar: true
!XTerm.vt100.scrollbar.width: 8
!xterm.vt100.rightScrollBar: true

! XTerm uses the primary X11 selection buffer, which is different to the modern
! "ctrl+v" clipboard. With this setting enabled all selected text gets copied
! to the modern clipboard, so it can then be pasted with ctrl+v.
! You can also enable it temporarily with Ctrl+middle mouse button,
! check "selectToClipboard" there.
! Alternatively you could run `xsel -op | xsel -ib` to copy it manually.
!xterm*selectToClipboard: true

! Mouse pointer
XTerm*pointerColor: lime
XTerm*pointerColorBackground: black
!XTerm*cursorColor: #bab527
XTerm*cursorBlink: true

! make the bell character notify the window manager of urgency
xterm*bellIsUrgent: true

! do not send 8 bit input characters with Alt+ combinations, use normal Alt
xterm*vt100.metaSendsEscape: true

And this is the content of ~/.local/share/colorthemes/numix.xres

! THEME: Numix darkest

! special
xterm*foreground:   #a2a2a2
xterm*background:   #282828
xterm*cursorColor:  #a2a2a2

! black
xterm*color0:       #555555
xterm*color8:       #888888

! red
xterm*color1:       #9c3528
xterm*color9:       #d64937

! green
xterm*color2:       #61bc3b
xterm*color10:      #86df5d

! yellow
xterm*color3:       #f3b43a
xterm*color11:      #fdd75a

! blue
xterm*color4:       #0d68a8
xterm*color12:      #0f75bd

! magenta
xterm*color5:       #744560
xterm*color13:      #9e5e83

! cyan
xterm*color6:       #288e9c
xterm*color14:      #37c3d6

! white
xterm*color7:       #a2a2a2
xterm*color15:      #f9f9f9

After you have saved both files, run this command (as normal user, not root) xrdb -load .Xresources and that's it! Now every new xterm will look nice and have some useful features enabled. Look at the content of .Xresources, it is self-explanatory. Remember xterm has also 3 pop-up menus which can be accessed by Ctrl+mouse button (left/middle/right). Settings in those menus can be persistently enabled/disabled in the Xresources file.

If you would like to use another color theme I recommend having a look at Terminal Sexy, which is a well done web app with support for Xresources color format. You can even make xterm transparent with a composite manager.