No description
Two defects found by inspecting the published v0.2.19 artifacts. The AppImage contained the binary and the desktop file and nothing else. The binary links FFmpeg, PipeWire, ALSA and XCB directly, so the image only ran on a host that happened to carry the exact FFmpeg build the binary was linked against, which is the opposite of what an AppImage is for. The packaging step now bundles the shared library closure that ldd resolves, points the binary at it with an RPATH of $ORIGIN/../lib, and prepends it to LD_LIBRARY_PATH in AppRun. The C runtime is deliberately left on the host, because bundling a different glibc than the rest of the system expects produces failures that are very hard to trace. The step fails if fewer than five libraries were collected or if the image was not produced, so a silently empty image can never ship. alien drops libva2 when it converts the Debian package to an RPM, because it has no Debian to RPM name rule for it. libva is loaded at runtime by the FFmpeg VAAPI device, so the requirement is now added back explicitly with rpm --addrequires and the build fails if it is missing from the finished package. Without it an RPM install would leave hardware encoding unavailable until the user noticed and installed libva by hand. Version bumped to 0.2.20 across the manifest, lock file, RPM spec, AUR PKGBUILD and the guide. |
||
|---|---|---|
| .github/workflows | ||
| assets | ||
| docs/superpowers | ||
| packaging | ||
| src | ||
| tests | ||
| .gitignore | ||
| .gitlab-ci.yml | ||
| Cargo.lock | ||
| Cargo.toml | ||
| install.sh | ||
| LICENSE-APACHE | ||
| LICENSE-MIT | ||
| PROJECT_GUIDE.md | ||
| README.md | ||
| TODO_CHECKLIST.md | ||
Scythe (WIP)
High-performance, zero-copy GPU hardware screen recorder and instant replay overlay for Linux (Wayland & X11) and Windows.
Scythe is a native, ultra-lightweight alternative to NVIDIA ShadowPlay and GPU Screen Recorder. It records gameplay and desktop screens with near-zero CPU and GPU overhead by leveraging hardware video acceleration and zero-copy direct memory pipelines.
Features
- Instant Replay Buffer: Constantly records gameplay into a high-speed in-memory circular ring buffer. Save the last 15s to 5 minutes of action instantly with one hotkey (
Ctrl+Shift+R) without writing temporary files to disk. - Zero-Copy Capture Engine:
- Wayland: PipeWire DMA-BUF frame-passing directly to hardware encoder surfaces.
- X11: XCB Shared Memory (MIT-SHM) capture with per-frame pool reuse.
- Windows: Desktop Duplication API via Direct3D 11 (DXGI) texture binding.
- Hardware-Accelerated Encoding:
- NVIDIA NVENC (
h264_nvenc,hevc_nvenc,av1_nvenc) with direct hardware BGR0 input - AMD AMF (
h264_amf,hevc_amf,av1_amf) with native hardware format support - Intel QuickSync (
h264_qsv,hevc_qsv,av1_qsv) - AMD & Intel VAAPI (
h264_vaapi,hevc_vaapi,av1_vaapi) with DMA-BUF zero-copy - Universal SIMD-accelerated CPU fallback (
libx264,libx265,libsvtav1)
- NVIDIA NVENC (
- ShadowPlay-Style Stealth Overlay:
- Native GTK 3 Layer-Shell overlay with real background blur for Wayland compositors (Hyprland, Sway, etc.).
- Cross-platform hardware-rendered
eguioverlay for Windows, GNOME, KDE, and X11. - Translucent frosted glass HUD dock, centered controls, and contextual dropdowns.
- Dynamic Hyprland Integration: Automatically registers overlay blur rules and binds hotkeys at runtime without modifying
hyprland.conf. - Multi-Channel Audio Routing: Record system audio, microphone, or both simultaneously with individual volume controls via native PulseAudio/PipeWire and WASAPI/CPAL.
Default Shortcuts
| Action | Shortcut | CLI Command |
|---|---|---|
| Open / Close HUD Overlay | Alt + Z |
scythe --menu |
| Save Instant Replay | Ctrl + Shift + R |
scythe --save |
| Toggle Normal Recording | Ctrl + Shift + F9 |
scythe --record |
| Toggle Mouse Cursor | Ctrl + Shift + F10 |
scythe --cursor |
| Take Screenshot | Ctrl + Shift + S |
scythe --screenshot |
Installation
Arch Linux (AUR)
git clone https://aur.archlinux.org/scythe-git.git
cd scythe-git
makepkg -si
Pre-Built Packages (Releases)
Download the latest packages directly from GitHub Releases or Forgejo Releases:
- Windows Setup:
scythe-setup.exe(Official installer with Start Menu & Desktop shortcuts) - Windows Portable:
scythe.exe(Standalone self-contained executable) &scythe-windows-x86_64.zip - Debian / Ubuntu / Linux Mint:
scythe_*_amd64.deb - Fedora / RHEL / openSUSE:
*.rpm - Universal Linux:
scythe-x86_64.AppImage - Generic Linux:
scythe-linux-x86_64.tar.gz
Build from Source
Prerequisites
- Rust (1.85+, the crate uses the 2024 edition)
- FFmpeg 6+ / 7+ development libraries (
libavcodec,libavformat,libavutil,libswresample,libswscale) - PipeWire (
libpipewire-0.3-dev) - XCB (
libxcb1-dev,libxcb-shm0-dev,libxcb-xfixes0-dev) - ALSA (
libasound2-dev) clangandpkg-configfor the FFmpeg bindings
Compile & Install
git clone https://github.com/oiupoyt/scythe.git
cd scythe
bash install.sh
CLI Usage
scythe --menu # Open the interactive overlay UI menu
scythe --status # Query background daemon state and metrics
scythe --save # Save instant replay clip to disk
scythe --record # Toggle normal recording on/off
scythe --cursor # Toggle mouse cursor capture
scythe --reload # Reload daemon settings
scythe --quit # Stop background recording daemon
Configuration
Settings are saved in JSON format at ~/.config/scythe/config.json:
{
"fps": 60,
"record_bitrate_kbps": 18000,
"replay_duration_sec": 60,
"video_codec": "h264",
"output_directory": "~/Videos",
"show_cursor": true,
"audio_mode": "system",
"mic_volume": 0.6,
"system_volume": 1.0,
"menu_hotkey": "Alt+Z",
"save_hotkey": "Ctrl+Shift+R",
"record_hotkey": "Ctrl+Shift+F9",
"cursor_hotkey": "Ctrl+Shift+F10"
}
License
Licensed under either of Apache License, Version 2.0 or MIT License at your option.