🐧

Linux仮想ターミナルの背景色の設定方法

2023/02/01に公開

概要

Linuxは通常、デスクトップ環境と一緒に使用されることが多いですが、ブートプロセスや意図的(Ctrl+Alt+F2, Alt+F2などで)に仮想ターミナルを表示することができます。以下の説明では、この仮想ターミナルの背景色や文字色などを変更する方法を解説します。

setvtrgb

仮想ターミナルの色の変更は次のコマンドで行います。

setvtrgb FILE

引数FILEは10進数または、16進数のフォーマットを満たすテキストファイルのパスであり、10進数のフォーマットを利用するテンプレートは次のコマンドで生成することができます。

cat /sys/module/vt/parameters/default_{red,grn,blu} > FILE

色の設定方法

setvtrgbコマンドの引数へは以下のような内容を含むFILEを指定する必要があります。

FILE
0,170,0,170,0,170,0,170,85,255,85,255,85,255,85,255
0,0,170,85,0,0,170,170,85,85,255,255,85,85,255,255
0,0,0,0,170,170,170,170,85,85,85,85,255,255,255,255

この10進数のフォーマットは1行目から順に赤(red)、緑(grn)、青(blu)を意味しており、16個の要素は右から順にターミナルで利用されるANSIカラーパレットを表しています。

Normal Bright
Black 0 8
Red 1 9
Green 2 10
Yellow 3 11
Blue 4 12
Purple 5 13
Cyan 6 14
White 7 15

上の表のように0から順に対応しています。また、FILEのフォーマットのように読み難いこともあるので、16進数のフォーマットで表すこともできます。

FILE_HEX_TRIPLETS
#000000
#AA0000
#00AA00
#AA5500
#0000AA
#AA00AA
#00AAAA
#AAAAAA
#555555
#FF5555
#55FF55
#FFFF55
#5555FF
#FF55FF
#55FFFF
#FFFFFF

16進数のフォーマットも10進数と同様にsetvtrgbで指定するファイルに使用することができます。

カーネルパラメータによる変更の永続化

setvtrgbコマンドを実行しただけでは変更はそのセッション中のみに適用されるため、ログアウトや再起動で元に戻ります。変更を永続化するためにはカーネルパラメータとしてFILEの内容をロードする必要があります。ただし、カーネルパラメータに16進数の表記は使用できません。
次の4つのパラメータを設定します。

  • vt.color
  • vt.default_blu
  • vt.default_grn
  • vt.default_red

vt.colorは仮想ターミナルの文字色と背景色が設定されます。フォーマットは16進数2桁で0x<背景色><文字色>のように指定します。初期値は0x07です。これは一般的な灰色の文字に黒背景のターミナルとなります。例として、明るい緑の文字に白い背景へ変更する場合は0xFAのように設定します。
vt.default_blu以降のパラメータは前述の通り、10進数をコンマで区切った16個の数値を設定します。
カーネルパラメータはinitramfsやブートローダなど、いくつかの方法で設定することができますが、メジャーだと思われるGRUB2による設定を以下に説明します。

/etc/default/grub
# 省略
GRUB_CMDLINE_LINUX_DEFAULT='vt.color=0xFA vt.default_red=0,170,0,170,0,170,0,170,85,255,85,255,85,255,85,255 vt.default_grn=0,0,170,85,0,0,170,170,85,85,255,255,85,85,255,255 vt.default_blu=0,0,0,0,170,170,170,170,85,85,85,85,255,255,255,255'
# 省略

GRUB_CMDLINE_LINUX_DEFAULT行へパラメータ名=値をスペース区切りで追加してください。
最後に、以下のコマンドを実行することで設定ファイルを自動生成します。

grub-mkconfig -o /boot/grub/grub.cfg

参考

Discussion