O Terminal is a powerful, integrated terminal plugin for Obsidian, built with xterm.js and node-pty. It brings a fully functional terminal environment directly into your Obsidian workspace, allowing you to run shell commands, git operations, and scripts without leaving your notes.
Note
This plugin is designed for Desktop only (Windows, macOS, Linux). Mobile devices are not supported due to system limitations.
- Integrated Terminal View: Open terminal instances directly within Obsidian panes.
- Multi-Terminal Support: Run multiple terminal sessions simultaneously.
- Theme Integration: Terminal colors automatically adapt to your current Obsidian theme (Light/Dark mode).
- Custom Shell Configuration: Configure your preferred shell (PowerShell, Bash, Zsh, CMD) and startup arguments.
- Some Features: new tab, clear screen, copy/paste
- Cross-Platform: Full support for Windows, macOS (Intel & Apple Silicon), and Linux.
| Component | Version | Description |
|---|---|---|
| xterm.js | v5.5.0 | Web-based terminal rendering |
| node-pty | v1.0.0 | Pseudo-terminal backend |
| @xterm/addon-fit | v0.10.0 | Auto-resize support |
| @xterm/addon-web-links | v0.11.0 | Clickable links |
- Obsidian: v1.10.0 or higher
- Platform: Windows (x64), macOS (x64/arm64), Linux (x64)
Coming Soon...
- Open Obsidian Settings > Community plugins.
- Turn off Safe mode.
- Click Browse and search for
Terminal. - Click Install and then Enable.
- Install the BRAT plugin via Community Plugins.
- Open command palette and run
BRAT: Add a beta plugin for testing. - Enter the repository URL:
quorafind/obsidian-terminal. - Click Add Plugin.
- Download the latest release from the Releases Page.
- Extract
main.js,manifest.json,styles.cssinto your vault's plugin folder:<Vault>/.obsidian/plugins/terminal/ - Reload Obsidian and enable the plugin in settings.
- Command Palette: Press
Ctrl/Cmd + P, then search forTerminal: Open new terminal - Ribbon Icon: Click the Terminal icon in the left sidebar (if enabled)
- Type
exitin the terminal, or - Close the terminal pane directly
| Shortcut | Action |
|---|---|
Ctrl/Cmd + C |
Copy selected text |
Ctrl/Cmd + V |
Paste from clipboard |
Ctrl/Cmd + Shift + C |
Copy (when selection exists) |
Go to Settings > Terminal to customize your experience.
| Setting | Description | Default |
|---|---|---|
| Font Size | Terminal text size (10px - 24px) | 14 |
| Font Family | Custom font family for the terminal | Obsidian monospace |
| Cursor Blink | Enable/disable cursor blinking | On |
| Scrollback | Number of lines to keep in history (100 - 10000) | 1000 |
| Setting | Description | Default |
|---|---|---|
| Default Shell | Path to your preferred shell executable | System default |
| Shell Arguments | Arguments passed to shell on startup | Empty |
Example Shell Paths:
- Windows:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe - macOS/Linux:
/bin/zshor/bin/bash
The plugin requires native node-pty binaries to function. These are managed automatically:
| Feature | Description |
|---|---|
| Status | Shows installation status, version, and platform |
| Download | Downloads pre-built binaries from GitHub Releases |
| Clean Up | Removes installed native modules |
| GitHub Repo | Configure the repository for binary downloads |
- Node.js 16+
- npm or pnpm
# Clone the repository
git clone https://github.com/quorafind/obsidian-terminal.git
cd obsidian-terminal
# Install dependencies
npm install
# Build native modules for Electron
npm run rebuild:electron
# Development mode (watch)
npm run dev
# Production build
npm run build| Script | Description |
|---|---|
npm run dev |
Start development with watch mode |
npm run build |
Production build with type checking |
npm run build:all |
Rebuild native modules + production build |
npm run rebuild:electron |
Rebuild node-pty for Obsidian's Electron |
npm run lint:check |
Run ESLint |
npm run clean |
Clean build artifacts |
src/
βββ main.ts # Plugin entry point
βββ constants.ts # Configuration constants
βββ main.css # Global styles
βββ core/
β βββ electron-bridge.ts # Electron integration
β βββ pty-manager.ts # PTY process management
β βββ terminal-manager.ts # Terminal session management
β βββ native-binary-manager.ts # Binary download/install
β βββ embedded-modules.ts # Platform detection
βββ views/
β βββ terminal-view.ts # Terminal UI component
βββ settings/
β βββ settings-tab.ts # Plugin settings UI
βββ types/ # TypeScript type definitions
Contributions are welcome!
- Fork the project
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'feat: add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
Please follow Conventional Commits for commit messages.
Distributed under the MIT License. See LICENSE for more information.
- Obsidian - The amazing knowledge base app
- xterm.js - The terminal component
- node-pty - Pseudo-terminal implementation
Made with β€οΈ by Boninall
