OneTouch 🚀
One-click quick prompt buttons for VS Code — copy reusable prompts without opening or focusing a chat interface.
Screenshots

Overview
Provides customizable quick prompt buttons in the status bar and sidebar panel with the following core capabilities:
🔘 Dual Entry Points
- Status Bar Buttons: One-click prompt copy, always visible
- Sidebar Panel: Full prompt management interface with CRUD operations
🎯 Clipboard Workflow
Custom prompts only write to the system clipboard. The extension does not open, focus, populate, or submit any chat interface.
🖱 Interaction
| Action |
Behavior |
| Left click |
Copies the prompt to the clipboard, runs the configured command, or executes the multi-step action |
| Right click |
Copies the prompt with currently selected editor code appended, or runs the configured command/action |
| Command shortcut click |
Executes the configured VS Code command directly |
| Multi-step shortcut click |
Executes the configured command sequence in order |
📦 Built-in Shortcuts
| Button |
Function |
| ➕ New Codex Chat |
Opens in the active empty group, or splits right when that group already has tabs |
| 🖥️ New Terminal Tab |
Opens in the active empty group, or splits right when that group already has tabs |
| 🕘 Open Recent |
Opens VS Code's complete recent projects, workspaces, and files picker |
| ↔️ Split Right |
Creates and focuses an empty editor group to the right of the active group |
| ↕️ Split Down |
Keeps the current layout in the top half and creates a focused, empty group below |
| ❌ Close All Tabs |
Closes all editor tabs |
⚙️ Custom Prompts
Manage your prompt list directly via the sidebar panel:
- Add: Click the
+ Add Shortcut button at the bottom
- Edit: Click the edit icon next to a prompt to modify its label, icon, display mode, and prompt content
- Delete: Click the Delete button in the edit modal, confirmed twice before deletion
- Reorder: Adjust prompt order using up/down arrows
- Show/Hide: Control visibility in the status bar via the eye icon
Each custom prompt supports the following properties:
| Property |
Description |
label |
Button display label |
icon |
Button icon (supports VS Code Codicon library with search filtering) |
prompt |
Prompt content copied to the clipboard (when no command/steps is set) |
command |
VS Code command ID executed on click, e.g. workbench.action.openRecent |
args |
Optional arguments passed to command |
steps |
Optional command sequence executed in order on click — composes complex multi-step operations from configuration |
displayMode |
Display mode: icon (icon only), text (text only), both (icon + text) |
The built-in buttons are just pre-configured command shortcuts — the same shape you can define yourself, so any VS Code command can become a one-click button.
🎯 Command Shortcuts
Configure a shortcut that runs any VS Code command (status bar + sidebar):
{
"oneTouch.prompts": [
{
"id": "custom-git-sync",
"icon": "git-pull-request",
"label": "Git Sync",
"command": "git.sync",
"color": "#4fc3f7",
"displayMode": "icon"
},
{
"id": "custom-open-recent",
"icon": "history",
"label": "Open Recent",
"command": "workbench.action.openRecent",
"color": "#4fc3f7",
"displayMode": "icon"
}
]
}
Command shortcuts can also be created from the sidebar edit dialog (Action Type → Run Command).
⚙️ Complex Operations via Multi-Step Actions
Any complex operation expressible as a chain of VS Code commands can be collapsed into a single button click using steps — each step runs in order with its own optional args:
{
"oneTouch.prompts": [
{
"id": "custom-codex-terminal",
"icon": "terminal",
"label": "Codex",
"steps": [
{ "command": "workbench.action.createTerminalEditor" },
{
"command": "workbench.action.terminal.sendSequence",
"args": [{ "text": "codex\\r" }]
}
],
"color": "#4fc3f7",
"displayMode": "icon"
}
]
}
Tip — the terminal recipe. The most common case (new terminal tab + auto-run a command) is also available as a single parameterized command, no steps needed:
{
"id": "custom-codex-terminal",
"icon": "terminal",
"label": "Codex",
"command": "oneTouch.runTerminalCommand",
"args": ["codex"]
}
oneTouch.runTerminalCommand opens a terminal editor tab and runs the given command text in it immediately.
Multi-step shortcuts are configured in settings.json (read-only in the sidebar UI, like built-ins).
📊 Status Bar Display Modes
Three display modes are supported, configurable per button in the edit modal:
- Icon Only — Displays only the icon, compact and clean
- Text Only — Displays only the text label
- Icon + Text — Displays both icon and label
📐 Status Bar Position
Adjust the position of buttons in the status bar via the VS Code setting oneTouch.statusBarPosition:
| Value |
Alignment |
Priority |
leftLeft |
Left side |
High priority (near left edge) |
leftRight |
Left side |
Low priority (near center-left) |
rightLeft |
Right side |
Low priority (near center-right) |
rightRight |
Right side |
High priority (near right edge) |
Installation
From Source
git clone <repo-url>
cd onetouch
npm install
npm run compile
Then run Extensions: Install from VSIX... in VS Code or copy to the extensions directory.
Development Mode
npm run watch # Watch TypeScript changes and auto-compile
Press F5 to launch the Extension Development Host for debugging.
Configuration
VS Code Settings
Open VS Code settings (Cmd+,), search for OneTouch, or directly edit settings.json:
{
"oneTouch.statusBarPosition": "leftRight",
"oneTouch.prompts": [
{
"id": "custom-review",
"icon": "code-review",
"label": "Code Review",
"prompt": "Please review the following code and identify potential issues...",
"color": "#4fc3f7",
"displayMode": "icon"
}
]
}
Tech Stack
- Language: TypeScript
- Platform: VS Code Extension API (v1.93+)
- Build: TypeScript Compiler (tsc)
- UI Framework: Native Webview + VS Code Codicon library
- Zero Third-party Dependencies: Purely VS Code API implementation
Commands
| Command |
Description |
oneTouch.copyPrompt |
Copy a custom prompt to the clipboard |
oneTouch.newCodexChat |
Open Codex in the active empty group, otherwise split right |
oneTouch.newTerminalEditor |
Open a terminal in the active empty group, otherwise split right |
oneTouch.runTerminalCommand |
Open a terminal editor tab and run the given command text |
oneTouch.runSteps |
Execute a command sequence in order (backs steps shortcuts) |
oneTouch.layoutTabs |
Evenly distribute editor groups |
oneTouch.splitDown |
Move the current layout to the top half and create an empty group below |
oneTouch.closeAll |
Close all editor tabs |
Project Structure
onetouch/
├── package.json # Extension manifest and configuration
├── tsconfig.json # TypeScript configuration
├── src/
│ ├── extension.ts # Extension entry: status bar, command registration
│ ├── editorLayout.ts # Pure editor-layout transformations
│ ├── splitDown.ts # Creates and focuses the empty bottom editor group
│ ├── terminalEditor.ts # Opens a terminal editor with smart splitting
│ └── quickPromptsProvider.ts # Webview Provider + prompt management logic
├── media/ # Static assets (reserved)
├── learnings/ # Development learning notes
└── skills-lock.json # Skills lock file
License
MIT