protonscr

Darktide ceases to show window from 10.x onward

protonclosed
ValveSoftware/Proton#10302 · opened 2026-10-24 by yogo1212 · updated 2026-10-24 · 1 comments · github
Yyogo1212 2026-10-24 github

Compatibility Report

  • Name of the game with compatibility issues: Warhammer 40,000: Darktide
  • Steam AppID of the game: 1361210

System Information

I confirm:

  • [x] that I haven't found an existing compatibility report for this game.
  • [x] that I have checked whether there are updates for my system available.

how about PROTON_LOG=1 WINEDEBUG=+winex11,+win instead?

the whole thing

annotated excerpt

annotated by LLM

### [A] Launcher.exe (pid 0138, started by Steam) - ShowWindow(SW_SHOW) NOT overridden, window paints:
0138:trace:win:show_window hwnd=0x300b6, cmd=5, was_visible 0
0138:trace:win:GetWindowRect hwnd 00000000000300B6 (260,70)-(1660,1010)
0138:trace:win:NtUserGetDCEx hwnd 0x300b6, clip_rgn 0x7040070, flags 00010080
0138:trace:win:NtUserGetDCEx found valid 0x201005d hwnd 0x300b6, flags 0000001a
0138:trace:win:NtUserGetDCEx (0x300b6,0x7040070,0x10098): returning 0x201005d (updated)
0138:trace:win:NtUserBeginPaint hdc = 0x201005d box = ((0,0)-(0,0)), fErase = 0
0138:trace:win:release_dc 0x300b6 0x201005d
0138:trace:win:NtUserSetWindowPos hwnd 0x300b6, after (nil), 0,0 (0x0), flags 00000043
0138:trace:win:dump_winpos_flags flags: SWP_NOSIZE SWP_NOMOVE SWP_SHOWWINDOW

### [B] Darktide.exe (pid 02ec) - main window created WITHOUT WS_VISIBLE (style 0x00cf0000):
02ec:trace:win:WIN_CreateWindowEx L"Warhammer 40,000: Darktide" L"main_window"->L"main_window" ex=00000000 style=00cf0000 479,-9 963x1072 parent=0000000000000000 menu=0000000000000000 inst=0000000140000000 params=0000000000000000
02ec:trace:win:dump_window_styles style: WS_CAPTION WS_SYSMENU WS_THICKFRAME WS_MINIMIZEBOX WS_MAXIMIZEBOX
02ec:trace:win:dump_window_styles exstyle:
02ec:trace:win:NtUserCreateWindowEx ex_style 0, class_name L"main_window", version <null>, window_name L"Warhammer 40,000: Darktide", style 0xcf0000, x 479, y 4294967287, cx 963, cy 1072, parent (nil), menu (nil), class_instance 0x140000000, params (nil), flags 0, instance 0x140000000, class L"main_window", ansi 0
02ec:trace:win:get_min_max_info 1928 1088 / -4 -4 / 1932 1092 / 119 34
02ec:trace:win:get_default_window_surface hwnd 0x500de, surface_rect (0,0)-(1024,1152), surface 0x1000ff6f0
02ec:trace:win:invalidate_dce 0x500de parent 0x10020, old_rect (0,0)-(0,0)
02ec:trace:win:apply_window_pos win 0x500de surface (nil) -> 0x7f2278fd8600
02ec:trace:win:NtUserCreateWindowEx hwnd 0x500de cs 479,-9 963x1072 { window (479,-9)-(1442,1063), client (479,-9)-(1442,1063), visible (479,-9)-(1442,1063) }
02ec:trace:win:set_window_text L"Warhammer 40,000: Darktide"

### [C] Darktide.exe - the game's only ShowWindow(SW_SHOW) gets replaced by cmd 0 (SW_HIDE) from startup info:
02ec:trace:win:set_active_window hwnd 0x500de, previous 0x500de, mouse 0, focus 0, new_active_thread_id 0000
02ec:trace:win:show_window hwnd=0x500de, cmd=5, was_visible 0
02ec:trace:win:show_window hwnd=0x500de, using cmd 0 from startup info.
02ec:trace:win:NtUserRedrawWindow 0x500de whole window flags: RDW_ALLCHILDREN RDW_UPDATENOW

