# Niri/xwayland-satellite: Black steam window fix

**URL:** https://discourse.nixos.org/t/niri-xwayland-satellite-black-steam-window-fix/77107
**Category:** Guides
**Created:** [April 18, 2026, 5:49pm UTC](https://discourse.nixos.org/t/niri-xwayland-satellite-black-steam-window-fix/77107 "2026-04-18T17:49:32Z")
**Posts on this page:** 2
**Page:** 1

<div class="post-metadata">

### Author: ![Luh-code](https://discourse.nixos.org/user_avatar/discourse.nixos.org/luh-code/32/37085_2.png) [@Luh-code](https://discourse.nixos.org/u/Luh-code)
#### Post date: [April 18, 2026, 5:49pm UTC](https://discourse.nixos.org/t/niri-xwayland-satellite-black-steam-window-fix/77107/1 "2026-04-18T17:49:32Z")

</div>

# The Issue

I had this issue with niri, where the main steam window would just be a black rectangle but the popup at the beginning still worked.

 ![black steam window](https://discourse.nixos.org/uploads/default/original/3X/d/e/deb60994f79d3dd21d7f2d8ea7cd6664e8bbcdfa.png)  
I tracked the error down to a lot of `BadWindow` errors being returned by the X server:  
`X Error of failed request: BadWindow (invalid Window parameter)`

# The Fix

One solution is disabling hardware acceleration using `-cef-disable-gpu`, but that’s suboptimal.  
The best solution I was able to find is disabling gpu composition using `-cef-disable-gpu-compositing`.  
Like that you can keep hardware acceleration.

## Nix Overlay

Here is the overlay I wrote that fixes this:

```nix
  # Disable x11 window composition to avoid race condition when using xwayland-satellite
  nixpkgs.overlays = [
    (final: prev: {
      steam = prev.steam.override {
        extraArgs = "-cef-disable-gpu-compositing";
      };
    })   
  ];
  
  # then just enable steam as normal
  programs.steam = {
    enable = true;
    protontricks.enable = true;
  };

```

# The Cause (speculation)

I’m not sure on the exact mechanism, but I think it’s something along these lines:

The Steam GUI works like this:

- The main process spawns the top-level X11 window
- The CEF process then creates a hardware-accelerated child window tied to the main Window

What I assume might be happening is that the CEF process is trying to access the main window before it was fully “instantiated” by `wayland-satellite`. So the X server returns `BadWindow` as the requested window doesn’t exist (yet).

## Why this fixes it

By disabling X11 composition, no child window is created, meaning no race condition happens either.

---

<div class="post-metadata">

### Author: ![Luh-code](https://discourse.nixos.org/user_avatar/discourse.nixos.org/luh-code/32/37085_2.png) [@Luh-code](https://discourse.nixos.org/u/Luh-code)
#### Post date: [September 3, 2026, 11:01am UTC](https://discourse.nixos.org/t/niri-xwayland-satellite-black-steam-window-fix/77107/2 "2026-09-03T11:01:13Z")

</div>

UPDATE: Doesn’t seem to be required anymore
