Open in Terminal

approved

by ChenFeng

Open your vault in a new terminal window or launch Claude Code, Codex CLI, or Gemini CLI directly from a terminal.

40 stars10,546 downloadsUpdated 29d agoMIT
View on GitHub

Open in Terminal

A simple Obsidian plugin that adds palette commands for launching the current vault in your preferred terminal or cli tooling.

Features

  • Always-available Open in terminal command that opens a new window of your configured terminal at the vault directory.
  • Optional commands for Claude Code, Codex cli, Cursor cli, Gemini cli, and OpenCode that you can enable individually — each reuses the same terminal app and runs claude, codex, agent, gemini, or opencode respectively.
  • Optional Git commands:
    • Git: commit and push runs git add . && git commit -m "<default message>" && git push in a newly launched terminal.
    • Git: pull runs git pull in a newly launched terminal.
  • Cross-platform launch strategy with clean defaults (simple launches avoid extra shell commands).

Commands

  • Open in terminal – activates the configured terminal app and opens it at the vault root without running extra commands.
  • Open in Claude Code – when enabled, opens the terminal app and runs claude from the vault directory.
  • Open in Codex cli – when enabled, opens the terminal app and runs codex.
  • Open in Cursor cli – when enabled, opens the terminal app and runs agent.
  • Open in Gemini cli – when enabled, opens the terminal app and runs gemini.
  • Open in OpenCode – when enabled, opens the terminal app and runs opencode.
  • Git: commit and push – when enabled, opens the terminal app and runs git add . && git commit -m "<default message>" && git push.
  • Git: pull – when enabled, opens the terminal app and runs git pull.

Settings

The plugin adds a settings tab under Community Plugins → Open in Terminal with:

  • Terminal application – text field for the current platform's terminal app name (macOS examples: Terminal, iTerm; Windows: cmd.exe, powershell; Linux: gnome-terminal, alacritty). Settings are stored per platform for cross-device sync.
  • Enable Claude Code / Codex cli / Cursor cli / Gemini cli / OpenCode – toggles that add the corresponding commands to the palette.
  • Git commands:
    • Default commit message – used by Git: commit and push (default: update).
    • Enable Git: commit and push – adds the Git commit+push command to the palette.
    • Enable Git: pull – adds the Git pull command to the palette.
  • Use WSL for commands (Windows only) – run terminal and command launches inside WSL.

Commands warn if the terminal application name is empty.

Platform notes

  • macOS – simple launches use open -a <app>; when running a cli command, the plugin creates a temporary .command script that is cleaned up after launch, avoiding AppleScript permissions.
  • Windows – uses start to launch cmd.exe, powershell, wt.exe, or other shells with the vault directory preselected; cli commands append the respective tool invocation or fall back to cmd.exe /K when necessary.
  • Linux / BSD – simple launches spawn the terminal directly with the vault as the working directory; cli commands fall back to <terminal> -e bash -lc 'cd "$PWD"; …' with tweaks for GNOME Terminal and Konsole.

Development

  1. Install dependencies: npm install
  2. Build once: npm run build
  3. For watch mode while developing: npm run dev

Copy the generated manifest.json, main.js, and styles.css (if added) into your vault's .obsidian/plugins/open-in-terminal/ folder to test locally.

Release workflow

  • Tag commits with the format vX.Y.Z to trigger the GitHub Actions release pipeline defined in .github/workflows/release.yml.
  • The workflow installs dependencies, builds the plugin, packages manifest.json, main.js, and optional styles.css, and attaches them (as well as a zip archive) to the GitHub release.
  • Follow Obsidian's submission checklist before opening or updating the community plugins PR.

For plugin developers

Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.