Package Details: proton-ge-custom-bin 6.10_GE_1-4

Git Clone URL: https://aur.archlinux.org/proton-ge-custom-bin.git (read-only, click to copy)
Package Base: proton-ge-custom-bin
Description: A fancy custom distribution of Valves Proton with various patches
Upstream URL: https://github.com/GloriousEggroll/proton-ge-custom
Keywords: d9vk DXVK Faudio GloriousEggroll MediaFoundation Proton protonfixes Steam System-wide Valve vkd3d Wine
Licenses: custom, BSD, MPL, LGPL, MIT, zlib
Conflicts: proton-ge-custom-stable-bin
Provides: proton
Submitter: miss_barfin
Maintainer: miss_barfin (Jaja, floriplum)
Last Packager: miss_barfin
Votes: 60
Popularity: 6.30
First Submitted: 2020-02-21 11:06
Last Updated: 2021-06-11 23:29

Dependencies (15)

Required by (1)

Sources (2)

Pinned Comments

floriplum commented on 2021-05-12 03:22

It is also worth noting that you should check if you game save is cloud synced, so it might be a good idea to backup the prefix before deleting them.
GE also made a Video for people that don't know how to delete the prefix.
The Video is linked on the release page: https://github.com/GloriousEggroll/proton-ge-custom/releases/tag/6.8-GE-1
Link to the Video: https://www.youtube.com/watch?v=uxWJ1xvowMk

miss_barfin commented on 2021-05-12 01:06

Due to large changes in wine 6.5+, you will need to remove old/current prefixes for any games launched with this version. Old prefixes will not work.

Latest Comments

1 2 3 4 5 6 ... Next › Last »

Plexcon commented on 2021-06-11 21:19

==> Validando los archivos source con sha512sums... proton-ge-custom-6.10-GE-1_3.tar.gz ... HA FALLADO supplementary.tar.zst ... Aprobado ==> ERROR: ¡Uno o más archivos no superaron el control de validación!

demilich commented on 2021-06-11 14:01

==> Validating source files with sha512sums...
    proton-ge-custom-6.10-GE-1_3.tar.gz ... FAILED
    supplementary.tar.zst ... Passed
==> ERROR: One or more files did not pass the validity check!

somebody commented on 2021-06-10 07:56

looks like there's a new hotfix

swrdghcnqstdr commented on 2021-06-09 19:21

==> Validating source files with sha512sums...
    proton-ge-custom-6.10-GE-1_1.tar.gz ... FAILED
    supplementary.tar.zst ... Passed

somebody commented on 2021-06-09 01:33

never mind, just chaotic being chaotic...

somebody commented on 2021-06-08 00:53

seems like it's not being detected as a new version? i'm guessing because 10_GE_1 doesn't count as a number, and therefore isn't sorted as a number either that or paru is being weird. it didn't say it was downgrading thought so...

coduxer commented on 2021-06-07 20:46

you don't have to apply the patch
you can fix the launcher /usr/bin/proton
here is a fixed launcher:

#!/bin/sh

## configuration
# proton executable
_proton=/usr/share/steam/compatibilitytools.d/proton-ge-custom/proton
# default prefix dir if STEAM_COMPAT_DATA_PATH not set
_pfx=${XDG_DATA_HOME:-~/.local/share}/proton-pfx
# default appid if STEAM_COMPAT_DATA_PATH or SteamAppId not set nor given as an argument
_appid=0
# default mode of execution if not given as an argument
_mode=waitforexitandrun

