{"id":20746152,"url":"https://github.com/mehver/icontroller","last_synced_at":"2026-01-02T19:29:32.610Z","repository":{"id":227585938,"uuid":"766931638","full_name":"Mehver/iController","owner":"Mehver","description":"A PC host LAN controller, enabling mobile phones to access a web page panel for PC control.","archived":false,"fork":false,"pushed_at":"2025-04-19T10:57:50.000Z","size":8240,"stargazers_count":10,"open_issues_count":1,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-24T06:49:51.498Z","etag":null,"topics":["flask","macos","macros","pyautogui","quart","react","remote-control","trackpad","windows"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Mehver.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":"docs/roadmap.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-03-04T11:58:43.000Z","updated_at":"2025-04-21T16:22:45.000Z","dependencies_parsed_at":"2024-06-05T20:49:01.045Z","dependency_job_id":"9f42cbff-b0f8-402e-a203-3e211007d053","html_url":"https://github.com/Mehver/iController","commit_stats":null,"previous_names":["mehver/icontroller"],"tags_count":26,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mehver%2FiController","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mehver%2FiController/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mehver%2FiController/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mehver%2FiController/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Mehver","download_url":"https://codeload.github.com/Mehver/iController/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250580713,"owners_count":21453531,"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","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":["flask","macos","macros","pyautogui","quart","react","remote-control","trackpad","windows"],"created_at":"2024-11-17T07:24:34.101Z","updated_at":"2026-01-02T19:29:32.603Z","avatar_url":"https://github.com/Mehver.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\r\n    \u003cimg src=\"https://github.com/Mehver/iController/raw/main/docs/icon/256.png\" width=\"20%\" alt=\"\"/\u003e\r\n    \u003ch1\u003eiController \u003ccode\u003ev0.7.2\u003c/code\u003e\u003c/h1\u003e\r\n\t\u003cp\u003eEnglish | \u003ca href='https://github.com/Mehver/iController/blob/main/docs/README-cn.md'\u003e简体中文\u003c/a\u003e\u003c/p\u003e\r\n    \u003cspan\u003e\r\n        \u003ca href='https://github.com/Mehver/iController/releases/tag/v0.7.2'\u003e\u003cimg src=\"https://img.shields.io/badge/Windows%20(x64)-v0.7.2-blue?logo=data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI1MDAiIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaWRZTWlkIiB3aWR0aD0iMjQ5MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSItMSAtMSAyNTggMjU5Ij48cGF0aCBkPSJNLTEtMWgyNTh2MjU5SC0xeiIvPjxwYXRoIGQ9Ik0wIDM2LjM1N0wxMDQuNjIgMjIuMTFsLjA0NSAxMDAuOTE0LTEwNC41Ny41OTVMMCAzNi4zNTh2LS4wMDF6bTEwNC41NyA5OC4yOTNsLjA4IDEwMS4wMDJMLjA4MSAyMjEuMjc1bC0uMDA2LTg3LjMwMiAxMDQuNDk0LjY3N3ptMTIuNjgyLTExNC40MDVMMjU1Ljk2OCAwdjEyMS43NGwtMTM4LjcxNiAxLjFWMjAuMjQ2ek0yNTYgMTM1LjZsLS4wMzMgMTIxLjE5MS0xMzguNzE2LTE5LjU3OC0uMTk0LTEwMS44NHoiIGZpbGw9IiNmZmYiLz48L3N2Zz4=\" alt=\"\"/\u003e\u003c/a\u003e\u0026nbsp;\r\n        \u003ca href='https://github.com/Mehver/iController/releases/tag/v0.5.1'\u003e\u003cimg src=\"https://img.shields.io/badge/MacOS%20(arm64)-v0.5.1-green?logo=Apple\" alt=\"\"/\u003e\u003c/a\u003e\u0026nbsp;\r\n        \u003ca href='https://github.com/Mehver/iController/releases/tag/v0.5.1'\u003e\u003cimg src=\"https://img.shields.io/badge/MacOS%20(x64)-v0.5.1-green?logo=Apple\" alt=\"\"/\u003e\u003c/a\u003e\r\n    \u003c/span\u003e\r\n\u003c/div\u003e\r\n\r\n## 1 Description\r\n\r\nA host LAN controller software running on `Windows` and `macOS` (read description below) PC, enabling mobile phones to access a web page panel for PC control.\r\n\r\n\u003ctable\u003e\r\n    \u003ctr\u003e\r\n        \u003ctd\u003e\r\n            \u003cimg src=\"https://github.com/Mehver/iController/raw/main/docs/A.png\" width=\"390px\" alt=\"\"/\u003e\r\n        \u003c/td\u003e\r\n        \u003ctd\u003e\r\n            \u003cimg src=\"https://github.com/Mehver/iController/raw/main/docs/B.png\" width=\"390px\" alt=\"\"/\u003e\r\n        \u003c/td\u003e\r\n        \u003ctd\u003e\r\n            \u003cimg src=\"https://github.com/Mehver/iController/raw/main/docs/C.png\" width=\"390px\" alt=\"\"/\u003e\r\n        \u003c/td\u003e\r\n        \u003ctd\u003e\r\n            \u003cimg src=\"https://github.com/Mehver/iController/raw/main/docs/D.png\" width=\"390px\" alt=\"\"/\u003e\r\n        \u003c/td\u003e\r\n    \u003c/tr\u003e\r\n\u003c/table\u003e\r\n\r\n### 1.1 Features\r\n\r\n- [x] Touchpad\r\n- [x] Mouse Buttons (Left, Right, Middle)\r\n- [x] Mouse Wheel\r\n- [x] D-Pad\r\n- [x] Keyboard\r\n- [x] Volume Slider\r\n\r\n## 2 Usage\r\n\r\n### 2.1 Windows\r\n\r\nDownload portable application from the [Release](https://github.com/Mehver/iController/releases) page.\r\n\r\nCurrently, the program is CLI interactive. When starting, you can manually provide the port number, and the program will automatically detect to ensure that the port is available and conflict-free. After starting, use the mobile browser to access the LAN IP address and port of the computer.\r\n\r\n\u003cimg src=\"https://github.com/Mehver/iController/raw/main/docs/0.png\" width=\"50%\" alt=\"\"\u003e\r\n\r\n### 2.2 macOS\r\n\r\n\u003e [!IMPORTANT]\r\n\u003e Due to the introduction of additional features starting from `v0.6.0`, it is difficult to perfectly support macOS through the non-installation method. Therefore, the packaging files for macOS are temporarily not provided, `v0.5.1` is the last stable version that supports macOS.\r\n\r\nFor `v0.5.1`, you can download from the [Release v0.5.1](https://github.com/Mehver/iController/releases/tag/v0.5.1) page.\r\n\r\nNote: For macOS, due to permission issues, the\r\ndirectly downloaded iController cannot be trusted by the system, the only solution at present is to open the switch\r\nof `Settings \u003e Privacy \u0026 Security \u003e Developer Tools \u003e Terminal`.\r\n\r\n\u003cimg src=\"https://github.com/Mehver/iController/raw/main/docs/1.jpg\" width=\"50%\" alt=\"\"\u003e\r\n\r\n## 3 Development\r\n\r\n### 3.1 Requirements\r\n\r\n- [Node.js](https://nodejs.org/en/) v16.20.2\r\n- [Python](https://www.python.org/) v3.10.10\r\n\r\n### 3.2 Frontend\r\n\r\nAll front-end development is carried out in the `./ClientBrowserUI/` directory. The final static ES6 front-end assets are generated using `npm run build`. In both development mode and during packaging, the backend can automatically route requests to the built resource path.\r\n\r\nYou can set up a Node.js environment on your system and install dependencies using `npm i`. However, the recommended approach is to use the `.bat` or `.sh` scripts provided under `./bin/DevDockerEnv/` in this project to start the official Docker environment and install dependencies with a single command. Scripts whose filenames contain `-p3000` map port 3000, making them convenient for React.js development and debugging.\r\n\r\n**Development**\r\n\r\n```shell\r\nnpm run react\r\n```\r\n\r\n**Build**\r\n\r\n```shell\r\nnpm run pyinstaller\r\n```\r\n\r\n### 3.3 Backend\r\n\r\nFor the Python environment, since this program is intended to control the mouse in a GUI environment, using containers to isolate the development environment provides limited value. Therefore, it is recommended to use a [Python local virtual environment](https://docs.python.org/3/library/venv.html) to install dependency libraries. It is recommended to use the `.bat` or `.sh` scripts under `./bin/DevPyVenv/` to create the virtual environment and install dependencies into this local virtual environment with a single command.\r\n\r\nYou can either bind the virtual environment to your IDE or manually activate the virtual environment. For details, see the [official documentation](https://docs.python.org/3/library/venv.html#how-venvs-work). Specifically:\r\n\r\n**Windows**\r\n\r\n```shell\r\nvenv\\Scripts\\activate\r\n```\r\n\r\n**macOS**\r\n\r\n```shell\r\nsource venv/bin/activate\r\n```\r\n\r\n### 3.4 Compile / Package\r\n\r\nRecommend use `win-onefile.bat` / `mac-onefile.sh` in `./bin/packaging/` to package the application. **Note that after testing, some Python v3.10.x versions may have mysterious errors. Only Python v3.10.10 is recommended.**\r\n\r\n## 4 Built With / Tech Stack\r\n\r\n\u003e All dependencies are open-source and licensed under permissive licenses. No copyleft (e.g., GPL, AGPL) components are included.\r\n\r\n- Node.js\r\n    - React.js\r\n        - Material UI (https://github.com/mui/material-ui)\r\n        - Prime React (https://github.com/primefaces/primereact)\r\n        - React Color (https://github.com/casesandberg/react-color)\r\n    - Lodash (https://github.com/lodash/lodash)\r\n- Python\r\n    - (≤v0.4.5) ~~Flask (https://github.com/pallets/flask)~~\r\n    - (v0.5.0+) Quart (https://github.com/pallets/quart)\r\n      - Hypercorn (https://github.com/pgjones/hypercorn)\r\n    - PyAutoGUI (https://github.com/asweigart/pyautogui)\r\n    - Pycaw (https://github.com/AndreMiras/pycaw)\r\n    - Psutil (https://github.com/giampaolo/psutil)\r\n    - PyInstaller (https://github.com/pyinstaller/pyinstaller)\r\n\r\n## 5 License\r\n\r\nThis project is released under the BSD 3-Clause License. Code may be reused with proper attribution.\r\n\r\nCopyright (c) 2024-Present, Mehver (https://github.com/Mehver). All rights reserved.\r\n\r\nAll dependencies are open-source and licensed under permissive licenses. No copyleft (e.g., GPL, AGPL) components are included.\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmehver%2Ficontroller","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmehver%2Ficontroller","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmehver%2Ficontroller/lists"}