From 7a528c67f252b3a9e8c3e09fc4572cfc413684ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Zwing?= Date: Sun, 24 Nov 2024 21:59:13 +0100 Subject: [PATCH 1/4] add Hangover --- apps/Hangover/credits | 1 + apps/Hangover/description | 10 +++ apps/Hangover/icon-24.png | Bin 0 -> 8735 bytes apps/Hangover/icon-64.png | Bin 0 -> 12128 bytes apps/Hangover/install-64 | 148 +++++++++++++++++++++++++++++++++++++ apps/Hangover/uninstall | 24 ++++++ apps/Hangover/website | 1 + apps/Wine (x64)/install-64 | 3 + etc/categories | 1 + 9 files changed, 188 insertions(+) create mode 100644 apps/Hangover/credits create mode 100644 apps/Hangover/description create mode 100644 apps/Hangover/icon-24.png create mode 100644 apps/Hangover/icon-64.png create mode 100755 apps/Hangover/install-64 create mode 100755 apps/Hangover/uninstall create mode 100644 apps/Hangover/website diff --git a/apps/Hangover/credits b/apps/Hangover/credits new file mode 100644 index 0000000000..2b00e6f76e --- /dev/null +++ b/apps/Hangover/credits @@ -0,0 +1 @@ +@AndreRH diff --git a/apps/Hangover/description b/apps/Hangover/description new file mode 100644 index 0000000000..96e0b4a27a --- /dev/null +++ b/apps/Hangover/description @@ -0,0 +1,10 @@ +Hangover runs simple Win64 and Win32 applications on arm64 Linux. Only the application is emulated instead of a whole Wine installation. + +Examples on how to run: + +$ wine your_x86_64_application.exe # Uses FEX for 64-bit apps +$ wine your_x86_application.exe # To use Box64 for 32-bit apps +$ HODLL=libwow64fex.dll wine your_x86_application.exe # To use FEX for 32-bit apps +$ HODLL=xtajit.dll taskset -c 1 wine your_x86_application.exe # To use QEMU for 32-bit apps (limited to 1 core to workaround a bug) + +For more information see https://github.com/AndreRH/hangover/blob/master/README.md diff --git a/apps/Hangover/icon-24.png b/apps/Hangover/icon-24.png new file mode 100644 index 0000000000000000000000000000000000000000..144a830817fc507c1e0a4e1d84b4b4282eb60689 GIT binary patch literal 8735 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 c-we*y;ARM-rZ*7s;0%CJ)Knn+a literal 0 HcmV?d00001 diff --git a/apps/Hangover/icon-64.png b/apps/Hangover/icon-64.png new file mode 100644 index 0000000000000000000000000000000000000000..791570564ac8607e48e6e18d1295d8ee9c10f600 GIT binary patch literal 12128 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/dev/null + echo "[pi5]" | sudo tee --append $boot_config >/dev/null + echo "kernel=kernel8.img" | sudo tee --append $boot_config >/dev/null + echo -e "The 4K PageSize Kernel has been enabled by adding 'kernel=kernel8.img' to $boot_config\nPlease reboot now and install the Wine (x64) app again." + sleep infinity + else + error "User error (reporting allowed): Your current running kernel is built with 16K PageSize and is incompatible with Wine (x64) with Box64. Changing kernels automatically cannot be done since no /boot/config.txt or /boot/firmware/config.txt file was found." + fi +fi + +# Hangover conflicts with Wine +"${DIRECTORY}/manage" uninstall "Wine (x64)" + +if [ "$__os_codename" == "bullseye" ]; then + ho_distro="debian11" +elif [ "$__os_codename" == "bookworm" ]; then + ho_distro="debian12" +elif [ "$__os_codename" == "focal" ]; then + ho_distro="ubuntu2004" +elif [ "$__os_codename" == "jammy" ]; then + ho_distro="ubuntu2204" +elif [ "$__os_codename" == "noble" ]; then + ho_distro="ubuntu2404" +else + error "User error: You are not using a supported Pi-Apps distribution." +fi + +cd /tmp || error "Could not move to /tmp folder" +wget https://github.com/AndreRH/hangover/releases/download/hangover-${version}/hangover_${version}_${ho_distro}_${__os_codename}_arm64.tar || error "Failed to download Hangover!" +tar -xf hangover_${version}_${ho_distro}_${__os_codename}_arm64.tar || error "Failed to extract Hangover!" +rm -f hangover_${version}_${ho_distro}_${__os_codename}_arm64.tar +install_packages /tmp/hangover-libarm64ecfex_${version}_arm64.deb /tmp/hangover-libqemu_${version}~${__os_codename}_arm64.deb /tmp/hangover-libwow64fex_${version}_arm64.deb /tmp/hangover-wine_${version}~${__os_codename}_arm64.deb || exit 1 +rm -f ./hangover-libarm64ecfex_${version}_arm64.deb ./hangover-libqemu_${version}~${__os_codename}_arm64.deb ./hangover-libwow64fex_${version}_arm64.deb ./hangover-wine_${version}~${__os_codename}_arm64.deb + +cat << EOF | sudo tee /usr/local/bin/generate-hangover-prefix >/dev/null +#!/bin/bash +echo + +#set up functions +$(declare -f error) +$(declare -f status) +$(declare -f status_green) +$(declare -f warning) +$(declare -f userinput_func) + +if [ "\$(id -u)" == 0 ];then + error "Please don't run this script with sudo." +fi + +if [ -z "\$WINEPREFIX" ];then + WINEPREFIX="\$HOME/.wine" +fi +export WINEPREFIX + +if [ -f "\$WINEPREFIX/system.reg" ];then + registry_exists=true +else + registry_exists=false +fi + +export WINEDEBUG=-virtual #hide harmless memory errors + +if [ -e "\$WINEPREFIX" ];then + status "Checking Wine prefix at \$WINEPREFIX..." + echo "To choose another prefix, set the WINEPREFIX variable." + echo -n "Waiting 5 seconds... " + sleep 5 + echo + # check for existance of incompatible prefix (see server_init_process https://github.com/wine-mirror/wine/blob/884cff821481b4819f9bdba455217bd5a3f97744/dlls/ntdll/unix/server.c#L1544-L1670) + # Boot wine and check for errors (make fresh wineprefix) + output="\$(set -o pipefail; wine wineboot 2>&1 | tee /dev/stderr; )" #this won't display any dialog boxes that require a button to be clicked + if [ "\$?" != 0 ]; then + text="Your previously existing Wine prefix failed with an error (see terminal log). + +Would you like to remove and regenerate your Wine prefix? Doing so will delete anything you may have installed into your Wine prefix." + userinput_func "\$text" "No, keep broken Wine prefix and Exit" "Yes, delete and regenerate Wine prefix" + if [ "\$output" == "No, keep broken Wine prefix and Exit" ]; then + error "User error: Your current Wine prefix caused Wine to error on launch and you chose to keep it. Manually correct your Wine prefix before installing or updating Wine (x64)." + fi + warning "Your previously existing Wine prefix failed with an error (see above). You chose to remove it and so it will be re-generated." + rm -rf "\$WINEPREFIX" + registry_exists=false + wine wineboot #this won't display any dialog boxes that require a button to be clicked + fi + #wait until above process exits + sleep 2 + while [ ! -z "\$(pgrep -i 'wine C:')" ];do + sleep 1 + done +else + status "Generating Wine prefix at \$WINEPREFIX..." + echo "To choose another prefix, set the WINEPREFIX variable." + echo "Waiting 5 seconds..." + sleep 5 + # Boot wine (make fresh wineprefix) + wine wineboot #this won't display any dialog boxes that require a button to be clicked + #wait until above process exits + sleep 2 + while [ ! -z "\$(pgrep -i 'wine C:')" ];do + sleep 1 + done +fi + +if [ "\$registry_exists" == false ];then +status "Making registry changes..." +TMPFILE="\$(mktemp)" || exit 1 +echo 'REGEDIT4' > \$TMPFILE + +echo " - Disabling Wine mime associations" #see https://askubuntu.com/a/400430 + +echo ' +[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServices] +"winemenubuilder"="C:\\\\windows\\\\system32\\\\winemenubuilder.exe -r" + +[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices] +"winemenubuilder"="C:\\\\windows\\\\system32\\\\winemenubuilder.exe -r"' >> \$TMPFILE + +wine regedit \$TMPFILE + +rm -f \$TMPFILE +fi #end of if statement that only runs if this script was started when there was no wine registry +true +EOF + +sudo chmod +x /usr/local/bin/generate-hangover-prefix +/usr/local/bin/generate-hangover-prefix || exit 1 diff --git a/apps/Hangover/uninstall b/apps/Hangover/uninstall new file mode 100755 index 0000000000..0dc9d98cec --- /dev/null +++ b/apps/Hangover/uninstall @@ -0,0 +1,24 @@ +#!/bin/bash + +pkill -9 wine +command -v wineserver >/dev/null && wineserver -k + +status -n "Removing terminal commands... " +sudo rm -rf /usr/local/bin/generate-hangover-prefix +status_green "Done" + +status -n "Removing mimetypes... " +#See: https://askubuntu.com/a/400430 +rm -f ~/.local/share/mime/packages/x-wine* +rm -f ~/.local/share/applications/wine-extension* +rm -f ~/.local/share/icons/hicolor/*/*/application-x-wine-extension* +rm -f ~/.local/share/mime/application/x-wine-extension* +status_green "Done" + +purge_packages || exit 1 + +if [ -e "$HOME/.wine" ];then + echo -e "\n\n\e[93mYou just uninstalled the Hangover app, but it's not completely gone yet. +To prevent data loss, your Wine configuration is still\nlocated in the $HOME/.wine folder. Feel free to delete it to save space or to rename the folder for troubleshooting.\e[39m\n" +fi +true diff --git a/apps/Hangover/website b/apps/Hangover/website new file mode 100644 index 0000000000..5498f52817 --- /dev/null +++ b/apps/Hangover/website @@ -0,0 +1 @@ +https://github.com/AndreRH/hangover diff --git a/apps/Wine (x64)/install-64 b/apps/Wine (x64)/install-64 index b0f1d72b77..7ece93fe52 100755 --- a/apps/Wine (x64)/install-64 +++ b/apps/Wine (x64)/install-64 @@ -31,6 +31,9 @@ Would you like to automatically switch to a 4K PageSize Linux Kernel?" fi fi +# Wine conflicts with Hangover +"${DIRECTORY}/manage" uninstall Hangover + # Get dependencies install_packages cabextract p7zip-full || exit 1 diff --git a/etc/categories b/etc/categories index 4b584ffe32..95c32c1176 100644 --- a/etc/categories +++ b/etc/categories @@ -78,6 +78,7 @@ Gnumeric|Office Godot|Games GParted|System Management Guake Terminal|Terminals +Hangover|Tools/Emulation Heroes 2|Games Https File Server|Tools HTTrack Website Copier|Internet From a30c33a339d1cf807628c584edb2ccf5dce280a9 Mon Sep 17 00:00:00 2001 From: Botspot <54716352+Botspot@users.noreply.github.com> Date: Mon, 9 Dec 2024 20:16:34 -0600 Subject: [PATCH 2/4] add wine preinstalled caveat --- apps/Hangover/description | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/apps/Hangover/description b/apps/Hangover/description index 96e0b4a27a..03e2729894 100644 --- a/apps/Hangover/description +++ b/apps/Hangover/description @@ -1,7 +1,8 @@ Hangover runs simple Win64 and Win32 applications on arm64 Linux. Only the application is emulated instead of a whole Wine installation. -Examples on how to run: +Hangover can be used in place of the Wine app on Pi-Apps. If you have Wine installed already, clicking Install here will uninstall Wine first. Do note that installed applications and configuration left over from Wine in ~/.wine will need to be removed or renamed, as it appears Hangover cannot import it. +Examples on how to run: $ wine your_x86_64_application.exe # Uses FEX for 64-bit apps $ wine your_x86_application.exe # To use Box64 for 32-bit apps $ HODLL=libwow64fex.dll wine your_x86_application.exe # To use FEX for 32-bit apps From 1d0aa0eb6597b56d97d2dc2fd07d9efa52eadc65 Mon Sep 17 00:00:00 2001 From: Botspot <54716352+Botspot@users.noreply.github.com> Date: Mon, 9 Dec 2024 20:24:58 -0600 Subject: [PATCH 3/4] mention hangover's usefulness --- apps/Hangover/description | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/apps/Hangover/description b/apps/Hangover/description index 03e2729894..a787d63eda 100644 --- a/apps/Hangover/description +++ b/apps/Hangover/description @@ -1,6 +1,9 @@ Hangover runs simple Win64 and Win32 applications on arm64 Linux. Only the application is emulated instead of a whole Wine installation. -Hangover can be used in place of the Wine app on Pi-Apps. If you have Wine installed already, clicking Install here will uninstall Wine first. Do note that installed applications and configuration left over from Wine in ~/.wine will need to be removed or renamed, as it appears Hangover cannot import it. +Hangover can be used in place of the Wine app on Pi-Apps. It may be worth trying this to see if something that did not run on the emulated Wine will run here. +For example, one app (tested by Botspot) failed to launch the installer on emulated Wine (x64), got stuck installing on Hangover with the Box64 emulator, and successfully installed with the FEX emulator selected. (see how to select an emulator below) + +If you have Wine installed already, clicking Install here will uninstall Wine first. Do note that installed applications and configuration left over from Wine in ~/.wine will need to be removed or renamed, as it appears Hangover cannot import it. Examples on how to run: $ wine your_x86_64_application.exe # Uses FEX for 64-bit apps From 5bd700d3a69064ad2b9f526825e13b870ea76226 Mon Sep 17 00:00:00 2001 From: Botspot <54716352+Botspot@users.noreply.github.com> Date: Mon, 9 Dec 2024 20:28:35 -0600 Subject: [PATCH 4/4] Hide Hangover on Jetson --- etc/category-overrides-jetson-18.04 | 1 + etc/category-overrides-jetson-generic | 1 + 2 files changed, 2 insertions(+) diff --git a/etc/category-overrides-jetson-18.04 b/etc/category-overrides-jetson-18.04 index ffeb8458c5..12e5a0a1a4 100644 --- a/etc/category-overrides-jetson-18.04 +++ b/etc/category-overrides-jetson-18.04 @@ -20,6 +20,7 @@ Flow|hidden FreeTube|hidden Gnome Software|Tools Godot|hidden +Hangover|hidden Kodi|hidden LibreWolf|hidden Lightpad|hidden diff --git a/etc/category-overrides-jetson-generic b/etc/category-overrides-jetson-generic index 2b0d9a2d22..7cc6016de5 100644 --- a/etc/category-overrides-jetson-generic +++ b/etc/category-overrides-jetson-generic @@ -9,6 +9,7 @@ Flow|hidden FreeTube|hidden Gnome Software|Tools Godot|hidden +Hangover|hidden Kodi|hidden Lightpad|hidden Minecraft Pi (Modded)|hidden