這裡介紹如何設定 xterm 虛擬終端機的配色,讓文字介面的命令列看起來也可以非常漂亮。

在 Linux 中若要讓命令列更好用,除了設定 xterm 的字型之外,佈景主題也是非常重要的一環,以下介紹 xterm 的終端機顏色設定方式。

XTerm 顏色設定檔

xterm 預設的終端機顏色設定一般是寫在 /etc/X11/app-defaults/XTerm-color 這個設定檔中,如果要更改顏色,可以直接從這裡修改,而其顏色的設定方式就是指定每一個 ANSI 色碼所對應的實際顏色,8 種 ANSI 色碼加上亮色系的色碼,總共有 16 種顏色。

! These are the 8 ANSI colors and their bright equivalents.  Depending on
! other resource settings, xterm may use the bright colors when displaying
! bold text (see the boldColors resource).
*VT100*color0: black
*VT100*color1: red3
*VT100*color2: green3
*VT100*color3: yellow3
*VT100*color4: blue2
*VT100*color5: magenta3
*VT100*color6: cyan3
*VT100*color7: gray90
*VT100*color8: gray50
*VT100*color9: red
*VT100*color10: green
*VT100*color11: yellow
*VT100*color12: rgb:5c/5c/ff
*VT100*color13: magenta
*VT100*color14: cyan
*VT100*color15: white

如果不想更動系統的設定檔,或是沒有權限修改,也可以從自己帳號的 ~/.Xresources 設定檔中加入顏色設定,設定方式跟 /etc/X11/app-defaults/XTerm-color 完全相同。

若要查看目前的設定,可以使用 appres 指令:

appres XTerm xterm | grep color

設定 16 種顏色的動作其實很繁瑣,建議可以從下面的佈景主題中挑選配好的顏色組合,既快速又方便。

XTerm 佈景主題

這裡我蒐集了許多 xterm 的佈景主題配色,這些設定都可以直接複製到 /etc/X11/app-defaults/XTerm-color 或個人的 ~/.Xresources 中使用。

xterm-theme-examples-01

Theme 01

! Theme 01
*VT100*background: rgb:00/00/00
*VT100*foreground: rgb:a8/a8/a8
*VT100*color0:     rgb:00/00/00
*VT100*color1:     rgb:a8/00/00
*VT100*color2:     rgb:00/a8/00
*VT100*color3:     rgb:a8/54/00
*VT100*color4:     rgb:00/00/a8
*VT100*color5:     rgb:a8/00/a8
*VT100*color6:     rgb:00/a8/a8
*VT100*color7:     rgb:a8/a8/a8
*VT100*color8:     rgb:54/50/54
*VT100*color9:     rgb:f8/54/50
*VT100*color10:    rgb:50/fc/50
*VT100*color11:    rgb:f8/fc/50
*VT100*color12:    rgb:50/54/f8
*VT100*color13:    rgb:f8/54/f8
*VT100*color14:    rgb:50/fc/f8
*VT100*color15:    rgb:f8/fc/f8
xterm-theme-examples-02

Theme 02

! Theme 02
*VT100*background: rgb:00/00/00
*VT100*foreground: rgb:7f/7f/7f
*VT100*color0:     rgb:00/00/00
*VT100*color1:     rgb:9e/18/28
*VT100*color2:     rgb:ae/ce/92
*VT100*color3:     rgb:96/8a/38
*VT100*color4:     rgb:41/41/71
*VT100*color5:     rgb:96/3c/59
*VT100*color6:     rgb:41/81/79
*VT100*color7:     rgb:be/be/be
*VT100*color8:     rgb:66/66/66
*VT100*color9:     rgb:cf/61/71
*VT100*color10:    rgb:c5/f7/79
*VT100*color11:    rgb:ff/f7/96
*VT100*color12:    rgb:41/86/be
*VT100*color13:    rgb:cf/9e/be
*VT100*color14:    rgb:71/be/be
*VT100*color15:    rgb:ff/ff/ff
xterm-theme-examples-03

Theme 03

! Theme 03
*VT100*background: rgb:00/00/00
*VT100*foreground: rgb:cf/cf/cf
*VT100*color0:     rgb:00/00/00
*VT100*color1:     rgb:e0/10/10
*VT100*color2:     rgb:20/ad/20
*VT100*color3:     rgb:d4/c2/4f
*VT100*color4:     rgb:23/1b/b8
*VT100*color5:     rgb:9c/38/85
*VT100*color6:     rgb:1d/bd/b8
*VT100*color7:     rgb:fe/fe/fe
*VT100*color8:     rgb:6a/6a/6a
*VT100*color9:     rgb:e8/3a/3d
*VT100*color10:    rgb:35/e9/56
*VT100*color11:    rgb:ff/ff/2f
*VT100*color12:    rgb:3a/53/f0
*VT100*color13:    rgb:e6/28/ba
*VT100*color14:    rgb:1c/f5/f5
*VT100*color15:    rgb:ff/ff/ff
xterm-theme-examples-04

