[PR #239] feat(apps): add unigine benchmarks image #249

Open
opened 2026-10-15 12:50:17 +00:00 by bsakaguchi · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/games-on-whales/gow/pull/239
Author: @shawly
Created: 6/8/2025
Status: 🔄 Open

Base: master ← Head: feature/apps/unigine-benchmarks


📝 Commits (2)

  • b313152 feat(apps): add unigine benchmarks image
  • 16c5a71 fix: improve MangoHud configuration handling in startup script

📊 Changes

14 files changed (+318 additions, -2 deletions)

View changed files

📝 .github/workflows/auto-build.yml (+1 -0)
📝 .github/workflows/docker-build-and-publish.yml (+1 -1)
➕ apps/unigine-benchmark/_index.md (+22 -0)
➕ apps/unigine-benchmark/assets/heaven-icon.png (+0 -0)
➕ apps/unigine-benchmark/assets/screenshot.png (+0 -0)
➕ apps/unigine-benchmark/assets/superposition-icon.png (+0 -0)
➕ apps/unigine-benchmark/assets/valley-icon.png (+0 -0)
➕ apps/unigine-benchmark/assets/wolf.config.toml (+86 -0)
➕ apps/unigine-benchmark/build/Dockerfile (+23 -0)
➕ apps/unigine-benchmark/build/scripts/run-benchmark.sh (+42 -0)
➕ apps/unigine-benchmark/build/scripts/startup.sh (+96 -0)
📝 bin/gen-moonlight-image.sh (+4 -1)
📝 images/base-app/build/Dockerfile (+1 -0)
➕ images/base-app/build/scripts/jsoncq.sh (+42 -0)

📄 Description

This image allows benchmarking inside a Wolf setup, which will make overclocking, undervolting gpus or optimizing Wolf settings easier. Since packaging the Unigine Engines inside a Docker image violates their EULA, the image simply downloads them on-demand when starting the runtime. The installation is saved in the userhome so subsequent starts will take less time. The software can be re-installed using the FORCE_REINSTALL=1 env var or by removing the installation inside the $HOME/.unigine folder.

The jsoncq.sh script helps editing the waybar config using jq. This is much better than parsing the file manually and it's less bloating than adding any python packages for jsonc parsing.

I made sure to create an _index.md for Wildlife, but I did not find the template you were using for the icons hosted, can you share the template @ABeltramo here on GitHub?

Test Configs

These configs use my image I already built for testing ghcr.io/shawly/gow/unigine-benchmark:edge, but feel free to build it yourself!


[[apps]]
title = "Unigine Heaven"
icon_png_path = "https://games-on-whales.github.io/wildlife/apps/unigine-benchmark/assets/icon.png"

[apps.runner]
type = "docker"
name = "WolfUnigineHeaven"
image = "ghcr.io/shawly/gow/unigine-benchmark:edge"
env = [
    "UNIGINE_BENCHMARK=heaven",
    "RUN_SWAY=true",
    "GOW_REQUIRED_DEVICES=/dev/input/* /dev/dri/* /dev/nvidia*"
]
devices = []
mounts = []
ports = []
base_create_json = """
{
  "HostConfig": {
    "IpcMode": "host",
    "Privileged": false,
    "CapAdd": ["SYS_ADMIN", "SYS_NICE", "SYS_PTRACE", "NET_RAW", "MKNOD", "NET_ADMIN"],
    "SecurityOpt": ["seccomp=unconfined", "apparmor=unconfined"],
    "DeviceCgroupRules": ["c 13:* rmw", "c 244:* rmw"]
  }
}
\
"""

[[apps]]
title = "Unigine Valley"
icon_png_path = "https://games-on-whales.github.io/wildlife/apps/unigine-benchmark/assets/icon.png"

[apps.runner]
type = "docker"
name = "WolfUnigineValley"
image = "ghcr.io/shawly/gow/unigine-benchmark:edge"
env = [
    "UNIGINE_BENCHMARK=valley",
    "RUN_SWAY=true",
    "GOW_REQUIRED_DEVICES=/dev/input/* /dev/dri/* /dev/nvidia*"
]
devices = []
mounts = []
ports = []
base_create_json = """
{
  "HostConfig": {
    "IpcMode": "host",
    "Privileged": false,
    "CapAdd": ["SYS_ADMIN", "SYS_NICE", "SYS_PTRACE", "NET_RAW", "MKNOD", "NET_ADMIN"],
    "SecurityOpt": ["seccomp=unconfined", "apparmor=unconfined"],
    "DeviceCgroupRules": ["c 13:* rmw", "c 244:* rmw"]
  }
}
\
"""

[[apps]]
title = "Unigine Superposition"
icon_png_path = "https://games-on-whales.github.io/wildlife/apps/unigine-benchmark/assets/icon.png"

[apps.runner]
type = "docker"
name = "WolfUnigineSuperposition"
image = "ghcr.io/shawly/gow/unigine-benchmark:edge"
env = [
    "UNIGINE_BENCHMARK=superposition",
    "RUN_SWAY=true",
    "GOW_REQUIRED_DEVICES=/dev/input/* /dev/dri/* /dev/nvidia*"
]
devices = []
mounts = []
ports = []
base_create_json = """
{
  "HostConfig": {
    "IpcMode": "host",
    "Privileged": false,
    "CapAdd": ["SYS_ADMIN", "SYS_NICE", "SYS_PTRACE", "NET_RAW", "MKNOD", "NET_ADMIN"],
    "SecurityOpt": ["seccomp=unconfined", "apparmor=unconfined"],
    "DeviceCgroupRules": ["c 13:* rmw", "c 244:* rmw"]
  }
}
\
"""

🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/games-on-whales/gow/pull/239 **Author:** [@shawly](https://github.com/shawly) **Created:** 6/8/2025 **Status:** 🔄 Open **Base:** `master` ← **Head:** `feature/apps/unigine-benchmarks` --- ### 📝 Commits (2) - [`b313152`](https://github.com/games-on-whales/gow/commit/b3131528d9a72e1f2d6e7262e0cb8eebcda94f07) feat(apps): add unigine benchmarks image - [`16c5a71`](https://github.com/games-on-whales/gow/commit/16c5a718a66d5d25c6e7743c708cb185a6344de9) fix: improve MangoHud configuration handling in startup script ### 📊 Changes **14 files changed** (+318 additions, -2 deletions) <details> <summary>View changed files</summary> 📝 `.github/workflows/auto-build.yml` (+1 -0) 📝 `.github/workflows/docker-build-and-publish.yml` (+1 -1) ➕ `apps/unigine-benchmark/_index.md` (+22 -0) ➕ `apps/unigine-benchmark/assets/heaven-icon.png` (+0 -0) ➕ `apps/unigine-benchmark/assets/screenshot.png` (+0 -0) ➕ `apps/unigine-benchmark/assets/superposition-icon.png` (+0 -0) ➕ `apps/unigine-benchmark/assets/valley-icon.png` (+0 -0) ➕ `apps/unigine-benchmark/assets/wolf.config.toml` (+86 -0) ➕ `apps/unigine-benchmark/build/Dockerfile` (+23 -0) ➕ `apps/unigine-benchmark/build/scripts/run-benchmark.sh` (+42 -0) ➕ `apps/unigine-benchmark/build/scripts/startup.sh` (+96 -0) 📝 `bin/gen-moonlight-image.sh` (+4 -1) 📝 `images/base-app/build/Dockerfile` (+1 -0) ➕ `images/base-app/build/scripts/jsoncq.sh` (+42 -0) </details> ### 📄 Description This image allows benchmarking inside a Wolf setup, which will make overclocking, undervolting gpus or optimizing Wolf settings easier. Since packaging the Unigine Engines inside a Docker image violates their EULA, the image simply downloads them on-demand when starting the runtime. The installation is saved in the userhome so subsequent starts will take less time. The software can be re-installed using the FORCE_REINSTALL=1 env var or by removing the installation inside the $HOME/.unigine folder. The jsoncq.sh script helps editing the waybar config using jq. This is much better than parsing the file manually and it's less bloating than adding any python packages for jsonc parsing. I made sure to create an _index.md for Wildlife, but I did not find the template you were using for the icons hosted, can you share the template @ABeltramo here on GitHub? ## Test Configs These configs use my image I already built for testing `ghcr.io/shawly/gow/unigine-benchmark:edge`, but feel free to build it yourself! ```toml [[apps]] title = "Unigine Heaven" icon_png_path = "https://games-on-whales.github.io/wildlife/apps/unigine-benchmark/assets/icon.png" [apps.runner] type = "docker" name = "WolfUnigineHeaven" image = "ghcr.io/shawly/gow/unigine-benchmark:edge" env = [ "UNIGINE_BENCHMARK=heaven", "RUN_SWAY=true", "GOW_REQUIRED_DEVICES=/dev/input/* /dev/dri/* /dev/nvidia*" ] devices = [] mounts = [] ports = [] base_create_json = """ { "HostConfig": { "IpcMode": "host", "Privileged": false, "CapAdd": ["SYS_ADMIN", "SYS_NICE", "SYS_PTRACE", "NET_RAW", "MKNOD", "NET_ADMIN"], "SecurityOpt": ["seccomp=unconfined", "apparmor=unconfined"], "DeviceCgroupRules": ["c 13:* rmw", "c 244:* rmw"] } } \ """ [[apps]] title = "Unigine Valley" icon_png_path = "https://games-on-whales.github.io/wildlife/apps/unigine-benchmark/assets/icon.png" [apps.runner] type = "docker" name = "WolfUnigineValley" image = "ghcr.io/shawly/gow/unigine-benchmark:edge" env = [ "UNIGINE_BENCHMARK=valley", "RUN_SWAY=true", "GOW_REQUIRED_DEVICES=/dev/input/* /dev/dri/* /dev/nvidia*" ] devices = [] mounts = [] ports = [] base_create_json = """ { "HostConfig": { "IpcMode": "host", "Privileged": false, "CapAdd": ["SYS_ADMIN", "SYS_NICE", "SYS_PTRACE", "NET_RAW", "MKNOD", "NET_ADMIN"], "SecurityOpt": ["seccomp=unconfined", "apparmor=unconfined"], "DeviceCgroupRules": ["c 13:* rmw", "c 244:* rmw"] } } \ """ [[apps]] title = "Unigine Superposition" icon_png_path = "https://games-on-whales.github.io/wildlife/apps/unigine-benchmark/assets/icon.png" [apps.runner] type = "docker" name = "WolfUnigineSuperposition" image = "ghcr.io/shawly/gow/unigine-benchmark:edge" env = [ "UNIGINE_BENCHMARK=superposition", "RUN_SWAY=true", "GOW_REQUIRED_DEVICES=/dev/input/* /dev/dri/* /dev/nvidia*" ] devices = [] mounts = [] ports = [] base_create_json = """ { "HostConfig": { "IpcMode": "host", "Privileged": false, "CapAdd": ["SYS_ADMIN", "SYS_NICE", "SYS_PTRACE", "NET_RAW", "MKNOD", "NET_ADMIN"], "SecurityOpt": ["seccomp=unconfined", "apparmor=unconfined"], "DeviceCgroupRules": ["c 13:* rmw", "c 244:* rmw"] } } \ """ ``` --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
games-on-whales/gow#249
No description provided.