<div align="center">
<img src="https://raw.githubusercontent.com/james4ever0/swm/main/logo/logo.png" alt="logo" width="200"/>
<h1>Scrcpy Window Manager</h1>
<p align="center">
<a href="https://github.com/james4ever0/swm/blob/master/LICENSE"><img alt="License: WTFPL" src="https://img.shields.io/badge/license-UNLICENSE-green.svg?style=flat"></a>
<a href="https://pypi.org/project/swm-android/"><img alt="PyPI" src="https://img.shields.io/pypi/v/swm-android"></a>
<a href="https://deepwiki.com/James4Ever0/swm"><img src="https://deepwiki.com/badge.svg" alt="Ask DeepWiki"></a>
<a href="https://pepy.tech/projects/swm-android"><img src="https://static.pepy.tech/badge/swm-android" alt="PyPI Downloads"></a>
<a href="https://github.com/james4ever0/swm"><img alt="Code style: black" src="https://img.shields.io/badge/code%20style-black-000000.svg"></a>
</p>
</div>
## Use cases
- Improve ergonimics
- Use your phone at work
- Share data between PC and Android device
- Bring your work wherever you go
- Experience something like Samsung Dex
- Boost productivity by multi-tasking on Android
## Requirements
Your Android version must be 10.0 or higher.
USB debugging (ADB) must be enabled.
Your phone needs to be rooted, and `com.android.shell` must have root permission.
## Features
- Multi-window, multi-application support
- Fuzzy search interface for managing apps, sessions, input methods, etc.
- Session persistance
- Reopen applications at device reconnection
- Config file customization
- PC-side UTF-8 input method support
- "Did you mean" suggestions when encountered a wrong command
## Installation
This application is running on your PC, with your Android device connected to it via ADB.
Using `pip`:
```bash
pip install swm-android
```
## Command line
```
SWM - Scrcpy Window Manager
Usage:
swm init [force]
swm [options] repl
swm [options] healthcheck
swm [options] adb [<adb_args>...]
swm [options] scrcpy [<scrcpy_args>...]
swm [options] app recent
swm [options] app run <query> [no-new-display] [<init_config>]
swm [options] app list [with-last-used-time] [with-type] [update]
swm [options] app search [with-type] [index]
swm [options] app most-used [<count>]
swm [options] app config show-default
swm [options] app config list
swm [options] app config (show|edit) <config_name>
swm [options] app config copy <source_name> <target_name>
swm [options] mount <device_path> <host_path>
swm [options] mount reverse <host_path> <device_path>
swm [options] ime list
swm [options] ime (switch|activate|deactivate) <query>
swm [options] ime search
swm [options] ime switch-to-previous
swm [options] java run <script_path>
swm [options] java shell [<shell_args>...]
swm [options] termux run <script_path>
swm [options] termux exec <executable>
swm [options] termux shell [<shell_args>...]
swm [options] session list [last-used]
swm [options] session search [index]
swm [options] session restore [session_name]
swm [options] session delete <query>
swm [options] session edit <query>
swm [options] session save <session_name>
swm [options] session copy <source> <target>
swm [options] device list [last-used]
swm [options] device search [index]
swm [options] device select <query>
swm [options] device name <device_id> <device_alias>
swm [options] baseconfig show [diagnostic]
swm [options] baseconfig show-default
swm [options] baseconfig edit
swm --version
swm --help
Options:
-h --help Show this screen.
--version Show version.
-c --config=<config_file>
Use a config file.
-v --verbose Enable verbose logging.
-d --device=<device_selected>
Device name or ID for executing the command.
--debug Debug mode, capturing all exceptions.
Environment variables:
SWM_CACHE_DIR
SWM managed cache directory on PC, which stores the main config file
SWM_CLI_SUGGESION_LIMIT
Maximum possible command suggestions when failed to parse user input
ADB Path to ADB binary (overrides SWM managed ADB)
SCRCPY Path to SCRCPY binary (overrides SWM managed SCRCPY)
FZF Path to FZF binary (overrides SWM managed FZF)
```
## Demo
### App fuzzy run

### App search and run

### Chrome demo

### Device status

### Java shell

### List IME

### Search

### Termux demo

### Termux shell

