OSCエスケープシーケンスを使ってGnomeターミナルで現在使っているセッションだけ文字色、背景色を変更する
Pocket

前々から、Linuxデスクトップで使えるターミナルエミュレーターで、 iTerm2のようにOSCエスケープのprintfからプロファイルを変更させる方法について調べていたのだけど、どうやら文字色・背景色であれば変更できるようだということがわかった。

OSCエスケープで文字色、背景色を変える場合、10、11を使うといいらしい。
RGBを00-ffで指定してやればいいようだ。

echo -ne '\e]10;#000000\a' # 文字色を変更
echo -ne '\e]11;#ffffff\a' # 背景色を変更
Sponsored Links

以下は実行例のコマンド。
こんな感じで背景色、文字色を指定できる。

echo -ne '\e]10;#ffffff\a\e]11;#000000\a'文字色を白、背景色を黒に
echo -ne '\e]10;#ffffff\a\e]11;#300000\a'文字色を白、背景色を赤に
echo -ne '\e]10;#ffffff\a\e]11;#003000\a'文字色を白、背景色を緑に
echo -ne '\e]10;#ffffff\a\e]11;#000030\a'文字色を白、背景色を青に
echo -ne '\e]10;#000000\a\e]11;#ffffff\a'文字色を黒、背景色を白に

 

以下は、Ubuntu 18.04 LTSでのGnome Terminalでの実行例。
OSCエスケープをprintしているターミナルだけ背景色、文字色が変わっているのがわかる。

 

以下はTerminatorでの実行例。
ちゃんと背景色、文字色を変更できている。

 

これなら、ssh接続時に自動で背景色を変えたりといったことも簡単にできそうだ。

 

Pocket

Written by blacknon

インフラエンジニア(…のつもり)。 仕事で使うならクライアントはWindowsよりはUNIXの方が好き。 大体いつも眠い。

Leave a Comment

メールアドレスが公開されることはありません。

*