Gérer en ligne de commande des préfixes wine

windows-64
Lorsque j’ai commencé a utiliser wine, j’installais tous mes jeux et programmes Windows sous le même préfixe wine (la configuration de windows, sa base de registre, etc… était partagée entre tout les programmes). Du coup, au bout d’un moment, la base de registre et les multiples configurations de chaque programme commençaient a alourdir le préfixe.

Je savais qu’il existait des outils tels que Play on linux permettant de gérer de multiples préfixes et versions de wine, mais je n’ai jamais accroché a cet outil que je trouve trop fouilli.

J’ai donc commencé a installer manuellement mes jeux sous un préfixe différent a chaque fois, grace a ce genre de commande WINEPREFIX=/home/…/mon_jeu wine ./Setup.exe.

Finalement, je me suis fabriqué un petit script me permettant de réaliser les actions suivantes:

  • Création d’un préfixe wine dans ~/.wine-prefix/mon_jeu (s’il n’existe pas), puis lancement de wine sur ce préfixe.
  • Positionnement d’un disque D: sur le disque C: du préfixe wine par défaut ( /home/login/.wine/drive_c/ )
  • Redirection du dossier Mes Documents vers /home/login/Documents/Wine-documents

Création du script

Pour réaliser ceci, créez un fichier nommé wineenv

gedit ~/wineenv

Dans l’éditeur, copiez ceci

#!/bin/sh
# Script permettant de gerer des prefix wine
# Documentation ici: http://forum.ubuntu-fr.org/viewtopic.php?id=370126

BASEPREFIX=/home/$USER/.wine-prefix/
DOCUMENTS=/home/$USER/Documents/Wine-documents/
[ -d $BASEPREFIX ] || mkdir -p $BASEPREFIX
[ -d $DOCUMENTS ] || mkdir -p $DOCUMENTS

if [ $# -lt 2 ]
then
    echo "Usage: $0 prefix wine..."
    echo "Ex:    $0 my_prefix winecfg"
    exit 2
fi



makeprefix()
{
    echo "Creation de l'environnement wine $1"
    env WINEPREFIX=$2 wine do_not_exists 2>/dev/null

    echo "Configuration de l'environnement"
    rm $2/drive_c/users/$USER/Mes\\ documents
    ln -s $DOCUMENTS $2/drive_c/users/$USER/Mes\\ documents
    ln -s /home/$USER/.wine/drive_c/ $2/dosdevices/d\\:
}


prefix_path=$BASEPREFIX/$1
prefix=$1
shift

if [ ! -d $prefix_path ]
then
    makeprefix $prefix $prefix_path
fi
env WINEPREFIX="/home/$USER/.wine-prefix/$prefix" $*

Enfin, rendez le éditable et copiez le dans /usr/local/bin

chmod +x ~/wineenv
sudo mv ~/wineenv /usr/local/bin

Voila, vous pouvez désormais lancer wine grâce a cette commande

wineenv mon_jeu wine ....

Auto complétion bash

Pour que bash puisse de manière automatique compléter le nom des préfixes lorsque l’on appuiera sur la touche tab, il suffit de faire ceci:

sudo gedit /etc/bash_completion.d/wineenv

Dans le document qui s’ouvre, recopier ceci:

_wineenv()
{
    local cur prev opts
    COMPREPLY=()
    cur="${COMP_WORDS[COMP_CWORD]}"
    prev="${COMP_WORDS[COMP_CWORD-1]}"
    if [ $COMP_CWORD -lt 2 ]
    then 
        opts=`ls ~/.wine-prefix/`
        COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
    else
        if [[ "$cur" == .* ]]
        then
            COMPREPLY=( $(compgen -f -d -- ${cur}) )
        else
            COMPREPLY=( $(compgen -c -- ${cur}) )
        fi
    fi
    return 0
}

complete -F _wineenv wineenv

Au prochain démarrage de l’ordinateur, l’auto complétion devrait fonctionner.

Installation des scripts

Si vous souhaitez installer directement ces scripts sans vous embêter a réaliser les étapes précédentes, copiez simplement ces commandes:

sudo wget http://dl.cheztoi.net/wineenv -O /usr/local/bin/wineenv
sudo chmod +x /usr/local/bin/wineenv
sudo wget http://dl.cheztoi.net/wineenv_bash -O /etc/bash_completion.d/wineenv

L’auto complétion ne fonctionnera qu’au prochain démarrage de l’ordinateur.

Ces scripts ont également été postés sur le forum ubuntu-fr ici.

Flattr this!

Vus : 942
Publié par Jos : 18