Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Select an option

  • Save kriegalex/4a74c19f8aefd7487ef87854306be93e to your computer and use it in GitHub Desktop.

Select an option

Save kriegalex/4a74c19f8aefd7487ef87854306be93e to your computer and use it in GitHub Desktop.
Install Battle.net on CachyOS Linux Using Steam & Proton

Install Battle.net on CachyOS Linux Using Steam & Proton

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

Why This Method?

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.

Prerequisites

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-cachyos

Verify Vulkan is working (required for Proton/DXVK):

vulkaninfo --summary

You 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

Step-by-Step Installation

Step 1 — Download the Battle.net Installer

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.

Step 2 — Add the Installer to Steam as a Non-Steam Game

  1. Open Steam.
  2. In the bottom-left corner, click "Add a Game""Add a Non-Steam Game...".
  3. In the dialog that opens, click "Browse...".
  4. Important: In the file picker, change the filter from "Applications" to "All Files" (bottom-right dropdown) so .exe files are visible.
  5. Navigate to ~/Downloads/ and select Battle.net-Setup.exe.
  6. Click "Open", then "Add Selected Programs".

The installer now appears in your Steam Library as Battle.net-Setup.exe.

Step 3 — Enable Proton Compatibility for the Installer

  1. In your Steam Library, find Battle.net-Setup.exe.
  2. Right-clickProperties....
  3. Go to the Compatibility tab on the left.
  4. Check "Force the use of a specific Steam Play compatibility tool".
  5. Select one of the following (in order of recommendation):
    • proton-cachyos — CachyOS's patched build (recommended, included with cachyos-gaming-meta)
    • Proton Experimental — Valve's bleeding-edge build
    • Proton 9.0-4 or newer — Valve's stable build
    • GE-Proton (latest) — Community build with extra patches, install via ProtonUp-Qt if needed
  6. Close the Properties window.

Step 4 — Run the Installer

  1. Click Play on Battle.net-Setup.exe in Steam.
  2. The Battle.net installer window will appear. Follow the installation steps as on Windows.
  3. Choose your installation language and proceed.
  4. 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.
  5. Let the installation complete. Battle.net will launch and show a login screen.
  6. 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 in compatdata/.

Step 5 — Swap the Steam Shortcut to Point to the Launcher

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.

  1. 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.exe
    

    To find your <PREFIX_ID>, run:

    ls -lt ~/.local/share/Steam/steamapps/compatdata/ | head -5

    The most recently modified directory is your Battle.net prefix.

  2. In Steam, right-click Battle.net-Setup.exeProperties....

  3. 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.
  4. Make sure the Compatibility tab still has Proton forced to the same version you used for installation.

Step 6 — Launch Battle.net and Log In

  1. Click Play on your renamed Battle.net shortcut.
  2. Battle.net should now open. Log in with your Blizzard account.
  3. Install your games from within Battle.net as usual.

Step 7 (Recommended) — Store Games Outside the Proton Prefix

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/Games

Then, 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.

Bonus: Launch Blizzard Games Directly from Steam (Per-Game Shortcuts)

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.

How It Works

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 Shortcut Codes

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.

Step-by-Step: WoW as a Direct-Launch Steam Shortcut

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.

1. Note your existing Battle.net prefix ID

From the main installation, you already have a working prefix. Find its ID:

ls -lt ~/.local/share/Steam/steamapps/compatdata/ | head -5

Note the <PREFIX_ID> (a long number). This is where Battle.net and your games are installed.

2. Add a new non-Steam game pointing to the Battle.net Launcher

  1. In Steam, click "Add a Game""Add a Non-Steam Game..."Browse...
  2. Set the file filter to "All Files".
  3. 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
    
  4. Select it and click "Add Selected Programs".

3. Configure the shortcut

  1. In your Steam Library, find the new Battle.net Launcher.exe entry.
  2. Right-clickProperties...
  3. 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:
      --exec="launch WoW"
      
      Replace WoW with the code from the table above for other games.
  4. In the Compatibility tab, force the same Proton version you used for the main Battle.net install.

4. Redirect the new prefix to the existing one

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.

5. Launch and test

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).

6. (Optional) Set a custom icon and artwork

You can customize how the shortcut looks in your Steam library:

  • Icon: Right-click → Properties → click the icon square → select a .png or .jpg file (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_*.desktop

Repeat for Other Games

To 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 WoWC code 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.

Battle.net Launcher Settings for Per-Game Shortcuts

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.

Optional: CachyOS-Specific Optimizations & Launch Options

Launch Options Anatomy

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.

Available Environment Variables

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

Available Wrappers

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

Examples: Battle.net Launcher Only

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%

Examples: Per-Game Shortcuts (with --exec)

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"

Quick Copy-Paste Reference

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=1 at 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.

Troubleshooting

Battle.net shows a blank/white window or freezes on login

  • Try switching to a different Proton version (e.g. from proton-cachyos to Proton Experimental, or install GE-Proton via ProtonUp-Qt).
  • Delete the prefix and start over:
    rm -rf ~/.local/share/Steam/steamapps/compatdata/<PREFIX_ID>/
    Then re-run the installer from Step 4.

"Battle.net Agent Went to Sleep" error

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.

Tray icon appears as a floating window instead of in the system tray

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

Games install location disappeared after prefix reset

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.

Steam doesn't show proton-cachyos in the compatibility dropdown

Restart Steam after installing the package:

sudo pacman -S proton-cachyos
# Then fully restart Steam

Blizzard Games Also Available Natively on Steam

Some 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.

Credits & References


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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment