Wincompatlib
Set of interfaces to run windows applications on unix-like systems using Wine written on :crab: Rust
Install / Use
/learn @krypt0nn/WincompatlibREADME
Rust library that contains a set of interfaces to run windows applications on unix-like systems using Wine
Features:
- Different wine builds
- Can create wine prefixes & run applications
- Support DXVK installing, uninstalling, applied version parsing (
dxvk) - Has bundles system for special wine builds (
wine-bundles) - Has Proton support (
wine-proton) - Integrates with
winetricks(same called feature) - Can install Microsoft Corefonts (
wine-fontsfeature)
Examples
Run cmd.exe using system wine
use wincompatlib::prelude::*;
// Run cmd.exe using system wine
Wine::default().run("cmd");
// Ask for cmd's help
let child = Wine::default().run_args(["cmd", "/c", "help"]).unwrap();
println!("Help: {}", &String::from_utf8_lossy(&child.wait_with_output().unwrap()));
Print wine version
use wincompatlib::prelude::*;
// Print wine version
println!("Wine version: {:?}", Wine::default().version().unwrap());
Run cmd.exe using custom wine, and then stop it
use wincompatlib::prelude::*;
let wine = Wine::from_binary("/path/to/wine");
// Run cmd.exe using custom wine
// and then stop it
wine.run("cmd");
wine.stop_processes(true);
Print DXVK version
// Requires "dxvk" feature (enabled by default)
use wincompatlib::prelude::*;
match Dxvk::get_version("/path/to/prefix") {
Ok(Some(version)) => println!("DXVK applied: {}", version),
Ok(None) => println!("DXVK is not applied"),
Err(err) => eprintln!("Failed to get DXVK version: {}", err)
}
Install DXVK
// Requires "dxvk" feature (enabled by default)
use wincompatlib::prelude::*;
Wine::default()
.install_dxvk("/path/to/dxvk-x.y.z", InstallParams::default())
.expect("Failed to install DXVK");
Author: Nikita Podvirnyi
Licensed under MIT
Related Skills
himalaya
346.4kCLI to manage emails via IMAP/SMTP. Use `himalaya` to list, read, write, reply, forward, search, and organize emails from the terminal. Supports multiple accounts and message composition with MML (MIME Meta Language).
node-connect
346.4kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
taskflow
346.4kname: taskflow description: Use when work should span one or more detached tasks but still behave like one job with a single owner context. TaskFlow is the durable flow substrate under authoring layer
frontend-design
107.2kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
