Repository navigation
Conversation
Contributor
Author
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Adds three things to
natbro-plugin: a fileformat that can hold more than one row, row types that are not toggles, and runner
variants. Plus
examples/so the whole thing can be looked at and tested without needing actual variants and plugins.1. Runner variants
A variant is an APFS-clone of the chosen CrossOver runner with custom dual-sided (native .dylib/.so + windows .dll) files laid over it. Unlike the two types of plugins already existing (a. WINEDLLOVERRIDES in normal plugins which can only handle windows .dll additions, b. native .dylib's injected by NotProton into the Wine process), variants can touch the base runner, like a Wine Trick.
Variants are assembled the first time a game asks for one and reused after that, so they try to save space if e.g. you have many games using a custom DXMT. Descriptors of variants live in
~/Library/Application Support/notproton/variants, and the Developer section offers onedropdown per variant-type.
NOTPROTON_RUNNER_VARIANT,+-separated by the variant-name and sorted, so groups combine.src: anx86_64-windowsfolder isskipped for an aarch64 runner and the other way round, so one build tree can serve both
and a picker never offers a tree the runner cannot load.
builtin-marked PE under a
nativeoverride and a unixlib only binds when builtin.two games starting at once cannot race and a runner in use is never rewritten.
2. Rows that are not toggles
typedecides what a row is; leaving it out leaves the row exactly as it is today.typeonoroffchoicechoicesliderminandmaxstep,default,suffixsliderchoiceNote:
empty position, so
defaultis where the handle sits while the option is unset, andsliding back onto it clears the option again.
onChangeComplete, notonChangeand values round to 4 decimals.
Two smaller changes came with them.
dependsnow also accepts a parent that holds avalue — a toggle parent is satisfied by its
onvalue as before, a dropdown or sliderparent by holding any value rather than sitting on Default — which is what lets a
sub-option hang off a dropdown. And rows indent by how deep the
dependschain runs, so asub-option of a sub-option indents twice;
on1already walked the chain, this walks it forthe indent too.
New field
description_on: repeatable lines that appear under the description only whilethe row is on, for what a feature offers once it is actually running.
3. One sectioned grammar for both
A
[header]opens a record and is its id — for a plugin the launch option it reads andwrites, for a variant the name used in
NOTPROTON_RUNNER_VARIANT. A file holds as manyrecords as it likes, so a feature and its settings live together:
dylib/feats/conf-format.mdis the specification: grammar, both schema tables withcardinality stated once per field, and the error codes.
4. Examples
examples/holds droppable files and a README of the whole grammar. They are the realdescriptors behind three tools rather than invented ones, so
requirespoints at a buildyou probably do not have — which is the point of one of them: a row whose files are missing
still appears, greyed out as "(not installed)".
plugins/10-framescope.confdescription_onplugins/20-renderdoc.conf0when switched off rather than clearing the optionplugins/30-kosmickrisp.confvariants/dxmt-example.confThe toggles work as they are. The dropdowns and sliders write their value into the game's
launch options, and that reaches the game once #219 lands; until then they show the UI
without changing the game.
Testing
conf-fixtures,confcheck,featcheck,featstagecheck,runnervariantcheck,panel-behavior,scriptcheck,runcheck,envcheck,compatcheck,settingscheck,webpatch-fixtures,gamedrivecheck,launchercheck,routecheck, and the dylib builds.