If you’ve installed Steam on Ubuntu 24.04 and noticed it works fine when launched from the terminal but shows no window (or a transparent/broken window) when clicking the app icon, you’re not alone. Here’s what’s going on and how to fix it.
Symptoms
- Steam launches normally from the terminal (
steamcommand). - Clicking the Steam icon in the application launcher shows nothing, or a transparent/flickering window.
- The Steam process does appear in
ps auxwhen launched from the icon, it’s running, just not showing its window.
Root cause
The culprit is a single environment variable: DRI_PRIME.
GNOME sets DRI_PRIME when launching apps from the desktop to steer them toward the integrated (low-power) GPU. This is part of GNOME’s power management behaviour.
When Steam is launched from the terminal, this variable is not set, so Steam correctly uses your discrete GPU. When launched via the icon, GNOME injects DRI_PRIME=pci-0000_XX_00_0 pointing at the integrated GPU, and Steam fails to render its window properly on it.
You can confirm this is the issue by comparing the two environments:
# In your terminal, capture the CLI environment
env | sort > /tmp/cli-env.txt
# Then modify your .desktop file temporarily to capture the icon environment
# Add to the Exec line: bash -c 'env | sort > /tmp/desktop-env.txt && /usr/bin/steam %U'
# Click the icon, then:
diff /tmp/cli-env.txt /tmp/desktop-env.txt
In the diff output, look for:
> DRI_PRIME=pci-0000_XX_00_0
XX would be a number in that output. That line only appears in the desktop launcher environment, that’s your smoking gun.
The fix
Override the .desktop file to unset DRI_PRIME before launching Steam:
# Copy the system .desktop file to your local overrides
cp /usr/share/applications/steam.desktop ~/.local/share/applications/steam.desktop
# Unset DRI_PRIME for all Exec lines
sed -i 's|Exec=/usr/bin/steam|Exec=env -u DRI_PRIME /usr/bin/steam|g' \
~/.local/share/applications/steam.desktop
The env -u DRI_PRIME prefix strips the variable before Steam starts, so it behaves exactly as if you launched it from the terminal.
No logout required, the change takes effect the next time you click the icon.
Why not just set DRI_PRIME to the discrete GPU?
You could do Exec=env DRI_PRIME=pci-0000_XX_00_0 /usr/bin/steam, but unsetting the variable is cleaner. It lets Steam (and its runtime) decide which GPU to use based on its own logic, rather than hardcoding a PCI address that could theoretically change.
System details
This was tested on:
- OS: Ubuntu 24.04 LTS
- Desktop: GNOME on Xorg
- GPU: AMD Radeon RX 7800 XT (discrete) + AMD Raphael (integrated)
- Steam version: 1773426488
- Driver: Mesa / radeonsi, LLVM 20.1.2, kernel 6.17
The issue likely affects any dual-GPU system (AMD+AMD, AMD+Intel, Nvidia+Intel) where GNOME’s GPU offloading kicks in for desktop-launched apps. Happy to hear if this solution worked for you.



Leave a Reply