#!/bin/bash
# João Sousa 2022
# Instalando o Roblox no Ubuntu
# Testado no Ubuntu 20.04LTS 30/01/2022
# Testado no Ubuntu 22.04LTS 26/12/2022
# v0.2 ( 26/12/2022 )
# winehq-staging
# wine version 8
# dxvk 2.0
# Nova versão do roblox utiliza um "launcher"
# Algumas funcionalidades do "launcher" ainda não funcionam no wine
# Utilize o browser para lançar os jogos
# v0.1 ( 30/01/2022 )
# winehq-stable
# wine version 7
# dxvk 1.9.3
# Bug cursor do mouse fica "preso" quando utiliza a tecla direita.
# Para voltar a ter o cursor alterne entre janelas [alt] + [tab]
# Mantenha sempre uma janela do firefox aberta atrás da janela do jogo :P
# Ou utilize um gamepad :)
# Opcional mas recomendado, instalar o DXVK (não é compatível com o Roblox Studio)
BASEDIR="$(realpath "$(dirname "$0")")"
EXEROBLOX="$2"
###############################################
setup_wine(){
echo ""
echo "########################################"
echo "setup_wine..."
###############################################
cd ${HOME}
mkdir ROBLOX
cd ROBLOX
mkdir pfx
sudo apt update
sudo apt upgrade -y
sudo add-apt-repository universe -y
sudo add-apt-repository multiverse -y
sudo apt-get update
# Instalar wine pelo repo oficial do wine
sudo dpkg --add-architecture i386
sudo mkdir -pm755 /etc/apt/keyrings
sudo wget -O /etc/apt/keyrings/winehq-archive.key https://dl.winehq.org/wine-builds/winehq
# Forma antiga de armazenar keys do wine ( via trusted.gpg )
#wget -nc https://dl.winehq.org/wine-builds/winehq.key
#sudo apt-key add winehq.key
# Forma antiga de adicionar o repo do wine ( via sources.list )
#sudo add-apt-repository 'deb https://dl.winehq.org/wine-builds/ubuntu/ $(lsb_release -cs) main'
# A variável $(lsb_release -cs) coloca o code name da veresão do Ubuntu focal jammy etc...
sudo wget -NP /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/ubuntu/dists/$(lsb_release -cs)/winehq-$(lsb_release -cs).sources
sudo apt update
# Possíveis opçõesde winehq : stable staging devel
WINE_VERSION=staging
# Notas:
# Nova versão do dxvk 2.0 só funciona com winehq-staging
sudo apt install --install-recommends winehq-${WINE_VERSION} -y
# Setup inicial
#WINEPREFIX=/home/${USER}/ROBLOX/pfx wine winecfg
# Remove popup para instalar mono
export WINEDLLOVERRIDES="mscoree,mshtml="
# Wine prefix
export WINEPREFIX=/home/"${USER}"/ROBLOX/pfx
# Mudar para windowns 10
winecfg /v win10
wineserver --wait
# Remover links simbólicos do wine para as pastas "xdg-user-dirs" do host
# Criar as pastas "xdg-user-dirs" só para o roblox
rm "/home/${USER}/ROBLOX/pfx/drive_c/users/${USER}/Desktop"
mkdir -p "/home/${USER}/ROBLOX/pfx/drive_c/users/${USER}/Desktop"
rm "/home/${USER}/ROBLOX/pfx/drive_c/users/${USER}/Documents"
mkdir -p "/home/${USER}/ROBLOX/pfx/drive_c/users/${USER}/Documents"
rm "/home/${USER}/ROBLOX/pfx/drive_c/users/${USER}/Downloads"
mkdir -p "/home/${USER}/ROBLOX/pfx/drive_c/users/${USER}/Downloads"
rm "/home/${USER}/ROBLOX/pfx/drive_c/users/${USER}/Music"
mkdir -p "/home/${USER}/ROBLOX/pfx/drive_c/users/${USER}/Music"
rm "/home/${USER}/ROBLOX/pfx/drive_c/users/${USER}/Pictures"
mkdir -p "/home/${USER}/ROBLOX/pfx/drive_c/users/${USER}/Pictures"
rm "/home/${USER}/ROBLOX/pfx/drive_c/users/${USER}/Videos"
mkdir -p "/home/${USER}/ROBLOX/pfx/drive_c/users/${USER}/Videos"
# Remove wine-*.desktop files com MimeType
cd /home/${USER}/.local/share/applications/
rm wine-*.desktop
cd
####### RobloxPlayer.desktop
# MIME scheme para o roblox-player
# Cria um arquivo ~/.local/share/applications/RobloxPlayer.desktop com o conteúdo em baixo:
cat > ~/.local/share/applications/RobloxPlayer.desktop << EOF
[Desktop Entry]
Name=Roblox Player
Exec=env WINEPREFIX="/home/${USER}/ROBLOX/pfx" DXVK_HUD=fps,version,scale=0.7 wine /home/${USER}/ROBLOX/roblox.exe %u
Type=Application
StartupNotify=true
Icon=RobloxPlayerLauncher
MimeType=x-scheme-handler/roblox-player;
StartupWMClass=robloxplayerlauncher.exe
NoDisplay=true
EOF
chmod +x "${HOME}/.local/share/applications/RobloxPlayer.desktop"
# Nota: "DXVK_HUD=fps,version,scale=0.7" é opcional
# Serve para mostrar um hud com os FPS e a versão do DXVK.
# O roblox lança os jogos através de um link no browser (scheme roblox-player) que abre o jogo.
# Para abilitar o scheme roblox-player no browser é preciso usar o comando.
xdg-mime default RobloxPlayer.desktop x-scheme-handler/roblox-player
# O comando em cima addiciona
# x-scheme-handler/roblox-player=RobloxPlayer.desktop
# Em /home/${USER}/.config/mimeapps.list
# O RobloxPlayer.desktop não aparece no menu do desktop "NoDisplay=true" mas o firefox consegue executar através de um link no browser
# Ao clicar num link de um jogo no site do roblox, uma janela popup aparece no firefox pedindo autorização para executar o "scheme roblox-player".
}
###############################################
setup_firefox_roblox() {
echo ""
echo "########################################"
echo "setup_firefox_roblox..."
###############################################
# Criar uma user session no Firefox só para usar com o Roblox.
# firefox snap ou apt?
if whereis firefox | grep -q snap ; then
echo "firefox snap"
mkdir -p "${HOME}/snap/firefox/common/.mozilla/firefox/roblox-profile"
else
echo "firefox apt"
mkdir -p "${HOME}/.mozilla/firefox/roblox-profile"
fi
####### FirefoxRoblox.desktop
cat > ~/.local/share/applications/FirefoxRoblox.desktop << EOF
[Desktop Entry]
Version=1.0
Name=Roblox
Comment=Browse Roblox Firefox
GenericName=Web Browser Firefox para o roblox
Keywords=Internet;WWW;Browser;Web;Explorer
Exec=firefox-roblox.sh
Terminal=false
X-MultipleArgs=false
Type=Application
Icon=RobloxPlayerLauncher
Categories=GNOME;GTK;Network;WebBrowser;
MimeType=text/html;text/xml;application/xhtml+xml;application/xml;application/rss+xml;application/rdf+xml;image/gif;image/jpeg;image/png;x-scheme-handler/http;x-scheme-handler/https;x-scheme-handler/ftp;x-scheme-handler/chrome;video/webm;application/x-xpinstall;
StartupNotify=true
EOF
chmod +x "${HOME}/.local/share/applications/FirefoxRoblox.desktop"
# Cria ~/bin se não existe e adiciona no .bashrc
mkdir -p "${HOME}/bin"
LINE='PATH="$HOME/bin:$PATH"'
FILE=/home/$USER/.bashrc
grep -q "$LINE" "$FILE" || echo "$LINE" >> "$FILE"
cat > "${HOME}/bin/firefox-roblox.sh" << EOF
#!/bin/bash
# /opt/wine-${WINE_VERSION}/bin/wine
# Detecta se tem permições em qualquer um dos usuarios ou grupos
ls -all /opt/wine-${WINE_VERSION}/bin/wine | cut -d' ' -f1 | grep -q x && EXC_PERMISSION=true || EXC_PERMISSION=false
if [ "$EXC_PERMISSION" = "true" ] ; then
echo "ok"
if whereis firefox | grep -q snap ; then
echo "firefox snap"
firefox --profile "${HOME}/snap/firefox/common/.mozilla/firefox/roblox-profile" https://www.roblox.com/ &
else
echo "firefox apt"
firefox --profile "${HOME}/.mozilla/firefox/roblox-profile" https://www.roblox.com/ &
fi
else
zenity --info --title "Wine Roblox!" --text "Wine desligado /opt/wine-${WINE_VERSION}/bin/wine \nPara Ligar: \nsudo chmod +x /opt/wine-${WINE_VERSION}/bin/wine" --width 450
fi
# Remove os .desktops criados pelo wine de cada vez que o roblox faz um update.
rm -r "/home/${USER}/.local/share/applications/wine/Programs/Roblox"
# Cria link simbólico para updates ( nome do ficheiro muda consoante a versão )
find ~/ROBLOX/pfx/drive_c/Program\ Files\ \(x86\)/Roblox/Versions/version-* -name RobloxPlayerLauncher.exe -exec ln -sf '{}' ~/ROBLOX/roblox.exe ';'
# Pasta de instalação em AppData?
find ~/ROBLOX/pfx/drive_c/users/${USER}/AppData/Local/Roblox/Versions/version-* -name RobloxPlayerLauncher.exe -exec ln -sf '{}' ~/ROBLOX/roblox.exe ';'
exit
EOF
chmod +x "${HOME}/bin/firefox-roblox.sh"
}
###############################################
setup_DXVK() {
echo ""
echo "########################################"
echo "setup_DXVK..."
###############################################
# DXVK ( melhora muito o desenpenho no player, mas cria problemas na execução do roblox studio )
# https://github.com/doitsujin/dxvk/releases
#export WINEPREFIX=/home/${USER}/ROBLOX/pfx
#./setup_dxvk.sh install
# Exemplo para usar o hud do dxvk
# Exec=env WINEPREFIX="/home/${USER}/ROBLOX/pfx" DXVK_HUD=scale=0.7,fps wine /home/tuxmind/ROBLOX/roblox.exe %u
echo "setup DXVK"
# Repositório github
REPO="doitsujin/dxvk"
DXVK_VERSION=`curl --silent "https://api.github.com/repos/${REPO}/releases/latest" | grep '"tag_name":' | cut -d'"' -f4 | cut -dv -f2`
URL=`curl --silent "https://api.github.com/repos/${REPO}/releases/latest" | grep '"browser_download_url":' | cut -d'"' -f4`
# Última versão testada que funciona
# Versão 2.0 dá erro (24/11/2022)
#https://github.com/doitsujin/dxvk/releases/download/v1.10.3/dxvk-1.10.3.tar.gz
cd "${HOME}/ROBLOX"
wget "$URL"
tar -xvzf dxvk-"${DXVK_VERSION}".tar.gz
cd dxvk-"${DXVK_VERSION}"
export WINEPREFIX=/home/"${USER}"/ROBLOX/pfx
sleep 3
./setup_dxvk.sh install
wineserver --wait
}
###############################################
instalar_roblox_exe() {
echo ""
echo "########################################"
echo "instalar_roblox.."
###############################################
echo "${EXEROBLOX}"
echo "${BASEDIR}"
#WINEPREFIX=/home/${USER}/ROBLOX/pfx wine RobloxPlayerLauncher.exe
cp "${BASEDIR}/${EXEROBLOX}" /home/"${USER}"/ROBLOX/
cd "/home/${USER}/ROBLOX/"
export WINEPREFIX=/home/"${USER}"/ROBLOX/pfx
wine /home/"${USER}"/ROBLOX/"${EXEROBLOX}"
wineserver --wait
cd
}
###############################################
pos_install() {
echo ""
echo "########################################"
echo "Criando link simbólico para o executável roblox.exe..."
echo "Update .desktop files..."
###############################################
# Cria link simbolico para executáveis no caso de existir um update que alterou o nome (versão) do exe.
find ~/ROBLOX/pfx/drive_c/Program\ Files\ \(x86\)/Roblox/Versions/version-* -name RobloxPlayerLauncher.exe -exec ln -sf '{}' ~/ROBLOX/roblox.exe ';'
# Pasta de instalação em AppData?
find ~/ROBLOX/pfx/drive_c/users/${USER}/AppData/Local/Roblox/Versions/version-* -name RobloxPlayerLauncher.exe -exec ln -sf '{}' ~/ROBLOX/roblox.exe ';'
#find ~/ROBLOX/pfx/drive_c/Program\ Files\ \(x86\)/Roblox/Versions/version-* -name RobloxStudioLauncherBeta.exe -exec ln -sf '{}' ~/ROBLOX/roblox-studio.exe ';'
# Copia icon ****_RobloxPlayerLauncher.0" para local icons com nome de RobloxPlayerLauncher.png
find ~/.local/share/icons/hicolor/64x63/apps/*RobloxPlayerLauncher* -exec cp '{}' ~/.local/share/icons/RobloxPlayerLauncher.png ';'
# Remove wine Roblox.desktop files
rm -r "/home/${USER}/.local/share/applications/wine/Programs/Roblox"
# Remove wine-*.desktop files com MimeType
cd "/home/${USER}/.local/share/applications/"
rm wine-*.desktop
# Restart gnome shell para *desktop files aparecerem nos menus ( só testei no X11 )
busctl --user call org.gnome.Shell /org/gnome/Shell org.gnome.Shell Eval s 'Meta.restart("Restarting…")'
}
###############################################
instalar() {
###############################################
setup_wine
setup_firefox_roblox
setup_DXVK
instalar_roblox_exe
pos_install
}
###############################################
remover_roblox() {
###############################################
read -p "Tem certeza que pretende remover? (s/N): " -r REPLY
if [ "$REPLY" = "s" ] || [ "$REPLY" = "sim" ] || [ "$REPLY" = "S" ] || [ "$REPLY" = "SIM" ]; then
cd "${HOME}"
rm -r ROBLOX/
rm bin/firefox-roblox.sh
rm .local/share/applications/RobloxPlayer.desktop
rm .local/share/applications/FirefoxRoblox.desktop
rm .local/share/icons/RobloxPlayerLauncher.png
cd .mozilla/firefox/
rm -r roblox-profile
cd "${HOME}/snap/firefox/common/.mozilla/firefox"
rm -r roblox-profile
# Remove wine Roblox.desktop files
rm -r "/home/${USER}/.local/share/applications/wine/Programs/Roblox"
else
echo "Manter a instalação do roblox com wine " && echo ""
exit
fi
}
###############################################
remover_wine() {
###############################################
# Remove o roblox primeiro
remover_roblox
sudo apt remove wine
sudo apt autoremove -y
# Remove repositório do wine
# Forma antiga de adicionar/remover ( sources.list )
sudo add-apt-repository -r -y "deb https://dl.winehq.org/wine-builds/ubuntu/ $(lsb_release -cs) main"
# Remove repositório do wine
cd /etc/apt/sources.list.d
sudo rm winehq-$(lsb_release -cs).sources
cd
sudo apt update
}
###############################################
# Inicio
###############################################
clear
case "$1" in
"instalar")
echo "A iniciar instalação ..."
instalar
;;
"remover")
echo "remover roblox e o wine ..."
remover_wine
;;
*)
echo "Vá até https://www.roblox.com faça login e baixe o instalador."
echo "Coloque o instalador exe do roblox na mesma pasta onde se encontra este script."
echo "Parametros possíveis:"
echo " "
echo " "
echo ""
echo "Exemplo para instalação:"
echo ""
echo "./install-roblox-ubuntu-22-04.sh instalar RobloxPlayerLauncher.exe"
;;
esac
exit
html.cafe - a realtime HTML editor and host
Edit the html in the top panel, see the result here.
Save your page and get a link to view it live, anywhere.