feat(core): changed wine related structures for better compatibility
Before `wine::Files` couldn't work with builds which don't have `wineboot` script inside which broke ge-proton compatibility. This change will fix it (in combination with wincompatlib 0.2.2)
This commit is contained in:
parent
219d0f7704
commit
e448f7672d
3 changed files with 18 additions and 10 deletions
|
@ -1 +1 @@
|
||||||
Subproject commit 45894e77c9ec1fcfe264c80f6a39774876413386
|
Subproject commit 9b787856c4ca297023b1eab0aca0188278cea7a4
|
|
@ -23,10 +23,10 @@ pub struct Version {
|
||||||
#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
|
#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
|
||||||
pub struct Files {
|
pub struct Files {
|
||||||
pub wine: String,
|
pub wine: String,
|
||||||
pub wine64: String,
|
pub wine64: Option<String>,
|
||||||
pub wineserver: String,
|
pub wineserver: Option<String>,
|
||||||
pub wineboot: String,
|
pub wineboot: Option<String>,
|
||||||
pub winecfg: String
|
pub winecfg: Option<String>
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Version {
|
impl Version {
|
||||||
|
@ -48,12 +48,20 @@ impl Version {
|
||||||
pub fn to_wine<T: Into<PathBuf>>(&self, wine_folder: Option<T>) -> Wine {
|
pub fn to_wine<T: Into<PathBuf>>(&self, wine_folder: Option<T>) -> Wine {
|
||||||
let wine_folder = wine_folder.map(|folder| folder.into()).unwrap_or_default();
|
let wine_folder = wine_folder.map(|folder| folder.into()).unwrap_or_default();
|
||||||
|
|
||||||
|
let (wine, arch) = match self.files.wine64.as_ref() {
|
||||||
|
Some(wine) => (wine, WineArch::Win64),
|
||||||
|
None => (&self.files.wine, WineArch::Win32)
|
||||||
|
};
|
||||||
|
|
||||||
|
let wineboot = self.files.wineboot.as_ref().map(|wineboot| wine_folder.join(wineboot));
|
||||||
|
let wineserver = self.files.wineserver.as_ref().map(|wineserver| wine_folder.join(wineserver));
|
||||||
|
|
||||||
Wine::new(
|
Wine::new(
|
||||||
wine_folder.join(&self.files.wine64),
|
wine_folder.join(wine),
|
||||||
None,
|
None,
|
||||||
Some(WineArch::Win64),
|
Some(arch),
|
||||||
Some(wine_folder.join(&self.files.wineboot)),
|
wineboot,
|
||||||
Some(wine_folder.join(&self.files.wineserver)),
|
wineserver,
|
||||||
WineLoader::Current
|
WineLoader::Current
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
@ -86,7 +86,7 @@ pub fn run() -> anyhow::Result<()> {
|
||||||
bash_chain += "gamemoderun ";
|
bash_chain += "gamemoderun ";
|
||||||
}
|
}
|
||||||
|
|
||||||
bash_chain += &format!("'{}' ", config.game.wine.builds.join(wine.name).join(wine.files.wine64).to_string_lossy());
|
bash_chain += &format!("'{}' ", config.game.wine.builds.join(wine.name).join(wine.files.wine64.unwrap_or(wine.files.wine)).to_string_lossy());
|
||||||
|
|
||||||
if let Some(virtual_desktop) = config.game.wine.virtual_desktop.get_command() {
|
if let Some(virtual_desktop) = config.game.wine.virtual_desktop.get_command() {
|
||||||
bash_chain += &format!("{virtual_desktop} ");
|
bash_chain += &format!("{virtual_desktop} ");
|
||||||
|
|
Loading…
Reference in a new issue