|
ConvergedFrontends
Many wine front ends exist. Let's see what can be converged.
IntroductionMany people have written front ends for wine that allow managing multiple wine bottles and let users contribute recipes for installing various applications. It would be nice if the bottles managed by these front ends were interchangeable, so you could create a bottle with one front end, and see it in the list of bottles of another front end (and launch its app from either). It would also be nice if the user-contributed recipes were interchangeable, e.g. if you could use a recipe written for one front end with other front ends. We could then have a global repository of recipes which would grow much faster than the isolated recipe repository for any individual front end. And what the heck, it would be nice if menu items for the apps disappeared properly when you delete the bottle. (That probably just requires creating symlinks from ~/.local/applications/foo into ~/.local/share/wine/foo/xdgmenu or something like that; the devil is in the details.) Directories
Cleaning up a prefixIt is our hope that acceptable removal of a prefix should be as simple as deleting the prefix -- this means, for instance, that menu items disappear and front ends "know" that the prefix and its associated apps are gone. TODO: this is a bit tricky implementation. Steps:
Unresolved issuesSoftware Center would like to be able to list and remove Wine prefixes, but to do this it needs to know "the purpose" of each one. This generally means a specific app, however it's quite possible for a given prefix to have more than one program installed. We'll need some sort of way of indicating this (perhaps new metadata?) Recipes (verbs)Recipes (also called verbs) are bourne shell scripts that are sourced by the front end. They may call functions defined by the front end; all such functions are lowercase and start with w_. They may read variables defined by the front end; all such variables are uppercase, and most start with W_. The winetricks environment variable WINE and the standard Wine variable WINEPREFIX are obeyed. Each recipe consists of metadata followed by a function. The metadata looks like this: w_metadata verbname category \ key=value \ key=value \ ... where legal categories are 'apps' or 'games' at the moment. e.g. w_metadata wog games \ title="World of Goo Demo" \ publisher="2D Boy" \ year="2008" \ media="download" \ file1="WorldOfGooDemo.1.0.exe" A simple function looks like this: load_bioshock_demo() {
w_download http://us.download.nvidia.com/downloads/nZone/demos/nzd_BioShockPC.zip 7a19186602cec5210e4505b58965e8c04945b3cf
cd "$W_TEMP"
w_try unzip -q "$W_CACHE/$W_PACKAGE"/nzd_BioShockPC.zip
w_try cd "BioShock PC Demo"
w_try wine setup.exe
}Supported metadataFor the moment, the list of supported metadata elements is kept short on purpose. More will be added when needed.
The 'wineversion' metadata should be familiar to PlayOnLinux scripters. Other front ends may choose to ignore this field (e.g. wisotool will ignore it because wisotool is partly aimed at Wine developers, who always want to use the one they just built). Predefined VariablesRecipes can rely on the following variables being set before they are executed:
Predefined FunctionsRecipes may call any of the following shell functions:
Reference ImplementationFor a preview version of wisotool that implements the new api, see http://code.google.com/p/winezeug/source/browse/trunk/wisotool2 This currently embeds four recipes inside itself; later the recipes will live in a separate directory, (usually) one file per recipe. |
hi, first i need to thanks the whole wine/winetricks contributors/devs as their work is so heavily maintained and developed for the ease of so many users. I daily use wine and follow the winetricks trunk history for my needs, What i regret is the fact that none of wine/winetricks propose, by default, installations into an existing bottle or to create a new one. Ok there are other frontends for that but i think that this feature is heavily missing into wine/winetricks. (why the need of other tools, even if they are good ones like playonlinux. Things might be simple, this should also remove lot of issues/bugs). Really hope to see this included soon.