wine-ge-custom
My custom build of wine, made to use with lutris. Built with lutris's buildbot.
Top Related Projects
Compatibility tool for Steam Play based on Wine and additional components
The wine-tkg build systems, to create custom Wine and Proton builds
A wrapper that does winetricks things for Proton enabled games, requires Winetricks.
Fork of VKD3D. Development branches for Proton's Direct3D 12 implementation.
Quick Overview
GloriousEggroll/wine-ge-custom is a custom build of Wine, specifically tailored for gaming on Linux. It incorporates various patches and improvements from Proton and other sources to enhance game compatibility and performance. This project aims to provide a more up-to-date and feature-rich Wine experience for Linux gamers.
Pros
- Improved game compatibility compared to standard Wine
- Regular updates with the latest patches and improvements
- Incorporates features from Proton and other sources
- Optimized for gaming performance on Linux
Cons
- May have stability issues due to frequent updates and experimental features
- Not officially supported by Wine developers
- Potential compatibility issues with some applications or games
- Requires manual installation and configuration
Getting Started
To use GloriousEggroll/wine-ge-custom:
- Visit the project's GitHub releases page: https://github.com/GloriousEggroll/wine-ge-custom/releases
- Download the latest release tarball for your system architecture
- Extract the tarball to a directory of your choice
- Set the
WINEPREFIX
environment variable to specify your Wine prefix:export WINEPREFIX="/path/to/your/wineprefix"
- Run Wine commands using the extracted
wine
binary:/path/to/extracted/wine/bin/wine your_windows_program.exe
Note: It's recommended to use a tool like Lutris or PlayOnLinux to manage different Wine versions and prefixes more easily.
Competitor Comparisons
Compatibility tool for Steam Play based on Wine and additional components
Pros of Proton
- Official Valve support and integration with Steam
- Regular updates and compatibility improvements for Steam games
- Extensive testing and optimization for a wide range of titles
Cons of Proton
- Limited customization options for end-users
- Primarily focused on Steam games, may not be optimized for non-Steam titles
- Slower to incorporate community-driven patches and improvements
Code Comparison
While both projects are based on Wine, they have different approaches to patching and customization. Here's a simplified example of how they might differ in applying a patch:
Proton:
#!/bin/bash
patch -p1 < "${srcdir}/patches/proton-valve-specific-patch.patch"
wine-ge-custom:
#!/bin/bash
patch -p1 < "${srcdir}/patches/community-driven-patch.patch"
patch -p1 < "${srcdir}/patches/performance-enhancement.patch"
wine-ge-custom often includes more experimental patches and customizations, while Proton tends to focus on stability and compatibility with Steam games. The wine-ge-custom project allows for greater flexibility and faster integration of community contributions, making it popular among users who want to fine-tune their Wine experience or use it with non-Steam games.
The wine-tkg build systems, to create custom Wine and Proton builds
Pros of wine-tkg-git
- Highly customizable with extensive build options
- Frequent updates and patches from upstream Wine
- Supports a wide range of gaming-related patches and optimizations
Cons of wine-tkg-git
- Requires more technical knowledge to build and configure
- May have less stability due to frequent updates and customizations
- Smaller community compared to wine-ge-custom
Code Comparison
wine-tkg-git:
_PKGNAME_OVERRIDE="wine-tkg-git"
pkgname="${_PKGNAME_OVERRIDE}"
pkgver=7.0.r0.g1a21fec5a40
pkgrel=1
wine-ge-custom:
WINE_VERSION="8.0"
WINE_RELEASE="GE-Proton8-2"
SRCDIR="$PWD"
BUILDDIR="$SRCDIR/build"
The code snippets show differences in version naming and build structure between the two projects. wine-tkg-git uses a more traditional package naming convention, while wine-ge-custom focuses on specific Wine and Proton versions.
wine-tkg-git offers greater customization but requires more technical expertise, while wine-ge-custom provides a more streamlined experience with a focus on gaming compatibility. Both projects aim to enhance Wine functionality, but they cater to different user preferences and skill levels.
A wrapper that does winetricks things for Proton enabled games, requires Winetricks.
Pros of protontricks
- Focused tool for managing Proton prefixes and applying Winetricks
- Easier to use for specific Proton-related tasks
- Integrates well with Steam and Proton environments
Cons of protontricks
- Limited to Proton-specific functionality
- May not provide as much customization for Wine itself
- Smaller community and less frequent updates
Code Comparison
protontricks:
def run_command(command, env=None, cwd=None):
"""Run a command and return its output"""
process = subprocess.Popen(
command, stdout=subprocess.PIPE, stderr=subprocess.PIPE,
env=env, cwd=cwd, universal_newlines=True
)
wine-ge-custom:
#!/bin/bash
set -e
export WINEARCH=win64
export WINEPREFIX="$HOME/.wine-ge-custom"
export PATH="$HOME/.local/share/lutris/runners/wine/lutris-ge-custom/bin:$PATH"
wine wineboot
The code snippets show that protontricks focuses on running commands within the Proton environment, while wine-ge-custom sets up a custom Wine environment with specific configurations. wine-ge-custom provides more low-level control over the Wine setup, while protontricks offers a higher-level interface for managing Proton prefixes and applying Winetricks.
Fork of VKD3D. Development branches for Proton's Direct3D 12 implementation.
Pros of vkd3d-proton
- Focused specifically on DirectX 12 to Vulkan translation
- Potentially better performance for DX12 games
- More frequent updates and active development
Cons of vkd3d-proton
- Limited scope compared to wine-ge-custom's broader compatibility
- May require additional configuration for optimal performance
- Less suitable for games using older DirectX versions
Code Comparison
vkd3d-proton:
VkResult vkd3d_create_instance(const struct vkd3d_instance_create_info *create_info,
struct vkd3d_instance **instance)
{
struct vkd3d_instance *object;
VkResult vr;
// ...
}
wine-ge-custom:
NTSTATUS WINAPI wine_vkd3d_create_instance(const struct vkd3d_instance_create_info *create_info,
struct vkd3d_instance **instance)
{
struct vkd3d_instance *object;
NTSTATUS status;
// ...
}
The code snippets show similar function signatures, but vkd3d-proton uses Vulkan-specific types (VkResult), while wine-ge-custom uses Windows-specific types (NTSTATUS). This reflects their different focuses: vkd3d-proton targets Vulkan translation, while wine-ge-custom aims for broader Windows compatibility.
Convert
designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
THIS REPO IS DEAD. UMU-LAUNCHER IS ITS SUCCESSOR:
https://github.com/Open-Wine-Components/umu-launcher
wine-ge-custom
This is my build of WINE based on/forked from the most recent bleeding-edge proton experimental wine repo. This is meant to be used with non-steam games outside of Steam.
For Steam games, I provide Proton-GE for usage with Lutris, found here:
https://github.com/gloriouseggroll/proton-ge-custom
Occasionally, I also release League of Legends builds -- These builds will specifically have 'lol' or 'LoL' in the name. Please note these 'LoL' builds are for specific use with League of Legends, and NO other games.
If you have an issue that happens with my Wine-GE or Wine-LoL-GE builds, provided FROM this repository, please contact me on Discord about the issue:
Table of contents
Overview
Things it contains that Valve's proton does not:
- Additional media foundation patches for better video playback support
- AMD FSR patches added directly to fullscreen hack that can be toggled with WINE_FULLSCREEN_FSR=1
- FSR Fake resolution patch (details here: https://github.com/GloriousEggroll/proton-ge-custom/pull/52)
- Nvidia CUDA support for phsyx and nvapi
- Raw input mouse support
- fix for Mech Warrior Online
- fix for Asseto Corsa HUD
- fix for MK11 crash in single player
- fix for Killer Instinct Vulkan related crash
- fix for Cities XXL patches
- various upstream WINE patches backported
- various wine-staging patches applied as they become needed
Media Foundation fixes (Fully working or playable)
- Spyro Reignited Trilogy
- Mortal Kombat 11
- Injustice 2
- Power Rangers: Battle for the Grid
- Borderlands 3
- Resident Evil 0
- Resident Evil
- Resident Evil 2 Remastered
- Resident Evil 3 Remastered
- Resident Evil 5
- Resident Evil 6
- Resident Evil 7
- Resident Evil 8
- Resident Evil Revalations
- Resident Evil Revalations 2
- Persona 4 Golden
- PC Building Simulator
- Dangonronpa V3
- Super Lucky's Tale
- Remnant: From the Ashes
- BlazBlue Centralfiction
- Bloodstained: Ritual of the Night
- Crazy Machines 3
- Devil May Cry 5
- Wasteland 3
- Mutant Year Zero
- Ultimate Marvel Vs. Capcom 3
- Industry of Titan
- Call of Duty Black Ops III
- Tokyo Xanadu eX+
- Haven
- Nier Replicant
- Scrap Mechanic
- Aven Colony
- American Fugitive
- Asrtonner
- Soul Caliber VI
- Monster Hunter Rise
- Seven: Days Gone
Notes
- Warframe is problematic with VSync. Turn it off or on in game, do not set to
Auto
- Warframe needs a set a frame limit in game. Unlimited framerate can cause slowdowns
- Warframe on Nvidia: you may need to disable GPU Particles in game otherwise the game can freeze randomly. On AMD they work fine
Installation
PLEASE NOTE: There are prerequisites for using this version of wine:
- You must have wine installed on your system
- You must have winetricks installed on your system
- You must have wine dependencies installed on your system. See https://www.gloriouseggroll.tv/how-to-get-out-of-wine-dependency-hell/
- You must have vulkan gpu drivers/packages installed properly on your system. See https://github.com/lutris/docs/blob/master/InstallingDrivers.md
Manual
This section is for manual installation of wine-ge for usage with Lutris.
- Extract
wine-name-branch-x86_64.tar.gz
to/home/USERNAME/.local/share/lutris/runners/wine/
- Restart lutris. You can now choose
wine-name-branch-x86_64
from the runners list in configuration options for any game.
Building
Install docker/podman:
On Ubuntu: sudo apt install podman
On Arch: sudo pacman -S podman
On Fedora: sudo dnf install podman
Build wine:
usage: ./makebuild.sh name winerepo branch
example: ./makebuild.sh lutris-GE https://github.com/GloriousEggroll/proton-wine Proton8-15
build name output: builds/runners/wine/wine-lutris-GE-Proton8-15-x86_64.tar.xz
Additional tips:
To access the container:
docker start buildbot
docker exec -it buildbot bash
To exit the container:
exit
docker stop buildbot
To delete the container and view containers list:
docker container rm buildbot
docker container list -a
To delete the container image and view images list:
docker rmi docker.io/gloriouseggroll/lutris_buildbot
docker images
- IMPORTANT NOTES:
- wine, wine-staging and patches repos/folders are here for my personal use. The build bot does -NOT- pull from any of these folders directly.__
- GloriousEggroll/proton-wine Proton* branches are PRE-PATCHED, meaning it is ready to compile, no patching needed.
If you need to make changes to the wine build it is recommended to:
- Fork the ValveSoftware/wine repository
- Clone your fork of the ValveSoftware/wine repository
- Add official ValveSoftware/wine repository as a remote branch in your clone/fork
- Checkout the latest experimental-wine-bleeding-edge tree and make a new branch from it.
- then run
./patches/protonprep.sh
to apply my changes to your own wine repository - then commit + push those changes to your new branch on your -own- repository.
- THEN follow the makebuild.sh instructions from above, using your own repository URL and branch.
Modification
Environment variable options:
Compat config string | Environment Variable | Description |
---|---|---|
WINE_FULLSCREEN_FSR | Enable AMD FidelityFX Super Resolution (FSR), use in conjunction with WINE_FULLSCREEN_FSR_STRENGTH Only works in vulkan games (dxvk and vkd3d-proton included). | |
WINE_FULLSCREEN_FSR_STRENGTH | AMD FidelityFX Super Resolution (FSR), the default sharpening of 5 is enough without needing modification, but can be changed with 0-5 if wanted. 0 is the maximum sharpness, higher values mean less sharpening. 2 is the AMD recommended default and is set by proton-ge |
Credits
As many of you may or may not already know, there is a Credits section in the README for this Git repository. My proton-ge project contains some of my personal tweaks to Proton, but a large amount of the patches, rebases and fixes come from numerous people's projects. While I tend to get credited for my builds, a lot of the work that goes into it are from other people as well. I'd like to take some time to point a few of these people out of recognition. In future builds, I plan to make clearer and more informative Git commits, as well as attempt to give these people further crediting, as my README may not be sufficient in doing so.
TKG (Etienne Juvigny)
I and many others owe TKG. In regards to both WINE and Proton. He has dedicated a lot of time (2+ years at least) to rebasing WINE and Proton patches, as well as making his own contributions. Before he came along, I did some rebasing work, and mainly only released things for Arch. These days he almost always beats me to rebasing, and it saves myself and others a lot of work.
Guy1524 (Derek Lesho)
Derek was responsible for the original rawinput patches, as well as several various game fixes in the past, just to name a few: MK11, FFXV, MHW, Steep, AC Odyssey FS fix. He has also done a massive amount of work on media foundation/mfplat, which should be hopefully working very soon.
Joshie (Joshua Ashton)
Joshua is the creator of D9VK and also a huge contributor of DXVK. He is also known for his recent DOOM Eternal WINE fixes and also many of the Vulkan tweaks and fixes used, such as FS hack interger scaling.
doitsujin/ãã¤ã人 (Philip Rebohle)
Philip is the creator of DXVK and a heavy contributor of VKD3D. He also put up a lot of my bug reporting for Warframe years ago, when DXVK started.
HansKristian/themaister (Hans-Kristian Arntzen)
Hans-Kristian is a heavy contributor of VKD3D and he also created a lot of WINE patches that allowed WoW to work.
flibitijibibo (Ethan Lee)
Ethan is the creator of FAudio, and he also listened to my Warframe bug reports years ago.
simmons-public (Chris Simmons)
Chris is the creator of the original Protonfixes project. The portions of Protonfixes I've imported are what allow customizations to be made to prefixes for various Proton games. without Proton fixes many games would still be broken and/or require manual prefix modification. Huge thanks to Chris.
Sporif (Amine Hassane)
Amine is the current maintainer of dxvk-async. This is a feature that was originally removed from dxvk as it happened around the same time a few overwatch bans happened. It was thought, but never confirmed whether or not this feature caused the bans, so the feature was removed as a safety precaution. It is still safe to use in many single player games, and games that do not have competitive anti-cheats. It has also been confirmed to work safely in Warframe and Path of Exile.
wine-staging maintainers
I also of course need to thank my fellow wine-staging maintainers: Alistair Leslie-Hughes, Zebediah Figura and Paul Gofman
They have contributed MANY patches to staging, far beyond what I have done, as well as kept up with regular rebasing. A lot of times when bug reports come to me, if it has to do with staging I end up testing and relaying information to these guys in order to get issues resolved.
Reporters
Additionally, a thank you is owed to Andrew Aeikum (aeikum), and kisak (kisak-valve) for regularly keeping me in the loop with Proton and fsync patches, as well as accepting PRs I've made to fix Proton build system issues, or listening to bug reports on early Proton patches before they reach Proton release.
Patrons
And finally - To all of my patrons that have supported me, thank you so much. It's because of you that I've been able to keep this project going, getting bug fixes reported, getting Proton/WINE issues fixed, getting various hardware and/or game fixes handled, and so on. Thanks to you, I have been able to use the spare budget in order to both help support the other people that make my project possible, as well as get things necessary for testing such as new game releases or specific hardware that hits odd issues. It's had a huge effect not just for this project, but a large trickle down effect.
My wine-staging co-maintainers are often able to ask me for testing games, or testing on different hardware if they don't have access to it. This also trickles into both Proton bug reporting AND Lutris bug reporting, as I'm able to provide bug testing and feedback and custom builds and upgrades to them as well. I'm also able to test driver related issues for things such as mesa and getting things reported + patched. This in turn leads to early patches for Mesa, the kernel, VKD3D, and other packages on my copr repos as well. The trickle down effect is just one gigantic awesome rabbit hole for getting things fixed. Thank you once again.
Donations
For anyone else interested, my Patreon can be found here:
Top Related Projects
Compatibility tool for Steam Play based on Wine and additional components
The wine-tkg build systems, to create custom Wine and Proton builds
A wrapper that does winetricks things for Proton enabled games, requires Winetricks.
Fork of VKD3D. Development branches for Proton's Direct3D 12 implementation.
Convert
designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot