RustFrame is a privacy-focused, cross-platform screen region sharing tool. It lets you select any area of your screen and share only that region in video callsβwithout exposing your entire desktop.
What does RustFrame do?
- Lets you share a specific part of your screen (not the whole desktop)
- Works with all major video conferencing apps (Google Meet, Zoom, Teams, Discord)
- Supports multi-monitor setups and ultra-wide screens
- Keeps your private info hiddenβshare only what you want
- Fast and lightweight: minimal CPU/memory usage, instant region adjustment
- No account, no cloud, no telemetryβeverything runs locally
Key Features:
- Pixel-perfect region selection with a draggable border
- Real-time preview window (βRustFrame - Share this windowβ) for sharing
- Move/resize the capture region liveβeven while sharing
- GPU-accelerated for smooth performance
- Customizable: border, highlights, cursor, FPS, and more
- Multi-language UI with downloadable language packs
- Windows, macOS, and Linux support (Linux experimental)
See below for quick links and platform details. For more, see the User Guide.
- Download Latest Release
- User Guide β Installation, usage, troubleshooting
- Quick Start β Get started in 30 seconds
- Developer Guide β Architecture, building, contributing
- Technical Docs β Platform details, performance, internals
- Profiles & Platform Settings β Platform-specific configuration
| Language | Video |
|---|---|
| English | ![]() |
| Turkish | ![]() |
RustFrame needs OS permissions to capture the screen and may be blocked by platform security defaults. If you hit permission prompts or the app will not open, check these docs:
- macOS: Screen Recording + Accessibility are required; Gatekeeper may require "Open Anyway." See docs/user-guide/macos-permissions.md.
- Windows: No OS permission prompts, but some capture methods may require admin-level graphics access; see docs/user-guide/troubleshooting.md if capture fails.
RustFrame is designed for:
- Precise region capture with pixel-perfect control
- Multi-monitor support and auto-detection
- Content filtering (include/exclude apps/windows)
- GPU-accelerated performance
- Customizable UI (borders, highlights, cursor, FPS)
- Cross-platform: Windows, macOS, Linux (experimental)
See docs/README.md for full documentation structure and navigation.
RustFrame supports per-app capture profiles. On Windows, you typically need a specific profile so the window picker can see RustFrame. On macOS, the default profile works for native apps; use the shadow-cursor profile for browser-based sharing when the cursor is missing.
| App | Windows | macOS | Notes |
|---|---|---|---|
| Discord | discord |
Default | Windows needs taskbar visibility to appear in the picker. |
| Microsoft Teams | teams |
Default | Default macOS profile is enough. |
| OBS Studio | obs |
Default | Works reliably on both platforms. |
| Google Meet (Web) | Default (tested) | shadow-cursor |
Windows works with default profile; on macOS use shadow cursor if the browser doesn't show the OS cursor. |
| Zoom | Not tested | Windows picker/share can be unreliable; needs further investigation. |
Profiles live in resources/profiles/ and can be selected from the app settings. If you see a double cursor on macOS, switch back to the default profile.
All detailed documentation is under the docs/ directory:
- User Guide: docs/user-guide/
- Developer Guide: docs/developer/
- Technical Docs: docs/technical/
- Profiles & Platform Settings: docs/profiles/
- Changelog: docs/changelog/
- Archive: docs/archive/
Each section contains platform-specific details and comparison tables where relevant.
| Platform | Status | Capture Method | Rendering |
|---|---|---|---|
| Windows 10/11 | β Full Support | Windows Graphics Capture (WGC) | DirectX 11 (GPU) |
| macOS 12.3+ | β Full Support | ScreenCaptureKit | Metal (GPU) |
| macOS 10.15+ | β Supported | CoreGraphics | CPU fallback |
| Linux | π§ Experimental | X11/Wayland | wgpu |
For details, see docs/technical/ and docs/user-guide/.
Past experiments, failed approaches, and technical lessons are preserved in docs/archive/. See archive README for details.
See CONTRIBUTING.md and docs/developer/ for guidelines.
- Region Selection: Pixel-perfect control via draggable/resizable border
- Multi-Monitor: Auto-detects when you drag border to different display
- Live Adjustment: Move/resize region while capturing (no restart needed)
- Multiple Capture Methods:
- Windows: GPU (WGC) or CPU (GDI) fallback
- macOS: ScreenCaptureKit (GPU) or CoreGraphics (CPU)
- Linux: PipeWire (Wayland) or X11
- Cursor Control: Show/hide your cursor in capture
- Click Highlights: Visual feedback with customizable colors and dissolve effects
- Recording Indicator: "REC" badge shows when capturing is active
- Modes: Capture All, Exclude (hide selected windows/apps), Include Only (capture only selected)
- Manual Refresh: Load running apps/windows on demand; no auto-polling
- Search & View: Filter by text; switch between application or window list views
- Selection UX: Multi-select and add/remove; current picks visible at the top; clear-all control
- Preview Safety: Auto-exclude preview window toggle to avoid mirror loops
- Platform Coverage: macOS (CG + NSWorkspace) and Windows (EnumWindows, visible/non-cloaked, non-tool windows); Linux planned
- Border Styling: Adjustable width, color, and visibility
- Performance Tuning: FPS control (15-144 FPS), GPU acceleration toggle
- Capture Profiles: Pre-configured settings for different apps (Discord, Meet, etc.)
- Remember Region: Automatically restore last capture area
| Platform | Status | Capture Method | Performance |
|---|---|---|---|
| Windows 10/11 | β Stable | Windows Graphics Capture (WGC) | ~8-10% CPU |
| macOS 12.3+ | β Stable | ScreenCaptureKit + Metal | ~5-8% CPU |
| macOS 10.15-12.2 | β Supported | CoreGraphics | ~10-15% CPU |
| Linux | π§ Experimental | PipeWire / X11 + wgpu | Varies |
β See Platform-Specific Documentation for technical details
RustFrame uses a modular, cross-platform architecture:
UI Layer (Tauri + React)
β
Application Core (Rust)
β
Platform Abstractions (Traits)
β
Platform-Specific Implementations
- Capture Engines - Platform-specific screen capture (WGC, SCK, X11)
- Window Management - Hollow border and preview windows
- Rendering Pipeline - GPU or CPU rendering based on platform
- Settings Management - Persistent configuration with JSON
β See Architecture Overview for details
- Rust (latest stable)
- Node.js (v18+) for UI
- Platform Tools:
- Windows: Visual Studio Build Tools (MSVC)
- macOS: Xcode Command Line Tools
- Linux: GCC, GTK3, WebKit2GTK
# Clone repository
git clone https://github.com/salihcantekin/RustFrame
cd RustFrame
# Development mode
cargo tauri dev
# Release build
cargo tauri buildβ See Building Guide for detailed instructions
We welcome contributions! Here's how to get started:
-
Read the Guides
- CONTRIBUTING.md - Contribution guidelines
- CODE_OF_CONDUCT.md - Community standards
- Developer Guide - Technical documentation
-
Find an Issue
- Check GitHub Issues
- Look for
good-first-issuelabel
-
Submit a PR
- Fork the repository
- Create a feature branch
- Make your changes
- Submit a pull request
- macOS: Click highlights use CPU instead of GPU (optimization planned)
- Linux: PipeWire support experimental, may have compatibility issues
β See Known Issues for complete list
- Zero-copy GPU texture sharing (eliminate CPU copy)
- Global hotkeys for start/stop
- Region presets (save/load favorite regions)
- Complete Documentation Index - All documentation
- GPU Optimization Details - Platform GPU strategies
- Multi-Monitor Implementation - Display detection
- Color Format Handling - BGRA vs RGBA
MIT License - see LICENSE for details
- Repository: https://github.com/salihcantekin/RustFrame
- Releases: https://github.com/salihcantekin/RustFrame/releases
- Issues: https://github.com/salihcantekin/RustFrame/issues
- Discussions: https://github.com/salihcantekin/RustFrame/discussions
- Changelog: docs/changelog/README.md
- Security: SECURITY.md
Made with β€οΈ using Rust + Tauri + React
Star β this repo if RustFrame helps you!
- COM Programming: Creating and managing COM objects in Rust
- Windows.Graphics.Capture: Modern screen capture API
- Direct3D 11: GPU device creation, texture management
- DXGI: DirectX Graphics Infrastructure and swapchains
- WinRT Interop: Bridging Win32 and WinRT APIs
- Unsafe Code: Proper use of
unsafewith justification - FFI: Calling Windows APIs through
windowscrate - Resource Management: RAII, Drop implementations
- Thread Safety: Arc, Mutex, Send/Sync
- GPU Rendering: wgpu render pipelines
- Shader Programming: WGSL shaders
- Texture Management: Staging, mapping, uploading
- Swapchain Presentation: Frame synchronization
- Microsoft: Windows.Graphics.Capture API documentation
- wgpu Community: Excellent graphics API and examples
- windows-rs: Official Rust bindings for Windows
MIT License - See LICENSE file for details.
Developed by Salih Cantekin
Built with β€οΈ and Rust π¦ for the Windows platform

