Powerlineが広がる機運?

前々回、前回と続けて新しいフォント「Cascadia Code」について取り上げてきた。合字の有り/無し、Powerline対応グリフの有り/無しで、今のCascadia Codeには合計4つのバリエーションが存在している。

Powerlineという機能(と言うか、フォントと言うか、その利用例と言うか……)は、Linuxでは数年前から一部のユーザーや開発者の間では注目されており、すでに利用している方も多いと思う。しかし、WindowsやmacOSではそれほど使われていないようだ。今回、Cascadia CodeにPowerlineグリフ版が登場したことは、この機能を利用する良い機会になるだろう。WSLを通じてWindowsにおけるLinuxの利用が簡単になったこと、Windows Terminalが登場したことなどもこれを後押ししている。

今回はPowerlineをシェルで使う方法を取り上げる。まず、OSにCascadia Codeフォントをインストールしておく。Powerlineに対応したグリフを持っている必要があるので、Cascadia Code PL、またはCascadia Mono PLのどちらかをインストールすることになる。

Cascadia Codeフォント


インストールしたら、普段利用しているターミナルアプリケーションのフォントをCascadia Code PL、またはCascadia Mono PLに設定しておこう。

bashでPowerlineプロンプト

ここではUbuntu 18.04 LTSを使用する。日本でもユーザーが多いディストリビューションであり、Windows 10でもMicrosoft Store経由で簡単にインストールできる。サンプルとして取り上げるには扱いやすい対象だ。

Ubuntu 18.04 LTS

「sudo apt install powerline」として、Powerlineを利用するために必要なパッケージをインストールする。

sudo apt install powerlineで関連パッケージをインストール

Ubuntu 18.04 LTSにpowerlineパッケージをインストールすると、/usr/share/powerline/bindings/以下に次のようにシェルやターミナルエミュレータでPowerlineを利用するための設定ファイル群がインストールされる。

powerlineパッケージでインストールされる設定ファイル

bashの場合は/usr/share/powerline/bindings/bash/powerline.shが対象ファイルとなる。このファイルをsource組み込みコマンドで読み込むと、プロンプトがPowerlineに対応したものに切り替わる。Powerlineグリフを持ったフォントがインストールされており、ターミナルアプリケーションがこのフォントを利用するように設定されていれば、次のようにプロンプトがPowerline風に切り替わる。

bashでPowerlineプロンプトを有効にしたところ

プロンプトに表示されるカレントディレクトリパスが、Powrelineグリフを使ったものに切り替わっていることがわかる。これが使いやすいかどうかは別として、何となくカッコいい感じがすると思う。

Powerlineプロンプトは少々扱いが難しいところがあり、ちょっとばかり処理が重くなるため、タイピング速度にプロンプトの表示が追いつかないということも起こり得る。無理に使うものではないので、気に入ったら使ってみる程度にとらえておけばよいだろう。

なお、恒久的にPowerlineプロンプトを使いたい場合には~/.bashrcファイルに「source /usr/share/powerline/bindings/bash/powerline.sh」の設定を追加しておく。

zshでPowerlineプロンプト

Linuxディストリビューションでは、インタラクティブシェルとしてbashが使われることが多い。macOSでも同じだったのだが、AppleはmacOSの最新版となるmacOS Catalinaでデフォルトのインタラクティブシェルをbashからzshに切り替えた。これでzshがちょっと脚光を浴びるようになった。

zshはインタラクティブシェルとしては比較的若いほうに分類されるシェルで、とにかく機能が豊富な点が特徴だ。機能的にはbashと似た部分が多いので、場合によってはシェルがbashからzshに変わっても気が付かないかもしれない。

zshのプロンプトをPowerlineプロンプトにする方法はbashとほとんど同じだ。/usr/share/powerline/bindings/zsh/powerline.zshをsource組み込みコマンドで読み込ませればよい。

zshでPowerlineプロンプトを有効にしたところ

動作は、bashのPowerlineプロンプトとほとんど同じだ。恒久的にこのプロンプトを使いたい場合には、~/.zshrcファイルに「source /usr/share/powerline/bindings/zsh/powerline.zsh」行を追加しておけばよい。

fishでPowerlineプロンプト

広く使われているインタラクティブシェルのなかで、最も後発なのが「fish」だ。zshもbashも多機能ではあるが、使いやすいものにするにはそれなりに設定ファイルを書く必要がある。fishにはその必要がないのが特徴だ。ショートカットキーもほとんど覚える必要がない。fishはカレントディレクトリと履歴を文脈を加味して利用することで賢い自動補完を実施してくれる。基本的に、「Ctrl-F」を押すということだけ覚えておけば、”いい感じ”に利用することができる。

設定不要でしかも便利。これが最近fishに人気が集まっている大きな理由だ。ただし、文法がBourne Shell系とは若干異なるので、シェルスクリプトを書くとか、ワンライナーで処理するとか、そういった作業にはあまり向いていない。

fishでPowerlineプロンプトを使う方法は、bashやzshとは少しだけ違っている。/usr/share/powerline/bindings/fish/powerline-setup.fishをsource組み込みコマンドで読み込むところまでは同様なのだが、fishの場合はその後に「powerline-setup」という関数を実行する必要がある。

fishでPowerlineプロンプトを有効にしたところ

これ以降は、bashやzshと同じだ。このプロンプトを恒久的に使いたいなら、~/.config/fish/config.fishに「source /usr/share/powerline/bindings/fish/powerline-setup.fish; powerline-setup」という処理を記述しておけばよい。

Powerlineプロンプトを使ってみる

インタラクティブシェルでPowerlineプロンプトを使うかどうかは結構好みが分かれるところだが、普段使っているシェルのプロンプトに飽きているなら、試してみるのはありではないだろうか。

ただ、本稿で紹介した方法だと、シェルのプロンプトとして使うには少しもたつきが気になるかもしれない。似たようなプロンプトを実現する方法はほかにもいくつか存在するので、そちらを使ってみるという手もある。ともあれ、インタラクティブシェルはユーザーによっては毎日使用する大切なインタフェースだ。ぜひ、気に入ったものを使ってほしい。