#!/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