textual を触ってみる

Github をぼーっと眺めていると textual というそそられる OSS を発見した。 もとより TUI には興味があったのと、 README の動画をみていると、ターミナル上にマウスが hover したイベントなんかも検知していたので、 「えっ、そんなこと出来るんですか!?」と大変興味をそそられた。

触ってみる

早速 git pull して触ってみることに。 examples/simple.py を実行してあげるだけで良さそうだが、 当然まずは依存しているライブラリを導入する必要がある。 このプロダクトでは poetry で依存ライブラリの管理を行っている模様。

要求される Python のバージョン

pyproject.toml を見てみると python = "^3.7" という記載がある。

私は pyenv を使っているので下記のようにして対応する。

$ pyenv install 3.9.0
$ cd ./github/repos/textual
$ pyenv local 3.9.0
$ python -V
# -> Python 3.9.0

こうすることで textual のディレクトリに .python-version ファイルが作成される。 今後はこのディレクトリに移動するだけで Python のバージョンが 3.9.0 に設定される

$ cd ~
$ python -V
# -> Python 2.7.17
$ python3 -V
# -> Python 3.6.9
$ cd ./github/repos/textual
$ python -V
# -> Python 3.9.0

依存ライブラリのインストール

$ cd ./github/repos/textual
$ python -mvenv venv
$ source venv/bin/activate
(venv) $ poetry install

これで textual を触るのに必要なライブラリも揃う

textual サンプルを起動する

(venv) $ python ./examples/simple.py

textualのサンプルを起動

textual のサンプルを起動するとコンソールが上記画像のようになる。 左側の Placeholder という領域にマウスカーソルを移動させると画像のように mouse_over の部分が True へと変化する。

所感

textualexamples/simple.py を起動した。 コンソールなのに特定の領域においてマウスのイベントを拾えるところにかなりの興味を覚えた。 TUI すごい。 今後時間のあるときにこの framework をもう少し深く触っていきたいと思う。 もしかすると社内ツールみたいな技術者だけ使えたら良いやーなツールを使いやすく作るのに役立つかもしれない。