It appears the launcher creates a hidden window and sets up STARTUPINFO.wShowWindow = SW_HIDE (0), the game attaches to that window, and then wine does something weird when the game calls ShowWindow(SW_SHOW).

Symptoms

With recent versions of Proton (>9.0-4), the game's window is created but it's invisible.

Launcher shows, "Play" button works. After a short while, the intro audio plays but no game window ever appears. Game process runs normally (~30% CPU, rendering + audio fine).

Interestingly, the window can still be mapped manually (XMapWindow) and played normally.

mapping the window manually
python3 - <<'EOF'
import ctypes, time
lib = ctypes.CDLL("libX11.so.6")
c_ulong_p = ctypes.POINTER(ctypes.c_ulong)
lib.XOpenDisplay.restype  = ctypes.c_void_p
lib.XOpenDisplay.argtypes = [ctypes.c_char_p]
lib.XDefaultRootWindow.restype  = ctypes.c_ulong
lib.XDefaultRootWindow.argtypes = [ctypes.c_void_p]
lib.XQueryTree.argtypes  = [ctypes.c_void_p, ctypes.c_ulong] + [ctypes.POINTER(ctypes.c_ulong)]*2 + [ctypes.POINTER(c_ulong_p), ctypes.POINTER(ctypes.c_uint)]
lib.XFetchName.argtypes  = [ctypes.c_void_p, ctypes.c_ulong, ctypes.POINTER(ctypes.c_char_p)]
lib.XFree.argtypes       = [ctypes.c_void_p]
lib.XMapWindow.argtypes  = [ctypes.c_void_p, ctypes.c_ulong]
lib.XFlush.argtypes      = [ctypes.c_void_p]
lib.XSync.argtypes       = [ctypes.c_void_p, ctypes.c_bool]

d = lib.XOpenDisplay(None)
root = lib.XDefaultRootWindow(ctypes.c_void_p(d))

def name(w):
    p = ctypes.c_char_p()
    lib.XFetchName(ctypes.c_void_p(d), w, ctypes.byref(p))
    r = p.value.decode(errors="replace") if p.value else ""
    if p.value: lib.XFree(ctypes.cast(p, ctypes.c_void_p))
    return r

r, par, n, kids = ctypes.c_ulong(), ctypes.c_ulong(), ctypes.c_uint(), c_ulong_p()
lib.XQueryTree(ctypes.c_void_p(d), root, ctypes.byref(r), ctypes.byref(par), ctypes.byref(kids), ctypes.byref(n))
target = None
for i in range(n.value):
    if "Darktide" in name(kids[i]):
        target = kids[i]
        break
if target is None:
    raise SystemExit("No Darktide toplevel window found — is the game running?")
print(f"mapping 0x{target:08x} ...")
lib.XMapWindow(ctypes.c_void_p(d), target)
lib.XFlush(ctypes.c_void_p(d))
lib.XSync(ctypes.c_void_p(d), False)
time.sleep(1.0)
print("done — check your screen")
EOF

Please pardon my french, that script was generated using an LLM.

I tried disabling xalia/PROTON_ENABLE_WAYLAND=1 to no noticeable difference in effect.

With Proton version 10.0-4, there's a differen issuet: the window is created but the alpha value appears to be 0 for all pixels. The cursor changes when hovering over the window and it catches all input but it's effectively invisible.

Reproduction

Start the game, click "play" in the launcher.

Kkisak-valve maintainer 2026-10-24 github

Hello @yogo1212, we're using one issue report per unofficially supported game title, so I've gone ahead and transferred this issue report to https://github.com/ValveSoftware/Proton/issues/6573#issuecomment-6388059588.