## functions
proton() {
(echo "import sys; __file__ = sys.argv[0] = \"$_proton\""
   sed s/', "steam"'//g "$_proton" < "$_proton") | PYTHONPATH="$(dirname "$_proton")" python3 - "$@"
}

set_env(){
# No data path to prefix? Let's set the default path. We want to include the AppId in the path like steam.
if [ -z ${STEAM_COMPAT_DATA_PATH+x} ]; then
  export STEAM_COMPAT_DATA_PATH=${_pfx}/${SteamAppId:-${_appid}}
  echo "ProtonLauncher[$$] INFO: empty STEAM_COMPAT_DATA_PATH set to ${STEAM_COMPAT_DATA_PATH}"
elif ! [ ${SteamGameId} -ge 0 ] 2>/dev/null && ! [ ${SteamAppId} -ge 0 ] 2>/dev/null && ! [ $(basename ${STEAM_COMPAT_DATA_PATH}) -ge 0 ] 2>/dev/null; then
  export SteamAppId=${_appid}
  echo "ProtonLauncher[$$] INFO: empty SteamAppId set to ${SteamAppId}"
fi
# If the prefix path does not exist yet, we will create it.
if ! [ -d ${STEAM_COMPAT_DATA_PATH} ]; then
  install -d ${STEAM_COMPAT_DATA_PATH} || exit 1
  echo "ProtonLauncher[$$] INFO: directory ${STEAM_COMPAT_DATA_PATH} created"
fi
# argument -e was provided, so summerize the relevant env we set so far.
if [ ${_printenv} == "true" ] 2>/dev/null; then print_env; fi
}

print_usage(){
cat <<EOF

USAGE:  proton executable.exe
        proton [mode]  executable.exe
        proton [appid] executable.exe
        proton [--environment|-e] [--help|-h]

EOF
}

print_help(){
print_usage
cat <<EOF
ENV:    STEAM_COMPAT_DATA_PATH
        SteamAppId
        SteamGameId

Just call this proton launcher script with your app as the only argument
to run it with the default prefix
$_pfx/$_appid and default mode "$_mode".

_mode_
You can change the mode of operation by specifying it as the first argument.
Possible values are: waitforexitandrun, run, getcompatpath, getnativepath

_appid_
Protonfixes uses three environment variables to determine the application to
run fixes for. The env STEAM_COMPAT_DATA_PATH points to the wine prefix and
usually includes the AppId. If the env SteamAppId (or SteamGameId) is set, it
takes precedence as the AppId used.

As proton itself needs the env STEAM_COMPAT_DATA_PATH, the default prefix
$_pfx/$_appid is used when it is not set or empty.
An AppId given by env SteamAppId will alter this path accordingly.

Provide "appid" as an argument instead of "mode" to change the AppId regardless
of the env vars. In this case, the mode defaults to "$_mode".
Useable for "appid": see https://steamdb.info/apps/

Note that the env SteamGameId is not set by this launcher script in any case.
This env is evaluated by steam executables inside the prefix. Set it yourself
as you see fit.

To see the current ENV when this script is called, use "-e" the switch.

EOF
}

print_env(){
cat <<EOF

Current ENVIRONMENT variables:

STEAM_COMPAT_DATA_PATH  ${STEAM_COMPAT_DATA_PATH:-"Empty or not set."}
SteamAppId              ${SteamAppId:-"Empty or not set."}
SteamGameId             ${SteamGameId:-"Empty or not set."}
EOF
}

## main
if [ "$1" == "--help" ] || [ "$1" == "-h" ]; then print_help; exit 0; fi
if [ "$1" == "--environment" ] || [ "$1" == "-e" ]; then _printenv=true; shift; fi

case $# in
  0)
    print_usage
    ;;
  1)
    # just start an application with default appid and mode
    set_env
    echo ${_proton} ${_mode} "$1"
    proton ${_mode} "$1"
    ;;
  *)
    if ! [ "$1" -ge 0 ] 2>/dev/null; then
      # start proton with given arguments, compatible with standard proton invokation
      set_env
      echo ${_proton} "${@}"
      proton "${@}"
    else
      # first arg is a positive signed int, thus the appid
      export SteamAppId="$1"
      #export SteamGameId="$1"
      echo "ProtonLauncher[$$] INFO: forcing SteamAppId to $1"
      set_env
      echo ${_proton} ${_mode} "${@:2}"
      proton ${_mode} "${@:2}"
    fi
    ;;
esac

somebody commented on 2021-06-07 11:32

it'd be nice if we could get that patch with the 6.10 update tho

floriplum commented on 2021-06-06 19:03

I generally have no problem with adding the patch, but im not in the position to decide it myself.

Anyway i created a local branch with the patch added to the pkgbuild if anyone wants to add it locally.

