{"id":50472253,"url":"https://github.com/statiolake/vscode-open-pinned-terminal","last_synced_at":"2026-06-01T11:02:43.858Z","repository":{"id":350708873,"uuid":"1183900346","full_name":"statiolake/vscode-open-pinned-terminal","owner":"statiolake","description":"Open Pinned Terminal in VS Code","archived":false,"fork":false,"pushed_at":"2026-04-11T17:02:32.000Z","size":100,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-04-11T18:23:34.620Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/statiolake.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-17T03:50:05.000Z","updated_at":"2026-04-11T17:02:40.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/statiolake/vscode-open-pinned-terminal","commit_stats":null,"previous_names":["statiolake/vscode-open-pinned-terminal"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/statiolake/vscode-open-pinned-terminal","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/statiolake%2Fvscode-open-pinned-terminal","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/statiolake%2Fvscode-open-pinned-terminal/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/statiolake%2Fvscode-open-pinned-terminal/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/statiolake%2Fvscode-open-pinned-terminal/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/statiolake","download_url":"https://codeload.github.com/statiolake/vscode-open-pinned-terminal/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/statiolake%2Fvscode-open-pinned-terminal/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33771630,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-01T02:00:06.963Z","response_time":115,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-06-01T11:02:43.742Z","updated_at":"2026-06-01T11:02:43.853Z","avatar_url":"https://github.com/statiolake.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Open Pinned Terminal\n\nA VS Code extension that opens terminals in the editor area and pins them. Each terminal belongs to a `key` family and is identified as `key:0`, `key:1`, and so on.\n\n## Features\n\n- Open a terminal as a pinned editor tab\n- Cycle through existing numbered terminals in a `key` family\n- Restore the most recently focused terminal tab in a `key` family when another tab is active\n- Force a new numbered terminal when needed\n- Optionally run a command on creation\n- Automatically close command terminals when the command exits, when shell integration is available\n- Support for local terminals in Dev Container environments\n\n## Usage\n\nThis extension provides the command `open-pinned-terminal.open`. It is designed to be used via keybindings rather than the Command Palette.\n\nAdd a keybinding in `keybindings.json`:\n\n```jsonc\n{\n  \"key\": \"ctrl+`\",\n  \"command\": \"open-pinned-terminal.open\",\n  \"args\": {\n    \"key\": \"main\"\n  }\n}\n```\n\n### Arguments\n\n| Argument       | Type       | Required | Default       | Description                                          |\n| -------------- | ---------- | -------- | ------------- | ---------------------------------------------------- |\n| `key`          | `string`   | Yes      |               | Terminal family key. Must not contain `:`            |\n| `forceNew`     | `boolean`  | No       | `false`       | Always create the next numbered terminal in the family |\n| `cmd`          | `string[]` | No       |               | Command to run when the terminal is first created     |\n| `terminalName` | `string`   | No       | same as `key:n` | Display name prefix shown on the terminal tab        |\n| `local`        | `boolean`  | No       | `false`       | Force a local terminal (useful in Dev Containers)     |\n| `isTransient`  | `boolean`  | No       | `false`       | Mark the terminal as transient (not restored on reload) |\n\nWhen `forceNew` is `false`, running the command while the active tab is `codex:n` moves to the next existing `codex:n+1`, wrapping back to the first existing Codex terminal if needed. Running it from another tab restores the most recently focused `codex:n`, including terminal tabs focused by clicking, or creates `codex:0` if none exists yet.\n\nWhen `cmd` is specified and VS Code shell integration is available, the command is run through shell integration and the terminal closes automatically when that command exits. If shell integration is unavailable, the command falls back to the previous `sendText` behavior and the terminal stays open.\n\nWhen the workspace has multiple root folders, creating a new terminal shows a folder picker and opens the terminal in the selected workspace folder.\n\n### Examples\n\nOpen a pinned terminal for Claude Code:\n\n```jsonc\n{\n  \"key\": \"ctrl+shift+c\",\n  \"command\": \"open-pinned-terminal.open\",\n  \"args\": {\n    \"key\": \"claude\",\n    \"terminalName\": \"Claude Code\",\n    \"cmd\": [\"claude\"]\n  }\n}\n```\n\nOpen a pinned terminal for Codex:\n\n```jsonc\n{\n  \"key\": \"ctrl+shift+x\",\n  \"command\": \"open-pinned-terminal.open\",\n  \"args\": {\n    \"key\": \"codex\",\n    \"terminalName\": \"Codex\",\n    \"cmd\": [\"codex\"]\n  }\n}\n```\n\nAlways open the next new Codex terminal, regardless of the active tab:\n\n```jsonc\n{\n  \"key\": \"ctrl+shift+x\",\n  \"command\": \"open-pinned-terminal.open\",\n  \"args\": {\n    \"key\": \"codex\",\n    \"terminalName\": \"Codex\",\n    \"cmd\": [\"codex\"],\n    \"forceNew\": true\n  }\n}\n```\n\nOpen a local terminal for Claude Code while connected to a Dev Container:\n\n```jsonc\n{\n  \"key\": \"ctrl+shift+l\",\n  \"command\": \"open-pinned-terminal.open\",\n  \"args\": {\n    \"key\": \"claude-local\",\n    \"terminalName\": \"Claude Code (Local)\",\n    \"cmd\": [\"claude\"],\n    \"local\": true\n  }\n}\n```\n\n## Installation\n\n### From VSIX\n\n```sh\ncode --install-extension vscode-open-pinned-terminal-0.1.0.vsix\n```\n\n### Build from source\n\n```sh\nnpm install\nnpm run package\ncode --install-extension vscode-open-pinned-terminal-*.vsix\n```\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstatiolake%2Fvscode-open-pinned-terminal","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstatiolake%2Fvscode-open-pinned-terminal","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstatiolake%2Fvscode-open-pinned-terminal/lists"}