4 ポイント 投稿者 GN⁺ 2024-06-08 | 1件のコメント | WhatsAppで共有

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件のコメント

 
GN⁺ 2024-06-08
Hacker Newsのコメント
  • Tmuxの実験的な sixel ブランチは約10か月前にメインブランチへマージされた。今では --enable-sixel オプションを使って Tmux をビルドし、lsix のようなツールを使える。お気に入りのターミナルやマルチプレクサーが sixel をサポートしているか確認するには、「Are We Sixel Yet」サイトを参照できる。
  • このリポジトリでいちばん気に入っている機能は README.md.d ディレクトリだ。良いアイデアだと思う。.md は省略してもよさそうだ。
  • \e[c を使って sixel サポートを自動検出する。\e[c は「デバイス属性送信」機能だ。
  • 似た文脈のツールとして timg もある。
  • 良いアイデアだが、PuTTY/ KiTTY では動作しない。sixel グラフィックスをサポートするターミナルを使う必要がある。ターミナルが sixel をサポートしているかテストするには、画像を変換して確認できる。サポートしていなければバグレポートを送ることもできる。
  • macOS の iTerm2 は似た機能を提供するが、サーバー側の負荷がより少ない。サーバーで画像を sixel にレンダリングする代わりに、base64 エンコードされた画像をクライアントへ送ってローカルでレンダリングする。
  • fzf はバージョン 0.44.0 から、プレビューウィンドウで(実験的な) sixel 画像サポートを提供している。ただし Windows では使えない。
  • HN のフォントは誤解を招くかもしれない。次の見出しを待っている: 'Isis, like "ls", but for terrorists.'
  • 信頼できないディレクトリでこのツールを実行するときは注意が必要だ。特に pdf のようなファイルを処理する際に ImageMagick を使う場合は注意が必要だ。
  • ターミナルが sixel グラフィックスをサポートしている限り問題ない。