W celu odizolowania środowiska uruchomieniowego gier i aplikacji windowsowych z nimi związanych oraz bałaganu z nim związanego (jak chociażby biblioteki 32 bitowe) korzystam z rozwiązania chroot opartego o przestrzenie nazw opisanego w bwrap wewnątrz chroot, czyli Steam w chroot.
Niekiedy jednak przydatna jest możliwość wywołania akcji na głównym systemie z programu działającego w takiem środowisku (np. uruchomienia gry bezpośrednio z Playnite, która ma działać w innym prefizie wine). Można to uzyskać z wykorzystaniem D-Bus, a dokładniej jego portalu OpenURI (to pozwala także na bezproblemowe wychodzenie z wine / proton / umu).
W tym celu:
- wszystkim programom uruchamianym w tym chroot przekazywany jest niestandardowy adres dbus (porównaj
DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/$UID/games_chroot_dbus.sock"w games_chroot.sh - z wykorzystaniem systemd na poziomie użytkownika uruchamiany są:
- dedykowany serwer dbus obsługujący ten adres – custom-dbus.service w
~/.config/systemd/user/ - dedykowany portal – custom-portal.service w
~/.config/systemd/user/
- dedykowany serwer dbus obsługujący ten adres – custom-dbus.service w
- skrypt
~/.bin/custom-portal.py(odpalany przezcustom-portal.service) zajmujący się obsługą żądań OpenURI pochodzących z chroot, także tych pochodzących z wine.
Skrypt custom-portal.py podejmuje niestandardowe działania gdy host w otwieranym URL jest RUN_GAME (uruchomienie skryptu odpalającego grę) lub OPEN_DIR (otwarcie katalogu w dolpin).
Lepszym rozwiązaniem byłoby użycie niestandardowych prefixów protokołów, ale miało to problemy z działaniem w Playnite pod umu).
Pozostałe adresy URL http i https otwierane są z użyciem prywatnego okna Firefoxa.