Portable Linux Wine Launcher
  • JavaScript 89.9%
  • CSS 6%
  • HTML 2.6%
  • Shell 1.5%
Find a file
2026-09-25 17:33:42 +02:00
.freebuff First build 2026-09-25 17:09:38 +02:00
files/translations change game to app 2026-09-25 17:33:42 +02:00
node_modules First build 2026-09-25 17:09:38 +02:00
renderer First build 2026-09-25 17:09:38 +02:00
src change game to app 2026-09-25 17:33:42 +02:00
test change game to app 2026-09-25 17:33:42 +02:00
.gitignore change game to app 2026-09-25 17:33:42 +02:00
build.sh First build 2026-09-25 17:09:38 +02:00
package-lock.json First build 2026-09-25 17:09:38 +02:00
package.json First build 2026-09-25 17:09:38 +02:00
README.md First build 2026-09-25 17:09:38 +02:00
run.sh First build 2026-09-25 17:09:38 +02:00

PLGL — Portable Linux Wine Launcher

A portable launcher for Windows games and applications on Linux.

Portable layout

Everything the launcher needs lives next to the executable:

./files/
  wines/           imported Wine / Proton builds
  wineprefixes/    wine prefixes
  apps/            imported app folders (optional)
  data/            launcher config (apps.json, settings.json)
  translations/    translation files

Running

npm install
npm start

Wine & Proton support

  • System Wine — uses the wine binary from PATH.
  • Imported builds — drop any wine or Proton build into files/wines/. The folder may contain the build directly, or one level of nesting (zip-extracted layouts are detected automatically).
  • Proton without Steam — fully supported. Proton is invoked like Steam does it: STEAM_COMPAT_CLIENT_INSTALL_PATH points to a fake steam client folder, STEAM_COMPAT_DATA_PATH is a per-build compat folder, and the prefix lives at <compat>/pfx which PLGL links to its own prefix folder. No Steam installation required (GE builds work out of the box; for a few Valve builds that refuse to run without a client, PLGL fakes a minimal steam folder in files/data/fake-steam).

Translations

All UI text comes from JSON files in files/translations/. The data object carries the language names; texts maps keys to strings, with {0}, {1} ... placeholders filled at runtime.