Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

58 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

wine-gaming

GitHub repo GitHub release License

CI Status Issues Pull Requests Stars Forks

Last Commit Repo Size Code Size Contributors

Stability Maintenance


Wine Proton Multi-Launcher Setup Script

Centralized bash script to manage multiple game launchers (EA Desktop, GOG Galaxy, Epic Games, Ubisoft Connect, Amazon Games, Legacy Games) in a single Wine Proton prefix on Linux.

Features:

  • ✅ Automatic installer detection and downloading with caching
  • ✅ Install/uninstall/launch launchers via single command
  • ✅ Desktop shortcut creation with auto icon extraction from installer .exe
  • ✅ Global wig command — runs from anywhere, survives folder moves
  • ✅ Batch operations (install-all, list status)
  • ✅ Wine prefix management (init, backup, restore, purge)
  • ✅ Z: drive mount control (for disk space reporting fixes)
  • ✅ Comprehensive robustness libraries (Lutris/Heroic compatible)
  • ✅ GPU acceleration optimised (NVIDIA RTX tested)

Quick Start

Prerequisites

# Ubuntu/Debian
sudo apt install wine winetricks wget
# icoutils (wrestool + icotool) is auto-installed by ./setup init
cd /path/to/wine-gaming

First-Time Setup

# 1. Install Proton-GE (one time only)
./setup install-proton

# 2. Initialise Wine prefix with dependencies (also installs icoutils + sets up wig)
./setup init

# 3. Activate the wig global command (or open a new terminal)
source ~/.bashrc

# 4. Install all launchers
./setup install-all

# 5. List installed apps
./setup list

Daily Usage

# Using the global wig command (works from anywhere after init)
wig launch gog-galaxy
wig install ea-desktop
wig list

# Or with the full path as before
./setup launch epic-games

Commands

Wine Prefix Management

./setup purge                       # Delete prefix, start fresh
./setup init                        # Initialise with dependencies
./setup full                        # Complete setup: purge + init + install-all
./setup quick                       # Quick: reinit deps + install remaining apps
./setup backup                      # Backup DLLs and packages
./setup restore                     # Restore from backup
./setup install-proton              # Install Proton-GE

Z: Drive Management (Disk Space Fixes)

./setup unmount-z                   # Hide Z: drive (fixes EA Desktop disk space warnings)
./setup mount-z                     # Restore Z: drive
./setup suppress-z-warnings         # Mute Z: drive error logs
./setup fix-z-drive                 # Permanently remove Z: drive
./setup configure-drives D /path    # Create custom drive letter (e.g., D: → /mnt/DATA-NVME)

App Management

./setup list                        # Show all launchers and install status
./setup list-installers             # Show available installers in ./installers/
./setup install <app-key>           # Install launcher
./setup install <app-key> <path>    # Install with custom installer path
./setup install-all                 # Install all registered launchers
./setup uninstall <app-key>         # Uninstall launcher
./setup launch <app-key>            # Launch installed app
./setup launch-exe /path/Game.exe   # Launch external .exe/.msi in managed prefix
./setup prefix-info                 # Show exact prefix/env values used by this toolset

Desktop Shortcuts

./setup install-shortcut <app-key>  # Create .desktop file (auto-extracts icon from .exe)
./setup remove-shortcut <app-key>   # Remove shortcut

Aliases & Global wig Command

./setup install-aliases             # Create ~/.local/bin/wig + wire aliases into ~/.bashrc
./setup remove-aliases              # Remove wig wrapper and ~/.bashrc entry
./setup show-aliases                # Show current alias targets

After install-aliases (or init), reload the shell (source ~/.bashrc) and use wig from any directory:

wig launch gog-galaxy
wig install ea-desktop
wig list
wig-launch ubisoft-connect          # wig-* aliases are thin wrappers around wig

If the wine-gaming folder is moved, re-run ./setup install-aliases from the new location.

Available Launchers

