ProtonPlus

ID

protonplus

Link

Repository

Version requirement

>= 0.6

Platforms

🐧 Linux

Operations

installed · install · upgrade · upgrade_all · remove

purl types

pkg:protonplus/

CLI name

protonplus

Issues and PRs

📦 manager: protonplus

Source

protonplus.py

ProtonPlus, installing Proton, Wine, DXVK and VKD3D builds into game launchers.

A package is one runner on one launcher, identified as <launcher_id>/<runner_id>: lutris-system/dxvk-doitsujin is DXVK (doitsujin) as the natively installed Lutris sees it. protonplus list names the launchers ProtonPlus detects. ProtonPlus has no catalog command, but protonplus install <launcher_id> <runner_id> answers an unknown runner ID with the list of the ones that launcher accepts.

The inventory reads the .protonplus record ProtonPlus writes into every release it installs, which is also what ProtonPlus builds its own listing from. protonplus list <launcher_id> prints directory names only, with neither runner nor version, and mixes in the launcher’s own directories. The records are looked for in the launcher directories ProtonPlus checks as of 0.6.8, which is an implementation detail rather than a documented contract: a release missing from the inventory after a ProtonPlus upgrade points there first. A runner kept at several releases is listed once, at its newest.

install fetches the newest release into a rolling <runner title> Latest directory, the one release that upgrade moves forward. A release installed at a chosen version from ProtonPlus itself is listed too, but upgrade --all passes it over, and upgrading a runner that holds no rolling release fails with ProtonPlus’s own This compatibility tool is not installed. error: run mpm install on it first. remove deletes every release of the runner on that launcher.

mpm runs the protonplus command. The AppImage build carries a longer file name: link it as protonplus into a directory on PATH.

What mpm adds to protonplus

mpm reaches across every manager at once, not protonplus alone: mpm installed and mpm outdated cover protonplus alongside every other manager you run in one table, mpm upgrade --all updates them together, and mpm sbom exports the whole machine as one bill of materials.

Every mpm command also gains --dry-run and --plan previews, cross-scheme version comparison and purl identifiers. See manager augmentations for how each one is built.

Operations

Operation

Supported

Notes

installed

✅

outdated

❌

ProtonPlus compares releases only while update applies them.

orphans

search

❌

ProtonPlus has no catalog, only an error listing the runner IDs.

install

✅

upgrade

✅

upgrade_all

✅

remove

✅

sync

cleanup

doctor

Configuration

  • Ignore protonplus on the mpm CLI by passing the --no-protonplus option.

  • Ignore it for every run in your configuration:

    [mpm]
    protonplus = false
    
  • Raise the timeout of all protonplus calls:

    [mpm.overrides.protonplus]
    timeout = 900
    
  • Run mpm config-template protonplus to print all overridable settings for your configuration file:

    [mpm.overrides.protonplus]
    cli_names = [
        "protonplus",
    ]
    cli_search_path = []
    dry_run = false
    ignore_auto_updates = true
    plan = false
    post_args = []
    pre_args = []
    pre_cmds = []
    requirement = ">=0.6.0"
    stop_on_error = false
    unmaintained = false
    version_cli_options = [
        "version",
    ]
    version_regexes = [
        "ProtonPlus\\s+(?P<version>\\S+)",
    ]
    

Recipes

A few jobs you would otherwise script around protonplus, one mpm command each:

  • Snapshot and clone a machine: mpm --protonplus dump protonplus.toml, then mpm restore protonplus.toml on the next one.

  • Export a compliance SBOM: mpm --protonplus sbom (CycloneDX by default, --spdx for SPDX).

Privilege escalation

mpm runs this manager as the current user and never prepends sudo by default. Flip the policy for its privileged operations with --sudo or the per-manager sudo override.

None of its operations is privileged.

See privilege escalation for the full policy.

Cooldown

State of ProtonPlus’s release-age gating, from the cooldown support table:

Status: ❌ None

A cooldown only pays off where a compromised release can be withdrawn while the clock runs, and can only be emulated where the registry dates its releases. From the retraction table:

  • Registry: GitHub release assets

  • Retraction: None: withdrawing a build is the upstream author deleting their own release or tag. Nothing sits between them and the user

  • Publish date: ✅ server-set published_at on each release (REST API)

With --cooldown set, mpm skips this manager’s install and upgrade operations rather than run them unguarded (fail-closed); --cooldown best-effort opts back in.

Version check

The version is probed by running:

$ protonplus version
ProtonPlus 0.6.8

and extracted with:

r"ProtonPlus\s+(?P<version>\S+)"

Changelog

  • 8.1.0.dev0 (unreleased)

    • Add ProtonPlus, which installs Proton, Wine, DXVK and VKD3D builds into game launchers, with installed, install, upgrade and remove support.