Theme 04

! Theme 04
*VT100*background: rgb:00/00/00
*VT100*foreground: rgb:ff/ff/ff
*VT100*color0:     rgb:00/00/00
*VT100*color1:     rgb:d3/62/65
*VT100*color2:     rgb:ae/ce/91
*VT100*color3:     rgb:e7/e1/8c
*VT100*color4:     rgb:7a/7a/b0
*VT100*color5:     rgb:96/3c/59
*VT100*color6:     rgb:41/81/79
*VT100*color7:     rgb:be/be/be
*VT100*color8:     rgb:66/66/66
*VT100*color9:     rgb:ef/81/71
*VT100*color10:    rgb:e5/f7/79
*VT100*color11:    rgb:ff/f7/96
*VT100*color12:    rgb:41/86/be
*VT100*color13:    rgb:ef/9e/be
*VT100*color14:    rgb:71/be/be
*VT100*color15:    rgb:ff/ff/ff
xterm-theme-examples-05

Theme 05

! Theme 05
*VT100*background: rgb:ad/aa/ad
*VT100*foreground: rgb:00/00/00
*VT100*color0:     rgb:00/00/00
*VT100*color1:     rgb:64/0f/19
*VT100*color2:     rgb:63/79/6b
*VT100*color3:     rgb:ad/71/42
*VT100*color4:     rgb:4f/4f/89
*VT100*color5:     rgb:b2/5c/7c
*VT100*color6:     rgb:52/75/6b
*VT100*color7:     rgb:ad/aa/ad
*VT100*color8:     rgb:52/55/52
*VT100*color9:     rgb:a5/61/63
*VT100*color10:    rgb:ce/c2/63
*VT100*color11:    rgb:73/ae/70
*VT100*color12:    rgb:36/70/9f
*VT100*color13:    rgb:aa/82/9c
*VT100*color14:    rgb:51/89/89
*VT100*color15:    rgb:ff/ff/ef
xterm-theme-examples-06

Theme 06

! Theme 06
*VT100*background: rgb:be/be/be
*VT100*foreground: rgb:21/21/21
*VT100*color0:     rgb:00/00/00
*VT100*color1:     rgb:bf/72/76
*VT100*color2:     rgb:86/af/80
*VT100*color3:     rgb:96/8a/38
*VT100*color4:     rgb:36/73/b5
*VT100*color5:     rgb:9a/70/b2
*VT100*color6:     rgb:7a/be/cc
*VT100*color7:     rgb:db/db/db
*VT100*color8:     rgb:66/92/af
*VT100*color9:     rgb:e5/50/5f
*VT100*color10:    rgb:87/bc/87
*VT100*color11:    rgb:e0/d9/5c
*VT100*color12:    rgb:1b/85/d6
*VT100*color13:    rgb:ad/73/ba
*VT100*color14:    rgb:33/8e/aa
*VT100*color15:    rgb:f4/f4/f4
xterm-theme-examples-07

Theme 07

! Theme 07
*VT100*background: rgb:67/67/67
*VT100*foreground: rgb:ff/ff/ff
*VT100*color0:     rgb:00/00/00
*VT100*color1:     rgb:bf/46/46
*VT100*color2:     rgb:67/b2/5f
*VT100*color3:     rgb:cf/c4/4e
*VT100*color4:     rgb:51/60/83
*VT100*color5:     rgb:ca/6e/ff
*VT100*color6:     rgb:92/b2/f8
*VT100*color7:     rgb:d5/d5/d5
*VT100*color8:     rgb:00/00/00
*VT100*color9:     rgb:f4/8a/8a
*VT100*color10:    rgb:a5/d7/9f
*VT100*color11:    rgb:e1/da/84
*VT100*color12:    rgb:a2/bb/ff
*VT100*color13:    rgb:e2/b0/ff
*VT100*color14:    rgb:ba/cd/f8
*VT100*color15:    rgb:d5/d5/d5
xterm-theme-examples-08

Theme 08

! Theme 08
*VT100*background: rgb:10/10/10
*VT100*foreground: rgb:d3/d3/d3
*VT100*color0:     rgb:10/10/10
*VT100*color1:     rgb:cd/5c/5c
*VT100*color2:     rgb:2e/8b/57
*VT100*color3:     rgb:f0/e6/8c
*VT100*color4:     rgb:b0/c4/de
*VT100*color5:     rgb:ba/55/d3
*VT100*color6:     rgb:46/82/b4
*VT100*color7:     rgb:d3/d3/d3
*VT100*color8:     rgb:4d/4d/4d
*VT100*color9:     rgb:ff/6a/6a
*VT100*color10:    rgb:8f/bc/8f
*VT100*color11:    rgb:ff/fa/cd
*VT100*color12:    rgb:1e/90/ff
*VT100*color13:    rgb:db/70/93
*VT100*color14:    rgb:5f/9e/a0
*VT100*color15:    rgb:ff/ff/ff