Partager une même installation PlayOnLinux avec les autres utilisateurs

Maintenant que nous avons un linux intégré au kwartz, il serait intéressant d’émuler des applications conçues pour windows, comme Office 2010. C’est exactement ce que permet wine et l’interface qui repose dessus : PlayOnLinux (abrégé POL).

Première limitation de wine, et donc de PlayOnLinux : l’installation d’une application est spécifique à un utilisateur (dans le dossier ~/.PlayOnLinux). Dans un environnement multi-utilisateurs, pas possible d’installer un programme de 2 Go à chaque fois. Une idée serait de copier un dossier POL fonctionnel, et de faire un lien symbolique dessus. Mais seconde limitation de wine : il faut aussi être propriétaire de ces fichiers.

On va donc avoir besoin d’un script qui modifie notre copie de POL à la connexion d’un utilisateur ; ceci n’est possible qu’en root, donc on va devoir configurer aussi sudo. Et il faudra encore modifier les raccourcis définis dans PlayOnLinux (~/.PlayOnLinux/shortcuts) pour qu’ils pointent bien chez l’utilisateur en cours. Tout un programme :)

Préparation de PlayOnLinux et sudo

Après avoir installé le logiciel (ici Office 2010) sur un compte de référence, copions le contenu de ~/.PlayOnLinux dans un dossier commun, par exemple /var/POL :

rm -rf /var/POL
cp -R ~/.PlayOnLinux /var/POL

Ensuite, créons un script de démarrage (/usr/local/bin/office.sh) qui prend en paramètre le nom de l’utilisateur se connectant :

#!/bin/bash
# Attribution du dossier POL
# $1 : username
groupe=$(id -gn $1)
uid=$(id -u $1)
POL=/var/POL
home=$(eval echo ~$1)
lien=$home/.PlayOnLinux

# Sauvegarde du lien précédent
if [ -d "$lien" ]; then
    mv $lien $lien.bak
fi
# Spécifique à Office 2010 : création du dossier utilisateur ...
users=$POL/wineprefix/Office2010/drive_c/users/$uid
mkdir $users
# ... et des liens symboliques pour que office puisse retrouver 
# les dossiers "Mes documents" et "Bureau"
if [ ! -h $users/Mes\ documents ];then
	ln -s $home $users/Mes\ documents
fi
if [ ! -h $users/Bureau ];then
	ln -s $home/Bureau/ $users/Bureau
fi
# Changement de propriétaire du dossier de POL
chown -h -R $1:$groupe $POL
ln -s $POL $lien
chown -h -R $1:$groupe $lien
# Copie des raccourcis sur le bureau
cp --preserve=ownership $POL/shortcuts/*.desktop $home/Bureau

On autorise à exécuter ce script en sudo (en fait, chown nécessite d’être root) sans mot de passe en créant un fichier /etc/sudoers.d/office contenant :

%users ALL=NOPASSWD: /usr/local/bin/office.sh

Ne pas oublier de le verrouiller en écriture pour éviter les fuites :

chmod +x-w /usr/local/bin/office.sh

Modification des raccourcis

Comme on a déplacé le dossier POL, les raccourcis permettant de lancer les apllications ne fonctionnent plus. Dans le dossier /var/POL/shortcuts, il faut d’abord modifier le script d’exécution ; par exemple avec Word 2010 :

#!/bin/bash
[ "$PLAYONLINUX" = "" ] && exit 0
source "$PLAYONLINUX/lib/sources"
export WINEPREFIX="$(eval echo ~$USER)/.PlayOnLinux//wineprefix/Office2010"
export WINEDEBUG="-all"
cd "$WINEPREFIX/drive_c/./Program Files/Microsoft Office/Office14"
POL_Wine "WINWORD.EXE"  "$@"

En fait, comme ~ n’est pas reconnu proprement, j’ai modifié la variable WINEPREFIX et la commande cd. « $(eval echo ~$USER) » permet de retrouver l’adresse absolue du home de l’utilisateur en cours.

On peut aussi créer un raccourci bureau ; pour cela on va créer un fichier Word_2010.destop comme suit :

[Desktop Entry]
Encoding=UTF-8
Name=Word 2010
Comment=PlayOnLinux
Type=Application
Exec=/usr/share/playonlinux/playonlinux --run "Microsoft Word 2010" %F
Icon=/var/POL/icones/full_size/Microsoft Word 2010
Name[fr_FR]=Word 2010
StartupWMClass=Word 2010.exe
Categories=

Ne pas oublier de lui donner les droits d’exécution :

chmod +x Word_2010.destop

Exécution à la connexion

Reste encore à lancer tout cela à l’ouverture d’une session graphique ; modifions le fichier /etc/xprofile comme suit :

#!/bin/sh
bash -c "sudo /usr/local/bin/office.sh $(whoami) > ~/.office.log 2>&1"

sudo permet de changer le propriétaire du dossier /var/POL, bash permet de lancer le script avec bash (et non sh qui est utilisé par défaut), et $(whoami) permet d’avoir le login de la personne se connectant. Et en cas de soucis, on a même un log dans le dossier personnel (~/.office.log).

Tada !

Publicités