LoganRupe/CursorFollow

Share one window in Zoom/Meet/Teams that follows whatever you're working in. macOS, Windows and Linux (Hyprland).

C#

0

78 commits

updated Oct 11, 2026

See the code

See what people are saying

SourceMessageScoreDate

I made a small open-source tool that lets you share one window in meetings and have it follow whatever you're working on (r/coolgithubprojects)

I made this and I hope it's useful to someone. I kept running into the same problem on calls. I'd be sharing my editor, switch to the browser to show something, and everyone would still be looking at the editor. Then I'd fumble through the share picker again mid-sentence.…

3

Oct 12, 2026

README

CursorFollow app icon

CursorFollow

Share one window. It follows you.

macOS  /  Windows  /  Linux (Hyprland)

CursorFollow following focus between Chrome and VS Code while its output window is shared in a Slack huddle
Sharing CursorFollow Output in a Slack huddle on Windows. Click for the full walkthrough (1:39).

Capture a target window and render it into a stable, shareable window named CursorFollow Output. Share that one window from Zoom, Google Meet, Slack, Teams, OBS, or any app with a window-share picker — and it keeps following your target as you switch focus, so your audience always sees the right thing without you re-picking a share source.

CursorFollow ships for macOS, Windows, and Linux (Hyprland). This page covers what's common to all of them; each platform's page has the setup, permissions, screenshots, and troubleshooting specific to that OS.

Table of Contents

Overview

CursorFollow runs in the background — the menu bar on macOS, the system tray on Windows, a small control panel on Linux — and keeps CursorFollow Output pointed at the window you want to share. It can follow the frontmost eligible window automatically, or lock to a specific window manually. Because the thing you share is an ordinary app window, you keep your real webcam selected and simply add the output window as a screen/window share.

Platforms

PlatformCaptureSurfaceStatusDocs
macOSScreenCaptureKitMenu bar app + shared output windowMatureCursorFollowMac/README.md
WindowsWindows Graphics CaptureTray app + shared output windowOutput-window-first portCursorFollowWin/README.md
LinuxHyprland toplevel export (Wayland)GTK 4 control panel + shared output windowFirst working build, Hyprland onlyCursorFollowLinux/README.md

All platforms render to the same CursorFollow Output window. The shared output window is the shipping feature on each — a virtual-camera mode is not part of the product.

How It Works

These controls behave the same on both platforms (only the UI placement differs):

  • Target Mode — Auto tracks the active eligible window; Manual keeps the selected target.
  • Filter mode — All / Exclude / Include controls which windows appear as capture targets.
  • Output scaling — Fit, Fill, or Actual for the shared output window.
  • Refresh — re-scan active windows if the list looks stale or incomplete.
  • Show / Hide — bring the persistent output window forward or hide it.
  • Resume / Pause — start or pause output without changing the shared window's identity.

Download & Install

Download the latest build from GitHub Releases, then install for your platform:

  • macOS — open the .dmg and drag CursorFollowMac into Applications. Releases are not notarized, so approve the first launch in System Settings → Privacy & Security → Open Anyway, then grant Screen Recording when prompted. See macOS install.
  • Windows — run the .msi (no admin required). See Windows setup.
  • Linux — no packaged build yet; build from source with make and make install. See Linux build.

Then point your meeting app's window picker at CursorFollow Output: pick a target window (or set Target Mode to Auto), make sure output isn't paused, and share it.

Prefer to build it yourself? See Developer Docs.

Troubleshooting

The general reset is the same everywhere — quit your meeting app and CursorFollow, confirm capture permission, reopen CursorFollow, Refresh, reselect the target, Resume, then reselect CursorFollow Output in the meeting app. For platform specifics (permission paths, black/frozen output, picker quirks):

Developer Docs

Build from source

Releasing

GitHub Actions builds the installers (.github/workflows/release.yml):

  1. Bump the version on every platform (MARKETING_VERSION in the Xcode project, Version/FileVersion/AssemblyVersion in CursorFollowWin.csproj, VERSION in CursorFollowLinux/Makefile) and move the Unreleased notes in CHANGELOG.md under a ## <version> heading.
  2. Merge to main, then tag and push: git tag -a v0.5.2 -m "CursorFollow 0.5.2" && git push origin v0.5.2.
  3. The workflow builds the signed macOS DMG and the Windows MSI and attaches both to a draft release, with the changelog section as notes. Review it, then publish.

macOS signing in CI uses the self-signed identity from two repository secrets, MAC_SIGNING_P12 (base64 of the .p12) and MAC_SIGNING_P12_PASSWORD. See Docs/Distribution/Packaging.md. Local builds still work: ./CursorFollowMac/scripts/package.sh and ./CursorFollowWin/scripts/package.ps1.

License

CursorFollow is released under the MIT License.

hyprland
linux
macos
screencapturekit
screen-sharing
window-capture
windows
winui3

