Skip to content
| Marketplace
Sign in
Visual Studio Code>Notebooks>ShelltifyNew to Visual Studio Code? Get it now.
Shelltify

Shelltify

Karthikeya M

|
1 install
| (0) | Free
Get notified when terminal commands finish, fail, or are cancelled — for any shell, any command, using VS Code's native Shell Integration API.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

Shelltify

Never wonder if your terminal command has finished again.

Shelltify notifies you the moment a terminal command completes, fails, or is cancelled. Whether you're building a Docker image, installing packages, running tests, compiling code, or executing long-running scripts, Shelltify lets you know the instant it's done.

Unlike extensions that scan terminal output, Shelltify uses VS Code's built-in Shell Integration API to detect command lifecycle events. It's lightweight, event-driven, and works without polling or parsing terminal output.


✨ Features

  • 🔔 Instant notifications for successful, failed, cancelled, and unknown command completions.
  • 🖥️ Native OS notifications when VS Code is minimized or unfocused.
  • 🔊 Optional sound alerts using the system sound or your own audio file.
  • ⏱️ Minimum duration filter to ignore short-lived commands.
  • 🚫 Ignore list with exact matches or regular expressions.
  • 📜 Command history with execution status, duration, terminal, and exit code.
  • 📊 Status bar indicator showing the number of currently running commands.
  • ⚡ Independent tracking across multiple terminals.
  • 🎛️ Interactive notifications with actions like Open Terminal and Copy Command.

📸 Screenshots

Success Notification

Success Notification

Failure Notification

Failure Notification

Cancelled Notification

Cancelled Notification

History

History


🚀 Installation

Install Shelltify directly from the VS Code Marketplace, or install a packaged .vsix manually:

code --install-extension shelltify-0.1.0.vsix

📖 Usage

Run commands in the integrated terminal as you normally would.

Shelltify automatically watches command execution in the background and notifies you when the command finishes.

Common examples include:

  • docker build
  • npm install
  • cargo build
  • pytest
  • mvn package
  • python train.py
  • terraform apply

No additional setup is required for supported shells.


⚙️ Requirements

Shelltify relies on VS Code Shell Integration.

Shell Integration is enabled by default in modern versions of VS Code for most supported shells, including:

  • PowerShell
  • Bash
  • Zsh
  • Fish
  • WSL

If notifications aren't appearing, open the Shelltify output channel to verify that Shell Integration has been detected.

Settings

Setting Default Description
shelltify.enableSuccessNotification true Notify when a command exits 0.
shelltify.enableFailureNotification true Notify when a command exits non-zero.
shelltify.enableCancelledNotification true Notify when a command is cancelled (e.g. Ctrl+C).
shelltify.minimumDuration 3 Minimum duration, in seconds, before a successful command notifies. Failures, cancellations, and undetermined-exit-code results always notify, regardless of duration.
shelltify.enableSound false Play a sound alongside notifications.
shelltify.soundType "system" "system" or "custom".
shelltify.customSound "" Path to a sound file, used when soundType is "custom".
shelltify.ignoreCommands [] Commands to never notify for — exact strings or /regex/flags.
shelltify.showDuration true Include duration in the notification text.
shelltify.showTerminalName true Include the terminal's name in the notification text.
shelltify.showExitCode true Include the exit code in failure notifications.
shelltify.nativeNotifications false Also raise a native OS notification when VS Code is unfocused/minimized.

Example ignore list:

"shelltify.ignoreCommands": [
  "npm run dev",
  "tail -f",
  "docker compose up",
  "/^python .*\\.py$/"
]

Commands

Open the Command Palette (Ctrl+Shift+P / Cmd+Shift+P) and search for:

  • Shelltify: Toggle Notifications
  • Shelltify: View History
  • Shelltify: Clear History
  • Shelltify: Test Success Notification
  • Shelltify: Test Failure Notification
  • Shelltify: Open Settings

FAQ

Nothing's notifying me — what's wrong? Almost always Shell Integration. Open a fresh integrated terminal and check the "Shelltify" output channel (View → Output, then pick it from the dropdown) — it logs whether integration was detected.

Why didn't npm run dev notify me? It's still running — that's by design. Long-running/dev-server-style commands only notify once they actually exit.

Can I use a regex in the ignore list? Yes — wrap it in slashes: "/^docker compose (up|logs)/". Optional flags go after the trailing slash, e.g. /pattern/i.

Does this work over SSH / in a devcontainer / in WSL? Yes, as long as Shell Integration is active in that remote/container shell — it's a VS Code terminal feature, not tied to where the shell process actually runs.

Known Limitations

  • cmd.exe has weak Shell Integration support in VS Code. Shelltify will warn you (once, plus every time in the output channel) if a cmd.exe terminal never establishes it. PowerShell, bash, zsh, and WSL are all reliable; cmd.exe is not. Switch the terminal's shell if you need notifications there.
  • Shell Integration occasionally can't determine an exit code for commands that draw their own terminal UI (Docker BuildKit's progress output is a common case). These are shown as a distinct "finished (exit code unknown)" notification rather than being dropped — check the output channel for a warning explaining why.
  • "Native OS notification" support depends on the underlying OS notification helper being available in your environment; it degrades silently (no popup, no crash) if it isn't — see Troubleshooting below.
  • There's no single VS Code API for "shell type" — the terminal name is always accurate, but the reported shell type is best-effort.

Troubleshooting

Open View → Output, then pick Shelltify from the channel dropdown — every notify/skip decision is logged there with a reason.

Native (OS-level) notifications aren't appearing on Windows. The in-editor popup still works even if this fails — native notifications are a separate channel via node-notifier's Windows toast helper (SnoreToast). Check the output channel: a failed attempt logs the underlying error. Common causes:

  • Windows Focus Assist is on and suppressing toasts.
  • Notifications are disabled for the helper app under Settings → System → Notifications.
  • The helper binary got flagged/blocked by antivirus software.

Native notifications also only fire while the VS Code window is unfocused (by design — that's the point of them); the output channel logs when one is skipped for being focused, so you can tell the difference between "skipped because focused" and "attempted but failed."

A command finished but I never got notified. Check the output channel for a line starting with "Notification skipped for..." — it names the exact reason (ignore list, notifications toggled off, etc.). If instead you see "Could not determine an exit code," that's the Shell Integration limitation above — you should still get a "❔ finished (exit code unknown)" notification for it; if you don't see even that, check whether shelltify.toggleNotifications was switched off.

Contributing

Issues and PRs welcome. Before submitting a PR:

npm install
npm run lint
npm run test:unit
npm run test:integration

Packaging & Publishing

Package a .vsix you can install locally or hand to someone else:

npm install
npm run compile
npx vsce package

This produces shelltify-<version>.vsix in the project root — install it with code --install-extension shelltify-<version>.vsix.

To publish to the VS Code Marketplace:

  1. Create a publisher and replace karthikeya-theDev in package.json (the publisher field, and the repository/bugs/homepage URLs) with your real publisher id.
  2. Get a Personal Access Token from Azure DevOps with Marketplace: Manage scope.
  3. Log in and publish:
npx vsce login <publisher-id>
npx vsce publish

vsce publish runs vscode:prepublish (which compiles) automatically, so a plain npx vsce publish patch|minor|major will also bump the version in package.json for you.

Before your first real publish, swap out the assets in resources/ with your final 128×128 branding if you want a more polished Marketplace appearance.

License

MIT

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2026 Microsoft