【シェルコマンド】WezTermとlibsixelを使ってDebian&MacOSのターミナルで画像をそのまま表示してみる


※ 当ページには【広告/PR】を含む場合があります。
2023/07/10

この記事を書いている頃の直近の話題で、VSCodeのv1.80以降の機能アップデートで、統合ターミナルから画像が表示できるようになったようです。

ターミナルで画像表示が可能に ~「Visual Studio Code」2023年6月更新(v1.80)

ターミナルに直接画像を表示させるという機能自体は割と昔からやられていたようで、有名どころでいうと、
『libsixel』というパッケージライブラリとコマンドツールセットが無償で利用できます。

libsixel - The new standard of SIXEL development

このlibsixelを使えるようにしておくと、画像ビューアソフトがなくても写真をチェックできるので、シェル使いの人間にはなにかと手間が省けてとても重宝します。

ということで、今回は快適なソフトウェア開発環境作りに(きっと)役に立つ、ターミナルに直接画像を表示させるコマンド・
『img2sixel』を「Debian」と「MacOSX」で動かすまでの手順を紹介します。


合同会社タコスキングダム|蛸壺の技術ブログ【効果的学習法レポート】シェルスクリプトをこれから学びたい人のためのオススメ書籍&教材特集

「WezTerm」をDebianとMacOSにインストール

まずlibsixelを使う前に、やっておきたいことが、「普段使いのターミナルのチェック」です。

どのOSにも標準となって、最初から使えるターミナル(エミュレータ)のほとんどが現在においても、
「VT100」をエミュレーションできる相当のものになっています。

VT100がそもそも古すぎるビデオ端末で、画像の表示には使えず、libsixelに対応したターミナルは公式に明記されてある通り、それなりにモダンなアプリケーションを使う必要があります。

Terminal requirements

公式のリストには載っていないのですが、ここでは最近著者のお気に入りで、「Rustで開発&Luaで設定」というイカしたキャッチコピーの
『WezTerm』を例に作業を進めていきましょう。

WezTerm - is a powerful cross-platform terminal emulator and multiplexer written by @wez and implemented in Rust

DebianにWezTermを導入する

公式にもあるように、Debian linuxへのインストールの方法はいくつかあるようです。

参照 | Installing on Ubuntu and Debian-based Systems - wezterm

ここでは説明されている手順に従って、Debian11向けのStable版パッケージファイルのURLリンクを利用したインストールしてみます。

            
            $ curl -LO https://github.com/wez/wezterm/releases/download/20230408-112425-69ae8472/wezterm-20230408-112425-69ae8472.Debian11.deb
$ sudo apt install -y ./wezterm-20230408-112425-69ae8472.Debian11.deb
$ wezterm --version
wezterm 20230408-112425-69ae8472
        
これで、インストール自体は完了です。

WezTermの設定は、従来的なやり方の.profileや.bashrcなどに書き込むというような作業も必要もなく、
~/.wezterm.luaというLuaファイルで設定できるのが大きな特長になります。

            
            $ nano ~/.wezterm.lua
#👇以下はサンプル

local wezterm = require 'wezterm'
local config = {}

config.font = wezterm.font 'JetBrains Mono'
config.color_scheme = 'Batman'

return config
        
個人的にLuaはガッツリ使ったことがないものの、いろいろな言語を渡り歩いたせいか、文法上難解な点はほとんどなく、割とスッキリ理解できます。

またLuaの設定ファイルになったことにより、ターミナルのカスタマイズの自由度が格段に大きくなります。

より詳しい設定は以下のページをご参照ください。

参考|https://wezfurlong.org/wezterm/config/files.html#quick-start

さらに、ここからDebianのデフォルトのエミュレータを
WezTermに変えてみましょう。

            
            #👇weztermの場所を確認
$ which wezterm
/usr/bin/wezterm

#👇優先順位度50でweztermをterminalとして登録
$ sudo update-alternatives --install \
    /usr/bin/x-terminal-emulator x-terminal-emulator \
    /usr/bin/wezterm 50

#👇terminalの設定を確認し、デフォルト(0)の切り替え
$ sudo update-alternatives --config x-terminal-emulator
alternative x-terminal-emulator (/usr/bin/x-terminal-emulator を提供) には 8 個の選択肢があります。

  選択肢    パス                           優先度  状態
------------------------------------------------------------
* 0            /usr/bin/wezterm                  50        自動モード
  1            /usr/bin/koi8rxterm               20        手動モード
  2            /usr/bin/lxterm                   30        手動モード
  3            /usr/bin/mlterm                   20        手動モード
  4            /usr/bin/open-wezterm-here        20        手動モード
  5            /usr/bin/uxterm                   20        手動モード
  6            /usr/bin/wezterm                  50        手動モード
  7            /usr/bin/xfce4-terminal.wrapper   40        手動モード
  8            /usr/bin/xterm                    20        手動モード
        
うまくいくとWezTermにデフォルトのターミナルが切り替わります。

余談〜WezTermから日本語入力できないときの対処法

