/winetricks

Winetricks is an easy way to work around problems in Wine

Primary LanguageShellGNU Lesser General Public License v2.1LGPL-2.1

Winetricks

Build Status License

Homepage of Winetricks, previously hosted at https://code.google.com/p/winetricks.

Winetricks is an easy way to work around problems in Wine.

It has a menu of supported games/apps for which it can do all the workarounds automatically. It also allows the installation of missing DLLs and tweaking of various Wine settings.

The latest version can be downloaded here: https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetricks

Tagged releases are accessible here: https://github.com/Winetricks/winetricks/releases

Installing

The winetricks package should be used if it is available and up to date. The package is available in most mainstream (Unix-like) Operating Systems:

Note: packaged Debian / Ubuntu winetricks versions are typically outdated, so a manual installation is recommended.

If the package is unavailable, outdated, or the latest version is desired, a manual installation of winetricks can be done. E.g.:

sudo -- sh -c '
cat > /usr/local/bin/update_winetricks.sh <<_EOF_SCRIPT
#!/bin/sh

cd "${HOME}" # change to a path writeable by current user
wget https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetricks
chmod +x winetricks
sudo mv winetricks /usr/local/bin
wget https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetricks.bash-completion
sudo mv winetricks.bash-completion /usr/share/bash-completion/completions/winetricks
_EOF_SCRIPT
chmod +x /usr/local/bin/update_winetricks.sh
'

To use curl instead of wget: subsitute all wget calls with curl -O, in the winetricks update script.

Note: the path /usr/local/bin must be in your PATH (env variable) for this to work.

Updating

This winetricks update scripts can easily automated, via (where available) a systemd timer unit...

sudo -- sh -c '
cat > /etc/systemd/system/winetricks_update.timer <<_EOF_TIMER
[Unit]
Description=Run winetricks update script weekly (Saturday)

[Timer]
OnCalendar=Sat
Persistent=true

[Install]
WantedBy=timers.target
_EOF_TIMER

sudo cat > /etc/systemd/system/winetricks_update.service <<_EOF_SERVICE
[Unit]
Description=Run winetricks update script
After=network.target

[Service]
ExecStart=/usr/local/bin/update_winetricks.sh
Type=oneshot
_EOF_SERVICE
'

To start and enable the winetricks update timer:

sudo systemctl daemon-reload
sudo systemctl enable winetricks_update.timer
sudo systemctl start winetricks_update.timer

Or using the more tradional Unix crontab...

sudo cp "/usr/local/bin/update_winetricks.sh" "/etc/cron.weekly/"

The core winetricks script can also be updated by simply doing:

winetricks --self-update

or:

sudo winetricks --self-update

for a system-wide winetricks installation.

Custom .verb files

New dll/settings/programs can be added to Winetricks by passing a custom .verb (format below)

Example icecat.verb:

w_metadata icecat apps \
    title="GNU Icecat 38.8.0" \
    publisher="GNU Foundation" \
    year="2016" \
    media="download" \
    file1="icecat-38.8.0.en-US.win32.zip" \
    installed_exe1="${W_PROGRAMS_X86_WIN}/icecat/icecat.exe"

load_icecat()
{
    w_download https://ftp.gnu.org/gnu/gnuzilla/38.8.0/${file1} e5f9481e78710c25eb3a271d81aceb19ef44ff6e8599da7d5f7a2da584c01213
    w_try_unzip "${W_PROGRAMS_X86_UNIX}" "${W_CACHE}/${W_PACKAGE}/${file1}"
}

Note that the file prefix (icecat.verb) and command name (icecat) must match. All metadata fields are optional, only the command name and category are required.

Tests

The tests need bashate, checkbashisms, and shellcheck>=0.4.4 installed. Makefile supports a few test targets:

  • check - runs './tests/winetricks-tests quick' (without first clearing $WINETRICKS_CACHE)
  • shell-checks - runs './tests/shell-checks'
  • test - runs './tests/winetricks-tests full' (and clears $WINETRICKS_CACHE first)
  • xvfb-check - runs './tests/winetricks-tests xvfb-check' (without first clearing $WINETRICKS_CACHE first)

Support