Enhanced Screenshot & Screencast for Cinnamon
A Cinnamon extension for capturing, annotating, and recording the desktop without leaving the Shell interface.
Screenshot and demonstration GIF placeholder
Big Shot replaces the basic Cinnamon screenshot workflow with a fullscreen capture interface inspired by GNOME's screenshot UI. Press Print Screen to select an area, window, or screen, annotate the result, or switch to screencast mode.
Main capabilities:
- Area, window, and fullscreen screenshots
- Area, window, and fullscreen video recording
- 16 annotation and privacy tools
- Live and paused video annotations
- Desktop audio and microphone capture
- Draggable webcam overlay with masks and size presets
- Hardware-accelerated and software video encoders
- Pause/resume with safe segment validation and merging
- Screenshot and recording completion notifications
- 29 translation catalogs
The capture UI, editing toolbar, recording controls, and webcam preview are integrated into Cinnamon. No separate editor window is required.
- Capture a custom area, a window, or the active monitor
- Include or exclude the mouse pointer
- Shift-activated selection magnifier with 2x–6x zoom
- Correct logical and physical coordinate handling for scaled displays
- Floating, draggable editing toolbar
- Automatic PNG copy to the clipboard
- Save screenshots under
~/Pictures/Screenshots/ - Completion notification that opens the screenshot folder when clicked
- Crop output, add configurable padding, and apply gradient backgrounds with rounded corners
| Tool | Description |
|---|---|
| Select / Move | Select, move, resize, or edit existing annotations |
| Pen | Freehand drawing with smoothed strokes |
| Arrow | Arrow with proportional head; hold Shift to constrain direction |
| Line | Straight line; hold Shift for horizontal or vertical snapping |
| Rectangle | Outlined or filled rectangle; hold Shift for a square |
| Oval | Outlined or filled ellipse; hold Shift for a circle |
| Text | Multiline text with font selection, wrapping, moving, and resizing |
| Highlighter | Semi-transparent marker strokes |
| Censor | Mosaic pixelation for sensitive information |
| Blur | Multi-pass blur over the selected region |
| Invert Colors | Invert real pixels inside the selected region |
| Magnify / Zoom | Create a movable zoom callout with optional caption |
| Number | Sequential numbered markers |
| Number with Arrow | Numbered marker connected to an arrow |
| Number with Pointer | Numbered marker connected to a pointer line |
| Eraser | Remove annotations |
- Independent stroke and fill colors
- Color palettes for regular drawing and highlighting
- Adjustable brush size and privacy-effect intensity
- System font selector for text annotations
- Multiline text input:
Enterinserts a new line andCtrl+Enterconfirms - Full undo/redo history for creation, deletion, movement, resizing, and text edits
- Copy composited output to the clipboard
- Save composited output through a file chooser
- Draggable toolbar with hover feedback
| Feature | Description |
|---|---|
| Capture source | Area, window, or fullscreen |
| Framerate | 15, 24, 30, or 60 FPS |
| Resolution | 100%, 75%, 50%, or 33% |
| Quality | High, Medium, or Low encoder presets |
| Codec | Automatic best available encoder or manual selection |
| Desktop audio | Capture the selected PulseAudio/PipeWire monitor source |
| Microphone | Capture a selected microphone or automatic default source |
| Audio mix | Record desktop audio and microphone together |
| Pause / Resume | Finalize the current segment, pause safely, then continue in a new segment |
| Panel indicator | Elapsed timer with pause/resume and stop controls |
| Live editing | Draw and edit annotations without pausing the recording |
| Paused editing | Enter editing automatically after pausing |
| Privacy effects | Censor, blur, invert, and zoom from a current screen frame |
| Screenshot while recording | Save and copy a PNG without interrupting the active video |
| Recovery | Preserve and validate recoverable recording sessions after interruption |
Recordings are saved under ~/Videos/BigShot/. When finalization completes, Cinnamon displays a notification that opens this folder when clicked.
- Start a recording from the capture interface.
- Click the pencil in the recording indicator to enter live edit mode.
- Draw, add multiline text, or apply privacy and zoom effects while recording continues.
- Click Pause to finish the active segment and enter paused edit mode automatically.
- Edit annotations while the recording remains paused.
- Click Play to close paused editing and begin the next segment.
- Stop the recording to validate and publish the final file.
Annotations remain visible after editing closes and are captured in subsequent video frames. The clear button removes all active video annotations.
- Live GStreamer webcam preview
- Fully draggable overlay
- Five size presets: XS, S, M, L, and XL
- Position preserved while moving between preview and recording modes
- Eight mask styles:
| Mask | Appearance |
|---|---|
| None | Full rectangular frame |
| Circle | Circular crop with a soft edge |
| Oval | Elliptical crop |
| Soft | Strong feathered circular edge |
| Spotlight | Bright center with darker edges |
| Ornate | Decorative gradient frame |
| Checker | Alternating transparent checker pattern |
| Neon | Bright colored border effect |
Big Shot detects the GPU vendor and installed GStreamer elements, then prioritizes suitable encoders:
| Hardware | Encoder | Container |
|---|---|---|
| NVIDIA | nvh264enc |
MP4 |
| AMD / Intel | vah264lpenc |
MP4 |
| AMD / Intel | vah264enc |
MP4 |
| AMD / Intel | vaapih264enc |
MP4 |
| Software fallback | openh264enc |
MP4 |
| Software fallback | vp9enc |
WebM |
The Automatic option chooses the first compatible pipeline. The video settings panel can be used to select quality, codec, audio source, webcam mask, and webcam size.
| Key | Action |
|---|---|
Print Screen |
Open Big Shot |
1–9 |
Select Pen, Arrow, Line, Rectangle, Oval, Text, Highlighter, Censor, or Number |
0 or S |
Select / Move mode |
B |
Blur tool |
I |
Invert Colors tool |
E |
Eraser tool |
Ctrl+Z |
Undo |
Ctrl+Shift+Z or Ctrl+Y |
Redo |
Delete or Backspace |
Remove the selected or most recent annotation |
Escape |
Deselect an object or exit video edit mode |
Enter |
Insert a line break in multiline text |
Ctrl+Enter |
Confirm multiline text |
Ctrl+Scroll |
Adjust brush size or privacy-effect intensity |
Shift while selecting |
Show the selection magnifier |
On X11, Big Shot launches a direct GStreamer pipeline using ximagesrc and the selected global screen geometry. Capture dimensions are normalized to valid even encoder sizes, including downscaled output.
Desktop and microphone audio use PulseAudio-compatible GStreamer sources. This works with native PulseAudio and with PipeWire through its PulseAudio compatibility layer.
Audio branches are timestamped, clock-slaved, resampled, and normalized to stereo S16LE at 48 kHz before mixing and encoding.
On Wayland, Big Shot uses the XDG ScreenCast Portal to select a monitor or window, obtains the authorized PipeWire remote, and passes a duplicated descriptor to each recording segment. Area recording crops the selected monitor stream. A portal backend that implements org.freedesktop.portal.ScreenCast is required.
Pause/resume is segment-based rather than signal-based:
- Pause sends EOS to the active GStreamer pipeline and waits for the segment to settle.
- Resume creates a new segment with the original geometry, codec, quality, framerate, scale, and audio settings.
- Final stop validates streams and durations with
ffprobe. - Compatible segments are merged with
ffmpeg -f concat -c copy. - Temporary files are deleted only after the final output is validated and published.
- Interrupted sessions retain a recovery manifest and safe segments for recovery on the next extension start.
- Live-writer recovery verifies boot ID, PID start time, executable, and exact segment path before claiming an abandoned session.
- A durable output reservation reconciles crashes before or after the atomic final move without overwriting another recording.
Screenshot output is composed in this order:
- Pixel effects such as censor, blur, and invert use the captured
GdkPixbuf. - Vector annotations are rendered with Cairo/Pango.
- The selected region is saved as PNG and copied to the clipboard.
Video annotations use a Cinnamon Chrome overlay above application windows. Live and paused editors capture a base frame for pixel effects while preserving the interactive recording controls.
| Component | Support |
|---|---|
| Cinnamon | 5.4, 5.6, 5.8, 6.0, 6.2, 6.4, and 6.6 |
| Display server | X11 recommended and fully supported |
| Wayland | XDG ScreenCast Portal/PipeWire path implemented; requires a compatible portal backend and still needs runtime validation across supported Cinnamon releases |
| Audio | PulseAudio or PipeWire with PulseAudio compatibility |
| Video | GStreamer 1.0 |
| Webcam | V4L2 devices supported by GStreamer |
| Packaging | Arch Linux and Arch-based distributions through the included PKGBUILD |
cd pkgbuild
makepkg -siLog out and back in after installation so Cinnamon loads the extension and its JavaScript modules from a clean session.
chmod +x build.sh
./build.shThe script compiles translations, updates the date-based version, and creates big-shot-cinnamon.zip.
For a per-user test installation:
mkdir -p ~/.local/share/cinnamon/extensions/big-shot@bigcommunity.org
unzip -o big-shot-cinnamon.zip \
-d ~/.local/share/cinnamon/extensions/big-shot@bigcommunity.orgThen enable Big Shot in System Settings → Extensions and restart the Cinnamon session.
| Package | Purpose |
|---|---|
cinnamon >= 5.4 |
Shell and extension runtime |
ffmpeg |
Segment validation, recovery, and final merging |
gstreamer |
Recording pipeline and element inspection |
gst-plugins-base |
Core conversion, queue, caps, and audio mixing elements |
gst-plugins-good |
PulseAudio sources, VP9, and common muxers |
gst-plugins-bad |
OpenH264 and additional recording elements |
gst-plugin-pipewire |
Authorized PipeWire stream capture on Wayland |
xdg-desktop-portal |
ScreenCast permission and PipeWire remote handoff on Wayland |
gst-plugin-va |
Modern VA-API H.264 encoders |
pciutils |
GPU vendor detection through lspci |
| Package | Purpose |
|---|---|
gst-plugins-ugly |
Additional GStreamer codecs such as x264, MPEG-2, and A52 |
| Package | Purpose |
|---|---|
gettext |
Compile .po catalogs into .mo files |
zip |
Create big-shot-cinnamon.zip with build.sh |
The repository includes catalogs for 29 languages:
| Bulgarian | Czech | Danish | German | Greek |
| English | Spanish | Estonian | Finnish | French |
| Hebrew | Croatian | Hungarian | Icelandic | Italian |
| Japanese | Korean | Dutch | Norwegian | Polish |
| Portuguese | Portuguese (Brazil) | Romanian | Russian | Slovak |
| Swedish | Turkish | Ukrainian | Chinese |
Translation sources are stored in po/. The build script compiles every <locale>.po file to locale/<locale>/LC_MESSAGES/big-shot@bigcommunity.org.mo.
Cinnamon caches imported extension modules for the lifetime of the session. Log out and back in after replacing JavaScript files.
Check that ffmpeg, ffprobe, gst-launch-1.0, and at least one supported video encoder are installed:
gst-inspect-1.0 openh264enc
gst-inspect-1.0 vp9enc
ffmpeg -version
ffprobe -versionBig Shot automatically falls back to software encoding. Install the appropriate NVIDIA or VA-API GStreamer plugin to expose a hardware encoder.
On Cinnamon/X11, extension messages are commonly available in:
tail -f ~/.xsession-errorsSearch for the [Big Shot] prefix when reporting recording or capture problems.
Extension source:
usr/share/cinnamon/extensions/big-shot@bigcommunity.org/
├── extension.js # Lifecycle, recording pipeline, finalization, recovery
├── screenshotUI.js # Capture interface and screenshot output
├── parts/ # Toolbar, audio, webcam, indicators, and feature modules
├── drawing/ # Annotation actions and overlay
├── data/ # Icons and static data
└── po/ # Gettext catalogs
Focused checks before committing:
node --check usr/share/cinnamon/extensions/big-shot@bigcommunity.org/extension.js
node --check usr/share/cinnamon/extensions/big-shot@bigcommunity.org/screenshotUI.js
git diff --checkBig Shot was inspired by and based on GNOME Shell Screencast Extra Feature, which provided the original foundation for enhanced screencasting, audio capture, GPU detection, and pipeline selection.
The Cinnamon edition shares its feature direction with Big Shot for GNOME Shell while using a Cinnamon-specific capture UI, event model, and direct GStreamer recording path.
MIT — Copyright © 2024–2026 BigCommunity