lsix: ターミナルで画像サムネイルを表示するツール
使い方
lsix [ファイル ...] コマンドで使用可能。
- デフォルトでは現在の作業ディレクトリの画像を表示。
- ファイル名を指定するかワイルドカードを使用できる(例:
lsix *jpg*png)。
例
基本的な使い方
lsix コマンドを入力すると現在のディレクトリの画像を表示。
- 特定のファイル形式を強制的に表示するには、ファイル名を指定するかワイルドカードを使う(例:
lsix *.pdf)。
GIF 展開
- GIF ファイルを指定すると、すべてのフレームが展開されてモンタージュ表示される(例:
lsix nyancat.gif)。
ターミナル背景色の検出
- PNG および SVG ファイルは、ターミナルの背景色に合わせてアルファチャンネルを正しく表示。
- ターミナルの前景色と背景色を検出して適切に調整。
機能
- ターミナルが SIXEL グラフィックを表示できるかどうかを検出。
- SSH 経由のリモートサーバーでも問題なく動作。
- ビットマップ以外のグラフィックにも対応(例: .svg, .eps, .pdf, .xcf)。
- ターミナルのカラーレジスタ数を自動検出して画像品質を向上。
- ターミナルの前景色と背景色を自動検出。
- 画像が多い場合は 1 行ずつ表示するため、全体のモンタージュを待つ必要がない。
- 長いファイル名を適切に折り返して表示。
- モンタージュのタイル幅、フォントファミリー、ポイントサイズなどを簡単に変更可能。
インストール
lsix ファイルをパスに置いて実行(例: /usr/local/bin)。
- ImageMagick が必要。パッケージマネージャー経由で簡単にインストール可能(例:
apt-get install imagemagick)。
- MacOS ユーザーは
brew install lsix コマンドでインストール可能。
ターミナル対応状況
- SIXEL グラフィックをサポートするターミナル: XTerm, MLterm, foot, Wezterm, Contour, iTerm2, Konsole, yakuake, WSLtty, MinTTY, Yaft, VTE, sixel-tmux, ttyd。
- SIXEL グラフィックをサポートしないターミナル: MacOS Terminal, kitty, すべての標準 libvte ベースのターミナル(gnome-terminal, terminator, lxterm), Alacritty。
設定
lsix は非常にシンプルに設計されており、専用の設定ファイルやコマンドラインフラグはない。
- スクリプトを直接編集して簡単に変更可能。
バグ
- XTerm のリバースビデオモードでは背景色が正しく表示されない。
- XTerm の画面幅は 1000px に制限される。
- ファイル名が "@" で始まると ImageMagick がエラーを起こす。
- 空文字列をファイル名として指定すると ImageMagick が停止する。
- 長いファイル名が非効率に折り返される。
- コマンドラインで指定したディレクトリは再帰的に処理されない。
- 動画ファイルを指定すると問題が発生する可能性がある。
今後の課題
- SIXEL 標準にはグラフィック画面のサイズを問い合わせる方法がない。
- カラーレジスタ数を問い合わせる方法がない。
- 一部のターミナルエミュレータは lsix と互換性がない。
GN⁺の意見
- ターミナルでの画像表示: lsix はターミナルで画像を簡単に見られるようにする便利なツール。特にリモートサーバーで画像を確認するときに便利。
- 互換性の問題: すべてのターミナルが SIXEL グラフィックをサポートしているわけではないため、使用前に互換性を確認する必要がある。
- 簡単なインストール: インストールは非常に簡単で、必要なソフトウェアも容易に入手できる。
- カスタマイズ性: スクリプトがシンプルなので、ユーザーが簡単に修正・拡張できる。
- 代替ツール: 類似機能を提供する他のツールには
img2sixel などがある。
1件のコメント
Hacker Newsのコメント
--enable-sixelオプションを使って Tmux をビルドし、lsix のようなツールを使える。お気に入りのターミナルやマルチプレクサーが sixel をサポートしているか確認するには、「Are We Sixel Yet」サイトを参照できる。README.md.dディレクトリだ。良いアイデアだと思う。.mdは省略してもよさそうだ。\e[cを使って sixel サポートを自動検出する。\e[cは「デバイス属性送信」機能だ。