はじめに
Terminal Glyph Patcherというスクリプトを書いたのでその宣伝です。
皆さんはpowerlineを使っていますか?
(画像はpowerline/powerlineより)
こういうやつですね。よく知らない人は入れてみると良いと思います。ターミナルがなんかかっこいい感じになります。
Powerline導入例
この記事は、powerlineの普通の見た目が気に食わなくなってしまった人向けの記事です。
自分だけのpowerline
Terminal Glyph Patcherを使うことでトンガリ三角形のpowerlineの呪縛から解放され、より自由な、自分好みのpowerlineを作ることができるようになります。
もう他人と同じ見た目のpowerlineに悩む必要はありません。
上の画像は実際にTerminal Glyph Patcherを使って作成したpowerline(のようなもの1)です。
類似事例
Powerline Extra Symbolsが似たようなことをやっています。
こちらはかなり大きなアイコンフォントの集合体たるNerd Fontsの一部に組み込まれているので、そっちで良いやという人はこれを使うと良いと思います。
しかしそちらを使うには私の環境では色々問題があったので自分でスクリプトを書くに至りました。
ここに至るまでの苦難:
Nerd fontとpowerlineとambiguous width
あとは、Powerline Extra Symbolsでは自分でグリフを作るというより、既に作者が作ったプリセットの中からpowerlineの区切り文字を選んで使う、という感じなので、自分で作りたい人はこの記事の方法を試してみると良いかもしれません。
カスタマイズの流れ
Terminal Glyph PatcherのGitHubにも書いてありますが簡単に説明します。
- SVGでグリフを書く
- Terminal Glyph Patcherのスクリプトを使って作成したグリフ(
.svg
)を既存のターミナルフォントに組み込む - パッチを当てたフォントをインストール、ターミナルに適用
- 追加したグリフに対応する文字コードを用いていい感じにステータスラインを書く
SVGでグリフが書けるというのがミソです。簡単。
Terminal Glyph Patcherがやっていることは大雑把にはあるUnicodeのコードポイントにSVGで書かれたグリフをマッピングすることなのですが、powerlineのようなステータスラインを構成するためのグリフに特化しています。
試してみる
1. リポジトリをcloneする
git clone https://github.com/s417-lama/terminal-glyph-patcher.git
2. プリセットのグリフでフォントを生成してみる
python-fontforge
が必要。インストール方法: Installing FontForge
cd terminal-glyph-patcher
fontforge -script terminal-glyph-patcher.py /path/to/your/font.ttf
これでパッチの当たったフォントが生成されるので、これをシステムにインストールしてターミナルに適用する。
3. exampleのステータスラインを表示してみる
./statusline_test.sh
環境によっては多少ズレているかもしれないがだいたい以下のように表示されるはず。
ここまでくればひとまずはOK。
次は自分好みにカスタマイズする話です。
4. 自分のグリフを区切り文字にしてみる
inkscapeか何かでSVGを描くだけで大丈夫です。svg/
ディレクトリ以下にプリセットのsvgがあるのでそれを編集してみるのが楽だと思います。
ほんとは少しパラメータを設定しなくてはいけないので、本当にカスタマイズしてみようと思ったらTerminal Glyph PatcherのREADMEを参照してください。
5. ズレを補正する
Nerd fontとpowerlineとambiguous widthでも書きましたが、環境とフォントによってズレが発生したり発生しなかったりします。
そもそもpowerlineは隣り合う文字について「文字の部分」と「背景」を同じ色にして少し重ねることでラインが繋がっているように見せるというちょっと強引なことをやっているので、多少の齟齬が生じてしまうのは仕方ないかなと思います。
ただ、環境に応じてパラメータを調整することで気にならないくらいのズレにすることができます。ズレの原因はフォントサイズ、画面の解像度、使っているターミナルエミュレータの種類の複合的な要因で決まっている気がするので、これといってちゃんとした解決があるわけではなさそうです。
パラメータ調整については同様にTerminal Glyph PatcherのREADMEを参照してください。
おわりに
powerlineを好きな見た目にするためのフォントを自分で生成するスクリプトTerminal Glyph Patcherを紹介しました。
自分の環境でしか試せていないので、動かなかったりしたらissueを飛ばしてくれたりすると喜びます。
最後にTerminal Glyph Patcherを使ってカスタマイズした自分のターミナルのスクショを貼って終わりにしようと思います。
powerlineは本来はpowerline/powerlineのようにshellやらvimやらtmuxやらのステータスラインを強力にする機能のごった煮みたいなものなのですが、ここでは機能の面は置いておいて見た目のみに言及しています。要は、あるグリフをステータスラインの区切りとして用いる手法のことをpowerlineとここでは呼んでいます。 ↩