From c63325085148b235ae5df814de73f652a11dc8c5 Mon Sep 17 00:00:00 2001 From: Mario JCR Date: Wed, 29 Apr 2026 20:36:18 +0200 Subject: [PATCH] fix(proton): use xvfb-run instead of non-existent /etc/init.d/xvfb The xvfb package on debian-slim does not ship a SysV init script, so '/etc/init.d/xvfb start' silently fails and DISPLAY is never set. The wine/proton process then waits forever for a display. xvfb-run --auto-servernum starts a temporary Xvfb on a free display, exports DISPLAY, runs the wrapped command and tears Xvfb down on exit. This is the documented way to use xvfb headlessly and works without any extra config. --- proton/rootfs/entrypoint.sh | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/proton/rootfs/entrypoint.sh b/proton/rootfs/entrypoint.sh index 617d5d4..b725ca1 100644 --- a/proton/rootfs/entrypoint.sh +++ b/proton/rootfs/entrypoint.sh @@ -30,14 +30,19 @@ mkdir -p "${STEAM_COMPAT_DATA_PATH}" if [ "${BACKGROUND_PROCESS}" = "true" ]; then if [ "${XVFB_NEEDED}" = "true" ]; then - /etc/init.d/xvfb start + xvfb-run --auto-servernum /steamcmd/compatibilitytools.d/GE-Proton"${PROTON_VERSION}"/proton run "${EXE_PATH}" & + else + /steamcmd/compatibilitytools.d/GE-Proton"${PROTON_VERSION}"/proton run "${EXE_PATH}" & fi - /steamcmd/compatibilitytools.d/GE-Proton"${PROTON_VERSION}"/proton run "${EXE_PATH}" & if [ -n "${READ_LOGS_FILE}" ] && [ -f "${READ_LOGS_FILE}" ]; then exec tail -f "${READ_LOGS_FILE}" else tail -f /dev/null fi else - /steamcmd/compatibilitytools.d/GE-Proton"${PROTON_VERSION}"/proton run "${EXE_PATH}" + if [ "${XVFB_NEEDED}" = "true" ]; then + exec xvfb-run --auto-servernum /steamcmd/compatibilitytools.d/GE-Proton"${PROTON_VERSION}"/proton run "${EXE_PATH}" + else + exec /steamcmd/compatibilitytools.d/GE-Proton"${PROTON_VERSION}"/proton run "${EXE_PATH}" + fi fi