Skip to content
| Marketplace
Sign in
Visual Studio Code>Other>Window PortalNew to Visual Studio Code? Get it now.
Window Portal

Window Portal

Shashi Sharma

|
2 installs
| (0) | Free
Stream any application window live inside VS Code — native support for Windows, macOS, and Linux
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

🌀 WindowPortal

Your portal to any external window - Stream live applications directly inside VS Code

WindowPortal transforms your VS Code workspace by bringing external applications right into your editor. Monitor Android emulators, preview browsers, watch video players, or keep an eye on any application window — all without leaving your IDE. Perfect for developers who want to maximize screen real estate while maintaining full visibility of their tools.

Note: WindowPortal supports Windows, macOS, and Linux!

Security & Privacy (Quick Note)

  • Runs local native tools: This extension invokes platform-specific native tools (Win32 PrintWindow on Windows, screencapture on macOS, and ffmpeg/wmctrl on Linux) locally to list windows and capture frames.
  • No uploads or telemetry: Frames and window data stay on your machine and are rendered locally inside VS Code.

✨ Features

  • 🎥 Real-Time Streaming Capture and stream any window with live MJPEG encoding. Watch your applications update in real-time with minimal latency.

  • 📺 Activity Bar Integration Access WindowPortal directly from the Activity Bar. Browse all available windows at a glance from a dedicated sidebar.

  • ⚡ Performance Profiles Choose from four FPS profiles (Low 10-15fps, Medium 20-30fps, High 30-60fps, Max refresh rate) and resolution modes (Scaled/Native) to balance quality and performance.

  • 🔍 Interactive Controls Full pan and zoom support with mouse wheel scrolling and drag-to-reposition. Includes dedicated zoom buttons (in/out/reset/fit) that auto-hide when not in use.

  • 🎯 One-Click Operation Start streaming any window with a single click. Each window has its own Start/Stop button for instant control.

  • 📊 Live Feedback Real-time dimension overlay shows current window size. Auto-adjusts when windows are resized.

  • 🖥️ Non-Intrusive Design Streams open in separate Column Two panels, keeping your code editor clean and focused while monitoring external applications.

📋 Prerequisites

Platform Support

WindowPortal relies on native integrations and works across all major OS platforms:

  • Windows: Windows 10/11
  • macOS: macOS 10.15+ — No special permissions needed. WindowPortal uses screencapture, a privileged macOS system binary, to capture windows without requiring VS Code to hold a Screen Recording entitlement.
  • Linux: X11 environment (Wayland is only supported if running in XWayland compatibility layer)

System Dependencies

Windows: No external dependencies required. Capture is handled natively via Win32 PrintWindow.

macOS: No external dependencies required. Capture is handled natively via the built-in screencapture binary.

Linux: The following tools must be installed and accessible in your system PATH:

  • ffmpeg — Required for video capture and streaming
  • wmctrl — Window listing and management
  • xwininfo — Window geometry information
  • xrandr — Display refresh rate detection

On Debian/Ubuntu:

sudo apt install ffmpeg wmctrl x11-utils x11-xserver-utils

On Arch Linux:

sudo pacman -S ffmpeg wmctrl xorg-xwininfo xorg-xrandr

🚀 Installation

From VS Code Marketplace

Search for "WindowPortal" in the VS Code Extensions view (Ctrl+Shift+X) and click Install.

From VSIX File

  1. Download the latest .vsix file from Releases
  2. Open VS Code
  3. Open the Extensions view (Ctrl+Shift+X)
  4. Click the ... menu at the top of the Extensions view
  5. Select Install from VSIX...
  6. Choose the downloaded .vsix file
  7. Reload VS Code

🏃 Usage

Method 1: Sidebar (Recommended)

  1. Click the WindowPortal icon in the Activity Bar (left sidebar)
  2. The sidebar displays all available application windows
  3. Configure streaming settings:
    • Resolution: Choose between Scaled (≤1280x720) or Native (full resolution)
    • FPS Profile: Select Low (10-15), Medium (20-30), High (30-60), or Max (refresh rate)
  4. Click ▶ Start button next to any window to begin streaming
  5. The window opens in a new panel (Column Two)
  6. Click ⏹ Stop to end streaming

