{"id":14985028,"url":"https://github.com/genymobile/scrcpy","last_synced_at":"2025-09-09T20:25:54.127Z","repository":{"id":37234940,"uuid":"111583593","full_name":"Genymobile/scrcpy","owner":"Genymobile","description":"Display and control your Android device","archived":false,"fork":false,"pushed_at":"2025-08-12T17:04:09.000Z","size":7586,"stargazers_count":127564,"open_issues_count":2523,"forks_count":11955,"subscribers_count":1314,"default_branch":"master","last_synced_at":"2025-09-05T11:55:21.494Z","etag":null,"topics":["android","c","ffmpeg","libav","mirroring","recording","screen","sdl2"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Genymobile.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":["rom1v"],"liberapay":"rom1v","custom":["https://paypal.me/rom2v"]}},"created_at":"2017-11-21T18:00:27.000Z","updated_at":"2025-09-05T11:52:07.000Z","dependencies_parsed_at":"2022-07-08T18:43:27.770Z","dependency_job_id":"460777bc-805e-4038-a2d5-401d7d8b92f7","html_url":"https://github.com/Genymobile/scrcpy","commit_stats":{"total_commits":2491,"total_committers":148,"mean_commits":16.83108108108108,"dds":0.2035327177840225,"last_synced_commit":"665ccb32f5306ebd866dc0d99f4d08ed2aeb91c3"},"previous_names":[],"tags_count":56,"template":false,"template_full_name":null,"purl":"pkg:github/Genymobile/scrcpy","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Genymobile%2Fscrcpy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Genymobile%2Fscrcpy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Genymobile%2Fscrcpy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Genymobile%2Fscrcpy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Genymobile","download_url":"https://codeload.github.com/Genymobile/scrcpy/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Genymobile%2Fscrcpy/sbom","scorecard":{"id":55600,"data":{"date":"2025-08-11","repo":{"name":"github.com/Genymobile/scrcpy","commit":"f01231dff8294fe2c99045a4f9a14b233a71bb86"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.6,"checks":[{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Code-Review","score":0,"reason":"Found 0/29 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":10,"reason":"29 commit(s) and 9 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/release.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":9,"reason":"binaries present in source code","details":["Warn: binary detected: gradle/wrapper/gradle-wrapper.jar:1"],"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:245: update your workflow using https://app.stepsecurity.io/secureworkflow/Genymobile/scrcpy/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:270: update your workflow using https://app.stepsecurity.io/secureworkflow/Genymobile/scrcpy/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:282: update your workflow using https://app.stepsecurity.io/secureworkflow/Genymobile/scrcpy/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:285: update your workflow using https://app.stepsecurity.io/secureworkflow/Genymobile/scrcpy/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:291: update your workflow using https://app.stepsecurity.io/secureworkflow/Genymobile/scrcpy/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:306: update your workflow using https://app.stepsecurity.io/secureworkflow/Genymobile/scrcpy/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:318: update your workflow using https://app.stepsecurity.io/secureworkflow/Genymobile/scrcpy/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:321: update your workflow using https://app.stepsecurity.io/secureworkflow/Genymobile/scrcpy/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:327: update your workflow using https://app.stepsecurity.io/secureworkflow/Genymobile/scrcpy/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:342: update your workflow using https://app.stepsecurity.io/secureworkflow/Genymobile/scrcpy/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:390: update your workflow using https://app.stepsecurity.io/secureworkflow/Genymobile/scrcpy/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:393: update your workflow using https://app.stepsecurity.io/secureworkflow/Genymobile/scrcpy/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:399: update your workflow using https://app.stepsecurity.io/secureworkflow/Genymobile/scrcpy/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:414: update your workflow using https://app.stepsecurity.io/secureworkflow/Genymobile/scrcpy/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:466: update your workflow using https://app.stepsecurity.io/secureworkflow/Genymobile/scrcpy/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:469: update your workflow using https://app.stepsecurity.io/secureworkflow/Genymobile/scrcpy/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:475: update your workflow using https://app.stepsecurity.io/secureworkflow/Genymobile/scrcpy/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:481: update your workflow using https://app.stepsecurity.io/secureworkflow/Genymobile/scrcpy/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:487: update your workflow using https://app.stepsecurity.io/secureworkflow/Genymobile/scrcpy/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:493: update your workflow using https://app.stepsecurity.io/secureworkflow/Genymobile/scrcpy/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:499: update your workflow using https://app.stepsecurity.io/secureworkflow/Genymobile/scrcpy/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:511: update your workflow using https://app.stepsecurity.io/secureworkflow/Genymobile/scrcpy/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:99: update your workflow using https://app.stepsecurity.io/secureworkflow/Genymobile/scrcpy/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:121: update your workflow using https://app.stepsecurity.io/secureworkflow/Genymobile/scrcpy/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:20: update your workflow using https://app.stepsecurity.io/secureworkflow/Genymobile/scrcpy/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/Genymobile/scrcpy/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:37: update your workflow using https://app.stepsecurity.io/secureworkflow/Genymobile/scrcpy/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:40: update your workflow using https://app.stepsecurity.io/secureworkflow/Genymobile/scrcpy/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:49: update your workflow using https://app.stepsecurity.io/secureworkflow/Genymobile/scrcpy/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:58: update your workflow using https://app.stepsecurity.io/secureworkflow/Genymobile/scrcpy/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:61: update your workflow using https://app.stepsecurity.io/secureworkflow/Genymobile/scrcpy/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:354: update your workflow using https://app.stepsecurity.io/secureworkflow/Genymobile/scrcpy/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:357: update your workflow using https://app.stepsecurity.io/secureworkflow/Genymobile/scrcpy/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:363: update your workflow using https://app.stepsecurity.io/secureworkflow/Genymobile/scrcpy/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:378: update your workflow using https://app.stepsecurity.io/secureworkflow/Genymobile/scrcpy/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:426: update your workflow using https://app.stepsecurity.io/secureworkflow/Genymobile/scrcpy/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:429: update your workflow using https://app.stepsecurity.io/secureworkflow/Genymobile/scrcpy/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:435: update your workflow using https://app.stepsecurity.io/secureworkflow/Genymobile/scrcpy/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:450: update your workflow using https://app.stepsecurity.io/secureworkflow/Genymobile/scrcpy/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:201: update your workflow using https://app.stepsecurity.io/secureworkflow/Genymobile/scrcpy/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:227: update your workflow using https://app.stepsecurity.io/secureworkflow/Genymobile/scrcpy/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:73: update your workflow using https://app.stepsecurity.io/secureworkflow/Genymobile/scrcpy/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:130: update your workflow using https://app.stepsecurity.io/secureworkflow/Genymobile/scrcpy/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:152: update your workflow using https://app.stepsecurity.io/secureworkflow/Genymobile/scrcpy/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:161: update your workflow using https://app.stepsecurity.io/secureworkflow/Genymobile/scrcpy/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:183: update your workflow using https://app.stepsecurity.io/secureworkflow/Genymobile/scrcpy/release.yml/master?enable=pin","Info:   0 out of  46 GitHub-owned GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Signed-Releases","score":8,"reason":"5 out of the last 5 releases have a total of 5 signed artifacts.","details":["Info: signed release artifact: SHA256SUMS.txt.asc: https://github.com/Genymobile/scrcpy/releases/tag/v3.3.1","Info: signed release artifact: SHA256SUMS.txt.asc: https://github.com/Genymobile/scrcpy/releases/tag/v3.3","Info: signed release artifact: SHA256SUMS.txt.asc: https://github.com/Genymobile/scrcpy/releases/tag/v3.2","Info: signed release artifact: SHA256SUMS.txt.asc: https://github.com/Genymobile/scrcpy/releases/tag/v3.1","Info: signed release artifact: SHA256SUMS.txt.asc: https://github.com/Genymobile/scrcpy/releases/tag/v3.0.2","Warn: release artifact v3.3.1 does not have provenance: https://api.github.com/repos/Genymobile/scrcpy/releases/226761225","Warn: release artifact v3.3 does not have provenance: https://api.github.com/repos/Genymobile/scrcpy/releases/224713081","Warn: release artifact v3.2 does not have provenance: https://api.github.com/repos/Genymobile/scrcpy/releases/209159934","Warn: release artifact v3.1 does not have provenance: https://api.github.com/repos/Genymobile/scrcpy/releases/189601494","Warn: release artifact v3.0.2 does not have provenance: https://api.github.com/repos/Genymobile/scrcpy/releases/189051872"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 4 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-15T00:40:01.998Z","repository_id":37234940,"created_at":"2025-08-15T00:40:01.998Z","updated_at":"2025-08-15T00:40:01.998Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274357600,"owners_count":25270675,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-09T02:00:10.223Z","response_time":80,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","c","ffmpeg","libav","mirroring","recording","screen","sdl2"],"created_at":"2024-09-24T14:10:07.690Z","updated_at":"2025-09-09T20:25:54.116Z","avatar_url":"https://github.com/Genymobile.png","language":"C","funding_links":["https://github.com/sponsors/rom1v","https://liberapay.com/rom1v","https://paypal.me/rom2v","https://liberapay.com/rom1v/"],"categories":[],"sub_categories":[],"readme":"**This GitHub repo (\u003chttps://github.com/Genymobile/scrcpy\u003e) is the only official\nsource for the project. Do not download releases from random websites, even if\ntheir name contains `scrcpy`.**\n\n# scrcpy (v3.3.2)\n\n\u003cimg src=\"app/data/icon.svg\" width=\"128\" height=\"128\" alt=\"scrcpy\" align=\"right\" /\u003e\n\n_pronounced \"**scr**een **c**o**py**\"_\n\nThis application mirrors Android devices (video and audio) connected via USB or\n[TCP/IP](doc/connection.md#tcpip-wireless) and allows control using the\ncomputer's keyboard and mouse. It does not require _root_ access or an app\ninstalled on the device. It works on _Linux_, _Windows_, and _macOS_.\n\n![screenshot](assets/screenshot-debian-600.jpg)\n\nIt focuses on:\n\n - **lightness**: native, displays only the device screen\n - **performance**: 30~120fps, depending on the device\n - **quality**: 1920×1080 or above\n - **low latency**: [35~70ms][lowlatency]\n - **low startup time**: ~1 second to display the first image\n - **non-intrusiveness**: nothing is left installed on the Android device\n - **user benefits**: no account, no ads, no internet required\n - **freedom**: free and open source software\n\n[lowlatency]: https://github.com/Genymobile/scrcpy/pull/646\n\nIts features include:\n - [audio forwarding](doc/audio.md) (Android 11+)\n - [recording](doc/recording.md)\n - [virtual display](doc/virtual_display.md)\n - mirroring with [Android device screen off](doc/device.md#turn-screen-off)\n - [copy-paste](doc/control.md#copy-paste) in both directions\n - [configurable quality](doc/video.md)\n - [camera mirroring](doc/camera.md) (Android 12+)\n - [mirroring as a webcam (V4L2)](doc/v4l2.md) (Linux-only)\n - physical [keyboard][hid-keyboard] and [mouse][hid-mouse] simulation (HID)\n - [gamepad](doc/gamepad.md) support\n - [OTG mode](doc/otg.md)\n - and more…\n\n[hid-keyboard]: doc/keyboard.md#physical-keyboard-simulation\n[hid-mouse]: doc/mouse.md#physical-mouse-simulation\n\n## Prerequisites\n\nThe Android device requires at least API 21 (Android 5.0).\n\n[Audio forwarding](doc/audio.md) is supported for API \u003e= 30 (Android 11+).\n\nMake sure you [enabled USB debugging][enable-adb] on your device(s).\n\n[enable-adb]: https://developer.android.com/studio/debug/dev-options#enable\n\nOn some devices (especially Xiaomi), you might get the following error:\n\n```\nInjecting input events requires the caller (or the source of the instrumentation, if any) to have the INJECT_EVENTS permission.\n```\n\nIn that case, you need to enable [an additional option][control] `USB debugging\n(Security Settings)` (this is an item different from `USB debugging`) to control\nit using a keyboard and mouse. Rebooting the device is necessary once this\noption is set.\n\n[control]: https://github.com/Genymobile/scrcpy/issues/70#issuecomment-373286323\n\nNote that USB debugging is not required to run scrcpy in [OTG mode](doc/otg.md).\n\n\n## Get the app\n\n - [Linux](doc/linux.md)\n - [Windows](doc/windows.md) (read [how to run](doc/windows.md#run))\n - [macOS](doc/macos.md)\n\n\n## Must-know tips\n\n - [Reducing resolution](doc/video.md#size) may greatly improve performance\n   (`scrcpy -m1024`)\n - [_Right-click_](doc/mouse.md#mouse-bindings) triggers `BACK`\n - [_Middle-click_](doc/mouse.md#mouse-bindings) triggers `HOME`\n - \u003ckbd\u003eAlt\u003c/kbd\u003e+\u003ckbd\u003ef\u003c/kbd\u003e toggles [fullscreen](doc/window.md#fullscreen)\n - There are many other [shortcuts](doc/shortcuts.md)\n\n\n## Usage examples\n\nThere are a lot of options, [documented](#user-documentation) in separate pages.\nHere are just some common examples.\n\n - Capture the screen in H.265 (better quality), limit the size to 1920, limit\n   the frame rate to 60fps, disable audio, and control the device by simulating\n   a physical keyboard:\n\n    ```bash\n    scrcpy --video-codec=h265 --max-size=1920 --max-fps=60 --no-audio --keyboard=uhid\n    scrcpy --video-codec=h265 -m1920 --max-fps=60 --no-audio -K  # short version\n    ```\n\n - Start VLC in a new virtual display (separate from the device display):\n\n    ```bash\n    scrcpy --new-display=1920x1080 --start-app=org.videolan.vlc\n    ```\n\n - Record the device camera in H.265 at 1920x1080 (and microphone) to an MP4\n   file:\n\n    ```bash\n    scrcpy --video-source=camera --video-codec=h265 --camera-size=1920x1080 --record=file.mp4\n    ```\n\n - Capture the device front camera and expose it as a webcam on the computer (on\n   Linux):\n\n    ```bash\n    scrcpy --video-source=camera --camera-size=1920x1080 --camera-facing=front --v4l2-sink=/dev/video2 --no-playback\n    ```\n\n - Control the device without mirroring by simulating a physical keyboard and\n   mouse (USB debugging not required):\n\n    ```bash\n    scrcpy --otg\n    ```\n\n - Control the device using gamepad controllers plugged into the computer:\n\n    ```bash\n    scrcpy --gamepad=uhid\n    scrcpy -G  # short version\n    ```\n\n## User documentation\n\nThe application provides a lot of features and configuration options. They are\ndocumented in the following pages:\n\n - [Connection](doc/connection.md)\n - [Video](doc/video.md)\n - [Audio](doc/audio.md)\n - [Control](doc/control.md)\n - [Keyboard](doc/keyboard.md)\n - [Mouse](doc/mouse.md)\n - [Gamepad](doc/gamepad.md)\n - [Device](doc/device.md)\n - [Window](doc/window.md)\n - [Recording](doc/recording.md)\n - [Virtual display](doc/virtual_display.md)\n - [Tunnels](doc/tunnels.md)\n - [OTG](doc/otg.md)\n - [Camera](doc/camera.md)\n - [Video4Linux](doc/v4l2.md)\n - [Shortcuts](doc/shortcuts.md)\n\n\n## Resources\n\n - [FAQ](FAQ.md)\n - [Translations][wiki] (not necessarily up to date)\n - [Build instructions](doc/build.md)\n - [Developers](doc/develop.md)\n\n[wiki]: https://github.com/Genymobile/scrcpy/wiki\n\n\n## Articles\n\n- [Introducing scrcpy][article-intro]\n- [Scrcpy now works wirelessly][article-tcpip]\n- [Scrcpy 2.0, with audio][article-scrcpy2]\n\n[article-intro]: https://blog.rom1v.com/2018/03/introducing-scrcpy/\n[article-tcpip]: https://www.genymotion.com/blog/open-source-project-scrcpy-now-works-wirelessly/\n[article-scrcpy2]: https://blog.rom1v.com/2023/03/scrcpy-2-0-with-audio/\n\n## Contact\n\nYou can open an [issue] for bug reports, feature requests or general questions.\n\nFor bug reports, please read the [FAQ](FAQ.md) first, you might find a solution\nto your problem immediately.\n\n[issue]: https://github.com/Genymobile/scrcpy/issues\n\nYou can also use:\n\n - Reddit: [`r/scrcpy`](https://www.reddit.com/r/scrcpy)\n - BlueSky: [`@scrcpy.bsky.social`](https://bsky.app/profile/scrcpy.bsky.social)\n - Twitter: [`@scrcpy_app`](https://twitter.com/scrcpy_app)\n\n\n## Donate\n\nI'm [@rom1v](https://github.com/rom1v), the author and maintainer of _scrcpy_.\n\nIf you appreciate this application, you can [support my open source\nwork][donate]:\n - [GitHub Sponsors](https://github.com/sponsors/rom1v)\n - [Liberapay](https://liberapay.com/rom1v/)\n - [PayPal](https://paypal.me/rom2v)\n\n[donate]: https://blog.rom1v.com/about/#support-my-open-source-work\n\n## License\n\n    Copyright (C) 2018 Genymobile\n    Copyright (C) 2018-2025 Romain Vimont\n\n    Licensed under the Apache License, Version 2.0 (the \"License\");\n    you may not use this file except in compliance with the License.\n    You may obtain a copy of the License at\n\n        http://www.apache.org/licenses/LICENSE-2.0\n\n    Unless required by applicable law or agreed to in writing, software\n    distributed under the License is distributed on an \"AS IS\" BASIS,\n    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n    See the License for the specific language governing permissions and\n    limitations under the License.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgenymobile%2Fscrcpy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgenymobile%2Fscrcpy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgenymobile%2Fscrcpy/lists"}