Merge pull request #457 from outis1one/claude/steam-non-steam-apps-visibility-p1uqc2
wolf: grant /dev/uinput to the Steam container for Steam Input's virt…
This commit is contained in:
+32
-2
@@ -2384,12 +2384,27 @@ CATALOG = {
|
||||
f'{games}/retroarch:/home/retro/.config/retroarch:rw',
|
||||
f'{games}/esde-custom-systems:/home/retro/ES-DE/custom_systems:rw',
|
||||
f'{games}/esde-settings:/home/retro/ES-DE/settings:rw'],
|
||||
# Steam Input needs /dev/uinput for the SAME reason the esde entry
|
||||
# below needs it for AntiMicroX: it does not hand a game the raw
|
||||
# controller device at all — it grabs the raw device exclusively for
|
||||
# itself and creates its OWN synthetic virtual controller via uinput,
|
||||
# then hands that synthetic device to the game. Confirmed live:
|
||||
# without this, Steam's own controller test screen reads the raw
|
||||
# device fine (it does not need uinput for that) and shows a correct
|
||||
# Gamepad template, but every actual game — Steam title or non-Steam
|
||||
# shortcut alike — sees no controller at all, since Steam Input can
|
||||
# never create the virtual device it is supposed to hand off. Same
|
||||
# devices= grant pattern as esde below: GOW_REQUIRED_DEVICES alone
|
||||
# only gets the base image's entrypoint script to bind-mount the
|
||||
# node; the container also needs Wolf's own create-time device grant
|
||||
# to actually open it.
|
||||
env=['PROTON_LOG=1', 'RUN_SWAY=true',
|
||||
'GOW_REQUIRED_DEVICES=/dev/input/* /dev/dri/* /dev/nvidia*'],
|
||||
'GOW_REQUIRED_DEVICES=/dev/uinput /dev/input/* /dev/dri/* /dev/nvidia*'],
|
||||
cap_add=['SYS_ADMIN', 'SYS_NICE', 'SYS_PTRACE', 'NET_RAW', 'MKNOD', 'NET_ADMIN'],
|
||||
security_opt=['seccomp=unconfined', 'apparmor=unconfined'],
|
||||
ipc_mode='host', ulimits=[{'Name': 'nofile', 'Hard': 10240, 'Soft': 10240}],
|
||||
privileged=False,
|
||||
devices=['/dev/uinput:/dev/uinput'],
|
||||
),
|
||||
'esde': dict(
|
||||
name='WolfES-DE', title='EmulationStation',
|
||||
@@ -4813,13 +4828,28 @@ CATALOG = {
|
||||
f'{games}/retroarch:/home/retro/.config/retroarch:rw',
|
||||
f'{games}/esde-custom-systems:/home/retro/ES-DE/custom_systems:rw',
|
||||
f'{games}/esde-settings:/home/retro/ES-DE/settings:rw'],
|
||||
# Steam Input needs /dev/uinput for the SAME reason the esde entry
|
||||
# below needs it for AntiMicroX: it does not hand a game the raw
|
||||
# controller device at all — it grabs the raw device exclusively for
|
||||
# itself and creates its OWN synthetic virtual controller via uinput,
|
||||
# then hands that synthetic device to the game. Confirmed live:
|
||||
# without this, Steam's own controller test screen reads the raw
|
||||
# device fine (it does not need uinput for that) and shows a correct
|
||||
# Gamepad template, but every actual game — Steam title or non-Steam
|
||||
# shortcut alike — sees no controller at all, since Steam Input can
|
||||
# never create the virtual device it is supposed to hand off. Same
|
||||
# devices= grant pattern as esde below: GOW_REQUIRED_DEVICES alone
|
||||
# only gets the base image's entrypoint script to bind-mount the
|
||||
# node; the container also needs Wolf's own create-time device grant
|
||||
# to actually open it.
|
||||
env=['PROTON_LOG=1', 'RUN_SWAY=true',
|
||||
'GOW_REQUIRED_DEVICES=/dev/input/* /dev/dri/* /dev/nvidia*'],
|
||||
'GOW_REQUIRED_DEVICES=/dev/uinput /dev/input/* /dev/dri/* /dev/nvidia*'],
|
||||
cap_add=['SYS_ADMIN', 'SYS_NICE', 'SYS_PTRACE', 'NET_RAW', 'MKNOD', 'NET_ADMIN'],
|
||||
security_opt=['seccomp=unconfined', 'apparmor=unconfined'],
|
||||
ipc_mode='host',
|
||||
ulimits=[{'Name': 'nofile', 'Hard': 10240, 'Soft': 10240}],
|
||||
privileged=False,
|
||||
devices=['/dev/uinput:/dev/uinput'],
|
||||
),
|
||||
'esde': dict(
|
||||
name='WolfES-DE', title='EmulationStation',
|
||||
|
||||
Reference in New Issue
Block a user