{"id":21487574,"url":"https://github.com/dtinth/discord-plays-linux","last_synced_at":"2026-03-12T05:32:46.063Z","repository":{"id":139904602,"uuid":"389345113","full_name":"dtinth/discord-plays-linux","owner":"dtinth","description":"A shared desktop on Discord?????","archived":false,"fork":false,"pushed_at":"2021-07-28T07:40:31.000Z","size":203,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-07-16T05:52:10.374Z","etag":null,"topics":["discordjs","docker","electron","pulseaudio","xvfb"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dtinth.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2021-07-25T12:44:01.000Z","updated_at":"2022-05-28T13:07:59.000Z","dependencies_parsed_at":null,"dependency_job_id":"ffd05a66-e47d-48d7-a402-e7e4ef59ef7c","html_url":"https://github.com/dtinth/discord-plays-linux","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/dtinth/discord-plays-linux","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dtinth%2Fdiscord-plays-linux","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dtinth%2Fdiscord-plays-linux/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dtinth%2Fdiscord-plays-linux/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dtinth%2Fdiscord-plays-linux/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dtinth","download_url":"https://codeload.github.com/dtinth/discord-plays-linux/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dtinth%2Fdiscord-plays-linux/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30416310,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-12T04:41:02.746Z","status":"ssl_error","status_checked_at":"2026-03-12T04:40:12.571Z","response_time":114,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: 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":["discordjs","docker","electron","pulseaudio","xvfb"],"created_at":"2024-11-23T13:29:41.070Z","updated_at":"2026-03-12T05:32:46.058Z","avatar_url":"https://github.com/dtinth.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Discord Plays Linux\n\nA shared Linux container that can be controlled by anyone on Discord.\n\n## Bot commands\n\n| Command      | Description                                          |\n| ------------ | ---------------------------------------------------- |\n| `m\u003cx\u003e,\u003cy\u003e`   | Move the mouse by the given offset.                  |\n| `M\u003cx\u003e,\u003cy\u003e`   | Move the mouse to the given position.                |\n| `l\u003cx\u003e,\u003cy\u003e`   | Drag the mouse by the given offset.                  |\n| `L\u003cx\u003e,\u003cy\u003e`   | Drag the mouse to the given position.                |\n| `f \u003ctext\u003e`   | Move mouse cursor to the given text (uses OCR).      |\n| `c`          | Click the mouse.                                     |\n| `rc`         | Right-click the mouse.                               |\n| `mc`         | Middle-click the mouse.                              |\n| `u`, `uu`, … | Scroll the mouse wheel up (by the number of `u`s).   |\n| `d`, `dd`, … | Scroll the mouse wheel down (by the number of `d`s). |\n| `k \u003ckey\u003e …`  | Press the keyboard key.                              |\n| `t \u003ctext\u003e`   | Type the given text.                                 |\n| `e`          | Press the enter key.                                 |\n| `y \u003ctext\u003e`   | Copy the given text to the clipboard.                |\n\n## Components\n\n- Two desktop Linux containers:\n  - `discord` for connecting to Discord and share the screen.\n  - `desktop` for the actual desktop.\n- An agent to control the VM.\n- A Discord bot that talks to the agent.\n\n![](./setup.drawio.svg)\n\n## Notes for server operators\n\n```sh\n# Start all services\ndocker-compose up -d\n\n# Tail logs\ndocker-compose logs --tail=100 -f\n\n# Access desktop as root\ndocker-compose exec desktop bash\n\n# Access desktop as desktop user\ndocker-compose exec desktop su desktop\n\n# Restart agent (sometimes required when transparency is not working)\ndocker-compose exec desktop supervisorctl restart agent\n\n# Stop OCR system (when CPU overloaded)\ndocker-compose exec desktop supervisorctl stop ocr\n\n# Recreate the Desktop docker container (when someone `rm -rf`’d it)\ndocker-compose up -d --force-recreate desktop\n\n# Tail agent logs\ndocker-compose exec desktop supervisorctl tail -f agent\n\n# Show overlay\ndocker-compose exec discord sudo -u desktop -H /opt/overlay/start.sh\n\n# Pipe sound from desktop to Discord\npacmd load-module module-tunnel-source server=desktop source=virtual.monitor source_name=desktop\n\n# Pipe video from desktop to Discord\nffplay -fs -f x11grab -video_size 1280x720 -i desktop:1.0\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdtinth%2Fdiscord-plays-linux","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdtinth%2Fdiscord-plays-linux","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdtinth%2Fdiscord-plays-linux/lists"}