Skip to content

Commit

Permalink
add shim file so we can set customizations inside the container befor…
Browse files Browse the repository at this point in the history
…e running proton
  • Loading branch information
GloriousEggroll committed Oct 22, 2024
1 parent 0aea3e7 commit 5ea4c99
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 0 deletions.
2 changes: 2 additions & 0 deletions umu/umu_run.py
Original file line number Diff line number Diff line change
Expand Up @@ -335,6 +335,7 @@ def build_command(
opts: list[str] = [],
) -> tuple[Path | str, ...]:
"""Build the command to be executed."""
shim: Path = local.joinpath("umu-shim")
proton: Path = Path(env["PROTONPATH"], "proton")
entry_point: Path = local.joinpath("umu")

Expand Down Expand Up @@ -373,6 +374,7 @@ def build_command(
"--verb",
env["PROTON_VERB"],
"--",
shim,
proton,
env["PROTON_VERB"],
env["EXE"],
Expand Down
38 changes: 38 additions & 0 deletions umu/umu_runtime.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,34 @@
has_data_filter: bool = False


def create_shim(file_path=None):
# Set the default path if none is provided
if file_path is None:
file_path = UMU_LOCAL.joinpath("umu-shim")
# Define the content of the shell script
script_content = """#!/bin/sh
if [ "${XDG_CURRENT_DESKTOP}" = "gamescope" ] || [ "${XDG_SESSION_DESKTOP}" = "gamescope" ]; then
# Check if STEAM_MULTIPLE_XWAYLANDS is set to 1
if [ "${STEAM_MULTIPLE_XWAYLANDS}" = "1" ]; then
# Check if DISPLAY is set, if not, set it to ":1"
if [ -z "${DISPLAY}" ]; then
export DISPLAY=":1"
fi
fi
fi
# Execute the passed command
"$@"
"""

# Write the script content to the specified file path
with open(file_path, 'w') as file:
file.write(script_content)

# Make the script executable
os.chmod(file_path, 0o755)

def _install_umu(
json: dict[str, Any],
thread_pool: ThreadPoolExecutor,
Expand Down Expand Up @@ -177,6 +205,7 @@ def _install_umu(
# Rename _v2-entry-point
log.debug("Renaming: _v2-entry-point -> umu")
UMU_LOCAL.joinpath("_v2-entry-point").rename(UMU_LOCAL.joinpath("umu"))
create_shim()

# Validate the runtime after moving the files
check_runtime(UMU_LOCAL, json)
Expand Down Expand Up @@ -368,6 +397,9 @@ def _update_umu(
rmtree(str(runtime))
log.debug("Released file lock '%s'", lock.lock_file)

if not UMU_LOCAL.joinpath("umu-shim").exists():
create_shim()

log.console("steamrt is up to date")


Expand Down Expand Up @@ -474,6 +506,9 @@ def check_runtime(src: Path, json: dict[str, Any]) -> int:
return ret
log.console(f"{runtime.name}: mtree is OK")

if not UMU_LOCAL.joinpath("umu-shim").exists():
create_shim()

return ret


Expand All @@ -491,3 +526,6 @@ def _restore_umu(
return
_install_umu(json, thread_pool, client_session)
log.debug("Released file lock '%s'", lock.lock_file)

if not UMU_LOCAL.joinpath("umu-shim").exists():
create_shim()

0 comments on commit 5ea4c99

Please sign in to comment.