GNU_Raziel |
Dimanche 3 Juin 2007 à 21:19
|
GNU_Raziel
|
Nom du script : WineBooster
Nom reel : Projet WineBooster
Editeur : GNU_Raziel
Commentaire : Usage exclusif réservé au projet PlayOnLinux
Script :
#!/bin/bash
if [ "$PLAYONLINUX" = "" ]
then
exit 0
fi
source "$PLAYONLINUX/lib/sources"
cfg_check
presentation "Optimisation de Wine" "PlayOnLinux" "http://webadvance.free.fr/PlayOnLinux/index.php" "GNU_Raziel" "WineBooster"
message "Si vous ne SAVEZ PAS quoi mettre en valeur, laissez la valeur par DEFAUT !!!"
JEUX=$(menu "Lancer un jeu" "$(ls $REPERTOIRE/configurations/installed)" 400 300);
verifier_installation_e "$JEUX"
A_WVERSION=`cat $REPERTOIRE/jeux/$JEUX | grep "Version" | awk {'print $2'} | tr -d '\' | sed -e {s/Version//g} -e {s/\"//g} -e {s/=//g}`
if [ "$A_WVERSION" == "" ]; then
WVERSION=$(champ "Quelle version de Windows utiliser? (Valeurs : vista, win2003, winxp, win2k, winnt, winme, win98, win95, win31 - Défault : winxp )" "winxp" ) ;
else
WVERSION=$(champ "Quelle version de Windows utiliser? (Valeurs : vista, win2003, winxp, win2k, winnt, winme, win98, win95, win31 - Défault : winxp )" "$A_WVERSION" ) ;
fi
if [ "$WVERSION" == "vista" ]; then
WINE_WVERSION="vista"
else if [ "$WVERSION" == "win2003" ]; then
WINE_WVERSION="win2003"
else if [ "$WVERSION" == "winxp" ]; then
WINE_WVERSION="winxp"
else if [ "$WVERSION" == "win2k" ]; then
WINE_WVERSION="win2k"
else if [ "$WVERSION" == "winnt" ]; then
WINE_WVERSION="winnt"
else if [ "$WVERSION" == "winme" ]; then
WINE_WVERSION="winme"
else if [ "$WVERSION" == "win98" ]; then
WINE_WVERSION="win98"
else if [ "$WVERSION" == "win95" ]; then
WINE_WVERSION="win95"
else if [ "$WVERSION" == "win31" ]; then
WINE_WVERSION="win31"
else
WINE_WVERSION="winxp"
fi
fi
fi
fi
fi
fi
fi
fi
fi
A_DDR=`cat $REPERTOIRE/jeux/$JEUX | grep "DirectDrawRenderer" | awk {'print $2'} | tr -d '\' | sed -e {s/DirectDrawRenderer//g} -e {s/\"//g} -e {s/=//g}`
if [ "$A_DDR" == "" ]; then
DDR=$(champ "Quel mode de rendu utiliser? (Valeurs : Opengl, gdi - Défault : gdi)" "gdi" ) ;
else
DDR=$(champ "Quel mode de rendu utiliser? (Valeurs : Opengl, gdi - Défault : gdi)" "$A_DDR" ) ;
fi
if [ "$DDR" == "opengl" ]; then
WINE_DDR="opengl"
else
WINE_DDR="gdi"
fi
A_VERTEXSHADER=`cat $REPERTOIRE/jeux/$JEUX | grep "VertexShaderMode" | awk {'print $2'} | tr -d '\' | sed -e {s/VertexShaderMode//g} -e {s/\"//g} -e {s/=//g}`
if [ "$A_VERTEXSHADER" == "" ]; then
VERTEXSHADER=$(champ "Activer le Mode VertexShader? (Défault : Non ou N)" "Non" ) ;
else
VERTEXSHADER=$(champ "Activer le Mode VertexShader? (Défault : Non ou N)" "$A_VERTEXSHADER" ) ;
fi
if [ "$VERTEXSHADER" == "Oui" ]; then
WINE_VS="enabled"
else if [ "$VERTEXSHADER" == "Y" ]; then
WINE_VS="enabled"
else
WINE_VS="disabled"
fi
fi
A_PIXELSHADER=`cat $REPERTOIRE/jeux/$JEUX | grep "PixelShaderMode" | awk {'print $2'} | tr -d '\' | sed -e {s/PixelShaderMode//g} -e {s/\"//g} -e {s/=//g}`
if [ "$A_PIXELSHADER" == "" ]; then
PIXELSHADER=$(champ "Activer le Mode PixelShader? (Défault : Non ou N)" "Non" ) ;
else
PIXELSHADER=$(champ "Activer le Mode PixelShader? (Défault : Non ou N)" "$A_PIXELSHADER" ) ;
fi
if [ "$VERTEXSHADER" == "Oui" ]; then
WINE_PS="enabled"
else if [ "$PIXELSHADER" == "Y" ]; then
WINE_PS="enabled"
else
WINE_PS="disabled"
fi
fi
A_UGLSL=`cat $REPERTOIRE/jeux/$JEUX | grep "UseGLSL" | awk {'print $2'} | tr -d '\' | sed -e {s/UseGLSL//g} -e {s/\"//g} -e {s/=//g}`
if [ "$A_UGLSL" == "" ]; then
UGLSL=$(champ "Activer le Support GLSL? (Défault : Non ou N)" "Non" ) ;
else
UGLSL=$(champ "Activer le Support GLSL? (Défault : Non ou N)" "$A_UGLSL" ) ;
fi
if [ "$UGLSL" == "Oui" ]; then
WINE_GLSL="enabled"
else if [ "$UGLSL" == "Y" ]; then
WINE_GLSL="enabled"
else
WINE_GLSL="disabled"
fi
fi
A_VMS=`cat $REPERTOIRE/jeux/$JEUX | grep "VideoMemorySize" | awk {'print $2'} | tr -d '\' | sed -e {s/VideoMemorySize//g} -e {s/\"//g} -e {s/=//g}`
if [ "$A_VMS" == "" ]; then
VMS=$(champ "Quel est la quantité de mémoire (Mo) de votre Carte Graphique? (Défault : 64)" "64" ) ;
else
VMS=$(champ "Quel est la quantité de mémoire (Mo) de votre Carte Graphique? (Défault : 64)" "$A_VMS" ) ;
fi
if [ "$VMS" == "" ]; then
WINE_VMS="64"
else
WINE_VMS=$VMS
fi
A_ORM=`cat $REPERTOIRE/jeux/$JEUX | grep "OffscreenRenderingMode" | awk {'print $2'} | tr -d '\' | sed -e {s/OffscreenRenderingMode//g} -e {s/\"//g} -e {s/=//g}`
if [ "$A_ORM" == "" ]; then
ORM=$(champ "Quel Mode utiliser pour afficher les \"OffScreen textures/Images\"? (Valeurs : backbuffer, pbuffer, fbo - Défault : backbuffer)" "backbuffer" ) ;
else
ORM=$(champ "Quel Mode utiliser pour afficher les \"OffScreen textures/Images\"? (Valeurs : backbuffer, pbuffer, fbo - Défault : backbuffer)" "$A_ORM" ) ;
fi
if [ "$ORM" == "pbuffer" ]; then
WINE_ORM="pbuffer"
else if [ "$ORM" == "fbo" ]; then
WINE_ORM="fbo"
else
WINE_ORM="backbuffer"
fi
fi
A_RTLM=`cat $REPERTOIRE/jeux/$JEUX | grep "RenderTargetLockMode" | awk {'print $2'} | tr -d '\' | sed -e {s/RenderTargetLockMode//g} -e {s/\"//g} -e {s/=//g}`
if [ "$A_RTLM" == "" ]; then
RTLM=$(champ "Quel Mode utiliser pour gerer le Rendu de Cible vérouillée? (Valeurs : auto, readdraw, readtex, texdraw, textex, disabled - Défault : auto)" "auto" ) ;
else
RTLM=$(champ "Quel Mode utiliser pour gerer le Rendu de Cible vérouillée? (Valeurs : auto, readdraw, readtex, texdraw, textex, disabled - Défault : auto)" "$A_RTLM" ) ;
fi
if [ "$RTLM" == "disabled" ]; then
WINE_RTLM="disabled"
else if [ "$RTLM" == "readdraw" ]; then
WINE_RTLM="readdraw"
else if [ "$RTLM" == "readtex" ]; then
WINE_RTLM="readtex"
else if [ "$RTLM" == "texdraw" ]; then
WINE_RTLM="texdraw"
else if [ "$RTLM" == "textex" ]; then
WINE_RTLM="textex"
else
WINE_RTLM="auto"
fi
fi
fi
fi
fi
A_WDESKTOP=`cat $REPERTOIRE/jeux/$JEUX | grep "Desktop" | awk {'print $2'} | tr -d '\' | sed -e {s/Desktop//g} -e {s/\"//g} -e {s/=//g}`
if [ "$A_WDESKTOP" == "" ]; then
WDESKTOP=$(champ "Quelle résolution du mode WINE Fenêtré choisir (NE CHANGE PAS LA RESOLUTION DU JEU !!)? (Exemple : 1024x768 - Défault : 0 = mode plein écran)" "0" ) ;
else
WDESKTOP=$(champ "Quelle résolution du mode WINE Fenêtré choisir (NE CHANGE PAS LA RESOLUTION DU JEU !!)? (Exemple : 1024x768 - Défault : 0 = mode plein écran)" "$A_WDESKTOP" ) ;
fi
if [ "$WDESKTOP" == "0" ]; then
WINE_DESKTOP="0"
else
WINE_DESKTOP=$WDESKTOP
fi
A_WMANAGED=`cat $REPERTOIRE/jeux/$JEUX | grep "Managed" | awk {'print $2'} | tr -d '\' | sed -e {s/Managed//g} -e {s/\"//g} -e {s/=//g}`
if [ "$A_WMANAGED" == "" ]; then
WMANAGED=$(champ "Autoriser le contrôle des fenêtres par votre gestionnaire? ( Défault : Oui ou Y )" "Oui" ) ;
else
WMANAGED=$(champ "Autoriser le contrôle des fenêtres par votre gestionnaire? ( Défault : Oui ou Y )" "$A_WMANAGED" ) ;
fi
if [ "$WMANAGED" == "Oui" ]; then
WINE_MANAGED="Y"
else if [ "$WMANAGED" == "Y" ]; then
WINE_MANAGED="Y"
else
WINE_MANAGED="N"
fi
fi
A_WDXGRAB=`cat $REPERTOIRE/jeux/$JEUX | grep "DXGrab" | awk {'print $2'} | tr -d '\' | sed -e {s/DXGrab//g} -e {s/\"//g} -e {s/=//g}`
if [ "$A_WDXGRAB" == "" ]; then
WDXGRAB=$(champ "Autoriser DirectX a empêcher le pointeur de souri de sortir des fenêtres? ( Défault : Non ou N )" "Non" ) ;
else
WDXGRAB=$(champ "Autoriser DirectX a empêcher le pointeur de souri de sortir des fenêtres? ( Défault : Non ou N )" "$A_WDXGRAB" ) ;
fi
if [ "$WDXGRAB" == "Oui" ]; then
WINE_DXGRAB="Y"
else if [ "$WDXGRAB" == "Y" ]; then
WINE_DXGRAB="Y"
else
WINE_DXGRAB="N"
fi
fi
A_WAUDIO=`cat $REPERTOIRE/jeux/$JEUX | grep "Audio" | awk {'print $2'} | tr -d '\' | sed -e {s/Audio//g} -e {s/\"//g} -e {s/=//g}`
if [ "$A_WAUDIO" == "" ]; then
WAUDIO=$(champ "Quel Pilote Audio choisir? (Valeurs : oss, alsa - Défault : alsa)" "alsa" ) ;
else
WAUDIO=$(champ "Quel Pilote Audio choisir? (Valeurs : oss, alsa - Défault : alsa)" "$A_WAUDIO" ) ;
fi
if [ "$WAUDIO" == "oss" ]; then
WINE_AUDIO="oss"
else
WINE_AUDIO="alsa"
fi
A_AEMUL=`cat $REPERTOIRE/jeux/$JEUX | grep "EmulDriver" | awk {'print $2'} | tr -d '\' | sed -e {s/EmulDriver//g} -e {s/\"//g} -e {s/=//g}`
if [ "$A_AEMUL" == "" ]; then
AEMUL=$(champ "Emuler le pilote DirectSound? (Défault : Non ou N)" "Non" ) ;
else
AEMUL=$(champ "Emuler le pilote DirectSound? (Défault : Non ou N)" "$A_AEMUL" ) ;
fi
if [ "$AEMUL" == "Oui" ]; then
WINE_AEMUL="Y"
else if [ "$AEMUL" == "Y" ]; then
WINE_AEMUL="Y"
else
WINE_AEMUL="N"
fi
fi
TEMP="$HOME/.PlayOnLinux/tmp/WineBooster"
chmod 777 $TEMP -R
rm $TEMP -R
mkdir -p $TEMP
cd $REPERTOIRE/wineprefix/$JEUX
select_prefixe "$(pwd)"
echo "[HKEY_CURRENT_USER\Software\Wine\Direct3D]" > $TEMP/winebooster.reg
echo "\"DirectDrawRenderer\"=\"$WINE_DDR\"" >> $TEMP/winebooster.reg
echo "\"RenderTargetLockMode\"=\"$WINE_RTLM\"" >> $TEMP/winebooster.reg
echo "\"OffscreenRenderingMode\"=\"$WINE_ORM\"" >> $TEMP/winebooster.reg
echo "\"UseGLSL\"=\"$WINE_GLSL\"" >> $TEMP/winebooster.reg
echo "\"VideoMemorySize\"=\"$WINE_VMS\"" >> $TEMP/winebooster.reg
echo "\"PixelShaderMode\"=\"$WINE_PS\"" >> $TEMP/winebooster.reg
echo "\"VertexShaderMode\"=\"$WINE_VS\"" >> $TEMP/winebooster.reg
echo "[HKEY_CURRENT_USER\Software\Wine\Driver]" >> $TEMP/winebooster.reg
echo "\"Audio\"=\"$WINE_AUDIO\"" >> $TEMP/winebooster.reg
echo "[HKEY_CURRENT_USER\Software\Wine\DirectSound]" >> $TEMP/winebooster.reg
echo "\"EmulDriver\"=\"$WINE_AEMUL\"" >> $TEMP/winebooster.reg
echo "[HKEY_CURRENT_USER\Software\Wine\X11 Driver]" >> $TEMP/winebooster.reg
echo "\"Desktop\"=\"$WINE_DESKTOP\"" >> $TEMP/winebooster.reg
echo "\"Managed\"=\"$WINE_MANAGED\"" >> $TEMP/winebooster.reg
echo "\"DXGrab\"=\"$WINE_DXGRAB\"" >> $TEMP/winebooster.reg
echo "[HKEY_CURRENT_USER\Software\Wine]" >> $TEMP/winebooster.reg
echo "\"Version\"=\"$WINE_WVERSION\"" >> $TEMP/winebooster.reg
regedit $TEMP/winebooster.reg
simuler_reboot
chmod 777 $TEMP -R
rm $TEMP -R
message "Optimisation terminée"
exit
Un petit script permettant d'optimiser comme on le souhaite les principales options de Wine pour le jeu choisi Edité par GNU_Raziel
|
Quentin PÂRIS |
Dimanche 3 Juin 2007 à 21:23
|
Quentin PÂRIS
|
Wa !! Je suis impressionné la ! Il sera surement rajouté dans un menu "Expert" d'une version future de PlayOnLinux (1.6.2)
Très bonne initiative ! Ca marche bien ?
Bravo en tout cas
|
Christhaal |
Dimanche 3 Juin 2007 à 21:24
|
Christhaal
|
Ca ne modifie pas que pour un jeu, ca modifie pour tous les jeux c'est bien ca?
Il faudrait permettre l'enregistrement d'un réglage pour chaque jeu Et don un simple clique paramettrerais Wine pour le jeu désiré (ou pourquoi pas lancer l'optimisation juste avant de lancer le jeu, de manière transparente donc)
|
GNU_Raziel |
Dimanche 3 Juin 2007 à 21:25
|
GNU_Raziel
|
Oui ça marche super bien
Ca permet par exemple de tester facilement differents réglages pour un jeu ce qui nous permettra par la suite de proposer des versions "optimisés" des scripts
Et non, ca modifi pour un seul jeu a la fois, il faut relancer le script pour modifié un autre jeu Edité par GNU_Raziel
|
Quentin PÂRIS |
Dimanche 3 Juin 2007 à 21:27
|
Quentin PÂRIS
|
Non ! Le script demande au démarrage pour quel jeu appliquer les changements ! C'est géant je trouve ! Franchement bien !
Tu peux rajouter le mode "controlé par le gestionnaire de fenêtre ou non" ?
Sinon l'idéal de chez idéal, ce serait qu'il détecte la configuration de l'installation actuelle et qu'il les mettent en valeur par défault
Bravo !
|
GNU_Raziel |
Dimanche 3 Juin 2007 à 21:34
|
GNU_Raziel
|
Tu peux rajouter le mode "controlé par le gestionnaire de fenêtre ou non" ?
Connais pas ce mode, je n'ai survolé que très brièvement PlayOnLinux, dit m'en un peu plus la dessus
Sinon l'idéal de chez idéal, ce serait qu'il détecte la configuration de l'installation actuelle et qu'il les mettent en valeur par défault
je peu voir ça, mais mes cours de bash n'étant plus qu'un lointain souvenir, va falloir que je me rafraichisse la mémoire sur l'exploration et la "capture" de valeurs dans un fichier
|
Quentin PÂRIS |
Dimanche 3 Juin 2007 à 21:38
|
Quentin PÂRIS
|
Tu peux utiliser des choses style :
if [ $(cat user.reg | grep GLSL) = "" ]
then
pasglsl
fi
Pour le mode dont je te parle :
echo "[HKEY_CURRENT_USER\Software\Wine\X11 Driver]" > $REPERTOIRE/tmp/managed.reg
echo "\"Managed\"=\"N\"" >> $REPERTOIRE/tmp/managed.reg
regedit $REPERTOIRE/tmp/managed.reg
Si cette clée est mise, alors, le gestionnaire de fenêtre (metacity par exemple), ne pourra pas contrôler l'application. C'est nécessaire pour certains jeux
|
GNU_Raziel |
Dimanche 3 Juin 2007 à 21:40
|
GNU_Raziel
|
Tu peux utiliser des choses style :
if [ $(cat user.reg | grep GLSL) = "" ]
then
pasglsl
fi
Pour le mode dont je te parle :
echo "[HKEY_CURRENT_USER\Software\Wine\X11 Driver]" > $REPERTOIRE/tmp/managed.reg
echo "\"Managed\"=\"N\"" >> $REPERTOIRE/tmp/managed.reg
regedit $REPERTOIRE/tmp/managed.reg
Si cette clée est mise, alors, le gestionnaire de fenêtre (metacity par exemple), ne pourra pas contrôler l'application. C'est nécessaire pour certains jeux
Ca roule, je m'en occupe après Die Hard (j'adore ce film)
|
Quentin PÂRIS |
Dimanche 3 Juin 2007 à 21:47
|
Quentin PÂRIS
|
Pour tester, tu t'apercevra vite que la fenêtre n'est plus contrôlé par metacity, ou kwin.
Elle ne répondra plus aux alt+tab, s'affichera sur tout les bureaux, n'aura pas la même bordure, ne sera pas réduit dans la barre... ect... C'est nécessaire pour Half-Life 1 par exemple.
Quelques suggestions d'améliorations
- Tu peux aussi demander quelle version de windows utiliser entre vista, xp, 2003, 2000, me, 98, 95, 3.1, 3.0, 2.03
DXGrab : Proposer si les applications DirectX doivent empêcher la souris de quitter leur fenêtre (mais je ne me rappelle plus de la clé).
|
Quentin PÂRIS |
Dimanche 3 Juin 2007 à 21:54
|
Quentin PÂRIS
|
JEUX=$(champ "Quel jeu modifier? Vous devez utiliser le NOM DE CODE du jeu (Défault : aucun)" "" ) ;
if [ "$JEUX" == "" ]; then
message "Pourquoi avoir lancer ce script si vous ne voulez modifier aucun jeu ??!!"
exit 0
else
verifier_installation_e "$JEUX"
fi
Tu devrais remplacer par :
verifier_existence_jeux
JEUX=$(menu "Lancer un jeu" "$(ls $REPERTOIRE/configurations/installed)" 400 300);
if [ "$?" != 0 ]
then
menu_principal
fi
|
GNU_Raziel |
Dimanche 3 Juin 2007 à 22:05
|
GNU_Raziel
|
La récupération des valeurs de registre actuelles va être relou, par exemple pour la valeur "Desktop" on a ça :
raziel@linuxbox:~/.PlayOnLinux$ cat wineprefix/Painkiller/user.reg | grep "Desktop"
[Control Panel\\Desktop] 1180810832
[Control Panel\\Desktop\\WindowMetrics] 1180810832
"Desktop"="c:\\windows\\profiles\\raziel\\Bureau"
"Desktop"=str(2):"%USERPROFILE%\\Bureau"
"Desktop"="1024x768"
Sachant que si on affecte pas unev aleur a une clé, elle n'apparait pas dans le registre et a une valeur par défaut, par exemple si on ne donne pas de valeur a la clé "Desktop" de "X11Driver" elle n'apparait pas dans user.reg mais a quand même une valeur (0 en ce qui concerne cette clé)
Je pense donc faire la récupération des valeurs de clé directement dans les scripts d'installation pour éviter les problèmes
|
GNU_Raziel |
Dimanche 3 Juin 2007 à 22:13
|
GNU_Raziel
|
JEUX=$(champ "Quel jeu modifier? Vous devez utiliser le NOM DE CODE du jeu (Défault : aucun)" "" ) ;
if [ "$JEUX" == "" ]; then
message "Pourquoi avoir lancer ce script si vous ne voulez modifier aucun jeu ??!!"
exit 0
else
verifier_installation_e "$JEUX"
fi
Tu devrais remplacer par :
verifier_existence_jeux
JEUX=$(menu "Lancer un jeu" "$(ls $REPERTOIRE/configurations/installed)" 400 300);
if [ "$?" != 0 ]
then
menu_principal
fi
Marche pas, ca renvoi au menu principal quoi que tu fasses
|
Quentin PÂRIS |
Dimanche 3 Juin 2007 à 22:22
|
Quentin PÂRIS
|
Vire le if en dessous
|
GNU_Raziel |
Dimanche 3 Juin 2007 à 23:15
|
GNU_Raziel
|
Voila, la version a été modifié a votre convenance
Ca m'a fait tout drôle de me replonger dans les man de sed, ect...
J'espère que ça vous plait Edité par GNU_Raziel
|
Quentin PÂRIS |
Lundi 4 Juin 2007 à 19:52
|
Quentin PÂRIS
|
Ton script est intégré dans la version 1.6.2 ! Félécitation
|
GNU_Raziel |
Lundi 4 Juin 2007 à 20:31
|
GNU_Raziel
|
Super
Par contre je me demande pourquoi tu n'a pas intégré Painkiller, son addon et la mise a jour a la liste des jeux ?? les scripts et le jeu(+addon+update) fonctionnent super bien pourtant Edité par GNU_Raziel
|
Quentin PÂRIS |
Lundi 4 Juin 2007 à 20:32
|
Quentin PÂRIS
|
Ah ! Je l'ai oublié. J'ai juste quelques question à te poser dessus, donc je change de topic
|