---
slug: "secondary-terminal"
title: "Secondary Terminal"
description: "VSCode のサイドバーで動作する高機能ターミナル拡張機能です。Python PTY による本格的な疑似ターミナル実装で、vim や less などのインタラクティブアプリも正常に動作します。"
url: "https://www.ytyng.com/bio/secondary-terminal"
achieved_at: "2025-06-28"
updated: "2026-02-15T05:20:35.175Z"
category: "アプリケーション"
image_url: "https://media.ytyng.com/20260130/3347cbef215340b5a9ed6a0a0dd7e33a.png"
lang: "ja"
---

# Secondary Terminal

# 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 リポジトリ](https://github.com/ytyng/secondary-terminal)
