HN 日本語サマリー

← 一覧へ戻る
プログラミング

Ghostel.el: libghosttyを搭載したターミナルエミュレータ

Ghostel.el: Terminal emulator powered by libghostty (dakra.github.io)

249 pointsby signa1143 コメント

要約

Ghostel.elは、Ghosttyターミナルと同じVTエンジンであるlibghostty-vtを基盤としたEmacs用のターミナルエミュレータです。Zigで書かれたネイティブモジュールがターミナル状態、レンダリング、ローカルPTY I/Oを処理し、Elispがキーマップ、バッファ、コマンド、リモートプロセス統合を管理します。Kittyキーボード/グラフィックスプロトコル、リッチな下線スタイル、OSC 8ハイパーリンク、OSC 4/10/11カラークエリ、同期出力(DEC 2026)などの最新機能をサポートしています。

全文翻訳

ghostel.el - libghosttyを搭載したターミナルエミュレータ 目次 1. クイックスタート 1.1. シェル統合の概要 1.2. 入力モードの概要 2. 要件 3. インストール 3.1. MELPA 3.2. use-package with :vc (Emacs 30+) 3.3. use-package with :load-path 3.4. 手動 3.5. ネイティブモジュール 3.6. プラットフォームノート 3.6.1. Windows 4. ソースからのビルド 4.1. バンドルされたterminfo 5. シェル統合 6. 入力モード 6.1. モード切り替えキーバインド 6.2. セミキャラモード(デフォルト) 6.3. キャラモード 6.4. Emacsモード 6.5. コピーモード 6.6. マウス選択 6.7. ラインモード 6.8. コピーモード外でのスクロールバック検索 7. 機能 7.1. ターミナルエミュレーション 7.2. プロセスモデル 7.3. ブックマーク 7.4. リンクとファイル検出 7.5. クリップボード 7.6. 入力 7.7. パスワードプロンプト検出 7.8. シェル統合機能 7.9. レンダリング 7.10. インライン画像(Kittyグラフィックスプロトコル) 7.10.1. 制限事項 7.11. シェルからElispを呼び出す 7.12. 通知と進捗 7.13. カラーパレット 8. TRAMP(リモートターミナル) 8.1. リモートシェル統合 8.1.1. オプション1:自動注入(利便性のために推奨) 8.1.2. オプション2:手動セットアップ(永続的なリモートホストに推奨) 8.2. リモートxterm-ghostty terminfo 8.2.1. TRAMP起動のghostel 8.2.2. ローカルghostelバッファからのアウトバウンドssh 8.2.3. 手動インストール(自動機構なし) 8.2.4. Ghostty広告を完全に削除する 9. 設定 9.1. プロセスと環境 9.2. ネイティブモジュール 9.3. TRAMPとリモート 9.4. レンダリングとパフォーマンス 9.5. 画像 9.6. リンク、クリップボード、検出 9.7. パスワードプロンプト 9.8. 通知と進捗 9.9. 入力とインタラクション 9.10. ラインモード 10. 拡張機能 10.1. Evil-mode 10.2. コンパイルモード 10.2.1. ライブモード切り替え 10.2.2. キーバインド(ghostel-compile-view-mode、読み取り専用実行中もアクティブ) 10.2.3. make compile / recompile / project-compileでghostelを使用する 10.2.4. 独自の統合のためのフック 10.3. Eshell統合 10.4. Comint統合 10.5. Emacs Lisp入力メソッド 11. コマンド 11.1. Lispから入力を送信する 11.2. プロジェクト統合 12. テストの実行 13. パフォーマンス 13.1. ネイティブ対Emacs PTY 13.2. バースト吸収(10MBファイルをcat) 13.3. タイピングレイテンシ 14. Ghostel vs vtermとeat 14.1. 機能比較 14.2. 主な違い 15. アーキテクチャ 15.1. PTYとプロセス所有権 15.2. レンダラーとバッファ位置 15.2.1. レンダラー所有のバッファ位置保持 15.2.2. Elispでのaround-redrawセマンティックパッチングの回避 16. 貢献 17. チェンジログ 18. ライセンス 19. インデックス 19.1. コマンドと関数インデックス 19.2. コンセプトインデックス Ghostelは、Ghosttyターミナルを駆動するのと同じVTエンジンであるlibghostty-vtを搭載したEmacsターミナルエミュレータです。Zigで書かれたネイティブのダイナミックモジュールがターミナル状態、レンダリング、ローカルPTY I/Oを処理し、Elispがキーマップ、バッファ、コマンド、リモートプロセス統合を管理します。 Ghostelはemacs-libvtermに触発されており、同じ2層設計を踏襲していますが、libvtermの代わりにGhosttyのモダンなVTエンジンを使用しています。これにより、Kittyキーボードおよびグラフィックスプロトコル、リッチな下線スタイル、OSC 8ハイパーリンク、OSC 4/10/11カラークエリ、同期出力(DEC 2026)が可能になります。これらはlibvtermではサポートされていません。詳細な比較については、Ghostel vs vterm and eatを参照してください。 ネイティブモジュールは初回使用時に自動的にダウンロードされるため、一般的なケースではツールチェーンは必要ありません。 M-x ghostelでターミナルを開きます。 1. クイックスタート 1.1. シェル統合の概要 1.2. 入力モードの概要 2. 要件 3. インストール 3.1. MELPA 3.2. use-package with :vc (Emacs 30+) 3.3. use-package with :load-path 3.4. 手動 3.5. ネイティブモジュール 3.6. プラットフォームノート 3.6.1. Windows 4. ソースからのビルド 4.1. バンドルされたterminfo 5. シェル統合 6. 入力モード 6.1. モード切り替えキーバインド 6.2. セミキャラモード(デフォルト) 6.3. キャラモード 6.4. Emacsモード 6.5. コピーモード 6.6. マウス選択 6.7. ラインモード 6.8. コピーモード外でのスクロールバック検索 7. 機能 7.1. ターミナルエミュレーション 7.2. プロセスモデル 7.3. ブックマーク 7.4. リンクとファイル検出 7.5. クリップボード 7.6. 入力 7.7. パスワードプロンプト検出 7.8. シェル統合機能 7.9. レンダリング 7.10. インライン画像(Kittyグラフィックスプロトコル) 7.10.1. 制限事項 7.11. シェルからElispを呼び出す 7.12. 通知と進捗 7.13. カラーパレット 8. TRAMP(リモートターミナル) 8.1. リモートシェル統合 8.1.1. オプション1:自動注入(利便性のために推奨) 8.1.2. オプション2:手動セットアップ(永続的なリモートホストに推奨) 8.2. リモートxterm-ghostty terminfo 8.2.1. TRAMP起動のghostel 8.2.2. ローカルghostelバッファからのアウトバウンドssh 8.2.3. 手動インストール(自動機構なし) 8.2.4. Ghostty広告を完全に削除する 9. 設定 9.1. プロセスと環境 9.2. ネイティブモジュール 9.3. TRAMPとリモート 9.4. レンダリングとパフォーマンス 9.5. 画像 9.6. リンク、クリップボード、検出 9.7. パスワードプロンプト 9.8. 通知と進捗 9.9. 入力とインタラクション 9.10. ラインモード 10. 拡張機能 10.1. Evil-mode 10.2. コンパイルモード 10.2.1. ライブモード切り替え 10.2.2. キーバインド(ghostel-compile-view-mode、読み取り専用実行中もアクティブ) 10.2.3. make compile / recompile / project-compileでghostelを使用する 10.2.4. 独自の統合のためのフック 10.3. Eshell統合 10.4. Comint統合 10.5. Emacs Lisp入力メソッド 11. コマンド 11.1. Lispから入力を送信する 11.2. プロジェクト統合 12. テストの実行 13. パフォーマンス 13.1. ネイティブ対Emacs PTY 13.2. バースト吸収(10MBファイルをcat) 13.3. タイピングレイテンシ 14. Ghostel vs vtermとeat 14.1. 機能比較 14.2. 主な違い 15. アーキテクチャ 15.1. PTYとプロセス所有権 15.2. レンダラーとバッファ位置 15.2.1. レンダラー所有のバッファ位置保持 15.2.2. Elispでのaround-redrawセマンティックパッチングの回避 16. 貢献 17. チェンジログ 18. ライセンス 19. インデックス 19.1. コマンドと関数インデックス 19.2. コンセプトインデックス 1. クイックスタート (use-package ghostel :bind (("C-x m" . ghostel) :map ghostel-semi-char-mode-map ("C-s" . consult-line) ("M-<backspace>" . ghostel-backward-kill-word) ;; ;; I'm used to go up/down the shell history with M-n/p from eshell ;; ;; Simulate this behavior in ghostel by sending C-p and C-n ("M-p" . (lambda () (interactive) (ghostel-send-key "p" "ctrl"))) ("M-n" . (lambda () (interactive) (ghostel-send-key "n" "ctrl"))) :map project-prefix-map ("m" . ghostel-project) ("M" . ghostel-project-list-buffers)) :config (defun ghostel-send-C-k-and-kill () "Send `C-k' to ghostel. Like normal Emacs `C-k'. Kill to end of line and put content in kill-ring." (interactive) (kill-ring-save (point) (line-end-position)) (ghostel-send-key "k" "ctrl")) (add-to-list 'project-switch-commands '(ghostel-project "Ghostel") t) (add-to-list 'project-switch-commands '(ghostel-project-list-buffers "Ghostel buffers") t) (add-to-list 'ghostel-eval-cmds '("magit-status-setup-buffer" magit-status-setup-buffer))) (use-package ghostel-eshell :hook (eshell-load . ghostel-eshell-visual-command-mode)) (use-package ghostel-compile :hook (after-init . ghostel-compile-global-mode)) (use-package ghostel-comint :hook (after-init . ghostel-comint-global-mode)) If you are an evil user you can install the evil-ghostel extension: (use-package evil-ghostel :after (ghostel evil) :hook (ghostel-mode . evil-ghostel-mode)) 1.1. シェル統合の概要 ディレクトリ追跡とプロンプトナビゲーションは、ローカルのbash、zsh、またはfishセッションではデフォルトで自動的に有効になっています。TRAMPサポートとその他の詳細については、シェル統合を参照してください。 シェルからEmacs関数を呼び出すには、それらをghostel-eval-cmdsホワイトリストに追加し、bashrcに次のようなものを追加する必要があります。 if [[ "$INSIDE_EMACS" = 'ghostel' ]]; then # Open a file in Emacs from the terminal e() { ghostel_cmd find-file-other-window "$@"; } # Open dired in another window dow() { ghostel_cmd dired-other-window "$@"; } # Open magit for the current directory gst() { ghostel_cmd magit-status-setup-buffer "$(pwd)"; } fi 1.2. 入力モードの概要 Ghostelは5つのeat.elスタイルの入力モードを提供します。デフォルトはセミキャラモードで、これはal