Как я могу выполнить цель ярлыка PlayOnLinux непосредственно (с корректной винной версией), на самом деле не вызов PlayOnLinux?
Моя проблема, что я должен выполнить ярлык в бездисплейном контейнере докера.
POL требует X присутствовать так, я мог обойти это при помощи:
xvfb-run playonlinux-bash ./path/to/shortcut
Но я не очень доволен этим решением, поскольку оно редко закрывается чисто... получающийся в сообщениях об ошибках..., таким образом, я всегда должен смотреть дважды, если бы все работало или если оно на самом деле отказало.
Для разъяснения принимая у нас есть ярлык POL как это:
#!/usr/bin/env playonlinux-bash
[ "$PLAYONLINUX" = "" ] && exit 0 <- not needed
source "$PLAYONLINUX/lib/sources" <- works without POL
export WINEPREFIX="/home/test/.PlayOnLinux/wineprefix/test" <- works without POL
export WINEDEBUG="" <- works without POL
cd "/home/test/.PlayOnLinux/wineprefix/test/drive_c" <- works without POL
POL_Wine text.exe "$@" <- how do I do this
in a normal bash
without POL, using
the wine version
from POL
Все еще имея необходимость звонить POL_Wine
Мне удалось избавиться от X зависимостей:
После дайвинга в исходный код POL (и понимая, что большая часть из него является просто набором кода удара),
Я придумал следующее:
#!/bin/bash
# provide environment variables normally set by playonlinux-bash
PLAYONLINUX="/usr/share/playonlinux"
POL_USER_ROOT="/home/gamer/.PlayOnLinux"
POL_OS="Linux"
export WINEPREFIX="$POL_USER_ROOT/wineprefix/test"
export WINEDEBUG=""
# load POL functions without having to go through playonlinux-bash
source "$PLAYONLINUX/lib/sources"
# mock error reporting to prevent opening of error-windows
POL_Debug_Error()
{
echo "[POL] $1"
}
POL_Debug_Message()
{
echo "[POL] $1"
}
# finally start the target executable
cd "$WINEPREFIX/drive_c"
POL_Wine test.exe "$@"