A small GNOME screen recorder for quick explanations: record your screen with microphone audio and an optional webcam in the corner, then paste the finished video as an attachment.
Quickcast is a GPL-3.0-or-later fork of Kooha. Kooha's authors and contributors built the capture, audio, region selection and GNOME application foundation. This fork adds webcam composition, automatic file copying, a compact MP4 preset and TunaOS packaging.
flatpak remote-add --user --if-not-exists tuna-os https://tunaos.org/flatpak/tuna-os.flatpakrepo
flatpak install --user tuna-os org.tunaos.Quickcast
flatpak run --user org.tunaos.QuickcastThe initial release targets x86_64 and the GNOME 50 Flatpak runtime.
Alternatively, install the .flatpak bundle from this repository's releases.
- Choose a monitor/window or a screen region.
- Toggle microphone and desktop audio. Microphone is enabled by default; desktop audio is optional.
- Select a camera and toggle the webcam button next to the microphone to show the floating bubble. Drag it to position it; toggle the webcam off to hide it. The bubble remains live during recording; its size menu offers three sizes.
- Press Record. Press Stop when finished.
- The completion window appears and copies the video file. Paste in an app that accepts file attachments. Copy video copies the latest recording again; Open video plays it.
Files remain in ~/Videos/Quickcast unless you change the destination in
Preferences. No upload, account or cloud storage is involved. Closing the window
keeps the app running to serve the clipboard; choose Quit or Ctrl+Q to exit.
In GNOME Settings → Keyboard → Custom Shortcuts, use:
gapplication action org.tunaos.Quickcast toggle-recordThe same command starts and stops recording. scripts/install-shortcut.py installs
Super+Shift+R if it is free, preserving your existing custom shortcuts.
Install the included GNOME 50 companion:
./scripts/install-extension.shOn first installation, GNOME may need logout/login to discover the new extension. The script preserves existing extensions and enables Quickcast for the next session. Until it loads, the camera window can still be dragged, but always-on-top, workspace pinning and window-only recording position tracking need the companion. The Shell menu also offers a start/stop recording action.
The extension is included as a separate .shell-extension.zip release asset.
Flatpak does not install host Shell extensions automatically.
- Default: H.264 + AAC in MP4, 30 fps, software x264 quality 24 / veryfast.
- The output fits within 1920×1080 without upscaling. Monitor/region recordings capture the floating webcam window naturally, so move it inside the area you are recording. Window-only recordings composite the same camera stream and follow the bubble's relative position and size on its monitor.
- The bubble center-crops the camera to a circle with transparent corners. Install the companion Shell extension to keep it above other apps, across workspaces, and relay live position changes to window-only recordings. Automatic hardware encoder selection is not implemented.
- Video is encoded during recording. Copying occurs only after successful end-of-stream finalization, never after cancellation or an encoding error.
- GTK file-list, URI-list and GNOME copied-file clipboard formats are offered. Native apps and browser attachment fields differ in which formats they accept. GNOME Wayland may require focusing the completion window before copying can finish; the pending copy is retried when that window becomes active.
- The camera uses V4L2 (raw or MJPEG), so the Flatpak needs device access and
read-only
/run/udevaccess for discovery. Devices are enumerated when the app window is created; restart after attaching a camera. - Screen permissions use the desktop portal. Previously granted capture sources are remembered where the portal permits it. No capture permission is bypassed.
Install the GNOME 50 SDK and Rust extension for your user:
flatpak install --user flathub org.gnome.Sdk//50 org.freedesktop.Sdk.Extension.rust-stable//25.08
./scripts/build-local.sh
flatpak install --user --reinstall ./Quickcast.flatpak
./scripts/test-local.shThe build script produces Quickcast.flatpak. The Flatpak Builder manifest is
org.tunaos.Quickcast.json. CI builds that manifest and runs the Meson tests,
including a synthetic screen/webcam/audio MP4 recording and a GTK clipboard/UI
check. Local tests use Xvfb and a private D-Bus session, avoiding the desktop's
clipboard. scripts/verify-video.py decodes the synthetic result and checks its
codecs, duration and circular overlay pixels, including transparent corners. The
GTK test checks bubble transparency and file transfer to a separate process in
all three offered clipboard formats.
Real GNOME portal selection, physical audio/video synchronization, and pasting into individual chat/browser apps still require interactive hardware testing.
Tag releases as v0.1.0, etc., or dispatch Publish Quickcast Flatpak. The
workflow calls the shared tuna-os/.github publisher, pushes
ghcr.io/tuna-os/quickcast, and updates the served TunaOS Flatpak index. It inherits
FLATPAK_INDEX_TOKEN from the organization/repository; that credential needs access
to the central index repository. When it is unavailable, the same shared workflow
builds the artifacts and the fallback publishes GHCR and the release bundle;
an authorized maintainer must then update the central index from the OCI artifact.
CI on main builds and tests without publishing.