世界を動かす技術を、日本語で。

アニメーションカーソル

2025年7月26日原文(tattoy.sh)

概要

Tattoyアニメーションカーソル のサポートを開始。 Ghostty フォーマットとの互換性を実現。 ピクセル描画方式の違いによる表現の差異。 アンチエイリアスや透過処理の課題と解決策。 今後の パフォーマンス改善 の展望。

Tattoyのアニメーションカーソル対応について

  • Tattoyアニメーションカーソル のサポートを開始
  • Ghostty と同じカーソルフォーマットを採用
  • Ghostty 用の人気カーソルを Tattoy でそのまま利用可能
  • Ghostty は実際のピクセル単位でカーソルを描画
  • Tattoy はUTF8テキストベースの「 」「 」でカーソルを表現
  • 表現の違いにより Ghostty の微細な表現が一部再現不可
  • ピクセル化された表現が好まれるケースも存在

実装と技術的課題

  • Tattoy のシェーダーフレームワークを活用し、短時間で初期実装
  • 完全な動作までには一週間以上の調整期間
  • 最大の課題はアンチエイリアス端の 透明度サポート
  • Ghostty シェーダーはターミナルのピクセル情報をサンプリング
  • Tattoy は純粋なテキストベースでピクセル情報取得不可
  • テキストの 色情報 を利用し、粗いピクセル化ターミナル画像をGPUにアップロード
  • アンチエイリアスは改善されたが、カーソル画像にピクセル化ターミナルも含まれる問題
  • GPUにアップロードしたターミナル画像と最終カーソル画像を比較し、差分のみを描画する 後処理 を実装
  • この手法で 透明度アンチエイリアス の課題を解決

パフォーマンスと今後の展望

  • 大きなターミナルでは 遅延 が発生する場合あり
  • 一般的な パフォーマンス改善 の余地が多い現状
  • 遅延の一因は、 アニメーションカーソルホストカーソル の同時描画
  • Tattoy がカーソル描画全体を管理すれば遅延改善の可能性
  • 今回は 最初の試み として良好な結果
  • 利用者からの フィードバック を歓迎

Hackerたちの意見

思ってたより全然クールだね。端末のカーソルが位置を移動するアニメーションが派手で、どこに動いたか分かりやすい。てっきりマウスカーソルのアニメーションかと思ってたけど、これなら使ってみたいかも。もっとTUIアプリを使ってたら、もうちょっと控えめだったらいいな。

Neovideによって人気になったと思うよ。 https://neovide.dev/features.html#animated-cursor

昔のCompizプラグインを思い出すな。ウィンドウを閉じると炎が出るやつ。

ホームページには、シンプルなスミアフェードカーソルと、ワイルドなマンガスラッシュカーソルのGIFがあるよ。 https://tattoy.sh

ほとんど使えない、ぷふっ。少なくとも3つのうち2つは必要だね - エアホーンやライトセーバーの効果音、- シクスルベースのレンズフレアのレンダリング、または - カーソルが動く道に沿って文字が波打つのをシミュレートする流体力学エンジン(冗談だけど、見た目はめっちゃクールだよね。多分、ちょっと気が散りすぎるかもだけど)

  • エアホーンやライトセーバーの効果音、ライトセーバーの音がいいな。ステレオ空間変換で、音の「方向」と「距離」がカーソルの動きに対して自分の物理的な動きと一致するようにしたい。それと、小さなウィンドウを開いて、カーソルの視点を表示してほしいな。画面のグラフィックスをズームしながらね。また、カーソルが通過する文字は「熱く」なって、0.25秒間安定した光を放ち、その後1秒かけて指数的にフェードアウトするべきだと思う。流れに乗っているときは、機能的な気が散り要素がもっと効果的になるように、もっと没入感が必要だよね。

これだよ。 https://ash-k.itch.io/textreme

体験談: > Tattoyを使い始めてから、ペアを組むように頼まれたことは一度もない。

これ、結構いいね。カーソルがどこに行くか追いやすい。Ghosttyスタイルの方が好きだけど、でもクールなUI機能だね。

マウスカーソルのことかと思ってたから、同じ動画でポインターが動かないのが不思議だった。録画の時はオフにしておいた方が良かったね。

この取り組みを称賛するし、ttyにしてはグラフィックがすごく素晴らしいと思うけど、真面目な質問なんだけど、これを日常的に使ってる人いる?

Tattoyのクリエイターなんで、ありがとう。プロジェクトの大きな動機は、名前が示すように「おもちゃ」のように楽しいことなんだ。毎日使ってるけど、唯一の真剣な使い道は、Twitchのチャット参加者がエモートを送ってターミナルと視覚的にインタラクションできるようにすること。アニメーションカーソルにはあまり興味ないけど、Ghosttyの背景シェーダーのサポートをすでに作ってたから、実装が簡単だったんだ。でも、もし本当に真剣な使い道を求めるなら、TattoyがANSIコードやterminfoデータベースから進化した新しいプロトコルの「XWayland」になるのが夢なんだ。このアイデアについてブログ記事を書いたよ: https://tattoy.sh/news/an-end-to-terminal-ansi-codes

Hacker Newsで議論の続きを見る