Convert Figma logo to code with AI

Genymobile logoscrcpy

Display and control your Android device

110,423
10,584
110,423
2,054

Top Related Projects

A good looking terminal emulator which mimics the old cathode display...

17,239

A GPU-accelerated cross-platform terminal emulator and multiplexer written by @wez and implemented in Rust

56,044

A cross-platform, OpenGL terminal emulator.

24,184

Cross-platform, fast, feature-rich, GPU based terminal

5,382

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

  1. Download the latest release of scrcpy from the GitHub releases page.
  2. Extract the downloaded archive to a folder on your computer.
  3. 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"
  4. Connect your Android device to your computer via USB.
  5. Open a terminal/command prompt, navigate to the extracted scrcpy folder, and run:
./scrcpy

For wireless connection:

  1. Ensure your Android device and computer are on the same Wi-Fi network.
  2. Connect your device via USB and run:
adb tcpip 5555
adb connect <device-ip>:5555
  1. 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.

17,239

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.

56,044

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.

24,184

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.

5,382

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 Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

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)

scrcpy

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.

screenshot

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:

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:

Resources

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:

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.