Tested on: CachyOS (Arch-based) · KDE Plasma 6.5 / 6.6 · Wayland · Steam (native pacman package)
Last updated: March 2026
Games confirmed working: World of Warcraft, Diablo IV, Diablo II: Resurrected, StarCraft Remastered, Hearthstone, Overwatch 2, Call of Duty
Running Battle.net through Steam with Proton is the most streamlined approach on CachyOS. It avoids Lutris's sometimes fragile install scripts, gives you automatic Proton updates, and integrates directly into your Steam library with controller support and Steam overlay.
CachyOS also ships proton-cachyos, a patched Proton build with extra optimizations — and it works great for this.
Make sure your system has the CachyOS gaming packages installed. If you haven't already:
# Install gaming meta-package (includes Steam, proton-cachyos, and dependencies)
sudo pacman -S cachyos-gaming-meta
# Or if you just need Steam + Proton:
sudo pacman -S steam proton-cachyosVerify Vulkan is working (required for Proton/DXVK):
vulkaninfo --summaryYou should see your GPU listed (e.g. AMD Radeon RX 9070 XT via RADV).
Note: CachyOS has migrated away from
steam-native-runtime. If you still have it installed, remove it:sudo pacman -Rsn steam-native-runtime
Open a browser and download the installer from Blizzard's official page:
https://download.battle.net/en-gb/?product=bnetdesk
Save the file. It will be named Battle.net-Setup.exe and land in ~/Downloads/ by default.
- Open Steam.
- In the bottom-left corner, click "Add a Game" → "Add a Non-Steam Game...".
- In the dialog that opens, click "Browse...".
- Important: In the file picker, change the filter from "Applications" to "All Files" (bottom-right dropdown) so
.exefiles are visible. - Navigate to
~/Downloads/and selectBattle.net-Setup.exe. - Click "Open", then "Add Selected Programs".
The installer now appears in your Steam Library as Battle.net-Setup.exe.
- In your Steam Library, find
Battle.net-Setup.exe. - Right-click → Properties....
- Go to the Compatibility tab on the left.
- Check "Force the use of a specific Steam Play compatibility tool".
- Select one of the following (in order of recommendation):
proton-cachyos— CachyOS's patched build (recommended, included withcachyos-gaming-meta)Proton Experimental— Valve's bleeding-edge buildProton 9.0-4or newer — Valve's stable buildGE-Proton(latest) — Community build with extra patches, install via ProtonUp-Qt if needed
- Close the Properties window.
- Click Play on
Battle.net-Setup.exein Steam. - The Battle.net installer window will appear. Follow the installation steps as on Windows.
- Choose your installation language and proceed.
- When asked for an install location, leave the default (
C:\Program Files (x86)\Battle.net). This maps to a folder inside the Proton prefix automatically. - Let the installation complete. Battle.net will launch and show a login screen.
- Do NOT log in yet. Close Battle.net completely.
The installer creates a Proton prefix (a virtual Windows environment) at:
~/.local/share/Steam/steamapps/compatdata/<PREFIX_ID>/where
<PREFIX_ID>is a long number assigned by Steam. You can identify it by checking the most recently modified folder incompatdata/.
The Steam shortcut still points to the installer .exe, which we no longer need. We need to redirect it to the installed Battle.net Launcher.
-
Find the launcher executable. It will be at:
~/.local/share/Steam/steamapps/compatdata/<PREFIX_ID>/pfx/drive_c/Program Files (x86)/Battle.net/Battle.net Launcher.exeTo find your
<PREFIX_ID>, run:ls -lt ~/.local/share/Steam/steamapps/compatdata/ | head -5
The most recently modified directory is your Battle.net prefix.
-
In Steam, right-click
Battle.net-Setup.exe→ Properties.... -
In the Shortcut tab:
- Target: Replace the path with the full path to the launcher, in quotes:
"/home/YOUR_USER/.local/share/Steam/steamapps/compatdata/<PREFIX_ID>/pfx/drive_c/Program Files (x86)/Battle.net/Battle.net Launcher.exe" - Start In: Set this to the launcher's directory (same path but the folder, without quotes):
/home/YOUR_USER/.local/share/Steam/steamapps/compatdata/<PREFIX_ID>/pfx/drive_c/Program Files (x86)/Battle.net/ - Optionally, rename the shortcut to "Battle.net" for clarity.
- Target: Replace the path with the full path to the launcher, in quotes:
-
Make sure the Compatibility tab still has Proton forced to the same version you used for installation.
- Click Play on your renamed Battle.net shortcut.
- Battle.net should now open. Log in with your Blizzard account.
- Install your games from within Battle.net as usual.
By default, Battle.net will install games inside the Proton prefix. This is risky: if you ever delete the prefix (e.g. to troubleshoot), your game downloads go with it.
Better approach — Use a symlink:
# Create a persistent game directory
mkdir -p ~/Games/Blizzard
# Create a symlink inside the Proton prefix
ln -s ~/Games/Blizzard ~/.local/share/Steam/steamapps/compatdata/<PREFIX_ID>/pfx/drive_c/GamesThen, in Battle.net's settings, change the game install location to C:\Games\. Your games will actually be stored in ~/Games/Blizzard/ on your real filesystem and survive prefix resets.
Once Battle.net is installed and working (Steps 1–7 above), you can create individual Steam shortcuts that launch specific games directly — skipping the Battle.net UI entirely. This gives you per-game entries in your Steam library with proper icons, Steam overlay, and controller support.
Battle.net supports a command-line argument --exec="launch <CODE>" that tells the launcher to immediately start a specific game. By creating multiple non-Steam shortcuts that all point to the same Battle.net launcher (in the same Proton prefix) but with different launch codes, you get a clean per-game experience.
| Game | Code | Notes |
|---|---|---|
| World of Warcraft (Retail) | WoW |
|
| WoW Classic | WoWC |
Which Classic version (Era/MoP/etc.) is toggled inside the Battle.net launcher |
| Diablo IV | Fen |
Also available natively on Steam |
| Diablo III | D3 |
|
| Diablo II: Resurrected | OSI |
|
| Diablo Immortal | ANBS |
|
| Hearthstone | WTCG |
|
| StarCraft II | S2 |
|
| StarCraft Remastered | S1 |
|
| Overwatch 2 | Pro |
Also available natively on Steam |
| Heroes of the Storm | Hero |
|
| Warcraft III: Reforged | W3 |
|
| Warcraft Remastered | RTRO |
|
| Warcraft II: Remastered | W2 |
|
| Call of Duty (HQ/Warzone) | AUKS |
Also available natively on Steam |
| Call of Duty: Black Ops 6 | SPOT |
|
| Crash Bandicoot 4 | WLBY |
Codes sourced from the community Steam Overlay guide. Blizzard may change these with launcher updates.
This example creates a "World of Warcraft" entry in Steam that launches WoW directly. The same process works for any game in the table above.
From the main installation, you already have a working prefix. Find its ID:
ls -lt ~/.local/share/Steam/steamapps/compatdata/ | head -5Note the <PREFIX_ID> (a long number). This is where Battle.net and your games are installed.
- In Steam, click "Add a Game" → "Add a Non-Steam Game..." → Browse...
- Set the file filter to "All Files".
- Navigate to the Battle.net launcher inside the existing prefix:
~/.local/share/Steam/steamapps/compatdata/<PREFIX_ID>/pfx/drive_c/Program Files (x86)/Battle.net/Battle.net Launcher.exe - Select it and click "Add Selected Programs".
- In your Steam Library, find the new
Battle.net Launcher.exeentry. - Right-click → Properties...
- In the Shortcut tab:
- Rename the shortcut to
World of Warcraft(or whatever game you want). - In the Launch Options field (at the bottom of the Shortcut tab), add:
Replace--exec="launch WoW"WoWwith the code from the table above for other games.
- Rename the shortcut to
- In the Compatibility tab, force the same Proton version you used for the main Battle.net install.
When you added the new non-Steam game, Steam assigned it a new prefix ID. But Battle.net isn't installed there — it's in the original prefix. We need to fix this with a symlink.
# Find the NEW prefix ID (it will be the most recently created folder)
ls -lt ~/.local/share/Steam/steamapps/compatdata/ | head -5
# Note the new prefix ID (let's call it NEW_PREFIX_ID)
# Delete the empty new prefix and symlink it to the original
rm -rf ~/.local/share/Steam/steamapps/compatdata/<NEW_PREFIX_ID>
ln -s ~/.local/share/Steam/steamapps/compatdata/<PREFIX_ID> \
~/.local/share/Steam/steamapps/compatdata/<NEW_PREFIX_ID>This makes Steam think the new shortcut has its own prefix, but it actually shares the original Battle.net installation.
Click Play on your "World of Warcraft" shortcut. Battle.net should start, automatically navigate to WoW, and be ready for you to hit Play. After your initial login, Battle.net will remember your credentials (if configured per the troubleshooting tips).
You can customize how the shortcut looks in your Steam library:
- Icon: Right-click → Properties → click the icon square → select a
.pngor.jpgfile (256×256 recommended). You can grab game icons from SteamGridDB. - Artwork: Right-click the game in your library grid → Manage → Set custom artwork.
Steam stores the icon reference as steam_icon_<APPID> in ~/.local/share/icons/hicolor/. You can find the app ID from the .desktop file:
grep -l "World of Warcraft" ~/.local/share/applications/steam_app_*.desktopTo add more games (e.g. Diablo IV, StarCraft II), repeat steps 2–6 with the appropriate launch code. Each new shortcut needs its own prefix symlink pointing back to the original.
Tip: For WoW Classic, the
WoWCcode opens the Classic section, but which version of Classic (Era, MoP, TBC Anniversary, etc.) is determined by what you last selected in the Battle.net launcher's dropdown. There is no separate launch code per Classic version.
For the cleanest experience, configure these in Battle.net's settings (accessible when the launcher is open):
- Settings → General → On Game Launch: Select "Minimize Battle.net to the system tray" and check "Restore Battle.net window when game ends".
- Settings → General → When Clicking X: Select "Exit Battle.net completely".
- Settings → General → Startup: Check "Keep me logged in" and "Remember emails and phone numbers".
This way Battle.net gets out of your way while gaming and stays logged in between sessions.
Steam launch options follow a strict structure. Environment variables and wrapper commands go before %command%, and application arguments (like --exec) go after it:
<ENV_VARS> <WRAPPERS> %command% <APP_ARGS>
Where:
<ENV_VARS>— Proton/system environment variables (PROTON_ENABLE_WAYLAND=1, etc.)<WRAPPERS>— Programs that wrap the game process (mangohud,gamemoderun)%command%— Steam replaces this with the actual Proton + game executable invocation<APP_ARGS>— Arguments passed to the launched executable (--exec="launch WoW")
Convention used in this guide: environment variables always go first, then wrappers, then %command%, then app args.
| Variable | Effect | Caveats |
|---|---|---|
PROTON_USE_NTSYNC=1 |
Use NTSync for threading (smoother frame pacing) | Experimental; verify with lsof /dev/ntsync |
PROTON_ENABLE_WAYLAND=1 |
Native Wayland (skip XWayland) | Breaks Steam Overlay; experimental |
PROTON_ENABLE_HDR=1 |
Enable HDR output | Requires PROTON_ENABLE_WAYLAND=1 or Gamescope with --hdr-enabled |
PROTON_NO_WM_DECORATION=1 |
Disable window decorations | Fixes borderless fullscreen / mouse click-through issues |
ENABLE_HDR_WSI=1 |
HDR WSI layer (NVIDIA only) | Not needed on AMD; requires vk-hdr-layer-kwin6-git on NVIDIA |
| Wrapper | What it does | Install |
|---|---|---|
mangohud |
On-screen FPS/GPU/CPU overlay | sudo pacman -S mangohud |
gamemoderun |
Feral Gamemode (CPU governor, scheduler optimizations) | sudo pacman -S gamemode lib32-gamemode |
For the main Battle.net shortcut (no --exec):
# Basic — just NTSync
PROTON_USE_NTSYNC=1 %command%
# With MangoHud overlay
PROTON_USE_NTSYNC=1 mangohud %command%
# Native Wayland + HDR (no Steam Overlay)
PROTON_ENABLE_WAYLAND=1 PROTON_ENABLE_HDR=1 %command%For per-game shortcuts from the Bonus section, append --exec after %command%:
# WoW Retail — NTSync + MangoHud + Gamemode
PROTON_USE_NTSYNC=1 mangohud gamemoderun %command% --exec="launch WoW"
# WoW Classic — NTSync + MangoHud
PROTON_USE_NTSYNC=1 mangohud %command% --exec="launch WoWC"
# Diablo IV — Native Wayland + HDR + NTSync (no Steam Overlay)
PROTON_ENABLE_WAYLAND=1 PROTON_ENABLE_HDR=1 PROTON_USE_NTSYNC=1 %command% --exec="launch Fen"
# StarCraft Remastered — minimal, just Gamemode
gamemoderun %command% --exec="launch S1"
# Hearthstone — lightweight, no extras needed
%command% --exec="launch WTCG"| Game | Recommended Launch Options |
|---|---|
| WoW (Retail) | PROTON_USE_NTSYNC=1 mangohud gamemoderun %command% --exec="launch WoW" |
| WoW Classic | PROTON_USE_NTSYNC=1 mangohud gamemoderun %command% --exec="launch WoWC" |
| Diablo IV | PROTON_USE_NTSYNC=1 mangohud gamemoderun %command% --exec="launch Fen" |
| Diablo II: Resurrected | PROTON_USE_NTSYNC=1 gamemoderun %command% --exec="launch OSI" |
| StarCraft II | PROTON_USE_NTSYNC=1 gamemoderun %command% --exec="launch S2" |
| Hearthstone | %command% --exec="launch WTCG" |
| Overwatch 2 | PROTON_USE_NTSYNC=1 mangohud gamemoderun %command% --exec="launch Pro" |
HDR users: Add
PROTON_ENABLE_WAYLAND=1 PROTON_ENABLE_HDR=1at the beginning of any line above. Keep in mind this disables Steam Overlay. On AMD (like the RX 9070 XT), no additional packages are needed — just make sure KDE Plasma's HDR setting is enabled in Display Settings.
- Try switching to a different Proton version (e.g. from
proton-cachyostoProton Experimental, or install GE-Proton via ProtonUp-Qt). - Delete the prefix and start over:
Then re-run the installer from Step 4.
rm -rf ~/.local/share/Steam/steamapps/compatdata/<PREFIX_ID>/
Clear the agent cache inside the prefix:
PFXDIR=~/.local/share/Steam/steamapps/compatdata/<PREFIX_ID>/pfx/drive_c/ProgramData
rm -rf "$PFXDIR/Battle.net"
rm -rf "$PFXDIR/Blizzard Entertainment"Then relaunch Battle.net.
This is a known Wine/KDE Plasma issue. Wine uses the legacy XEmbed tray protocol, while KDE Plasma uses StatusNotifierItem (SNI). The xembed-sni-proxy bridge (shipped with plasma-workspace) doesn't always capture Wine tray icons.
Workarounds:
- In Battle.net Settings → General, set "When I close Battle.net" to fully exit instead of minimizing to tray.
- Add a KWin window rule to hide the floating window:
- System Settings → Window Management → Window Rules
- Window class (substring):
wine - Window title (substring):
Wine System Tray - Apply: Skip Taskbar → Force → Yes, Keep Below → Force → Yes
This is why Step 7 matters. If you stored games inside the prefix and deleted it, they're gone. Always use the symlink approach to keep game files outside the prefix.
Restart Steam after installing the package:
sudo pacman -S proton-cachyos
# Then fully restart SteamSome Blizzard/Activision games are now available directly on Steam with native Proton support, no Battle.net launcher required:
- Overwatch 2 (Free to play)
- Diablo IV
- Call of Duty (Modern Warfare, Warzone, Black Ops 6)
- Crash Bandicoot 4
For these, just install them through Steam normally — no need for this guide.
- GamingOnLinux — How to install Battle.net on Linux
- Steam Community Guide — Run Games from Battlenet Launcher with Steam Overlay (source for game launch codes)
- CachyOS Gaming Wiki
- ProtonDB
- CachyOS Proton-CachyOS GitHub
Keywords: CachyOS, Battle.net, Blizzard, Linux, Arch Linux, Steam, Proton, Wine, KDE Plasma 6, Wayland, World of Warcraft, WoW, WoW Classic, Diablo, Diablo IV, StarCraft, Hearthstone, Overwatch, gaming on Linux, proton-cachyos, install guide, direct launch, per-game shortcut, Steam overlay, launch codes, --exec