Bottle Specification

Wine uses the environment variable WINEPREFIX, if present, to locate the user.reg, system.reg, and dosdevices files that define a virtual windows environment (aka bottle).

Many ThirdPartyApplications, also known as wrappers around wine or front ends for wine, use this to manage multiple wineprefixes or bottles for the user.

This page proposes a standard for interoperability between wrappers. For another possible approach to a standard bottling process, see http://code.google.com/p/winezeug/wiki/ConvergedFrontends.

Locating Wineprefixes

Users might expect to be able to create a wineprefix with one wrapper, and have it show up properly in other wrappers. For this to be possible, the various wrappers need to support a standard method of locating wineprefixes.

So, we propose that the directory ~/.local/share/wineprefixes should contain wineprefixes or symlinks to wineprefixes.

To add a new wineprefix 'blart' and announce it to compliant wrappers, it suffices to do

  WINEPREFIX=$HOME/.local/share/wineprefixes/blart wine cmd /c echo hi

Or, to put the wineprefix on a different device, symlink to it like this:

  sudo mount /data/bigdisk
  WINEPREFIX=/data/bigdisk/blart wine cmd /c echo hi
  ln -s /data/bigdisk/blart ~/.local/share/wineprefixes/blart

Describing Wineprefixes

Many wrappers name wineprefixes with long names separate from the directory name. Users might expect the wineprefix to show up with this long name regardless of which wrapper is used.

Wrappers may also want to store other information about the wineprefix.

So, we propose that the file 'wrapper.cfg' inside the wineprefix (next to user.reg) be used to store this information. It should be a utf-8 text file consisting of lines in the format

ww_var="value"

For instance,

ww_name="My WoW / Starcraft II bottle"
ww_wine="/usr/local/wine-1.2.2-xinput2/bin/wine"

This format allows it to be sourced from a shell script, or parsed by a wrapper written in some other language. All lines begin with the prefix ww_ (for winewrapper) to avoid confusion with existing environment or shell variables.

The special characters \, $, and " should not occur inside values for now. A later draft of this standard may define what they mean.

The file and all lines are optional.

Wrappers should only create the file and put lines in it that they really need to function properly.

The following lines have standard meanings:

  • ww_name="long name of prefix"
  • ww_wine="path to wine"

Other proposed standard variables include

  • ww_wineserver="path to wineserver" (but this could be guessed by appending 'server' or 'server/wineserver' to ww_wine?)
  • ww_arch="win32" or "win64" (but this could be detected by examining user.reg?)


CategoryDevelopment CategoryThirdParty

BottleSpec (last edited 2013-07-29 05:09:04 by KyleAuble)