A full fledged GUI integration for the
most award winning open-source android
screen mirroring system --
NOTE: Make sure you enabled adb debugging on your device(s).
|Ultra fast download||GitHub Release download||Nightly Downloads (bin)|
|Windows||22.214.171.124 Windows 32/64 bit||1.10.0 Windows 32/64 bit|
|Linux||1.10.1 Linux (amd64)||1.10.0 Linux (amd64)||Nightly Builds|
|Older Linux (Ubuntu 18.04) #5||1.10.0 Ubuntu 18.04 LTS and related Linux Distros v1.10.1 Coming Soon!||Nightly Builds|
Table of Contents:
- Where thing go Wrong
- Why guiscrcpy?
- Future Releases
(Also called Step 0). Put a star on my repo. Gives support to #opensource and me!!
For Linux, download the latest official
guiscrcpy_linux-* release from GitHub or Mega on Downloads section, double click the file, and you are good to go.
As pre-requisite, you should do
sudo snap install scrcpy to install the scrcpy engine.
For Arch Linux and derived OSes, a third-party maintainer has released a
See Arch User Repository
For Windows, the executable is compiled into an Installer. Download the Portable file from GitHub or Mega, given in the Downloads section
Unfortunately, I do not own a Mac device, and hence cant compile for one, but it is easy to build one. Read the build instruction
It focuses on:
lightness (native, displays only the device screen)
quality (1920×1080 or above)
low latency (35~70ms)
low startup time (~1 second to display the first image)
non-intrusiveness (nothing is left installed on the device)
~ from scrcpy README guiscrcpy focuses on:
independent add on controls
faster execution (no need to waste time to think; oh, what was the command for changing bitrate, etc.)
one handed controls
adb to communicate with the device, and
adb can [connect] to a
device over TCP/IP:
- Connect the device to the same Wi-Fi as your computer.
- Get your device IP address (in Settings → About phone → Status).
- Open a Command Prompt window in
C:\Program Files\guiscrcpy\. (needed for only wireless connection)
- Enable adb over TCP/IP on your device: Type this command
adb tcpip 5555.
- Unplug your device.
- Connect to your device: Type this command:
adb connect DEVICE_IP:5555(replace
It may be useful to decrease the bit-rate and the definition: [connect]: https://developer.android.com/studio/command-line/adb.html#wireless
Quoted from scrcpy.
|Speed||Faster, as it is independent from scrcpy engine||Mostly integrated into the engine, making a GUI layer (slower)||Contains Ads or is through Internet, (data charges are inclusive)|
|Type||Open source (you can edit them)||Open source||Proprietary|
|Other||Can write configuration file and handle events like swipe up, swipe down, App-switch, volume up||Can handle all events which is using a forked version of scrcpy||Can do everything except swipes and pinches|
|Compatibility (PC)||Windows 7 (32/64) / MacOS / Linux||Windows 7 (32/64) / MacOS / Linux||Windows 7 (32/64) / MacOS / Linux|
|Compatibility (Mobile)||Android 5.0+ (given by scrcpy)||Android 5.0+||Android 4.4+|
|Base||scrcpy (original, created by @rom1v||forked scrcpy||no scrcpy|
|Keyboard Shortcuts||All the shortcuts which are mentioned by scrcpy||Unknown||Unknown|
All the requirements are the same as that of
scrcpy. A copy of the requirements are given below.
The Android device requires at least API 21 (Android 5.0).
Make sure you enabled adb debugging on your device(s).
On some devices, you also need to enable an additional option to control it using keyboard and mouse.
The package includes four parts:
Main UI controller
It handles all the pre - runtime features and gives flags to the
scrcpy engine. It also includes a configuration writing system, which write the configuration file to the home directory, so
guiscrcpy can read the information and run it, without
giving flags quite often.
Toolkit UI controller
toolkit is an independent module, which is in
neither way connected to
guiscrcpy, except for launching.
NOTE: See Issues: Unable to drag panel
Bottom Panel controller
bottom_panel is an additional floating windows
that helps to do basic controlling like Home Key, Back Key, Power Key. This include the most important functions, one would like to do with an Android device.
The most important feature of this module, is that it has no interference with the
scrcpy SDL layer, and hence maximum speed
NOTE: See Issues: Unable to drag panel
The scrcpy engine, is the classic v1.10 scrcpy, found on scrcpy's github page by @rom1v. On Windows release files, scrcpy, binary executable is also attached to make
PATH problems easier to solve. On Linux, scrcpy has to be manually downloaded from
guiscrcpy includes all the shortcuts that scrcpy packages. These are all the keyboard shortcuts
guiscrcpy can also be built from source. But that's easy as pie!
Before everything, make sure you have scrcpy on your path. You can Google it out, on how to do it.
Only Scrcpy 1.10
(Also called Step 0). Put a star on my repo. Gives support to #opensource!!
Install python3. If you don't have it install it from Python Software Website or on Linux by
sudo apt install python3.7
Clone my git repo. or copy paste this to your bash
git clone https://github.com/srevinsaju/guiscrcpy
Run the Python Package installer
pipand run the commands below
python3 -m pip install PyQt5 psutil
You can also run
python3 -m pip install qdarkstyle
if you require the dark breeze theme as shown in the image above.
So you are all set! Run the program by
Read Known Issues if you fall into some errors.
Linux (X Server)
For Linux operating systems, if python raises
Xlib>>ModuleNotFoundError, then run
sudo apt install python3-xlib
sudo apt install python3-qt5
To use toolkit (development, on Linux only), run:
sudo apt install wmctrl xdotool
Some buttons not working
Some buttons like
pinch in/out are not enabled. But, however, you may enable it by recompiling the source code. I am looking forward for pinching on Android help / Documentation / links.
Unable to drag Panel or Toolkit
According to Issue #4 created by @logix2, regarding some problems in dragging panels in the Linux OS, in this case, using the
Alt keys, to use the Desktop Window Manager functionality in moving the Panel.
I have Python as a subject for Class XI, so as a part of it's advanced learning experience, and because of my daily use of scrcpy, wanted to integrate GUI into the CLIbased app!! GUI stands for Graphical User Interface, and Py is not inherited from scrcpy but rather from Py for Python
Surely, guiscrcpy has great scope of improvement. Compared to paid Screen Mirroring software, scrcpy gives a lot of advantages, but my future plans are as follows
Fix HOME_key, BACK_key. (Will have to wait until @rom1v examines my work)Fixed! Add better UI support with adb functions out of scrcpyFixed again!
- Support python3.8.
- Add service running indicator
Create pre-built installer and files, Will try fbs build system, after a quite whileFixed!
Sponsor me or share your ideas, issues with me on github and email email@example.com!!
guiscrcpy, on initializing, creates a guiscrcpy.cfg file in
- Mac and other OSes:
A user may create backups of configuration file, or edit them manually. It is created by guiscrcpy and stored in the respective directories. The structure of the .cfg file is not based on structured language, but based on backslash n (new line) in LF and CRLF file type The structure is as given below
the cfg file struct::
:bitrate0 [Line 4]
:dimension0 [Line 5]
:swtouches0 [Line 6]
:fullscreen0 [Line 7]
:dispRO0 [Line 8]
The Line Numbers are based on Python's index numbers, whuch starts from 0 and ends in 8, in this case.
Thanks to all of the developers, testers, friends and family who helped me in this project.
Special thanks to
- @logix2 - Issue #5, #7
- @Strubbl - Issue #8
- Panel icons (home, back, bell, etc. located in
\icons\*) made by Dave Gandy from www.flaticon.com used under Creative Commons 3.0 Unported. The original SVG black work by Dave Gandy has ben re-oriented, flipped or color-changed. The rest of Terms and Conditions put formward by CC-3.0:Unported has been feverently followed by the developer. Icons have been adapeted in all the three windows.
New logo for guiscrcpy
The new logo for
guiscrcpy has been deployed, licensed under Creative Commons License Attribution 4.0. A comparison between old and new.
New UI and distributed controls
The new UI aims for faster ergonomics and consumer oriented. Individual modules, now are separate from scrcpy executable to provide speed to the mirroring system. The new UI also looks way better than the old one ;)
- Fixed many bugs
- Better UI, based on Material principles
- Switched to dark theme, thanks to
QThreadis not very fast, as it is said to be.
- Configuration has been updated to add
Keep Display Off
- Added Orientation change command (potrait / landscape)
- Added user configuration file write to home directory on static line system. Users now automatically save theit information into the
- Separated main controls from subsidiary controls. Linear layout and horizontal layout are separate.
- Users can now perform top to bottom or bottom to top swipe with notification buttons,
- Button utility is mentioned in tooltip
- Added Reset button to reset user config to defaults.
- Fixed QProgressBar blocking mainthread.
- Minor Fixes
- MEGA CHANGE :: Migrated from
PyQt5due to late realization that PyQt4 support for Windows is unfortunately discontinued.
mainwindow.ui>> xml parsed file loaded in uic loader has been compiled to
- toolkit.py is deprecated. toolkit class is restructured into mainwindow class with multiprocesing.
PyQt5update, GTK-LTK-KDE no longer raises pixmap errors
- Unreleased .ui files for Build. Only dependencies for release are png pixmap files
23062018 1615 GMT+300
- Dumped terminal QTextEdit for multiprocessing to prevent QThread hang.
- Restructured StartScrcpy Class as two threads.
22062019 1948 GMT+3
- Fixed GUI hang (issue reported by @rom1v)
(code has been restructured. the old code is placed in
main 1.9.2.py. But however, terminal ui QTextEdit is not functional.
21062019 2000 GMT+3
- Added GUIScrcpy icon
- Added pixmap icons
- Added check scrcpy process running or not
- Added GUIScrcpy Toolkit Experimental Support ###1.9.1
- Initial Build :)