Wine
Wine is a compatibility layer capable of running Microsoft Windows applications on Unix-like operating systems. Programs running in Wine act as native programs would, without the performance/memory penalties of an emulator.
- Wine is not isolated from your system.
- If you can access a file or resource with your user account, programs running in Wine can too. See #Running Wine under a separate user account and Security#Sandboxing applications for possible precautions.
- Wine can also run Malware (see Wine FAQ on Malware compatibility)
Installation
Wine can be installed by enabling the multilib repository and installing the wine (development), wine-stableAUR (stable) or wine-staging (testing) package. Wine Staging is a patched version of Wine, which contains bug fixes and features that have not been integrated into the stable or development branch yet.
See also #Graphics drivers and #Sound for additional requirements.
Consider installing wine-gecko and wine-mono for applications that depend on Internet Explorer and .NET, respectively. These packages are not strictly required as Wine will download the relevant files as needed. However, you should manage them with pacman.
Optional dependencies
Wine has numerous optional dependencies, which may not be required for basic applications, but should be installed to provide functionality such as sounds, 3D graphics, video playback, etc.
Note that many Windows applications are 32-bit, and will require 32-bit versions of the respective libraries, some of which are only available on the AUR. Standard (64-bit) libraries can be used for 64-bit applications, or for any application if you are running a version of Wine with the new WoW64 mode (see note in #Installation). You can check whether a Windows executable is 64-bit by using the file(1) command.
Graphics drivers
You need to install the 32-bit version of your graphics driver. Please install the package that is listed in the OpenGL (multilib) column in the table in Xorg#Driver installation.
A good sign that your drivers are inadequate or not properly configured is when Wine reports the following in your terminal window:
Direct rendering is disabled, most likely your OpenGL drivers have not been installed correctly
Sound
By default sound issues may arise when running Wine applications. Ensure only one sound device is selected in winecfg.
Install the correct packages for the audio driver you want to use:
- For ALSA install lib32-alsa-lib and lib32-alsa-plugins
- For PulseAudio install lib32-libpulse
- For PipeWire install lib32-pipewire and either:
- pipewire-pulse and lib32-libpulse to use PulseAudio as a frontend.
- pipewire-alsa, lib32-alsa-lib, and lib32-alsa-plugins to use ALSA as a frontend.
- For OSS install lib32-alsa-oss
If winecfg still fails to detect the audio driver (Selected driver: (none)), configure it via the registry. For example, in a case where the microphone was not working in a 32-bit Windows application on a 64-bit stock install of wine-1.9.7, this provided full access to the sound hardware (sound playback and mic): open regedit, look for the key HKEY_CURRENT_USER > Software > Wine > Drivers, and add a string called Audio and give it the value alsa. Also, it may help to recreate the prefix.
MIDI support
MIDI was a quite popular system for video games music in the 90s. If you are trying out old games, it is not uncommon that the music will not play out of the box. Wine has excellent MIDI support. However you first need to make it work on your host system, as explained in MIDI. Last but not least you need to make sure Wine will use the correct MIDI output.
Other dependencies
Some applications may require additional packages [2].
- For encryption support install lib32-gnutls
- For joystick and gamepad support in a 32-bit prefix, install lib32-sdl2
- For media playback in 32-bit programs install lib32-gst-plugins-base, lib32-gst-plugins-good, lib32-gst-plugins-badAUR, lib32-gst-plugins-uglyAUR and lib32-gst-libavAUR
- For NTLM authentication install samba
In-prefix dependencies
Aside from system dependencies, many programs require additional fonts and DLLs to be installed to the Wine prefix [3]. To satisfy these dependencies you can use Winetricks, a primitive "package manager" where each verb either installs something or applies a configuration tweak. There are two ways to use Winetricks:
- Through the CLI: Run
winetricks verb_name
. - Through the GUI: Install zenity or kdialog then run
winetricks
.
Due to conflicts between dependencies, you may not be able to create the "perfect" Windows installation that can run everything [4] [5]. Rather, you should treat prefixes as disposable (unless they contain important configurations or data) and use separate prefixes for programs with different dependencies. You can use the #WINEPREFIX environment variable to control which prefix the verbs act on.
Determining the verbs required by a program needs can require much trial and error. See the Bottles dependency page for some of the more common dependencies, as well as the following program-specific resources:
- Wine Application Database. Official resource, but old and may be less maintained than others.
- Lutris website. If you are trying to run a game which happens to be featured on this site, you can click the drop-down menu and then View install script to see what Winetricks verbs are used by Lutris.
- Bottles program repository. Smaller, but not just games.
-
ProtonDB. Although Proton has different compatibility than Wine (and you should probably just use Proton if you are on this site), the verbs commented by users may be of use.
- You can also consult the source for the fast-moving protonfixes tool that ships with proton-ge-custom, but beware that it assumes the presence of additional Proton and GE patches that fix games.
If you find yourself spending a lot of time managing prefixes for games, it may be easier to use a third-party application that handles it for you.
Third-party applications
These have their own communities and websites, and are not supported by the main Wine community. See Wine Wiki for more details.
- Bottles — Graphical prefix and runners manager for Wine based on GTK.
- CrossOver — Official paid version of Wine which provides a graphical interface and more comprehensive end-user support.
- Lutris — Gaming launcher for all types of games, including Wine games (with prefix management), native Linux games and emulators.
- PlayOnLinux — Graphical prefix manager for Wine. Contains scripts to assist with program installation and configuration.
- Proton — Compatibility tool made for Steam based on Wine and additional components. See ProtonDB for compatibility list.
- PyWinery — Simple graphical prefix manager for Wine.
- Q4Wine — Graphical prefix manager for Wine. Can export Qt themes into the Wine configuration for better integration.
- WINEgui — A user-friendly WINE graphical interface.
Configuration
Configuring Wine is typically accomplished using:
-
winecfg is a GUI configuration tool for Wine, which can be started by running
winecfg
. -
regedit is Wine's registry editing tool, which can be started by running
regedit
. See WineHQ's article on Useful Registry Keys. -
control is Wine's implementation of the Windows Control Panel, which can be started by running
wine control
. - See WineHQ's List of Commands for the full list.
WINEPREFIX
By default, Wine stores its configuration files and installed Windows programs in ~/.wine
. This directory is commonly called a "Wine prefix" or "Wine bottle". It is created/updated automatically whenever you run a Windows program or one of Wine's bundled programs such as winecfg. The prefix directory also contains a tree which your Windows programs will see as C:
(the C-drive).
You can override the location Wine uses for a prefix with the WINEPREFIX
environment variable. This is useful if you want to use separate configurations for different Windows programs. The first time a program is run with a new Wine prefix, Wine will automatically create a directory with a bare C-drive and registry.
For example, if you run one program with env WINEPREFIX=~/.win-a wine program-a.exe
, and another with env WINEPREFIX=~/.win-b wine program-b.exe
, the two programs will each have a separate C-drive and separate registries.
Z:
is mapped to /
, regardless of the Wine prefix).To create a default prefix without running a Windows program or other GUI tool you can use:
$ env WINEPREFIX=~/.customprefix wineboot -u
WINEARCH
Wine will start a 64-bit environment by default. You can change this behavior using the WINEARCH
environment variable. Rename your ~/.wine
directory and create a new Wine environment by running $ WINEARCH=win32 winecfg
. This will get you a 32-bit Wine environment. Not setting WINEARCH
will get you a 64-bit one.
You can combine this with WINEPREFIX
to make a separate win32
and win64
environment:
$ WINEARCH=win32 WINEPREFIX=~/win32 winecfg $ WINEPREFIX=~/win64 winecfg
You can also use WINEARCH
in combination with other Wine programs, such as winetricks (using Steam as an example):
WINEARCH=win32 WINEPREFIX=~/.local/share/wineprefixes/steam winetricks steam
In order to see the architecture of an existing prefix you can check its registry file. The command below reads the system registry of the ~/.wine
prefix and returns #arch=win32
or #arch=win64
depending on the architecture type:
$ grep '#arch' ~/.wine/system.reg
Fonts
If Wine applications have unreadable or missing fonts, you may not have any fonts installed. To easily link all of the system fonts so they are accessible from wine:
$ cd ${WINEPREFIX:-~/.wine}/drive_c/windows/Fonts && for i in /usr/share/fonts/**/*.{ttf,otf}; do ln -s "$i"; done
Wine uses FreeType to render fonts, and FreeType's defaults changed a few releases ago. Try using the following environment variable when running programs in Wine:
FREETYPE_PROPERTIES="truetype:interpreter-version=35"
Another possibility is to install Microsoft's TrueType fonts into your wine prefix. If this does not help, try running winetricks corefonts
first, then winetricks allfonts
as a last resort.
After running such programs, kill all Wine servers and run winecfg
. Fonts should be legible now.
If the fonts look somehow smeared, import the following text file into the Wine registry with regedit:
Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Software\Wine\X11 Driver] "ClientSideWithRender"="N"
For high resolution displays, you can adjust dpi values in winecfg.
See also Font configuration#Applications without fontconfig support.
Enable font smoothing
A good way to improve wine font rendering is to enable cleartype font smoothing. To enable "Subpixel smoothing (ClearType) RGB":
/tmp/fontsmoothing.reg
REGEDIT4 [HKEY_CURRENT_USER\Control Panel\Desktop] "FontSmoothing"="2" "FontSmoothingOrientation"=dword:00000001 "FontSmoothingType"=dword:00000002 "FontSmoothingGamma"=dword:00000578 EOF
$ WINE=${WINE:-wine} WINEPREFIX=${WINEPREFIX:-$HOME/.wine} $WINE regedit /tmp/fontsmoothing.reg 2> /dev/null
For more information, check the original answer
When a Windows application installer creates a shortcut Wine creates a .desktop file instead. The default locations for those files in Arch Linux are:
- Desktop shortcuts are put in
~/Desktop
- Start menu shortcuts are put in
~/.local/share/applications/wine/Programs/
/usr/share/applications
. See WineHQ bug 11112
wine winemenubuilder
may be of some use.By default, installation of Wine does not create desktop menus/icons for the software which comes with Wine (e.g. for winecfg, winebrowser, etc). This can be achieved by installing wine-installerAUR or wine-installer-gitAUR meta-package (the latter has no additional dependencies), otherwise these instructions will add entries for these applications.
First, install a Windows program using Wine to create the base menu. After the base menu is created, you can create the following files in ~/.local/share/applications/wine/
:
wine-browsedrive.desktop
[Desktop Entry] Name=Browse C: Drive Comment=Browse your virtual C: drive Exec=wine winebrowser c: Terminal=false Type=Application Icon=folder-wine Categories=Wine;
wine-uninstaller.desktop
[Desktop Entry] Name=Uninstall Wine Software Comment=Uninstall Windows applications for Wine Exec=wine uninstaller Terminal=false Type=Application Icon=wine-uninstaller Categories=Wine;
wine-winecfg.desktop
[Desktop Entry] Name=Configure Wine Comment=Change application-specific and general Wine options Exec=winecfg Terminal=false Icon=wine-winecfg Type=Application Categories=Wine;
And create the following file in ~/.config/menus/applications-merged/
:
wine.menu
<!DOCTYPE Menu PUBLIC "-//freedesktop//DTD Menu 1.0//EN" "http://www.freedesktop.org/standards/menu-spec/menu-1.0.dtd"> <Menu> <Name>Applications</Name> <Menu> <Name>wine-wine</Name> <Directory>wine-wine.directory</Directory> <Include> <Category>Wine</Category> </Include> </Menu> </Menu>
If these settings produce a ugly/non-existent icon, it means that there are no icons for these launchers in the icon set that you have enabled. You should replace the icon settings with the explicit location of the icon that you want. Clicking the icon in the launcher's properties menu will have the same effect. A great icon set that supports these shortcuts is gnome-colors-icon-themeAUR.
Menu entries created by Wine are located in ~/.local/share/applications/wine/Programs/
. Remove the program's .desktop entry to remove the application from the menu.
In addition to remove unwanted extensions binding by Wine, execute the following commands: [7]
$ rm ~/.local/share/mime/packages/x-wine* $ rm ~/.local/share/applications/wine-extension* $ rm ~/.local/share/icons/hicolor/*/*/application-x-wine-extension* $ rm ~/.local/share/mime/application/x-wine-extension*
Sometimes you should also remove wine-*.menu
files from /.config/menus/
to completely remove items from Wine submenu in KDE.
Appearance
A similar to XP-looking theme can be downloaded. To install it, see this upstream wiki article. Lastly, use winecfg to select it.
Zune
folder and Zune.theme
files from drive_c/Windows/Resources/Themes
in that prefix to the same location in your usual prefix.Wine staging users may instead want to try enabling the option Enable GTK3 Theming under the Staging section of winecfg for a theme that matches the current GTK theme.
Printing
In order to use your installed printers (both local and network) with wine applications in win32 prefixes (e.g. MS Word), install the lib32-libcups package, reboot wine (wineboot) and restart your wine application.
Networking
After installation, the lib32-gnutls package may need to be installed for applications making TLS or HTTPS connections to work.
For ICMP (ping), Wine may need the network access as described in the WineHQ FAQ:
# setcap cap_net_raw+epi /usr/bin/wine-preloader
If issues arise after this (such as an unhandled exception or privileged instruction), remove via:
# setcap -r /usr/bin/wine-preloader
Usage
See Wine User's Guide for general information on Wine usage.
See Wine Application Database (AppDB) for additional information on specific Windows applications in Wine.
Wayland
By default, Wine runs on Wayland through Xwayland, providing a satisfactory experience for most users. As of version 9.0rc1, Wine has made substantial progress on merging native Wayland support, now making it suitable for some use cases.
To experiment with the native Wayland driver added in recent Wine versions, you can follow these steps:
- import the following text file into the Wine registry with regedit:
Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Software\Wine\Drivers] "Graphics"="x11,wayland"
- Bypass the use of Xwayland and force the native Wayland driver by unsetting the
DISPLAY
environment variable:
$ DISPLAY= wine example.exe
If the second step makes Wine stop working, check to see if your Wine version is built with support for the new Wayland driver.
Stop running Wine
Stopping started executables, wine
with Ctrl+Z or wineconsole
with Ctrl+C, might leave processes running in the background. See for example:
$ ps -xo pid,cmd PID CMD 297 -bash 933 /usr/bin/wineserver 939 C:\windows\system32\services.exe 942 C:\windows\system32\winedevice.exe 950 C:\windows\system32\explorer.exe /desktop 954 C:\windows\system32\winedevice.exe 965 C:\windows\system32\plugplay.exe 977 C:\windows\system32\svchost.exe -k LocalServiceNetworkRestricted 984 C:\windows\system32\rpcss.exe 997 mbserver.exe 1017 start.exe /exec 1019 C:\windows\system32\conhost.exe --unix --width 169 --height 40 --server 0x10 1021 Z:\home\wineuser\mbserver.exe 1030 ps -xo pid,cmd
All running wine
and wineconsole
processes are stopped at once using the wineserver -k command. For example:
$ wineserver -k 15
This command is WINEPREFIX
-dependent, so when using a custom Wine prefix, run:
$ WINEPREFIX=~/wine/my-prefix wineserver -k
An equivalent command to gracefully finish both executables in the above example is:
$ kill 997 1021
Tips and tricks
Wineconsole
Often you may need to run .exe's to patch game files, for example a widescreen mod for an old game, and running the .exe normally through Wine might yield nothing happening. In this case, you can open a terminal and run the following command:
$ wineconsole cmd
Then navigate to the directory and run the .exe file from there.
Winetricks
Winetricks is a script to allow one to install base requirements needed to run Windows programs. Installable components include DirectX 9.x, MSXML (required by Microsoft Office 2007 and Internet Explorer), Visual Runtime libraries and many more.
Install the winetricks package (or alternatively winetricks-gitAUR). Then run it with:
$ winetricks
For using GUI you can install either zenity(GTK) or kdialog(Qt).
Performance
CSMT
CSMT is a technology used by Wine to use a separate thread for the OpenGL calls to improve performance noticeably. Since Wine 3.2, CSMT is enabled by default.
Note that CSMT may actually hurt performance for some applications - if this is the case, disable it by runing wine regedit
and set the DWORD value for HKEY_CURRENT_USER -> Software > Wine > Direct3D > csmt to 0x00 (disabled).
Further information:
- Phoronix Forum discussion with the CSMT developer Stefan Dösinger
Force OpenGL mode in games
Some games might have an OpenGL mode which may perform better than their default DirectX mode. While the steps to enable OpenGL rendering is application specific, many games accept the -opengl
parameter.
$ wine /path/to/3d_game.exe -opengl
You should of course refer to your application's documentation and Wine's AppDB for such application specific information.
VKD3D-Proton
VKD3D-Proton is a fork of VKD3D which aims to implement the full Direct3D 12 API using Vulkan. The project serves as the development effort for Direct3D 12 support in Proton improving performance and compatibility for DirectX 12 games.
To use it, install vkd3d-proton-mingwAUR or vkd3d-proton-binAUR. Then run the following command to activate it in your Wineprefix (by default ~/.wine
):
$ WINEPREFIX=your-prefix setup_vkd3d_proton install
DXVK
DXVK is an implementation of DirectX 9, 10, and 11 over Vulkan. It beats the WineD3D driver in performance and compatibility for most games. It does not support DirectX 12, see #VKD3D-Proton instead. DXVK and VKD3D-Proton can and should be installed alongside each other to be able to support all DirectX versions.
To use it, install dxvk-mingwAUR or dxvk-binAUR. Then run the following command to activate it in your Wineprefix (by default ~/.wine
):
$ WINEPREFIX=your-prefix setup_dxvk install
While using DXVK with a dual graphics setup, Wine prefers the dedicated GPU. On laptops for power saving, this can be overridden:
$ VK_DRIVER_FILES=/usr/share/vulkan/icd.d/your_driver.json wine executable
HDR support
When paired with Gamescope, DXVK (V2.1+) offers support for HDR10 displays (for AMDGPU users only). See HDR monitor support for details.
Gallium Nine
When using gallium-based mesa drivers (mostly AMD and Intel cards) there is a native Gallium Direct3D driver that provides good performance for DirectX 9. It's mostly fallen out of favor due to DXVK, but you may still find it useful if you do not have Vulkan support. Performance on both DXVK and Gallium Nine should be around the same.
Install wine-nine to use it. This is a standalone package that can be installed with any Wine version. Use wine ninewinecfg
to check if it is enabled.
For older Intel graphics (gen4-7: GMA 3000, GMA 4500, HD 2000-5000; year 2006-2014) Crocus Gallium driver should be used instead of i965 since Mesa 21.2. Export the following environment variable before running Wine:
MESA_LOADER_DRIVER_OVERRIDE=crocus
Unregister existing Wine file associations
By default, Wine takes over as the default application for a lot of formats. Some (e.g. vbs
or chm
) are Windows-specific, and opening them with Wine can be a convenience. However, having other formats (e.g. gif
, jpeg
, txt
, js
) open in Wine's bare-bones simulations of Internet Explorer and Notepad can be annoying.
Wine's file associations are set in ~/.local/share/applications/
as wine-extension-extension.desktop
files. Delete the files corresponding to the extensions you want to unregister. Or, to remove all wine extensions:
$ rm -f ~/.local/share/applications/wine-extension*.desktop $ rm -f ~/.local/share/icons/hicolor/*/*/application-x-wine-extension*
Next, remove the old cache:
$ rm -f ~/.local/share/applications/mimeinfo.cache $ rm -f ~/.local/share/mime/packages/x-wine* $ rm -f ~/.local/share/mime/application/x-wine-extension*
And, update the cache:
$ update-desktop-database ~/.local/share/applications $ update-mime-database ~/.local/share/mime/
Please note Wine will still create new file associations and even recreate the file associations if the application sets the file associations again.
Prevent Wine from creating filetype associations
/usr/share/wine/wine.inf
.This method prevents the creation of filetype associations but retains the creation of XDG .desktop files (that you might see e.g. in menus).
If you want to stop wine from creating filetype associations via winecfg you have to uncheck the "Manage File Associations" checkbox under the Desktop Integration tab. See Wine FAQ
To make the same change via registry add the string Enable
with value N
under:
HKEY_CURRENT_USER\Software\Wine\FileOpenAssociations
You might have to create the key FileOpenAssociations
first!
To make this change via the command-line, run the following command:
$ wine reg add "HKEY_CURRENT_USER\Software\Wine\FileOpenAssociations" /v Enable /d N
If you want to apply this by default for new WINEPREFIXES, edit /usr/share/wine/wine.inf
and add this line for example under the [Services]
section:
HKCU,"Software\Wine\FileOpenAssociations","Enable",2,"N"
To prevent a package upgrade from overriding the modified file, create a pacman hook to make the change automatically:
/etc/pacman.d/hooks/stop-wine-associations.hook
[Trigger] Operation = Install Operation = Upgrade Type = Path Target = usr/share/wine/wine.inf [Action] Description = Stopping Wine from hijacking file associations... When = PostTransaction Exec = /bin/sh -c '/usr/bin/grep -q "HKCU,\"Software\\\Wine\\\FileOpenAssociations\",\"Enable\",2,\"N\"" /usr/share/wine/wine.inf || /usr/bin/sed -i "s/\[Services\]/\[Services\]\nHKCU,\"Software\\\Wine\\\FileOpenAssociations\",\"Enable\",2,\"N\"/g" /usr/share/wine/wine.inf'
See Pacman#Hooks for more information.
Execute Windows binaries with Wine implicitly
The wine package installs a binfmt file which will allows you to run Windows programs directly, e.g. ./myprogram.exe
will launch as if you had typed wine ./myprogram.exe
. Service starts by default on boot, if you have not rebooted after installing Wine you can start systemd-binfmt.service
to use it right away.
Dual Head with different resolutions
If you have issues with dual-head setups and different display resolutions you are probably missing lib32-libxrandr.
Also installing lib32-libxinerama might fix dual-head issues with wine (for example, unclickable buttons and menus of application in the right most or bottom most monitor, not redrawable interface of application in that zone, dragging mouse cursor state stucked after leaving application area).
Burning optical media
To burn CDs or DVDs, you will need to load the sg
kernel module.
Proper mounting of optical media images
Some applications will check for the disc to be in drive. They may check for data only, in which case it might be enough to configure the corresponding path as being a CD-ROM drive in winecfg. However, other applications will look for a name and/or a serial number, in which case the image has to be mounted with these special properties.
Some virtual drive tools do not handle these metadata, like fuse-based virtual drives (Acetoneiso for instance). CDemu will handle it correctly.
Show FPS overlay in games
Wine features an embedded FPS monitor which works for all graphical applications if the environment variable WINEDEBUG=fps
is set. This will output the framerate to stdout. You can display the FPS on top of the window thanks to osd_cat from the xosd package. See winefps.sh for a helper script.
Running Wine under a separate user account
It may be desirable to run Wine under a specifically created user account in order to reduce concerns about Windows applications having access to your home directory.
First, create a user account for Wine:
# useradd -m -s /bin/bash wineuser
Now switch to another TTY and start your X WM or DE as you normally would or keep reading...
xhost
command under your main user.Afterwards, in order to open Wine applications using this new user account you need to add the new user to the X server permissions list:
$ xhost +SI:localuser:wineuser
Finally, you can run Wine via the following command, which uses env
to launch Wine with the environment variables it expects:
$ sudo -u wineuser env HOME=/home/wineuser USER=wineuser USERNAME=wineuser LOGNAME=wineuser wine arguments
It is possible to automate the process of running Windows applications with Wine via this method by using a shell script as follows:
/usr/local/bin/runaswine
#!/bin/sh xhost +SI:localuser:wineuser sudo -u wineuser env HOME=/home/wineuser USER=wineuser USERNAME=wineuser LOGNAME=wineuser wine "$@"
Wine applications can then be launched via:
$ runaswine "C:\path\to\application.exe"
In order to not be asked for a password each time Wine is run as another user the following entry can be added to the sudoers file: mainuser ALL=(wineuser) NOPASSWD: ALL
. See Sudo#Configuration for more information.
It is recommended to run winecfg
as the Wine user and remove all bindings for directories outside the home directory of the Wine user in the "Desktop Integration" section of the configuration window so no program run with Wine has read access to any file outside the special user's home directory.
Keep in mind that audio will probably be non-functional in Wine programs which are run this way if PulseAudio is used. See PulseAudio/Examples#Allowing multiple users to share a PulseAudio daemon for information about allowing the Wine user to access the PulseAudio daemon of the principal user.
Temp directory on tmpfs
To prevent Wine from writing its temporary files to a physical disk, one can define an alternative location, like tmpfs. Remove Wine's default directory for temporary files and creating a symlink:
$ rm -r ~/.wine/drive_c/users/$USER/Temp ~/.wine/drive_c/windows/temp $ ln -s /tmp/ ~/.wine/drive_c/users/$USER/Temp $ ln -s /tmp/ ~/.wine/drive_c/windows/temp
Prevent installing Mono/Gecko
If Gecko and/or Mono are not present on the system nor in the Wine prefix, Wine will prompt to download them from the internet. If you do not need Gecko and/or Mono, you might want to disable this dialog, by setting the WINEDLLOVERRIDES
environment variable to mscoree=d;mshtml=d
.
Vulkan
The default Wine Vulkan ICD loader works fine for most applications, but does not support advanced features, like Vulkan layers. To use these features, you have to install the official Vulkan SDK, see step 2-4 on the original Vulkan patches author's GitHub page.
Remove Wine file bindings
For security reasons it may be useful to remove the preinstalled Wine bindings so Windows applications cannot be launched directly from a file manager or from the browser (Firefox offers to open EXE files directly with Wine!). If you want to do this, you may add the following NoExtract lines in /etc/pacman.conf
:
NoExtract = usr/lib/binfmt.d/wine.conf NoExtract = usr/share/applications/wine.desktop
Wine is setting its own applications as defaults
Every time Wine creates (or updates) a prefix it will set its own bundled apps like Notepad and Winebrowser as the default text editor and web browser accordingly.
A way to work around this undesirable behavior is by using this environment variable:
$ WINEDLLOVERRIDES=winemenubuilder.exe=d ...
WineASIO
If you need professional audio support under wine you can use wineasioAUR which provides an ASIO interface for wine that you can then use with JACK.
In order to use wineasio you must add yourself to the realtime
user group.
Next you need to register wineasio in your desired wine prefix. Register the 32-bit and/or 64-bit version as needed:
$ regsvr32 /usr/lib32/wine/i386-windows/wineasio32.dll $ wine64 regsvr32 /usr/lib/wine/x86_64-windows/wineasio64.dll
Disable starting explorer.exe
If you run a text mode (Command User Interface) executable without X installed, these errors might appear while starting the executable:
0060:err:winediag:nodrv_CreateWindow Application tried to create a window, but no driver could be loaded. 0060:err:winediag:nodrv_CreateWindow L"The explorer process failed to start." 0060:err:systray:initialize_systray Could not create tray window
This is because wine
by default starts explorer.exe. Even wineconsole
starts explorer.exe /desktop
according to ps
output.
Starting explorer including systray can be disabled with this environment setting:
$ WINEDLLOVERRIDES="explorer.exe=d" wine program.exe
Depending on your CUI program, you might be able to use it with lowest memory footprint by disabling services.exe too:
$ WINEDLLOVERRIDES="explorer.exe,services.exe=d" wine program.exe
Troubleshooting
See Wine User's Guide and Wine FAQ (especially its Troubleshooting section) for general tips.
Also refer to the Wine AppDB for an advice on specific applications.
General installation issues
Each Wine prefix has a lot of persistent state, between the installed programs and the registry. The first step to troubleshooting issues with program installation should be to either create an isolated prefix, or clear the default prefix via rm -rf ~/.wine
. The latter will delete any of the programs and settings you have added to the default prefix.
Error loading libc.so.6
You might get the following error when running wine:
$ wine cmd
/usr/bin/wine: error while loading shared libraries: libc.so.6: cannot create shared object descriptor: Operation not permitted
This is caused by the syscall to mmap2
failing:
mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = -1 EPERM (Operation not permitted)
This is a known bug in the kernel.
Changing the vm.mmap_min_addr
sysctl value from the default of 65536
seems to fix the problem:
# sysctl -w vm.mmap_min_addr=32768
Xwayland problems
If you use Wine under Xwayland, you can activate the option for "Emulating a virtual desktop" in the Graphics Tab in winecfg, to avoid problems with:
- flickering;
- wrong window location;
- wrong mouse cursor location and clicks;
- keyboard detection.
If disabling the Virtual Desktop left you unable to interact with the winecfg window with mouse & keyboard anymore, you can explicitly start winecfg on a Virtual Desktop anyway and reenable it with:
$ wine explorer /desktop=name,800x600 winecfg
When starting GUI windows (eg. winecfg) with Wayland and none are displayed with these errors in console:
$ wine winecfg
Authorization required, but no authorization protocol specified 008c:err:winediag:nodrv_CreateWindow Application tried to create a window, but no driver could be loaded. 008c:err:winediag:nodrv_CreateWindow L"The explorer process failed to start." 008c:err:systray:initialize_systray Could not create tray window
You may try setting the DISPLAY
variable to :1
:
$ DISPLAY=:1 wine winecfg
Keyboard input not working
This could be caused by the window manager not switching focus. In the Graphics tab of winecfg, disable the 'Allow the window manager...' options, or set windowed mode with 'Emulate a virtual desktop'.
- Some suggest to toggle all the Window settings, click Apply, then change them back. If that does not work, try the above.
If the keyboard does not work after unfocusing the application, try editing the registry:
- Under
HKEY_CURRENT_USER\Software\Wine\X11 Driver
, add a string valueUseTakeFocus
and set it toN
. - Alternatively, you can use winetricks to set the value:
$ winetricks usetakefocus=n
or use wine reg$ wine reg add 'HKEY_CURRENT_USER\Software\Wine\X11 Driver' /t REG_SZ /v UseTakeFocus /d N /f
Application fails to start
Some older games and applications assume that the current working directory is the same as that which the executable is in. Launching these executables from other locations will prevent them from starting correctly. Use cd path_containing_exe
before invoking Wine to rule this possibility out.
See also
- Wine Homepage
- Wine Wiki
- Wine Application Database (AppDB) - Information about running specific Windows applications (Known issues, ratings, guides, etc tailored to specific applications)
- Wine Forums - A great place to ask questions after you have looked through the FAQ and AppDB
- Gentoo:Wine
- Darling - a similar project for MacOS software
- WineASIO - GitHub page of the WineASIO project with further information