Method 2: Command Palette

  1. Open Command Palette (Ctrl+Shift+P)
  2. Type and select:
    • WindowPortal: Open Window Viewer - Main streaming command
    • WindowPortal: Diagnose Environment - Check system dependencies

Interactive Controls

When streaming a window:

  • Zoom In - Click + button or scroll up with mouse wheel
  • Zoom Out - Click − button or scroll down with mouse wheel
  • Reset Zoom - Click 100% button to return to original size
  • Pan - Click and drag the window to reposition
  • Dimensions - Live window size displayed in bottom-left corner

⚙️ Configuration

Settings are configured per-stream in the sidebar panel:

Setting Options Description
Resolution Scaled, Native Scaled limits to 1280x720 for performance; Native captures full resolution
FPS Profile Low, Medium, High, Max Controls frame rate: Low (10-15fps), Medium (20-30fps), High (30-60fps), Max (display refresh rate)

💡 Tips & Best Practices

  • 🔧 Sidebar Width: Drag the sidebar edge to increase width if window titles are truncated
  • ⚡ Performance: Use "Scaled" resolution and "Medium" FPS for better performance on most systems
  • 🎮 Gaming/Video: Use "Native" resolution and "High" or "Max" FPS for smooth playback
  • 💾 Resource Usage: Stop streaming when not needed to free up system resources
  • 🖥️ Multi-Monitor: Works with windows on any monitor in your setup.

🔧 Troubleshooting

macOS: First frame takes 1-2 seconds to appear

This is expected. On the first stream, the extension resolves the target window's CGWindowID via a Swift one-liner (~1-2s compile time). Subsequent frames stream at the configured FPS after that.

macOS: Stream shows the wrong window or a black region

  • Ensure the target window is visible and not minimized.
  • Open View → Output in VS Code, select Window Embedder from the dropdown, and check for screencapture errors.
  • If CGWindowID resolution fails (logged as "not found, using -R fallback"), the extension falls back to coordinate-based capture which may capture a larger region. Try restarting the stream.

"No windows found"

  • Linux: Ensure wmctrl is installed (wmctrl -l). Check that windows are running on X11, not Wayland.
  • macOS: Ensure VS Code has "Screen Recording" and "Accessibility" permissions under System Settings > Privacy & Security.

"Command failed" or streaming errors

  • Run WindowPortal: Diagnose Environment command from the palette.
  • Linux only: Verify ffmpeg is installed and accessible in your terminal (ffmpeg -version).

Black screen in streaming panel

  • The window may be minimized, hidden, or offscreen.
  • On macOS, check the Window Embedder output panel for screencapture errors.
  • Ensure the target window still exists and is not occluded by a full-screen app.
  • Try stopping and restarting the stream.

Poor performance

  • Lower the FPS profile to "Medium" or "Low"
  • Use "Scaled" resolution instead of "Native"
  • Close other resource-intensive applications

📝 License

Copyright (c) 2026 Shashi Sharma. All Rights Reserved.

This extension is free to use for personal and internal business purposes.

💖 Support

If you find WindowPortal useful, consider supporting the project:

Contribute / Support the project →


❓ FAQ

Q: Is this extension free to use? A: Yes! WindowPortal is free to download and use for personal and internal business purposes.

Q: Why is this not open-source? A: This extension uses a proprietary license to protect the intellectual property while still allowing free use. Future commercial licenses may be offered.

Q: Does this work on Windows or macOS? A: Yes! As of our latest update, WindowPortal natively supports Windows, macOS, and Linux X11 environments.

Acknowledgments

Built with:

  • VS Code Extension API
  • FFmpeg and MJPEG processing
  • Cross-platform native shell scripting
  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2026 Microsoft