#!/bin/bash
# Last changes made on "Sat,Nov,12th"
# _______ __ __ __ __ __ __
# | | |.--.--.| | |_|__| |_.----.|__|.----.| |--.-----.
# | || | || | _| | _| _|| || __|| <|__ --|
# |__|_|__||_____||__|____|__|____|__| |__||____||__|__|_____| [WIP] Version 0.2g
#
########################################################################################
# http://tehcakeswineblog.wordpress.com ######################################
####################################################################
IFS=$'
'
# ICON=$''
# echo $ICON | base64 -d > $HOME/.cache/multitricks/temp/icon.png
USER=$(whoami)
echo "[INFO] Running Multitricks Version 0.2g as: $USER"
while true; do
AGREE=$(zenity --width="300" --height="200" --list --column "" --title="Argee to use Multitricks?" --text "Choose Your Destiny?" \
"Run Multitricks" \
"Exit ")
case "${AGREE}" in
"Run Multitricks")
while true; do
MENU=$(zenity --width="800" --height="425" --list --column "Option" --column "Description" --column "Root" --title="If a Genie granted you three wishes, what would you wish for?" \
--text "What would you like, to do $USER? Your wish is my command." \
"Create a WINEPREFIX" "(A simple way to create new wineprefixes)" "(NO)" \
"Remove a WINEPREFIX" "(A simple way to remove wineprefixes)" "(NO)" \
"Install winetricks" "(Installs winetricks into /usr/local/bin)" "(YES)" \
"Run winetricks" "(Run winetricks over multiple wine versions and prefixes)" "(NO)" \
"Install a winetricks .verb" "(Install a .verb with multiple wine versions and prefixes)" "(NO)" \
"Delete winetricks .cache" "(Removes files in $HOME/.cache/winetricks)" "(NO)" \
"Install a windows .exe" "(Install a windows .exe with a selected wine version in a selected prefix)" "(NO)" \
"Install a windows .msi" "(Install a windows .msi with a selected wine version in a selected prefix)" "(NO)" \
"Run an application" "(Run a selected application over multiple wine versions and prefixes)" "(NO)" \
"Run a batch script" "(Run a selected batch script with multiple wine versions and prefixes)" "(NO)" \
"Run a steam game" "(Run Steam Games over multiple wine versions and prefixes)" "(NO)" \
"Run a debug trace" "(Run debug trace on a selected program and wine version in a selected prefix)" "(NO)" \
"Back")
case "${MENU}" in
"Create a WINEPREFIX")
echo "[INFO] Create a WINEPREFIX"
WINE_DIR=$(zenity --file-selection --directory --title="Select Wine Binary Directory" --window-icon="info")
case $? in
0)
echo "[INFO] Selected BINARY directory: $WINE_DIR";;
1)
echo "[INFO] No Binary Directory selected" &&
exit ;;
-1)
echo "[INFO] No Binary Directory selected" &&
exit ;;
esac
WINE_VER=$(ls -Q $WINE_DIR)
SELECTED_VER=$(eval zenity --width="400" --height="500" --list --column="Version" $WINE_VER --title="" --window-icon="info")
echo "[INFO] Selected BINARY version: $SELECTED_VER"
PREFIX_DIR=$(zenity --file-selection --directory --title="Select Wine Prefix Directory" --window-icon="info")
case $? in
0)
echo "[INFO] Selected PREFIX directory: $PREFIX_DIR";;
1)
echo "[INFO] No PREFIX Directory selected" &&
exit ;;
-1)
echo "[INFO] No PREFIX Directory selected" &&
exit ;;
esac
PREFIX_NAME=$(zenity --width="350" --height="100" --entry --entry-text "" --title="" --text="Enter a _prefix name:")
echo "[INFO] Creating PREFIX: $PREFIX_NAME"
echo "[INFO] WINEBINARY=PATH: $WINE_DIR/$SELECTED_VER/wine"
echo "[INFO] WINEPREFIX=PATH: $PREFIX_DIR/$PREFIX_NAME"
if [ -z "$1" ] ; then zenity --notification --window-icon="info" --text="Creating the prefix: $PREFIX_DIR/$PREFIX_NAME";
fi
export WINEPREFIX="$PREFIX_DIR/$PREFIX_NAME"
$WINE_DIR/$SELECTED_VER/wine winecfg
clear
;;
"Remove a WINEPREFIX")
echo "[INFO] Remove a WINEPREFIX"
PREFIX_DIR=$(zenity --file-selection --directory --title="Select Wine Prefix Directory" --window-icon="info")
case $? in
0)
echo "[INFO] Selected PREFIX directory: $PREFIX_DIR";;
1)
echo "[INFO] No PREFIX Directory selected" &&
exit ;;
-1)
echo "[INFO] No PREFIX Directory selected" &&
exit ;;
esac
PREFIX=$(ls -Q $PREFIX_DIR)
SELECTED_PREFIX=$(eval zenity --width="400" --height="500" --list --column="Prefix" $PREFIX --title="" --window-icon="info")
echo "[INFO] Selected PREFIX: $SELECTED_PREFIX"
echo "[INFO] Removing WINEPREFIX: $PREFIX_DIR/$SELECTED_PREFIX"
zenity --question --text="Are you sure you wish to proceed?"
if [ -z "$1" ] ; then zenity --notification --window-icon="info" --text="Removing WINEPREFIX: $PREFIX_DIR/$SELECTED_PREFIX";
fi
rm -r "$PREFIX_DIR/$SELECTED_PREFIX"
clear
;;
"Install winetricks")
# Testing C Style Functions.
# Fuctions are fun :)
WinetricksInstallStable ()
{
FILE=/usr/local/bin/winetricks
if [ -f $FILE ];
then
echo "[CHECKING] If file $FILE exists"
echo "[INFO] Winetricks already exists in /usr/local/bin"
else
echo "[CHECKING] If file $FILE exists"
echo "[INFO] Winetricks does not exists in /usr/local/bin"
wget -q "http://winetricks.org/winetricks" &&
chmod +x winetricks &&
echo "[ACTION] Winetricks will be installed in /usr/local/bin"
echo "[ACTION] please provide root password!"
PASSWORD=$(zenity --password --title="Root permission needed." --text="")
echo $PASSWORD | su -c "mv winetricks /usr/local/bin" &&
export TMOUT=1
echo "[INFO] Winetricks has been installed to /usr/local/bin/winetricks"
echo "[INFO] Logged out ROOT! running as: $USER"
fi
}
WinetricksInstallDev ()
{
FILE=/usr/local/bin/winetricks
if [ -f $FILE ];
then
echo "[CHECKING] If file $FILE exists"
echo "[INFO] Winetricks already exists in /usr/local/bin"
else
echo "[CHECKING] If file $FILE exists"
echo "[INFO] Winetricks does not exists in /usr/local/bin"
wget -q "http://winetricks.googlecode.com/svn/trunk/src/" &&
chmod +x winetricks &&
echo "[ACTION] Winetricks will be installed in /usr/local/bin"
echo "[ACTION] please provide root password!"
PASSWORD=$(zenity --password --title="Root permission needed." --text="")
echo $PASSWORD | su -c "mv winetricks /usr/local/bin" &&
export TMOUT=1
echo "[INFO] Winetricks has been installed to /usr/local/bin/winetricks"
echo "[INFO] Logged out ROOT! running as: $USER"
fi
}
while true; do
SUB_MENU=$(zenity --width 475 --height 225 --list --column "Option" --column "Description" \
"Stable" "(Installs the current stable winetricks release.)" \
"Development" "(Installs the latest development winetricks release.)" \
"Exit")
if [ "$SUB_MENU" = "Exit" ]; then
echo done
exit
elif [ "$SUB_MENU" = "Stable" ]; then
WinetricksInstallStable
elif [ "$SUB_MENU" = "Development" ]; then
WinetricksInstallDev
else
clear
fi
done
;;
"Run winetricks")
echo "[INFO] Run Winetricks"
WINE_DIR=$(zenity --file-selection --directory --title="Select Wine Binary Directory" --window-icon="info")
case $? in
0)
echo "[INFO] Selected BINARY directory: $WINE_DIR";;
1)
echo "[INFO] No Binary Directory selected" &&
exit ;;
-1)
echo "[INFO] No Binary Directory selected" &&
exit ;;
esac
WINE_VER=$(ls -Q $WINE_DIR)
SELECTED_VER=$( eval zenity --width="400" --height="500" --list --column="Version" $WINE_VER --title="" --window-icon="info")
echo "[INFO] Selected BINARY version: $SELECTED_VER"
PREFIX_DIR=$(zenity --file-selection --directory --title="Select Wine Prefix Directory" --window-icon="info")
case $? in
0)
echo "[INFO] Selected PREFIX directory: $PREFIX_DIR";;
1)
echo "[INFO] No PREFIX Directory selected" &&
exit ;;
-1)
echo "[INFO] No PREFIX Directory selected" &&
exit ;;
esac
PREFIX=$(ls -Q $PREFIX_DIR)
SELECTED_PREFIX=$(eval zenity --width="400" --height="500" --list --column="Prefix" $PREFIX --title="" --window-icon="info")
echo "[INFO] Selected PREFIX: $SELECTED_PREFIX"
echo "[INFO] WINEBINARY=PATH: $WINE_DIR/$SELECTED_VER/wine"
echo "[INFO] WINEPREFIX=PATH: $PREFIX_DIR/$SELECTED_PREFIX"
echo "[OUTPUT] from winetricks"
if [ -z "$1" ] ; then zenity --notification --window-icon="info" --text="Running Winetricks on $PREFIX_DIR/$SELECTED_PREFIX";
fi
export WINEPREFIX="$PREFIX_DIR/$SELECTED_PREFIX"
WINE=$WINE_DIR/$SELECTED_VER/wine winetricks
clear
;;
"Install a winetricks .verb")
echo "[INFO] Install Winetricks .verb"
WINE_DIR=$(zenity --file-selection --directory --title="Select Wine Binary Directory" --window-icon="info")
case $? in
0)
echo "[INFO] Selected BINARY directory: $WINE_DIR";;
1)
echo "[INFO] No Binary Directory selected" &&
exit ;;
-1)
echo "[INFO] No Binary Directory selected" &&
exit ;;
esac
WINE_VER=$(ls -Q $WINE_DIR)
SELECTED_VER=$(eval zenity --width="400" --height="500" --list --column="Version" $WINE_VER --title="" --window-icon="info")
echo "[INFO] Selected BINARY version: $SELECTED_VER"
PREFIX_DIR=$(zenity --file-selection --directory --title="Select Wine Prefix Directory" --window-icon="info")
case $? in
0)
echo "[INFO] Selected PREFIX directory: $PREFIX_DIR";;
1)
echo "[INFO] No PREFIX Directory selected" &&
exit ;;
-1)
echo "[INFO] No PREFIX Directory selected" &&
exit ;;
esac
PREFIX=$(ls -Q $PREFIX_DIR)
SELECTED_PREFIX=$(eval zenity --width="400" --height="500" --list --column="Prefix" $PREFIX --title="" --window-icon="info")
echo "[INFO] Selected PREFIX: $SELECTED_PREFIX"
echo "[INFO] WINEBINARY=PATH: $WINE_DIR/$SELECTED_VER/wine"
echo "[INFO] WINEPREFIX=PATH: $PREFIX_DIR/$SELECTED_PREFIX"
SELECTED_VERB=$(zenity --file-selection --title="Select .verb" --window-icon="info")
case $? in
0)
echo "[INFO] $SELECTED_VERB selected for install";;
1)
echo "[INFO] No .verb selected" &&
exit ;;
-1)
echo "[INFO] No .verb selected" &&
exit ;;
esac
if [ -z "$1" ] ; then zenity --notification --window-icon="info" --text="Running $WINE_DIR/$SELECTED_VER/wine winetricks $SELECTED_VERB";
fi
export WINEPREFIX="$PREFIX_DIR/$SELECTED_PREFIX"
WINE=$WINE_DIR/$SELECTED_VER/wine winetricks $SELECTED_VERB
clear
;;
"Delete winetricks .cache")
echo "[INFO] Delete Winetricks cache: $HOME/.cache/winetricks"
zenity --warning --text="Are you sure you wish to proceed?"
rm -r "$HOME/.cache/winetricks"
clear
;;
"Install a windows .exe")
echo "[INFO] Install a Windows .exe"
WINE_DIR=$(zenity --file-selection --directory --title="Select Wine Binary Directory" --window-icon="info")
case $? in
0)
echo "[INFO] Selected BINARY directory: $WINE_DIR";;
1)
echo "[INFO] No Binary Directory selected" &&
exit ;;
-1)
echo "[INFO] No Binary Directory selected" &&
exit ;;
esac
WINE_VER=$(ls -Q $WINE_DIR)
SELECTED_VER=$(eval zenity --width="400" --height="500" --list --column="Version" $WINE_VER --title="" --window-icon="info")
echo "[INFO] Selected BINARY version: $SELECTED_VER"
PREFIX_DIR=$(zenity --file-selection --directory --title="Select Wine Prefix Directory" --window-icon="info")
case $? in
0)
echo "[INFO] Selected PREFIX directory: $PREFIX_DIR";;
1)
echo "[INFO] No PREFIX Directory selected" &&
exit ;;
-1)
echo "[INFO] No PREFIX Directory selected" &&
exit ;;
esac
PREFIX=$(ls -Q $PREFIX_DIR)
SELECTED_PREFIX=$(eval zenity --width="400" --height="500" --list --column="Prefix" $PREFIX --title="" --window-icon="info")
echo "[INFO] Selected PREFIX: $SELECTED_PREFIX"
echo "[INFO] WINEBINARY=PATH: $WINE_DIR/$SELECTED_VER/wine"
echo "[INFO] WINEPREFIX=PATH: $PREFIX_DIR/$SELECTED_PREFIX"
SELECTED_EXE=$(zenity --file-selection --title="Select a Windows .exe" --window-icon="info")
case $? in
0)
echo "[INFO] $SELECTED_EXE selected for install";;
1)
echo "[INFO] No .exe selected" &&
exit ;;
-1)
echo "[INFO] No .exe selected" &&
exit ;;
esac
if [ -z "$1" ] ; then zenity --notification --window-icon="info" --text="Running $WINE_DIR/$SELECTED_VER/wine $SELECTED_EXE";
fi
export WINEPREFIX="$PREFIX_DIR/$SELECTED_PREFIX"
$WINE_DIR/$SELECTED_VER/wine $SELECTED_EXE
clear
;;
"Install a windows .msi")
echo "[INFO] Install a Windows .exe"
WINE_DIR=$(zenity --file-selection --directory --title="Select Wine Binary Directory" --window-icon="info")
case $? in
0)
echo "[INFO] Selected BINARY directory: $WINE_DIR";;
1)
echo "[INFO] No Binary Directory selected" &&
exit ;;
-1)
echo "[INFO] No Binary Directory selected" &&
exit ;;
esac
WINE_VER=$(ls -Q $WINE_DIR)
SELECTED_VER=$(eval zenity --width="400" --height="500" --list --column="Version" $WINE_VER --title="" --window-icon="info")
echo "[INFO] Selected BINARY version: $SELECTED_VER"
PREFIX_DIR=$(zenity --file-selection --directory --title="Select Wine Prefix Directory" --window-icon="info")
case $? in
0)
echo "[INFO] Selected PREFIX directory: $PREFIX_DIR";;
1)
echo "[INFO] No PREFIX Directory selected" &&
exit ;;
-1)
echo "[INFO] No PREFIX Directory selected" &&
exit ;;
esac
PREFIX=$(ls -Q $PREFIX_DIR)
SELECTED_PREFIX=$(eval zenity --width="400" --height="500" --list --column="Prefix" $PREFIX --title="" --window-icon="info")
echo "[INFO] Selected PREFIX: $SELECTED_PREFIX"
echo "[INFO] WINEBINARY=PATH: $WINE_DIR/$SELECTED_VER/wine"
echo "[INFO] WINEPREFIX=PATH: $PREFIX_DIR/$SELECTED_PREFIX"
SELECTED_MSI=$(zenity --file-selection --title="Select a Windows .msi" --window-icon="info")
case $? in
0)
echo "[INFO] $SELECTED_MSI selected for install";;
1)
echo "[INFO] No .msi selected" &&
exit ;;
-1)
echo "[INFO] No .msi selected" &&
exit ;;
esac
if [ -z "$1" ] ; then zenity --notification --window-icon="info" --text="Running $WINE_DIR/$SELECTED_VER/wine $SELECTED_MSI";
fi
export WINEPREFIX="$PREFIX_DIR/$SELECTED_PREFIX"
$WINE_DIR/$SELECTED_VER/wine msiexec /i $SELECTED_MSI
clear
;;
"Run an application")
echo "[INFO] Run a Windows Application"
WINE_DIR=$(zenity --file-selection --directory --title="Select Wine Binary Directory" --window-icon="info")
case $? in
0)
echo "[INFO] Selected BINARY directory: $WINE_DIR";;
1)
echo "[INFO] No Binary Directory selected" &&
exit ;;
-1)
echo "[INFO] No Binary Directory selected" &&
exit ;;
esac
WINE_VER=$(ls -Q $WINE_DIR)
SELECTED_VER=$(eval zenity --width="400" --height="500" --list --column="Version" $WINE_VER --title="" --window-icon="info")
echo "[INFO] Selected BINARY version: $SELECTED_VER"
PREFIX_DIR=$(zenity --file-selection --directory --title="Select Wine Prefix Directory" --window-icon="info")
case $? in
0)
echo "[INFO] Selected PREFIX directory: $PREFIX_DIR";;
1)
echo "[INFO] No PREFIX Directory selected" &&
exit ;;
-1)
echo "[INFO] No PREFIX Directory selected" &&
exit ;;
esac
PREFIX=$(ls -Q $PREFIX_DIR)
SELECTED_PREFIX=$(eval zenity --width="400" --height="500" --list --column="Prefix" $PREFIX --title="" --window-icon="info")
echo "[INFO] Selected PREFIX: $SELECTED_PREFIX"
echo "[INFO] WINEBINARY=PATH: $WINE_DIR/$SELECTED_VER/wine"
echo "[INFO] WINEPREFIX=PATH: $PREFIX_DIR/$SELECTED_PREFIX"
SELECTED_APP=$(zenity --file-selection --title="Select a Windows Application" --window-icon="info")
case $? in
0)
echo "[INFO] $SELECTED_APP selected to execute";;
1)
echo "[INFO] No application selected" &&
exit ;;
-1)
echo "[INFO] No application selected" &&
exit ;;
esac
ARGUMENTS=$(zenity --width="350" --height="100" --entry --title="Command-Line Arguments" --text="Enter Command-Line Arguments:" --entry-text "")
echo "[INFO] Command-Line Arguments: $ARGUMENTS"
if [ -z "$1" ] ; then zenity --notification --window-icon="info" --text="Running $WINE_DIR/$SELECTED_VER/wine $SELECTED_APP";
fi
export WINEPREFIX="$PREFIX_DIR/$SELECTED_PREFIX"
WINE=$WINE_DIR/$SELECTED_VER/wine $SELECTED_APP $ARGUMENTS
clear
;;
"Run a batch script")
echo "[INFO] Run a Batch Script"
WINE_DIR=$(zenity --file-selection --directory --title="Select Wine Binary Directory" --window-icon="info")
case $? in
0)
echo "[INFO] Selected BINARY directory: $WINE_DIR";;
1)
echo "[INFO] No Binary Directory selected" &&
exit ;;
-1)
echo "[INFO] No Binary Directory selected" &&
exit ;;
esac
WINE_VER=$(ls -Q $WINE_DIR)
SELECTED_VER=$(eval zenity --width="400" --height="500" --list --column="Version" $WINE_VER --title="" --window-icon="info")
echo "[INFO] Selected BINARY version: $SELECTED_VER"
PREFIX_DIR=$(zenity --file-selection --directory --title="Select Wine Prefix Directory" --window-icon="info")
case $? in
0)
echo "[INFO] Selected PREFIX directory: $PREFIX_DIR";;
1)
echo "[INFO] No PREFIX Directory selected" &&
exit ;;
-1)
echo "[INFO] No PREFIX Directory selected" &&
exit ;;
esac
PREFIX=$(ls -Q $PREFIX_DIR)
SELECTED_PREFIX=$(eval zenity --width="400" --height="500" --list --column="Prefix" $PREFIX --title="" --window-icon="info")
echo "[INFO] Selected PREFIX: $SELECTED_PREFIX"
echo "[INFO] WINEBINARY=PATH: $WINE_DIR/$SELECTED_VER/wine"
echo "[INFO] WINEPREFIX=PATH: $PREFIX_DIR/$SELECTED_PREFIX"
SELECTED_BAT=$(zenity --file-selection --title="Select a Windows Application" --window-icon="info")
case $? in
0)
echo "[INFO] $SELECTED_BAT selected to execute";;
1)
echo "[INFO] No batch script selected" &&
exit ;;
-1)
echo "[INFO] No batch script selected" &&
exit ;;
esac
if [ -z "$1" ] ; then zenity --notification --window-icon="info" --text="Running $WINE_DIR/$SELECTED_VER/wine cmd /c $SELECTED_BAT";
fi
export WINEPREFIX="$PREFIX_DIR/$SELECTED_PREFIX"
WINE=$WINE_DIR/$SELECTED_VER/wine cmd /c $SELECTED_BAT
clear
;;
"Run a steam game")
echo "[INFO] Run a Steam Game"
WINE_DIR=$(zenity --file-selection --directory --title="Select Wine Binary Directory" --window-icon="info")
case $? in
0)
echo "[INFO] Selected BINARY directory: $WINE_DIR";;
1)
echo "[INFO] No Binary Directory selected" &&
exit ;;
-1)
echo "[INFO] No Binary Directory selected" &&
exit ;;
esac
WINE_VER=$(ls -Q $WINE_DIR)
SELECTED_VER=$(eval zenity --width="400" --height="500" --list --column="Version" $WINE_VER --title="" --window-icon="info")
echo "[INFO] Selected BINARY version: $SELECTED_VER"
PREFIX_DIR=$(zenity --file-selection --directory --title="Select Wine Prefix Directory" --window-icon="info")
case $? in
0)
echo "[INFO] Selected PREFIX directory: $PREFIX_DIR";;
1)
echo "[INFO] No PREFIX Directory selected" &&
exit ;;
-1)
echo "[INFO] No PREFIX Directory selected" &&
exit ;;
esac
PREFIX=$(ls -Q $PREFIX_DIR)
SELECTED_PREFIX=$(eval zenity --width="400" --height="500" --list --column="Prefix" $PREFIX --title="" --window-icon="info")
echo "[INFO] Selected PREFIX: $SELECTED_PREFIX"
echo "[INFO] WINEBINARY=PATH: $WINE_DIR/$SELECTED_VER/wine"
echo "[INFO] WINEPREFIX=PATH: $PREFIX_DIR/$SELECTED_PREFIX"
STEAM_APPID=$(zenity --width="350" --height="100" --entry --title="Steam Application ID" --text="Enter a Steam _APPID:" --entry-text "")
echo "[INFO] Steam Application ID: $STEAM_APPID"
ARGUMENTS=$(zenity --width="350" --height="100" --entry --title="Command-Line Arguments" --text="Enter Command-Line Arguments:" --entry-text "")
echo "[INFO] Command-Line Arguments: $ARGUMENTS"
echo "[INFO] Executing steam.exe -applaunch $STEAM_APPID $ARGUMENTS"
if [ -z "$1" ] ; then zenity --notification --window-icon="info" --text="Running Steam.exe -applaunch $STEAM_APPID $ARGUMENTS";
fi
export WINEPREFIX="$PREFIX_DIR/$SELECTED_PREFIX"
$WINE_DIR/$SELECTED_VER/wine C:/Program\ Files/Steam/Steam.exe -applaunch $STEAM_APPID $ARGUMENTS
clear
;;
"Run a debug trace")
echo "[NOT SUPPORTED YET] Run a debug trace."
;;
*)
break
;;
esac
done
;;
*)
break
;;
esac
done