diff --git a/001_ShellExecuteEx.patch b/001_ShellExecuteEx.patch
new file mode 100644
index 0000000..8114969
--- /dev/null
+++ b/001_ShellExecuteEx.patch
@@ -0,0 +1,15 @@
+--- proton/proton      2021-05-30 01:09:04.000000000 +0200
++++ proton_patched/proton      2021-06-06 20:06:49.587290217 +0200
+@@ -1149,10 +1149,10 @@
+         ]
+
+         if any(check_args):
+-            self.run_proc([g_proton.wine64_bin, "start.exe", "/exec", "steam"] + sys.argv[2:] + self.cmdlineappend)
++            self.run_proc([g_proton.wine64_bin, "start.exe", "/exec"] + sys.argv[2:] + self.cmdlineappend)
+             #commandstring = str([g_proton.wine64_bin, "start.exe", "/exec", "steam"] + sys.argv[2:] + self.cmdlineappend)
+         else:
+-            self.run_proc([g_proton.wine64_bin, "start.exe", "/b", "steam"] + sys.argv[2:] + self.cmdlineappend)
++            self.run_proc([g_proton.wine64_bin, "start.exe", "/b"] + sys.argv[2:] + self.cmdlineappend)
+             #commandstring = str([g_proton.wine64_bin, "start.exe", "/b", "steam"] + sys.argv[2:] + self.cmdlineappend)
+
+         #log("Running: " + commandstring)
diff --git a/PKGBUILD b/PKGBUILD
index 316b551..7c31fe2 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -48,9 +48,16 @@ backup=("${_protoncfg}")
 ## sources
 url='https://github.com/GloriousEggroll/proton-ge-custom'
 source=(${_pkgname}-${_pkgver}_${pkgrel}.tar.gz::"${url}/releases/download/${_pkgver}/${_srcdir}.tar.gz"
-        "supplementary.tar.zst")
+        "supplementary.tar.zst"
+       "001_ShellExecuteEx.patch")
 sha512sums=('3c91710141a1cd93b1ac004263303721bdeecf7e76414c44fda5ca2a2123195b4eb628e0e90a3ff47744c4fac88d5169d1443e1ef9347b838636b68c44a83225'
-            '9925a9972a9bed9b9e71c2aa169db03eeb72307336c3ed004434397deb379b55eb13b249ca9c0b28f48dd5ea728a1ad32685b84e2dcab881ba428c2acb7bc58d')
+            '9925a9972a9bed9b9e71c2aa169db03eeb72307336c3ed004434397deb379b55eb13b249ca9c0b28f48dd5ea728a1ad32685b84e2dcab881ba428c2acb7bc58d'
+           '647a9fceee693e344063bd70cc2069fb6df9cc7135bd8be7b9e45e1db2c8a1d6f8d69ac22f0f2164b4fc265a0749689b927b0d10d9febca4c41507c3e6a1ca97')
+
+prepare() {
+       ls
+       patch -p1 -i ../001_ShellExecuteEx.patch -d ./Proton-${_pkgver}
+}

 build() {
 ## setup paths

agg3l commented on 2021-06-01 21:20

For those struggling with ShellExecuteEx failed: File not found. case: proton-ge-custom-bin fix to run generic wine app is pretty straightforward. Here is corresponding patch (for 6.9_GE_2-2 package)

--- a/proton    2021-06-01 10:00:00.000000000 +0000
+++ b/proton    2021-06-01 10:00:00.000000000 +0000
@@ -1149,10 +1149,10 @@
         ]

         if any(check_args):
-            self.run_proc([g_proton.wine64_bin, "start.exe", "/exec"] + sys.argv[2:] + self.cmdlineappend)
+            self.run_proc([g_proton.wine64_bin, "start.exe", "/exec", "steam"] + sys.argv[2:] + self.cmdlineappend)
             #commandstring = str([g_proton.wine64_bin, "start.exe", "/exec", "steam"] + sys.argv[2:] + self.cmdlineappend)
         else:
-            self.run_proc([g_proton.wine64_bin, "start.exe", "/b"] + sys.argv[2:] + self.cmdlineappend)
+            self.run_proc([g_proton.wine64_bin, "start.exe", "/b", "steam"] + sys.argv[2:] + self.cmdlineappend)
             #commandstring = str([g_proton.wine64_bin, "start.exe", "/b", "steam"] + sys.argv[2:] + self.cmdlineappend)

         #log("Running: " + commandstring)

Shortly, cause of error is proton-ge attempts to launch any win32/64 executable via steam app proxy. Patch simply bypass such behavior (thus to launch steam app one should run proton [run|waitforexitandrun] steam MySteamApp.exe afterwards).

@miss_barfin To keep this AUR package consistent, either alike patch should be applied or multilib/steam to be added to runtime dependencies.

// file to be patched is /usr/share/steam/compatibilitytools.d/proton-ge-custom/proton for this AUR package