How getopenscreen/openscreen works
OpenScreen is a cross-platform desktop screen recorder and video editor. The main workflow is to choose a screen or window and audio sources, record media, edit the resulting project—with timeline tools, captions, and optional AI assistance—and export a polished MP4 or GIF. The graph preserves those documented capabilities and distinguishes the Electron/UI layer from native capture and rendering. Some subsystem links are documented only at product level; unsampled implementation details are not inferred as direct calls.
Main entry points: scene.rs Native compositor · handlers.ts IPC handlers · useScreenRecorder.ts Recording controller · index.ts Project document
Components 23
Desktop experience
- App shell
src/App.tsx - Electron main
electron/main.ts - IPC handlers
electron/ipc/handlers.ts
Recording and capture
- Capture setup UI
src/components/launch/LaunchWindow.tsx - Recording controller
src/hooks/useScreenRecorder.ts - Recording session
src/lib/recordingSession.ts
Editing and AI
- Project document
src/lib/ai-edition/schema/index.ts - Timeline editing
src/lib/ai-edition/store/useTimeline.ts - Editor preview
src/components/ai-edition/VirtualPreview.tsx - On-device captions
electron/stt/index.ts - AI editing agent
electron/ai-edition/deep-agent/service.ts - Export interface
src/components/ai-edition/ExportDialog.tsx
Media processing
- Native compositor
crates/compositor/src/scene.rs - Linux export pipeline
crates/compositor/src/pipeline_linux.rs - macOS export pipeline
crates/compositor/src/pipeline_macos.rs - Windows export pipeline
crates/compositor/src/pipeline_windows.rs - Audio processing
crates/compositor/src/audio.rs - GIF export
crates/compositor/src/gif_export.rs
Native platform engines
- Linux capture
electron/native/pipewire-capture/src/main.rs - Windows capture
electron/native/wgc-capture/src/main.cpp - macOS capture
electron/native/screencapturekit/Sources/OpenScreenScreenCaptureKitHelper/ScreenCaptureRecorder.swift
Other components
- Creator
- MP4 or GIF
Connections 27
- Creator → Capture setup UI: chooses sources
- App shell → Capture setup UI: shows capture UI
src/App.tsx - Capture setup UI → Recording controller: starts recording
- Recording controller → Recording session: manages session
src/hooks/useScreenRecorder.ts - Recording controller → IPC handlers: requests capture
electron/ipc/handlers.ts - IPC handlers → Linux capture: starts native capture
- IPC handlers → Windows capture: starts native capture
- IPC handlers → macOS capture: starts native capture
- Recording session → Project document: creates project
- Project document → Timeline editing: defines edit state
src/lib/ai-edition/store/useTimeline.ts - Timeline editing → Editor preview: drives preview
src/components/ai-edition/VirtualPreview.tsx - Project document → On-device captions: transcribes audio
- Creator → AI editing agent: requests edit
- AI editing agent → Timeline editing: applies edits
electron/ai-edition/deep-agent/service.ts - Creator → Export interface: requests export
- Export interface → Native compositor: requests render
- Native compositor → Linux export pipeline: uses pipeline
- Native compositor → macOS export pipeline: uses pipeline
- Native compositor → Windows export pipeline: uses pipeline
crates/compositor/src/pipeline_windows.rs - Linux export pipeline → Audio processing: processes audio
crates/compositor/src/pipeline_linux.rs - macOS export pipeline → Audio processing: processes audio
crates/compositor/src/pipeline_macos.rs - Windows export pipeline → Audio processing: processes audio
crates/compositor/src/pipeline_windows.rs - Linux export pipeline → MP4 or GIF: encodes video
crates/compositor/src/pipeline_linux.rs - macOS export pipeline → MP4 or GIF: renders export
- Windows export pipeline → MP4 or GIF: renders export
- Native compositor → GIF export: supports GIF
- GIF export → MP4 or GIF: writes GIF