ea-desktop        → EA Desktop (Origin)
gog-galaxy        → GOG Galaxy
epic-games        → Epic Games Launcher
ubisoft-connect   → Ubisoft Connect
amazon-games      → Amazon Games
legacy-games      → Legacy Games

Common Workflows

Use The Managed ~/.wine-gaming Prefix Outside The Script

# Show exact environment values used by this project
./setup prefix-info

# Reuse the same managed prefix for manual Wine commands
export WINE_DIR="$HOME/.wine-gaming"
export STEAM_COMPAT_DATA_PATH="$WINE_DIR/prefix"
export WINEPREFIX="$WINE_DIR/prefix/pfx"

# Example manual launch (if needed)
wine /absolute/path/to/Game.exe

This prevents fallback to host defaults like ~/.wine or accidental ad-hoc prefixes.

Launch Any External Game EXE (Not In App Registry)

# Runs through this project's managed Proton/Wine runtime
./setup launch-exe /absolute/path/to/Game.exe

# MSI installers are also supported
./setup launch-exe /absolute/path/to/Installer.msi

Fresh Installation

./setup install-proton
./setup full                        # Purge + init + install-all
./setup list

Add New Launcher to Existing Setup

./setup quick                       # Reinit, preserve existing, install missing

Fix Disk Space Issues (EA Desktop, etc)

./setup unmount-z                   # Hide /mnt volumes from Wine
# Run EA Desktop's verification
./setup mount-z                     # Restore Z: drive when done

Download Installers Locally

  1. Download from INSTALLER_LINKS.md to ./installers/
  2. Run: ./setup install <app-key>
  3. Script prefers local installers over downloads

Configuration

Edit App Registry

Edit the APP_REGISTRY array in the setup script to add/modify launchers:

declare -A APP_REGISTRY=(
    [my-launcher]="Display Name|Program Files/Path/app.exe|https://download.url|uninstall-path1|uninstall-path2"
)

Format: [key]="Name|ExePath|DownloadURL|UninstallPath1|UninstallPath2|..."

Change Wine/Proton Version

Edit at top of script:

WINE_DIR="${HOME}/.wine-gaming"          # Wine prefix location
PROTON_DIR="${WINE_DIR}/proton-ge"       # Proton executable
PROTON_VERSION="GE-Proton9-18"           # Version (in install_proton function)

Directories

~/.wine-gaming/
├── prefix/pfx/                    # Wine prefix (Windows filesystem)
├── proton-ge/                     # Proton executable
├── bin/                           # Generated launcher scripts
└── backup/                        # Backup DLLs/packages

~/.cache/wine-installers/          # Downloaded installers (cached)
~/.config/wine-gaming/             # Config dir (location file for wig)
~/.local/bin/wig                   # Global command wrapper
~/.local/share/applications/       # Desktop shortcuts (.desktop files)
~/.local/share/icons/wine-gaming/  # Extracted launcher icons (.png / .ico)

Troubleshooting

Launcher won't install

# Check if Proton is installed
ls ~/.wine-gaming/proton-ge/proton

# Manually download installer to ./installers/
./setup install <app-key> ./installers/Installer.exe

# Check logs
cat ~/.wine-gaming/proton.log | tail -50

Launcher won't launch

# Check if app is installed
./setup list

# Try launching with verbose output
PROTON_LOG=1 PROTON_LOG_DIR=~/.wine-gaming ./setup launch <app-key>

# Check Proton logs
cat ~/.wine-gaming/proton.log | tail -100

Disk space warnings in EA Desktop / GOG Galaxy

# Unmount Z: drive (prevents Wine from seeing /mnt)
./setup unmount-z

# Run EA Desktop's verification/repair
# Then restore Z: when done
./setup mount-z

GOG Galaxy update fails at 0KB

# Issue: Z: drive permission errors on mount points
./setup suppress-z-warnings          # Mute warnings
./setup unmount-z                    # Hide /mnt from Wine
# Try update again
./setup mount-z                      # Restore when done

