{"id":22378805,"url":"https://github.com/rosalina121/pc-remote-control","last_synced_at":"2026-04-15T10:34:11.054Z","repository":{"id":231146936,"uuid":"780998824","full_name":"Rosalina121/pc-remote-control","owner":"Rosalina121","description":"Bun server for controlling your PC remotely!","archived":false,"fork":false,"pushed_at":"2025-07-11T21:46:26.000Z","size":900,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-04T19:28:25.841Z","etag":null,"topics":["bun","express","nircmd","rest","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Rosalina121.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":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-04-02T15:02:15.000Z","updated_at":"2025-07-11T21:46:29.000Z","dependencies_parsed_at":"2024-12-04T23:07:54.647Z","dependency_job_id":"79d301e4-c990-40b0-b6c9-ad9b36d06dac","html_url":"https://github.com/Rosalina121/pc-remote-control","commit_stats":null,"previous_names":["rosalina121/pc-remote-control"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Rosalina121/pc-remote-control","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Rosalina121%2Fpc-remote-control","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Rosalina121%2Fpc-remote-control/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Rosalina121%2Fpc-remote-control/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Rosalina121%2Fpc-remote-control/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Rosalina121","download_url":"https://codeload.github.com/Rosalina121/pc-remote-control/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Rosalina121%2Fpc-remote-control/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31837216,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-15T10:26:52.245Z","status":"ssl_error","status_checked_at":"2026-04-15T10:26:51.649Z","response_time":63,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["bun","express","nircmd","rest","typescript"],"created_at":"2024-12-04T23:07:52.625Z","updated_at":"2026-04-15T10:34:11.031Z","avatar_url":"https://github.com/Rosalina121.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# pc-remote-control\n\nA [Bun](https://bun.sh) server for remote control for your PC. Loosely based on my old [SiriFlask](https://github.com/Rosalina121/SiriFlask) project.\n\n![Example CLI](example.png)\n\n## Quickstart\nTo install:\n```bash\nbun i\n```\n\nTo run:\n\n```bash\nbun start\n```\n\nWhen developing:\n```bash\nbun watch\n```\n\n## Config\n`config.json` contains configuration for general app use (like files upload folder for Multer)\nEach Module may have it's own config for more specific use.\n\n## Modules\n\nEach functionality is split into modules in, well, `/modules`. It's just a TS class extending the `IModule`. All are loaded dynamically, so if you want to add something new, just create a new class and export the instance (or copy and adapt `Template.ts`).\n\nA module has an `emoji`, `name`, `path` to be invoked on and `fn(request: moduleReq): IModuleResponse` performing a task. `IModuleResponse` is just a response string and a status code and `moduleReq` just an alias for the Express Request.\n\nSome modules have an extra `.json` file named same as the module, which contains extra configs. These have to be created manually, as in most cases they include things like tokens, or personal stuff. Check comments, as they should have more specific info.\n\nAn exception is the file upload \"module\". That one is baked into index.ts since that was easier.\n\n## In this repo\n\n### Available modules\n\nFollowing modules are available when you pull this repo:\n\n-   Ping - just responds with \"Pong!\"\n-   Shutdown - performs a shutdown in 60s or after specified time\n    -   Also you can reboot and abort the shutdown\n    -   On Linux the seconds are rounded to minutes (wait why? TODO: change that lol)\n-   Volume - changes volume to provided value\n-   Clipboard - sets clipboard to the provided string\n-   Upload - saves uploaded file to dir specified in `config.json`\n-   Switch Audio - switches to the audio device of provided name\n-   PlayPause - plays/pauses an [mpris](https://wiki.archlinux.org/title/MPRIS) media player\n\n### OS support\nMost modules will work regardless of the platform, but some may only work on a specific OS.\nBasically the underlying logic has implementation for each one.\nAlso some modules may require extra dependencies to work correctly on certain systems.\n\n**TODO: Enable modules based on the OS**\n\n*Note:* As of 2025 Windows implementations are mostly untested, or missing. This is wholly because\nI switched to daily driving Linux since I started this project. Feel free to raise any issues or create PRs related to Windows though.\n\nExtra dependencies:\n- `Clipboard` requires `xclip` (X11) or `wl-clipboard` (Wayland) on a Linux system (consult your package manager), `clip` on Windows, and `pbcopy/pbpaste` on macOS. It's making use of the `node-copy-paste` package.\n- `Volume`, `Switch Audio` and `Shutdown` use [NirCMD](https://www.nirsoft.net/utils/nircmd.html) to work on Windows, `pactl` on Linux (tested with Pipewire).\n- `Media` uses `playerctl` on Linux.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frosalina121%2Fpc-remote-control","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frosalina121%2Fpc-remote-control","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frosalina121%2Fpc-remote-control/lists"}