ScrcpyGUI v1.0-beta
First stable release.
⚠️ Note: This is the final release based on Python. Moving forward, the entire codebase will be migrated to Rust for better performance and a more modern architecture.
What's New
🎬 Livestream
- Platform Selector — Choose between YouTube, Twitch, or Facebook (no more Custom RTMP clutter).
- Stream Key Field — Includes an inline show/hide toggle for privacy.
- Dedicated Live Log — Livestream events are now separate from the global system log.
- FFmpeg Log Filtering — Added info tags for bitrate/fps and red highlights for errors.
- Fixed Black Screen — Corrected Xvfb virtual display initialization sequence before scrcpy capture starts.
- Real-time Process Tracking — Monitor Xvfb status, scrcpy PID, and FFmpeg bitrate/resolution live.
📱 Mirror Tab
- Cleaner Layout — Removed Video Encoder, Rotation, and Window Title options (titles are now automatically set based on the connected device name).
- Audio Codec Selector — Support for opus, aac, flac, and raw (
--audio-codec). - Show Touches — Added a checkbox to enable
--show-toucheson the device. - Split Audio — Record mode option to split video and audio into separate files via FFmpeg post-processing.
⚙️ Settings
- UI Scale Fix — Resolved a missing
hidpi_handlerimport that previously broke the "Re-detect" button. - Dependencies Panel — Changed to manual check only; no more annoying popups on startup.
- Removed opencv-python — The camera overlay module has been removed to keep the app lightweight.
🔊 Audio
- Smart --no-audio Handling — Automatically uses
--no-audio-playbackfor scrcpy v2.1+ so audio stays on the device while the PC remains silent. - Auto Version Detection — Dynamically adjusts flags based on the installed scrcpy version for maximum compatibility.
🧹 Codebase
- Completely removed the camera overlay module and
opencv-pythondependency. - Cleaned up dead imports and legacy dialogs.
- Aligned module exports in
ui/widgets/andui/dialogs/with the current structure.
🛡️ Smart Flag Logic (Conflict Prevention)
To prevent crashes or command loops, the UI now automatically manages conflicting flags:
| Checked Feature | Automatically Unchecked | Reason |
|---|---|---|
| Fullscreen | Borderless, Always on top | Fullscreen is inherently borderless and stays on top. |
| Borderless | Fullscreen | Windowed-mode specific; they cannot coexist with Fullscreen. |
| Turn screen off | Stay awake | Prevents the device screen from flickering or looping. |
| Stay awake | Turn screen off | Functions are contradictory; one keeps it on, the other turns it off. |
| View only | Stay awake, Show Touches | Stay-awake requires control permissions; Show Touches is useless without input. |
Bug Fixes
| Issue | Fix |
|---|---|
| Black screen on livestream | Fixed Xvfb + scrcpy startup sequence. |
| UI Scale button not working | Added missing hidpi_handler import in tab_settings.py. |
| Crash on livestream build | Fixed missing GRN (green text) import in tab_live.py. |
| Audio flag mismatch (scrcpy v2.1+) | Replaced --no-audio with --no-audio-playback. |
| Log toolbar out of sync | Moved the toolbar inside the frame_log_panel. |
Report issues via GitHub Issues.