LoganRupe/CursorFollow

Share one window in Zoom/Meet/Teams that follows whatever you're working in. macOS, Windows and Linux (Hyprland).

C#

0

78 commits

updated Oct 11, 2026

See the code

See what people are saying

SourceMessageScoreDate

I made a small open-source tool that lets you share one window in meetings and have it follow whatever you're working on (r/coolgithubprojects)

I made this and I hope it's useful to someone. I kept running into the same problem on calls. I'd be sharing my editor, switch to the browser to show something, and everyone would still be looking at the editor. Then I'd fumble through the share picker again mid-sentence.…

3

Oct 12, 2026

README

CursorFollow app icon

CursorFollow

Share one window. It follows you.

macOS  /  Windows  /  Linux (Hyprland)

CursorFollow following focus between Chrome and VS Code while its output window is shared in a Slack huddle
Sharing CursorFollow Output in a Slack huddle on Windows. Click for the full walkthrough (1:39).

Capture a target window and render it into a stable, shareable window named CursorFollow Output. Share that one window from Zoom, Google Meet, Slack, Teams, OBS, or any app with a window-share picker — and it keeps following your target as you switch focus, so your audience always sees the right thing without you re-picking a share source.

CursorFollow ships for macOS, Windows, and Linux (Hyprland). This page covers what's common to all of them; each platform's page has the setup, permissions, screenshots, and troubleshooting specific to that OS.

Table of Contents

Overview

CursorFollow runs in the background — the menu bar on macOS, the system tray on Windows, a small control panel on Linux — and keeps CursorFollow Output pointed at the window you want to share. It can follow the frontmost eligible window automatically, or lock to a specific window manually. Because the thing you share is an ordinary app window, you keep your real webcam selected and simply add the output window as a screen/window share.

Platforms

PlatformCaptureSurfaceStatusDocs
macOSScreenCaptureKitMenu bar app + shared output windowMatureCursorFollowMac/README.md
WindowsWindows Graphics CaptureTray app + shared output windowOutput-window-first portCursorFollowWin/README.md
LinuxHyprland toplevel export (Wayland)GTK 4 control panel + shared output windowFirst working build, Hyprland onlyCursorFollowLinux/README.md

All platforms render to the same CursorFollow Output window. The shared output window is the shipping feature on each — a virtual-camera mode is not part of the product.

How It Works

These controls behave the same on both platforms (only the UI placement differs):

  • Target Mode — Auto tracks the active eligible window; Manual keeps the selected target.
  • Filter mode — All / Exclude / Include controls which windows appear as capture targets.
  • Output scaling — Fit, Fill, or Actual for the shared output window.
  • Refresh — re-scan active windows if the list looks stale or incomplete.
  • Show / Hide — bring the persistent output window forward or hide it.
  • Resume / Pause — start or pause output without changing the shared window's identity.

Download & Install

Download the latest build from GitHub Releases, then install for your platform:

  • macOS — open the .dmg and drag CursorFollowMac into Applications. Releases are not notarized, so approve the first launch in System Settings → Privacy & Security → Open Anyway, then grant Screen Recording when prompted. See macOS install.
  • Windows — run the .msi (no admin required). See Windows setup.
  • Linux — no packaged build yet; build from source with make and make install. See Linux build.

Then point your meeting app's window picker at CursorFollow Output: pick a target window (or set Target Mode to Auto), make sure output isn't paused, and share it.

Prefer to build it yourself? See Developer Docs.

Troubleshooting

The general reset is the same everywhere — quit your meeting app and CursorFollow, confirm capture permission, reopen CursorFollow, Refresh, reselect the target, Resume, then reselect CursorFollow Output in the meeting app. For platform specifics (permission paths, black/frozen output, picker quirks):

Developer Docs

Build from source

Releasing

GitHub Actions builds the installers (.github/workflows/release.yml):

  1. Bump the version on every platform (MARKETING_VERSION in the Xcode project, Version/FileVersion/AssemblyVersion in CursorFollowWin.csproj, VERSION in CursorFollowLinux/Makefile) and move the Unreleased notes in CHANGELOG.md under a ## <version> heading.
  2. Merge to main, then tag and push: git tag -a v0.5.2 -m "CursorFollow 0.5.2" && git push origin v0.5.2.
  3. The workflow builds the signed macOS DMG and the Windows MSI and attaches both to a draft release, with the changelog section as notes. Review it, then publish.

macOS signing in CI uses the self-signed identity from two repository secrets, MAC_SIGNING_P12 (base64 of the .p12) and MAC_SIGNING_P12_PASSWORD. See Docs/Distribution/Packaging.md. Local builds still work: ./CursorFollowMac/scripts/package.sh and ./CursorFollowWin/scripts/package.ps1.

License

CursorFollow is released under the MIT License.

hyprland
linux
macos
screencapturekit
screen-sharing
window-capture
windows
winui3