Wine prefix corrupted

# Backup first (if you have anything important)
./setup backup

# Full reset
./setup purge
./setup full

# Restore if needed
./setup restore

Wine Robustness Libraries

The script installs comprehensive dependencies used by Lutris and Heroic:

  • Graphics: d3dcompiler, d3dx9-11, dxvk, vkd3d, d9vk
  • Audio: directmusic, faudio, xact, directplay, directshow
  • System: vcrun*, dotnet*, corefonts, gdiplus, physx, msctf
  • GPU: Optimised for NVIDIA RTX (DXVK, shader cache enabled)

See init() function for full library list.

Performance Tuning

GPU Optimisation (for launchers with embedded browsers)

Edit launch_app() function to adjust:

export __GL_SHADER_DISK_CACHE=1              # Improve framerate
export __GL_THREADED_OPTIMIZATION=1          # Multi-threaded rendering
export DXVK_HUD=0                            # Hide DXVK overlay

CPU Optimisation

# For faster winetricks installation, add to ~/.bashrc:
export WINETRICKS_DOWNLOAD_TIMEOUT=60
export WINETRICKS_DOWNLOADER=wget

Advanced Topics

Custom Drive Mappings

# Map /mnt/DATA-NVME as D: drive
./setup configure-drives D /mnt/DATA-NVME

# List current mappings
ls -la ~/.wine-gaming/prefix/pfx/dosdevices/

Run Wine Commands Directly

export WINEPREFIX=~/.wine-gaming/prefix/pfx
wine cmd.exe /c dir c:\\

# Or use script's environment:
WINEPREFIX=~/.wine-gaming/prefix/pfx wine reg query "HKEY_CURRENT_USER\Software\Wine\Direct3D"

Check Installed Apps

find ~/.wine-gaming/prefix/pfx/drive_c/Program\ Files -name "*.exe" -type f | head -20

Contributing

Want to add another launcher?

  1. Add entry to APP_REGISTRY at top of script
  2. Ensure installer URL is direct-downloadable via wget
  3. Test: ./setup install <your-key>
  4. Verify: ./setup launch <your-key>

Issues & Limitations

  • ⚠️ Wine drive letters in file dialogues: Custom drive letters (D:, E:) don't always show in Proton app dialogues; Z: at "/" is Wine standard behaviour
  • ⚠️ Z: drive warnings: "Read access denied" errors are harmless; use suppress-z-warnings to mute
  • ⚠️ EA Desktop icon: The installer's .ico contains a corrupt frame that icotool refuses; falls back to raw .ico — gdk-pixbuf renders it from the first valid frame (may appear small)
  • GPU acceleration: Tested on NVIDIA RTX 2060+ (DXVK v2.4.1)
  • Disk space reporting: Use unmount-z before EA Desktop's disk checks

Licence

GPL-3 - Free to use and modify

Changelog

v1.1 (Apr 2026)

  • ✅ Global wig wrapper — runs from anywhere, survives folder moves via location-file indirection
  • ✅ Shell aliases (wig-launch, wig-install, etc.) auto-wired into ~/.bashrc on init
  • ✅ Auto icon extraction from installer .exe on shortcut creation (PNG-first via icoutils, .ico fallback)
  • icoutils auto-installed in ./setup init

v1.0 (Nov 2025)

  • ✅ Initial release with 6 launchers
  • ✅ Automatic installer detection
  • ✅ Z: drive mount/unmount management
  • ✅ Comprehensive robustness libraries (Lutris-compatible)
  • ✅ GPU acceleration optimised

See git history for full changelog.

Git Tree Visualisation

Full SVG · Interactive version · View data

About

Ubuntu 25.10 compatible gaming suite for most game launchers (GoG, Epic Games, Ubisoft Connect, EA Desktop, e.a.)

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages