Gérer en ligne de commande des préfixes wine
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.