wine
Run Windows applications on Linux
TLDR
Run a specific program inside the wine environment
Run a specific program in background
Install/uninstall an MSI package
Run File Explorer, Notepad, or WordPad
Run Registry Editor, Control Panel, or Task Manager
Run the configuration tool
SYNOPSIS
wine [OPTION...] PROGRAM [ARGUMENT...]
wine [OPTION...] COMMAND
wine [OPTION...] --version
wine [OPTION...] --help
This syntax illustrates how to invoke Wine. You typically provide the path to a Windows executable (PROGRAM) followed by any arguments (ARGUMENT...) that the program itself needs. Alternatively, you can run a built-in Wine command (COMMAND) like 'explorer' or 'cmd'. Options (OPTION...) modify Wine's behavior.
PARAMETERS
PROGRAM
The path to the Windows executable (.exe or .msi) to run, or the name of an executable within the Wine prefix's PATH.
ARGUMENT...
Arguments passed directly to the Windows program being executed by Wine.
COMMAND
A built-in Wine command like 'explorer', 'cmd', or 'winecfg'. These commands provide Wine's own versions of Windows utilities.
-h, --help
Displays a help message showing available command-line options and their usage.
-v, --version
Prints the Wine version information, including the build architecture and Git commit hash.
--prefix <path>
Specifies the path to the Wine prefix (also known as a Winebottle) to use for this execution. If not specified, Wine uses ~/.wine by default. This allows for isolated environments for different applications.
--bottle <path>
An alias for --prefix, often used by third-party Wine managers and scripts for clarity.
--dll <name>=<type>
Controls the loading behavior of specific DLLs (Dynamic Link Libraries). <type> can be 'builtin' (use Wine's version), 'native' (use Windows's DLL if available), or 'disabled'.
--debugmsg <channel>
Enables specific debug channels for detailed logging output, useful for troubleshooting issues. Multiple channels can be specified separated by commas.
--check-libs
Checks for missing system libraries required by Wine and lists them, which can help diagnose runtime problems.
--no-daemon
Prevents Wine from running its server component in the background. Generally not recommended for most uses as it can slow down subsequent Wine starts.
DESCRIPTION
Wine (recursive acronym for "Wine Is Not an Emulator") is a free and open-source compatibility layer that allows Windows applications to run on Linux and other Unix-like operating systems. Instead of simulating an entire Windows operating system, Wine translates Windows API calls into POSIX API calls on-the-fly, enabling native execution. This means Windows programs can integrate seamlessly with your Linux desktop environment, often performing better than they would in a virtual machine, as there's no overhead of a guest OS. Wine provides its own re-implementation of the Windows libraries and system services, allowing users to run a vast range of Windows software, from productivity tools to games, directly on their Linux machine without needing a Windows license or installation. It's a crucial tool for expanding the software ecosystem available to Linux users.
CAVEATS
Not every Windows application will run flawlessly or at all. Compatibility can vary widely depending on the application, its dependencies, and the specific Wine version. Some applications may require significant configuration (e.g., using winecfg or winetricks) or specific workarounds. Performance may not always match native Windows execution, especially for graphically intensive games. Users should also be cautious when running untrusted Windows executables, as Wine effectively provides them with access to parts of your Linux file system and resources.
WINE PREFIX (WINEPREFIX)
Wine organizes its virtual Windows environment within a directory called a 'Wine prefix' or 'Winebottle'. By default, this is ~/.wine. Each prefix contains a virtual C: drive, a Windows registry, and installed programs. Using different prefixes (e.g., via the WINEPREFIX environment variable or the --prefix option) allows you to isolate applications, prevent conflicts, and manage different Windows versions or configurations independently. For instance: WINEPREFIX=~/.wine_games wine program.exe
CONFIGURATION (WINECFG)
The winecfg utility (run by typing winecfg in your terminal) provides a graphical interface to configure various aspects of a Wine prefix. This includes setting the emulated Windows version (e.g., Windows 7, Windows 10), configuring drives, audio, graphics, and DLL overrides. It's an essential tool for troubleshooting and optimizing application compatibility.
HELPER SCRIPTS (WINETRICKS)
winetricks is a community-driven script that simplifies the installation of various components (like DirectX, .NET Framework, Visual C++ runtimes) and common workarounds that Windows applications often require within a Wine prefix. It automates complex setup procedures and is highly recommended for improving application compatibility for many applications.
HISTORY
Wine development began in 1993, initiated by Bob Amstadt and Eric Youngdale. Its original aim was to enable running 16-bit Windows applications on Linux. Over the years, it evolved significantly, expanding its support to 32-bit and eventually 64-bit Windows applications. A major milestone was the release of Wine 1.0 in June 2008, after 15 years of development. Since then, Wine has seen continuous and rapid development, driven by a dedicated open-source community. Its importance grew further with projects like Valve's Proton, which leverages Wine to bring a vast library of Windows games to Linux via Steam, significantly boosting its mainstream adoption and ongoing development.
SEE ALSO
winecfg(1): Wine configuration utility, used for graphical settings management., winetricks(1): A helper script to install common components and apply workarounds for Windows applications within Wine prefixes., protontricks(1): A version of Winetricks specifically designed for use with Valve's Proton compatibility layer., playonlinux: A graphical frontend that simplifies managing multiple Wine installations and Windows applications., qemu(1): A generic and open-source machine emulator and virtualizer, offering full system emulation as an alternative to Wine., virtualbox(1): A popular general-purpose full virtualizer for x86 hardware, running entire guest operating systems like Windows.