## Related projects
[scrcpy-wrapper](https://github.com/Bluemangoo/scrcpy-wrapper)
[pyscrcpy](https://github.com/yixinNB/pyscrcpy)
[MYScrcpy](https://github.com/me2sy/MYScrcpy)
[Vysor](https://github.com/koush/vysor.io)
Raw data
{
"_id": null,
"home_page": "https://github.com/james4ever0/swm",
"name": "swm-android",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.6.0",
"maintainer_email": null,
"keywords": null,
"author": "James Brown",
"author_email": "randomvoidmail@foxmail.com",
"download_url": "https://files.pythonhosted.org/packages/3e/ec/3bb504ea7d4d469dcbae3ece34a6c952c730faf4de3a2513bf0bc415c0f5/swm-android-0.3.3.2.2.tar.gz",
"platform": null,
"description": "\n\n<div align=\"center\">\n<img src=\"https://raw.githubusercontent.com/james4ever0/swm/main/logo/logo.png\" alt=\"logo\" width=\"200\"/>\n\n<h1>Scrcpy Window Manager</h1>\n<p align=\"center\">\n<a href=\"https://github.com/james4ever0/swm/blob/master/LICENSE\"><img alt=\"License: WTFPL\" src=\"https://img.shields.io/badge/license-UNLICENSE-green.svg?style=flat\"></a>\n<a href=\"https://pypi.org/project/swm-android/\"><img alt=\"PyPI\" src=\"https://img.shields.io/pypi/v/swm-android\"></a>\n<a href=\"https://deepwiki.com/James4Ever0/swm\"><img src=\"https://deepwiki.com/badge.svg\" alt=\"Ask DeepWiki\"></a>\n<a href=\"https://pepy.tech/projects/swm-android\"><img src=\"https://static.pepy.tech/badge/swm-android\" alt=\"PyPI Downloads\"></a>\n<a href=\"https://github.com/james4ever0/swm\"><img alt=\"Code style: black\" src=\"https://img.shields.io/badge/code%20style-black-000000.svg\"></a>\n</p>\n</div>\n\n## Use cases\n\n- Improve ergonimics\n- Use your phone at work\n- Share data between PC and Android device\n- Bring your work wherever you go\n- Experience something like Samsung Dex\n- Boost productivity by multi-tasking on Android\n\n## Requirements\n\nYour Android version must be 10.0 or higher.\n\nUSB debugging (ADB) must be enabled.\n\nYour phone needs to be rooted, and `com.android.shell` must have root permission.\n\n## Features\n\n- Multi-window, multi-application support\n- Fuzzy search interface for managing apps, sessions, input methods, etc.\n- Session persistance\n- Reopen applications at device reconnection\n- Config file customization\n- PC-side UTF-8 input method support\n- \"Did you mean\" suggestions when encountered a wrong command\n\n## Installation\n\nThis application is running on your PC, with your Android device connected to it via ADB.\n\nUsing `pip`:\n\n```bash\npip install swm-android\n```\n\n## Command line\n\n```\nSWM - Scrcpy Window Manager\n\nUsage:\n swm init [force]\n swm [options] repl\n swm [options] healthcheck\n swm [options] adb [<adb_args>...]\n swm [options] scrcpy [<scrcpy_args>...]\n swm [options] app recent\n swm [options] app run <query> [no-new-display] [<init_config>]\n swm [options] app list [with-last-used-time] [with-type] [update]\n swm [options] app search [with-type] [index]\n swm [options] app most-used [<count>]\n swm [options] app config show-default\n swm [options] app config list\n swm [options] app config (show|edit) <config_name>\n swm [options] app config copy <source_name> <target_name>\n swm [options] mount <device_path> <host_path>\n swm [options] mount reverse <host_path> <device_path>\n swm [options] ime list\n swm [options] ime (switch|activate|deactivate) <query>\n swm [options] ime search\n swm [options] ime switch-to-previous\n swm [options] java run <script_path>\n swm [options] java shell [<shell_args>...]\n swm [options] termux run <script_path>\n swm [options] termux exec <executable>\n swm [options] termux shell [<shell_args>...]\n swm [options] session list [last-used]\n swm [options] session search [index]\n swm [options] session restore [session_name]\n swm [options] session delete <query>\n swm [options] session edit <query>\n swm [options] session save <session_name>\n swm [options] session copy <source> <target>\n swm [options] device list [last-used]\n swm [options] device search [index]\n swm [options] device select <query>\n swm [options] device name <device_id> <device_alias>\n swm [options] baseconfig show [diagnostic]\n swm [options] baseconfig show-default\n swm [options] baseconfig edit\n swm --version\n swm --help\n\nOptions:\n -h --help Show this screen.\n --version Show version.\n -c --config=<config_file>\n Use a config file.\n -v --verbose Enable verbose logging.\n -d --device=<device_selected>\n Device name or ID for executing the command.\n --debug Debug mode, capturing all exceptions.\n\nEnvironment variables:\n SWM_CACHE_DIR\n SWM managed cache directory on PC, which stores the main config file\n SWM_CLI_SUGGESION_LIMIT\n Maximum possible command suggestions when failed to parse user input\n ADB Path to ADB binary (overrides SWM managed ADB)\n SCRCPY Path to SCRCPY binary (overrides SWM managed SCRCPY)\n FZF Path to FZF binary (overrides SWM managed FZF)\n```\n\n## Demo\n\n### App fuzzy run\n\n\n### App search and run\n\n\n### Chrome demo\n\n\n### Device status\n\n\n### Java shell\n\n\n### List IME\n\n\n### Search\n\n\n### Termux demo\n\n\n### Termux shell\n\n\n## Related projects\n\n[scrcpy-wrapper](https://github.com/Bluemangoo/scrcpy-wrapper)\n\n[pyscrcpy](https://github.com/yixinNB/pyscrcpy)\n\n[MYScrcpy](https://github.com/me2sy/MYScrcpy)\n\n[Vysor](https://github.com/koush/vysor.io)\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Android window manager using Scrcpy on PC",
"version": "0.3.3.2.2",
"project_urls": {
"Homepage": "https://github.com/james4ever0/swm"
},
"split_keywords": [],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "acc87c902f16642fd1a439c0549c15d9b5f7fa62f5e8acd4588d45c58d46057a",
"md5": "e9760cec3e1e2af4f9e0ce6b762d0e3e",
"sha256": "1a89c2f644b1e939c9e05ff7b1865b8454b6ba24f91e946bc1d63ee9888a31de"
},
"downloads": -1,
"filename": "swm_android-0.3.3.2.2-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "e9760cec3e1e2af4f9e0ce6b762d0e3e",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": ">=3.6.0",
"size": 50887,
"upload_time": "2025-07-20T17:48:39",
"upload_time_iso_8601": "2025-07-20T17:48:39.830656Z",
"url": "https://files.pythonhosted.org/packages/ac/c8/7c902f16642fd1a439c0549c15d9b5f7fa62f5e8acd4588d45c58d46057a/swm_android-0.3.3.2.2-py2.py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "3eec3bb504ea7d4d469dcbae3ece34a6c952c730faf4de3a2513bf0bc415c0f5",
"md5": "9f1567f9bc01e49704ceaf215659995d",
"sha256": "ba5d5e71e4df447acd4cfb33ca0ac9fea2a20db5d66222744f8d8f05aaeba6bb"
},
"downloads": -1,
"filename": "swm-android-0.3.3.2.2.tar.gz",
"has_sig": false,
"md5_digest": "9f1567f9bc01e49704ceaf215659995d",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.6.0",
"size": 52073,
"upload_time": "2025-07-20T17:48:41",
"upload_time_iso_8601": "2025-07-20T17:48:41.166410Z",
"url": "https://files.pythonhosted.org/packages/3e/ec/3bb504ea7d4d469dcbae3ece34a6c952c730faf4de3a2513bf0bc415c0f5/swm-android-0.3.3.2.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-20 17:48:41",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "james4ever0",
"github_project": "swm",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"requirements": [
{
"name": "fuzzywuzzy",
"specs": []
},
{
"name": "omegaconf",
"specs": []
},
{
"name": "docopt",
"specs": []
},
{
"name": "requests",
"specs": []
},
{
"name": "PyYAML",
"specs": []
},
{
"name": "pandas",
"specs": []
},
{
"name": "tinydb",
"specs": []
},
{
"name": "pyperclip",
"specs": []
},
{
"name": "pyautogui",
"specs": []
},
{
"name": "psutil",
"specs": []
},
{
"name": "textual",
"specs": []
},
{
"name": "pillow",
"specs": []
},
{
"name": "filelock",
"specs": []
}
],
"lcname": "swm-android"
}