Secondary Terminal
VSCode のサイドバーで動作する高機能ターミナル拡張機能です。
特徴
- サイドバーターミナル: VSCode のサイドバーに統合されたターミナル
- 完全な PTY エミュレーション: Python の pty モジュールを使用した本格的な疑似ターミナル実装
- インタラクティブアプリ対応: vim、less、nano などが正常動作
- 動的サイズ調整: サイドバーのサイズに合わせてターミナルサイズを自動調整
- UTF-8 完全対応: 日本語を含むマルチバイト文字を正しく表示
- マルチタブ: タブごとに独立したシェルプロセスと ACE エディタ
- ACE エディタ統合: タブごとにコマンド編集エディタを内蔵。
Cmd+Enter でターミナルに送信
- クリップボード画像貼り付け: macOS でクリップボードの画像をファイルパス参照として挿入
- ドロップゾーン: エクスプローラーからファイルをドラッグ&ドロップしてパス参照を挿入
技術的背景
VSCode の Electron 環境では node-pty のネイティブモジュールが正しくビルドできないため、Python の pty モジュールを使用したカスタム PTY エミュレーションを実装しました。
フロントエンドには xterm.js を使用し、Node.js の child_process で VSCode と Python 間の通信を行っています。
技術スタック
- フロントエンド: xterm.js + ACE エディタ
- バックエンド: Python pty モジュール
- 通信: Node.js child_process
- 言語: TypeScript
リポジトリ
GitHub リポジトリ