どちらかというとWezTermではなく、Debian X11のシステムの設定に起因している問題ですが、新しくインストールしたターミナルではIME(日本語入力)が効かない場合があります。

日本語対応のキーボードの場合、日本語入力の切り替えに
「半角/全角キー」が用意されているわけですが、これが日本国内ユーザー向けキーボードの特殊キーなので、うまく働かないならキーボードのシステム設定を見直す必要があります。

以下のGitHubのIssueページにも同じような症状が報告としてあがっているようで、対処法として
fcitx5をインストール・設定する方法が議論されています。

Pre-edit/on-the-spot IME not working

もし
fcitx5をDebianにまだインストールしていない場合、こちらを導入してみると良さそうです。

Debian Wikiに
fcitx5の導入方法が紹介されていますので、そちらを参考にします。

ja I18n Fcitx5

ちなみに著者が現在利用中のデスクトップ環境は「Xfce」ですので必要ないのですが、「Gnome」の場合は
gnome-shell-extension-kimpanel、「KDE」はkde-config-fcitx5も入れるそうです。

また、すでに
ibusをインストールしていた場合、別の入力フレームワークと衝突するのは避けたいので、アンインストールしておきます。

            
            $ sudo apt remove ibus
        
ここからfcitx5をインストールします。

            
            $ sudo apt install fcitx5 fcitx5-mozc
$ sudo apt remove uim uim-mozc
        
その後ログインし直すか再起動すると、fcitxが有効になっています。

次に
im-configコマンドから、システムの入力メソッドを明示にfcitx5 で選択しておきます。

            
            $ im-config
        

合同会社タコスキングダム|蛸壺の技術ブログ

また
fcitx5自体の設定も確認しておきます。

設定は以下のコマンドを叩くと、手っ取り早く設定ダイアログが表示できます。

            
            $ fcitx5-configtool
        
日本語キーボードやmozcが設定されているかをチェックしましょう。

合同会社タコスキングダム|蛸壺の技術ブログ

問題がなければWezTermでも、「半角/全角キー」がきちんと認識されて、IME機能がON/OFFされるはずです。

合同会社タコスキングダム|蛸壺の技術ブログ

MacOSにWezTermを導入する

公式のドキュメントではこちらにMacOSへの導入方法が記されています。

HomeBrewからだと一発インストールできます。

            
            $ brew install --cask wezterm
        
さきほどのDebianのようなキーボードからの入力メソッドの問題もなく、素直に導入できます。


合同会社タコスキングダム|蛸壺の技術ブログ【効果的学習法レポート】シェルスクリプトをこれから学びたい人のためのオススメ書籍&教材特集

「libsixel」をDebianとMacOSにインストール

ようやく本題です。

ここからはDebianとMacOSに
「libsixel」をインストールする方法を見ていきましょう。

ちなみに、一般の画像からターミナル上に表示させるフォーマットである
「SIXEL」へ変換してくれるユーティリティコマンド・「img2sixel」は、libsixelのツールの一つとして利用できるようになります。

Debianにlibsixelをインストールする

Debianへのインストールはパッケージマネージャーから一発導入できます。

            
            $ sudo apt install libsixel*
        
ではインストールされたので、img2sixelコマンドを使ってみましょう。

合同会社タコスキングダム|蛸壺の技術ブログ

WezTermだからでしょうか...他のターミナルよりも割りかし鮮明に表示されているような気もします。

MacOSにlibsixelをインストールする

MacOSではこちらもHomeBrewからインストールできます。

            
            $ brew install libsixel
        
こちらも問題なく画像が表示されるでしょう。


合同会社タコスキングダム|蛸壺の技術ブログ【効果的学習法レポート】シェルスクリプトをこれから学びたい人のためのオススメ書籍&教材特集

まとめ

ターミナルから画像を直接確認したい場合というのは、エンジニアのみならず研究者の方なら結構多いのではないでしょうか。

個人的に、「gnuplot」の作図した出力結果をサッと確認してみたり、「matplotlib」で数値計算した結果をグラフにまとめて並べてみたり....。

最近ではラズパイでカメラ撮影した画像を、ファイル転送なしにSSH越しから直接ターミナルに表示させるなど、いろいろ面白い応用もできます。

画像ビューアを開くのも面倒だという方は、是非とも「libsixel」を入れてターミナルで画像を覗いてみてはいかがかと思います。

参考サイト

WezTerm is a powerful cross-platform terminal emulator and multiplexer written by @wez and implemented in Rust

ターミナル内で画像表示する手法についてかんがえる

記事を書いた人

記事の担当:taconocat

ナンデモ系エンジニア

主にAngularでフロントエンド開発することが多いです。 開発環境はLinuxメインで進めているので、シェルコマンドも多用しております。 コツコツとプログラミングするのが好きな人間です。

合同会社タコスキングダム|蛸壺の技術ブログ【効果的学習法レポート】シェルスクリプトをこれから学びたい人のためのオススメ書籍&教材特集