Top Related Projects
A good looking terminal emulator which mimics the old cathode display...
A GPU-accelerated cross-platform terminal emulator and multiplexer written by @wez and implemented in Rust
A cross-platform, OpenGL terminal emulator.
Cross-platform, fast, feature-rich, GPU based terminal
A tiling terminal emulator for Linux using GTK+ 3
Quick Overview
Scrcpy is an open-source application that provides display and control of Android devices connected via USB or over TCP/IP. It allows users to mirror their Android device's screen to a computer and interact with it using a mouse and keyboard, without requiring any root access on the Android device.
Pros
- High performance with low latency
- No root access required on the Android device
- Works on Windows, macOS, and Linux
- Supports both USB and wireless connections
Cons
- Limited audio support (currently only available on Windows)
- May have compatibility issues with some Android devices
- Requires ADB (Android Debug Bridge) to be enabled on the device
- No built-in file transfer functionality
Getting Started
- Download the latest release of scrcpy from the GitHub releases page.
- Extract the downloaded archive to a folder on your computer.
- Enable USB debugging on your Android device:
- Go to Settings > About phone
- Tap "Build number" 7 times to enable Developer options
- Go back to Settings > Developer options
- Enable "USB debugging"
- Connect your Android device to your computer via USB.
- Open a terminal/command prompt, navigate to the extracted scrcpy folder, and run:
./scrcpy
For wireless connection:
- Ensure your Android device and computer are on the same Wi-Fi network.
- Connect your device via USB and run:
adb tcpip 5555
adb connect <device-ip>:5555
- Disconnect the USB cable and run:
./scrcpy --wireless
For more advanced usage and options, refer to the official documentation.
Competitor Comparisons
A good looking terminal emulator which mimics the old cathode display...
Pros of cool-retro-term
- Offers a unique, nostalgic visual experience with customizable retro terminal effects
- Provides an immersive environment for users who enjoy vintage computing aesthetics
- Includes various color schemes and visual customization options
Cons of cool-retro-term
- Limited to terminal emulation, lacking the screen mirroring capabilities of scrcpy
- May have higher resource usage due to visual effects, potentially impacting performance
- Not designed for mobile device interaction or remote control
Code Comparison
cool-retro-term (QML):
Rectangle {
id: frame
anchors.fill: parent
color: shadersettings.background_color
opacity: shadersettings.window_opacity
}
scrcpy (C):
static void screen_init_render(struct screen *screen) {
SDL_RendererInfo renderer_info;
if (SDL_GetRendererInfo(screen->renderer, &renderer_info)) {
LOGW("Could not get renderer info");
return;
}
}
The code snippets demonstrate the different focus areas of the projects. cool-retro-term uses QML for creating the visual interface, while scrcpy utilizes C for handling screen rendering and device interaction.
A GPU-accelerated cross-platform terminal emulator and multiplexer written by @wez and implemented in Rust
Pros of WezTerm
- Cross-platform terminal emulator with GPU acceleration
- Extensive customization options through Lua configuration
- Built-in multiplexer for tab and pane management
Cons of WezTerm
- Larger resource footprint compared to scrcpy
- Steeper learning curve for advanced features
- Not focused on mobile device mirroring
Code Comparison
WezTerm configuration (Lua):
return {
font = wezterm.font("JetBrains Mono"),
color_scheme = "Dracula",
enable_tab_bar = false,
}
scrcpy command-line usage:
scrcpy --turn-screen-off
scrcpy --record file.mp4
scrcpy --window-title 'My Device'
Key Differences
- Purpose: WezTerm is a terminal emulator, while scrcpy is for Android device mirroring
- Language: WezTerm is written in Rust, scrcpy in C
- Customization: WezTerm offers extensive Lua-based configuration, scrcpy uses command-line options
- Performance: scrcpy is generally lighter on resources for its specific use case
- Platform support: WezTerm runs on multiple desktop platforms, scrcpy focuses on Android device interaction
Use Cases
WezTerm is ideal for developers seeking a highly customizable terminal experience across different operating systems. scrcpy excels at providing low-latency screen mirroring and control for Android devices, making it valuable for mobile developers and support technicians.
A cross-platform, OpenGL terminal emulator.
Pros of Alacritty
- Cross-platform terminal emulator with GPU acceleration
- Highly customizable through YAML configuration
- Minimal resource usage and fast performance
Cons of Alacritty
- Limited to terminal emulation, unlike scrcpy's screen mirroring capabilities
- Steeper learning curve for configuration compared to scrcpy's simplicity
- Lacks built-in features like file transfer or audio forwarding
Code Comparison
Alacritty configuration (YAML):
window:
dimensions:
columns: 80
lines: 24
padding:
x: 2
y: 2
scrcpy command-line usage:
scrcpy --turn-screen-off
scrcpy --record file.mp4
scrcpy --window-title 'My Device'
While both projects serve different purposes, Alacritty focuses on terminal emulation with extensive configuration options, whereas scrcpy provides Android device screen mirroring and control. Alacritty's code involves YAML configuration for customization, while scrcpy primarily uses command-line arguments for various features. Alacritty is more suitable for users seeking a high-performance terminal, while scrcpy is ideal for Android developers and users needing remote device access.
Cross-platform, fast, feature-rich, GPU based terminal
Pros of kitty
- Cross-platform terminal emulator with GPU acceleration for improved performance
- Highly customizable with extensive configuration options
- Supports ligatures, emoji, and advanced font features
Cons of kitty
- Primarily focused on terminal emulation, not Android screen mirroring
- Steeper learning curve due to extensive configuration options
- May require more system resources compared to simpler terminal emulators
Code comparison
While a direct code comparison is not particularly relevant due to the different purposes of these projects, here's a brief example of how they might be used:
kitty:
kitty --config ~/.config/kitty/kitty.conf
scrcpy:
scrcpy --turn-screen-off --stay-awake
Summary
kitty is a feature-rich, cross-platform terminal emulator with GPU acceleration, while scrcpy is focused on Android screen mirroring and control. kitty offers extensive customization options and advanced font rendering, but may have a steeper learning curve. scrcpy provides a simpler, more focused solution for Android device interaction, but lacks the broader terminal emulation features of kitty.
A tiling terminal emulator for Linux using GTK+ 3
Pros of Tilix
- Full-featured terminal emulator with advanced features like tiling and session management
- Customizable UI with themes and color schemes
- Integrated with GNOME desktop environment for a seamless experience
Cons of Tilix
- Limited to Linux systems, not cross-platform like scrcpy
- Requires installation and setup, while scrcpy can be run directly
- Focused on terminal emulation, lacking device mirroring capabilities
Code Comparison
Tilix (D language):
class Terminal : Widget, Focusable {
private:
VTE.Terminal terminal;
ScrolledWindow sw;
string _uuid;
}
scrcpy (C language):
struct sc_screen {
struct sc_frame_sink frame_sink;
struct sc_fps_counter fps_counter;
SDL_Window *window;
SDL_Renderer *renderer;
SDL_Texture *texture;
};
While both projects serve different purposes, Tilix offers a rich terminal experience for Linux users, whereas scrcpy provides cross-platform Android device mirroring. Tilix is written in D and focuses on terminal functionality, while scrcpy is written in C and emphasizes screen mirroring and control.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
This GitHub repo (https://github.com/Genymobile/scrcpy) is the only official
source for the project. Do not download releases from random websites, even if
their name contains scrcpy
.
scrcpy (v2.6.1)
pronounced "screen copy"
This application mirrors Android devices (video and audio) connected via USB or over TCP/IP, and allows to control the device with the keyboard and the mouse of the computer. It does not require any root access. It works on Linux, Windows and macOS.
It focuses on:
- lightness: native, displays only the device screen
- performance: 30~120fps, depending on the device
- 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 Android device
- user benefits: no account, no ads, no internet required
- freedom: free and open source software
Its features include:
- audio forwarding (Android 11+)
- recording
- mirroring with Android device screen off
- copy-paste in both directions
- configurable quality
- camera mirroring (Android 12+)
- mirroring as a webcam (V4L2) (Linux-only)
- physical keyboard and mouse simulation (HID)
- OTG mode
- and moreâ¦
Prerequisites
The Android device requires at least API 21 (Android 5.0).
Audio forwarding is supported for API >= 30 (Android 11+).
Make sure you enabled USB debugging on your device(s).
On some devices (especially Xiaomi), you might get the following error:
java.lang.SecurityException: Injecting input events requires the caller (or the source of the instrumentation, if any) to have the INJECT_EVENTS permission.
In that case, you need to enable an additional option USB debugging (Security Settings)
(this is an item different from USB debugging
) to control
it using a keyboard and mouse. Rebooting the device is necessary once this
option is set.
Note that USB debugging is not required to run scrcpy in OTG mode.
Get the app
Usage examples
There are a lot of options, documented in separate pages. Here are just some common examples.
-
Capture the screen in H.265 (better quality), limit the size to 1920, limit the frame rate to 60fps, disable audio, and control the device by simulating a physical keyboard:
scrcpy --video-codec=h265 --max-size=1920 --max-fps=60 --no-audio --keyboard=uhid scrcpy --video-codec=h265 -m1920 --max-fps=60 --no-audio -K # short version
-
Record the device camera in H.265 at 1920x1080 (and microphone) to an MP4 file:
scrcpy --video-source=camera --video-codec=h265 --camera-size=1920x1080 --record=file.mp4
-
Capture the device front camera and expose it as a webcam on the computer (on Linux):
scrcpy --video-source=camera --camera-size=1920x1080 --camera-facing=front --v4l2-sink=/dev/video2 --no-playback
-
Control the device without mirroring by simulating a physical keyboard and mouse (USB debugging not required):
scrcpy --otg
User documentation
The application provides a lot of features and configuration options. They are documented in the following pages:
- Connection
- Video
- Audio
- Control
- Keyboard
- Mouse
- Device
- Window
- Recording
- Tunnels
- OTG
- Camera
- Video4Linux
- Shortcuts
Resources
- FAQ
- Translations (not necessarily up to date)
- Build instructions
- Developers
Articles
Contact
You can open an issue for bug reports, feature requests or general questions.
For bug reports, please read the FAQ first, you might find a solution to your problem immediately.
You can also use:
- Reddit:
r/scrcpy
- Twitter:
@scrcpy_app
Donate
I'm @rom1v, the author and maintainer of scrcpy.
If you appreciate this application, you can support my open source work:
Licence
Copyright (C) 2018 Genymobile
Copyright (C) 2018-2024 Romain Vimont
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Top Related Projects
A good looking terminal emulator which mimics the old cathode display...
A GPU-accelerated cross-platform terminal emulator and multiplexer written by @wez and implemented in Rust
A cross-platform, OpenGL terminal emulator.
Cross-platform, fast, feature-rich, GPU based terminal
A tiling terminal emulator for Linux using GTK+ 3
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot