Gerald's Screen Recorder, a lightweight, motion-optimized screen recorder
Project description
Gerald's Screen Recorder (GSR)
A tool to capture your Full 4K Desktop as a smart sequence of high-quality JPEG images.
Designed for the "Capture Once, Edit Anywhere" workflow: Record up to 4 applications (Code, Browser, Terminal, Live Preview) simultaneously on a 4K screen. In post-production (e.g., DaVinci Resolve), crop this single 4K master into multiple 1080p tracks to create a dynamic "multi-cam" editing experience without ever switching windows during recording.
Features
- Efficient Capture: Only saves frames when significant change is detected.
- Smart Sensitivity: Grid-based detection (Tile Size) allows capturing small changes (like cursors) or ignoring them.
- Keystroke Trigger: Option to force capture when typing, ensuring no text is missed.
- Adjustable Quality: JPEG compression control to save space.
- Persistant Settings: Automatically saves and loads your configuration.
- Modern UI: Dark-themed, scrollable interface with keyboard support for sliders.
- Linux Integration: Includes desktop entry setup for system menu integration.
Installation
-
Clone the repository:
git clone https://github.com/geraldsnyman/ScreenRecorder.git cd ScreenRecorder
-
Run the automated setup script:
./setup.sh
This script will:
- Install necessary system dependencies (like
python3-tk). - Create a Python virtual environment.
- Install all required Python libraries from
requirements.txt.
- Install necessary system dependencies (like
-
(Optional) Install Desktop Entry (Linux):
python3 setup_desktop.pyThis allows you to find "Gerald's Screen Recorder" or "GSR" in your system's application menu and ensures the taskbar icon displays correctly.
Usage
-
Run the application (GUI):
./run.sh
-
Run via CLI (No GUI): Providing any configuration flags will bypass the GUI and run headlessly:
gsr -f 30 -q 90 --keystroke --no-show-cursor # or python3 src/main.py -f 30 -q 90
Core Options:
-c, --cli: Force CLI mode even without other flags.--save: Save the provided CLI overrides to the permanent GUI settings.-f, --fps <val>: Override maximum FPS (1-60).-s, --sens <val>: Override Sensitivity (0-100).-t, --tiles <val>: Override Tile Divisions (1 = Full Screen).-q, --quality <val>: Override JPEG Output Quality (1-100).-o, --output <path>: Override Output Directory.
Boolean Overrides (use
--featureor--no-feature):--keystroke: Force capture on key press.--mouse-click: Force capture on Mouse Click.--mouse-scroll: Force capture on Mouse Scroll.--mouse-move: Force capture on Mouse Move.--show-cursor: Draw Cursor Overlay on recording.
Cursor Settings:
--cursor-size <val>: Override Cursor Size (5-50).--cursor-style <style>: Override Cursor Style (dot,target,pointer).
View all options by running
gsr --helporman gsr. -
Controls:
- Sensitivity: Threshold for motion detection (Higher = less sensitive).
- Tile Size: Grid granularity. Defaults to ~960x540. Smaller tiles = more sensitive to tiny area changes.
- Tip: Use Arrow Keys (Left/Right) to fine-tune sliders.
- Triggers:
- Keystroke: Force capture on key press.
- Mouse: Force capture on Click, Scroll, or Move.
- Cursor Overlay:
- visually draws the mouse cursor (Dot, Target, Pointer) on the recording to ensure visibility.
- customizable size (5-50px).
- FPS: Maximum capture frequency.
- Quality: JPEG compression quality.
- Output: Select destination folder.
- Start/Stop: Toggle recording.
-
Terminal Workflow (Backgrounding): If you launch GSR from the terminal (e.g.,
./run.sh) and want to continue using that same terminal window:- Press
Ctrl + Zto instantly suspend (pause) the application. - Type
bgand hitEnterto resume the app silently in the background. - Type
fgat any time to bring the app back to the foreground to safely close it usingCtrl + C.
- Press
Optimization Guide
To achieve the best balance of performance (low CPU) and capture accuracy:
-
Enable "Capture on Keystroke":
- This is the most efficient way to capture typing. It triggers a frame save only when you press a key, bypassing the need for intense visual scanning.
- With this on, you don't need small tiles to see text appear.
-
Start with "Large Tiles" (Slider to Left):
- Larger tiles (e.g., Full Screen or 960x540) require significantly less processing power than thousands of small tiles.
- Use this setting by default. Only move the slider right (smaller tiles) if you need to catch small visual changes that don't involve typing (like a specific icon changing color).
-
Tune Sensitivity (Threshold):
- Sensitivity Slider controls the "Noise Gate".
- Lower Value (Left) = Less Sensitive. Ignores small changes like cursor blinking or clock updates.
- Higher Value (Right) = More Sensitive. Captures almost everything.
- Strategy:
- Set Tile Size to Large (Left).
- Set Sensitivity to Medium/High (Center/Right).
- If it's missing big window changes, lower the Sensitivity (Left).
- If it's capturing too much (idle cursor blinking), increase Sensitivity (Right).
Summary: Use Keystroke Capture + Large Tiles + Medium Sensitivity for the most efficient recording of work/coding sessions.
License
Freeware. Feel free to use and modify.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file gsr-1.0.1.tar.gz.
File metadata
- Download URL: gsr-1.0.1.tar.gz
- Upload date:
- Size: 15.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1f8995a5d9c9e1aeded906f32c6b48a028e86fee47a4f4729365ef2488f77196
|
|
| MD5 |
d38e4cc9c183b7a97c7eb4c702cbc604
|
|
| BLAKE2b-256 |
6356a58841269523d467a524d3bfc78169b9db67008dec402e5b1b53769ce518
|
File details
Details for the file gsr-1.0.1-py3-none-any.whl.
File metadata
- Download URL: gsr-1.0.1-py3-none-any.whl
- Upload date:
- Size: 16.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b9bfb0a5f37d7f4caea5c6affe5d5d6431fa5641b4c6092e17c1a71a856abddb
|
|
| MD5 |
ba1ed8bf24b618889e3e5d2e2b00bf63
|
|
| BLAKE2b-256 |
44e56579dee7c8e167c3495171ee733ee0a58180fe5314d97d61b240eabf78e0
|