Skip to content

feat(registry/phorcys/modules/xpra): add module for single-app web desktops - #1224

Draft
phorcys420 wants to merge 1 commit into
mainfrom
phorcys/xpra
Draft

phorcys420 wants to merge 1 commit into
mainfrom
phorcys/xpra

Conversation

@phorcys420

Copy link
Copy Markdown
Member

Description

Adds a phorcys namespace with an xpra module that turns any X11 desktop app into a Coder app. Each instance runs its own xpra desktop session with openbox, which maximizes the app without decorations. --resize-display=yes makes the X display follow the browser size, so the app always fills the slim window or tab, similar to RemoteApp.

Notes:

  • Each instance uses $HOME/.coder-modules/phorcys/xpra-<slug> as its module directory. coder-utils derives its sync names from the last two path segments, so a shared directory would collide when the module is used more than once.
  • Auto-install supports Debian/Ubuntu only (xpra.org repo + distro openbox). install_xpra / install_openbox turn this off for preinstalled images.

Type of Change

  • New module
  • New template
  • Bug fix
  • Feature/enhancement
  • Documentation
  • Other

Module Information

Path: registry/phorcys/modules/xpra
New version: v1.0.0
Breaking change: [ ] Yes [x] No

Testing & Validation

  • Tests pass (bun test)
  • Code formatted (bun fmt)
  • Changes tested locally

Ran the rendered install and start scripts in ubuntu:24.04 with a GTK app (gtk3-demo), a Qt app (featherpad) and a Java Swing app. Then resized a headless Chromium from 1280x800 to 900x600: in each case the app window followed the browser size.

Related Issues

None


Agent-assisted with Xum using Claude.

…sktops

Run any X11 app as a full-size Coder app with xpra desktop and openbox. The X display follows the browser size.
@github-actions

Copy link
Copy Markdown
Contributor

Module Scorecard Check

phorcys/xpra: first scorecard, 79 / 100

No specific score is required to contribute, but modules with higher scores are more likely to be approved by the Coder team and widely used.

Full scorecard for this PR
Presentation & Onboarding Credential Hygiene Restricted-Environment Readiness Engineering Quality Overall
12 / 17 20 / 20 11 / 20 10 / 10 79 / 100
Drilldown

Track: Utility (generic X11 app launcher — not an AI agent or a dedicated IDE module)

Presentation & Onboarding — 12 / 17

Criterion Max Score Notes
Configuration-mode examples 12 12 README shows multiple major modes with sensible defaults: single app, multiple instances (unique slug/port), env/xpra tuning (env, extra_args), and bring-your-own-binary mode (install_xpra=false, install_openbox=false).
Visual preview 5 0 No image, GIF, or video of the rendered app in the README.

Credential Hygiene — 20 / 20

Criterion Max Score Notes
Secrets marked sensitive 16 16 Module has no secret/credential inputs by construction; no inline keys or placeholder secrets appear anywhere in the README examples.
Non-hardcoded auth path 4 4 README explicitly states "xpra listens on 127.0.0.1 only. The Coder app proxy does the authentication," documenting a non-hardcoded auth path via Coder's built-in proxy.

Restricted-Environment Readiness — 11 / 20

Criterion Max Score Notes
Mirrorable artifact source 5 0 install.sh.tftpl hardcodes https://raw.githubusercontent.com/Xpra-org/xpra/.../xpra.sources and https://xpra.org/xpra.asc. No module variable overrides these download URLs.
Bring-your-own binary 10 10 install_xpra and install_openbox variables fully disable install when binaries are baked into the image, documented in the "Preinstalled xpra and openbox" README section.
Egress transparency 3 0 No dedicated network/offline/air-gapped section enumerating endpoints (xpra.org, raw.githubusercontent.com) contacted during install; only scattered install-script code, not a documented section.
Runs without sudo 2 1 install.sh.tftpl requires passwordless sudo for apt-get package install (core install path) and exits with an error if absent, but documents a working no-sudo fallback (install_xpra=false/install_openbox=false with preinstalled packages). start.sh.tftpl never uses sudo. Matches "sudo for optional/core install with documented fallback" → half credit.

Engineering Quality — 10 / 10

Criterion Max Score Notes
Input quality 6 6 All variables have clear descriptions and sensible defaults; validations present for command, slug, port, open_in, share, and env key format.
Test coverage 4 4 main.tftest.hcl covers business logic (URL generation, validation failures, script content assertions) and main.test.ts covers end-to-end behavior (terraform apply, coder_app resource shape, decoded script contents).

Overall — 79 / 100

Raw 53 / 67 → round(53 / 67 × 100) = 79

Tip

You can run this locally by telling your agent: "review this module against .github/scorecard/SCORECARD.md".


Scored against SCORECARD.md with solstice-1. Language-model scores are advisory.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant