Skip to content

Repository files navigation

Gleem

License: MIT Tauri 2 Rust React 19 Windows

Pretty screen recording and screenshots on Windows, plus a virtual camera that streams the same pretty output to Discord / Zoom / OBS.

Capture your screen — or a region of it — and Gleem composites it over a configurable gradient background, with rounded corners, drop shadow, perspective tilt, and an optional watermark. You can record to MP4, copy a screenshot to your clipboard, or feed the composited video stream into a Windows virtual camera for live calls.

Built as a desktop app: Rust + Tauri 2 native backend, React 19 frontend, runs from the tray.


What it does

Feature Details
🖥️ Capture Full screen, single monitor, or a selected region. Uses the Windows Graphics Capture API directly (low overhead, no driver).
🎨 Compositing pipeline Gradient/solid/image background → rounded corners → drop shadow → perspective tilt → watermark. Each step is a Rust module under src-tauri/src/processor/.
📷 Screenshot mode One hotkey grabs a frame, composites it, and drops the result on your clipboard (or to a file).
🎬 Recording mode Captures to MP4 via an ffmpeg-sidecar. Live preview, region-select overlay, recording border.
📡 Virtual camera A DirectShow virtual camera (built on softcam) that exposes the composited output to any app that lists webcams — Discord, Zoom, Teams, OBS, browsers.
🎛️ Background presets Curated gradients (backgrounds.json) plus custom images, all editable in-app.

Architecture

┌────────────────────────────────────────────────────────────┐
│  React 19 + Zustand (settings, live preview, controls)     │
│  Tauri IPC                                                 │
└──────────┬─────────────────────────────────────────────────┘
           │
┌──────────┴─────────────────────────────────────────────────┐
│  Rust backend (src-tauri/src/)                             │
│                                                            │
│   monitor.rs   ─► enumerate displays                       │
│   recorder.rs  ─► windows-capture frames @ N fps           │
│        │                                                   │
│        ▼                                                   │
│   processor/                                               │
│   ├─ background.rs   gradient / solid / image fill         │
│   ├─ corners.rs      rounded corner masking                │
│   ├─ shadow.rs       gaussian drop shadow                  │
│   ├─ perspective.rs  3D tilt (forward warp)                │
│   ├─ watermark.rs    text overlay via ab_glyph             │
│   ├─ template.rs     preset application                    │
│   └─ pipeline.rs     orders the stages                     │
│        │                                                   │
│        ├─► clipboard/  ─► PNG to Win32 clipboard           │
│        ├─► ffmpeg-sidecar  ─► MP4 file                     │
│        └─► vcam.rs     ─► softcam DLL ─► DirectShow cam    │
└────────────────────────────────────────────────────────────┘

Every stage operates on a single image::RgbaImage, so the pipeline is straight-line code — easy to read in processor/pipeline.rs.


Prerequisites

  • Windows 10 / 11 (the capture API and virtual camera are Windows-only)
  • Rust (1.77+ recommended)
  • Node.js 18+
  • Tauri 2 system deps (WebView2 ships with modern Windows)

The bundled gleem_vcam.dll is a pre-built softcam binary. You don't need to compile it separately unless you want to.


Quick start (dev)

git clone https://github.com/IamOrbitDev/gleem-capture.git
cd gleem-capture
npm install
npm run tauri dev

The settings window opens. Pick a background, a region or full screen, hit Record or Screenshot. The tray icon stays around when the window is closed.

To use the virtual camera: open Discord / Zoom / your browser → camera settings → select "Gleem Virtual Camera" (registered on first run).

Build a release

npm run tauri build

Outputs a Windows installer under src-tauri/target/release/bundle/.


Project layout

gleem/
├── src/                       # React 19 + TypeScript front
│   ├── App.tsx
│   ├── components/
│   │   ├── BackgroundPicker/  # gradient / image picker
│   │   ├── LivePreview/       # real-time composited preview
│   │   ├── PreviewCanvas/     # the canvas that renders the preview
│   │   ├── SettingsPanel/     # in-window controls
│   │   ├── SettingsModal/     # popup settings
│   │   └── VideoRecorder/     # recording / region UI
│   ├── store/settingsStore.ts # zustand
│   └── utils/canvasDrawing.ts
├── src-tauri/                 # Rust + Tauri 2
│   ├── src/
│   │   ├── main.rs
│   │   ├── lib.rs             # Tauri setup
│   │   ├── commands.rs        # IPC handlers (~670 lines)
│   │   ├── recorder.rs        # capture pipeline (~1700 lines)
│   │   ├── vcam.rs            # softcam wrapper (DLL FFI)
│   │   ├── monitor.rs         # display enumeration
│   │   ├── state.rs           # app state
│   │   ├── backgrounds/       # background data model
│   │   ├── clipboard/         # Win32 clipboard helpers
│   │   └── processor/         # image pipeline (see Architecture)
│   ├── gleem_vcam.dll         # pre-built softcam DLL
│   ├── Cargo.toml
│   └── tauri.conf.json
├── backgrounds.json           # gradient/preset definitions
└── public/                    # static HTML overlays (recording border, region select)

Total: ~3 100 lines of Rust, ~2 000 lines of TypeScript/TSX.


Configuration

Settings live in the standard Tauri app data directory:

  • Windows: %APPDATA%\com.gleem.desktop\

The in-app Settings panel writes there directly — no manual editing needed for normal use.

Custom backgrounds are added to backgrounds.json (in the app's data dir, the bundled one is a starting template).


Status & caveats

  • Windows only, by design. The Graphics Capture API, DirectShow virtual camera, and clipboard image format are all Win32. Porting to macOS would mean ScreenCaptureKit + CoreMediaIO + NSPasteboard — feasible but a separate project.
  • Pre-1.0 software. Stable on the author's machine, but rough edges exist. Don't ship critical demos through it without rehearsal.
  • Virtual camera registration requires admin rights on first run (DirectShow filter registration). After that, normal user.
  • No telemetry. Nothing leaves your machine.

License

MIT for the application code. See LICENSE.

The bundled gleem_vcam.dll is built from softcam (BSD 3-Clause). Crediting Takashi Shino — the virtual camera plumbing is doing the hardest part.

About

Pretty screen capture + Windows virtual camera in one desktop app. Tauri 2, Rust, React 19. Records to MP4, screenshots to clipboard, and streams the composited output to Discord/Zoom/OBS as a webcam.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages