[Fire HD 8 and HD 10 Android Development] Datastream33:
Alright, my penguin loving friends, I'm so happy to announce that the next version of the Python port has finally been released. While a grand majority of the changes are catchups to the Windows version, there are some new additions/improvements that are exclusive to just the Python port. So without further ado, let's jump into the nitty-gritty!

Disclaimer: I will be taking text from the Windows release post if needed, as I don't think it's necessary to repeat myself when it comes to some of these improvements/additions. I'd highly recommend reading that post before this one. Thank you!

Toolbox Installer V3.0​

Better Support for Arch Based Distros​

Admittedly, the biggest focus of V3.0 was to ensure the Installer would work better with Arch based distros such as Manjaro, Endevour, etc. I'm not sure why (if anyone knows better, could you please help me understand?), but Arch based distros really don't like shell being used from Python scripts. Attempting to use os.popen() would result in the same error each time: /bin/sh: symbol lookup error: /bin/sh: undefined symbol: rl_trim_arg_from_keyseq I tried doing some research into why this may be occurring but couldn't find anything? Anyway, moving over from os.popen() to subprocess.run() fixed the issue. As a result, all forms of detection (distro, pip, virtual environment, etc.) now work as intended. Hooray!

Although, attempting to auto install the pip modules resulted in pip spitting out a warning: WARNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available. did some research on this error as well and the solution seemed to be along the lines of reinstalling python. Funny thing is, the modules could be installed manually without an issue whatsoever. So, the installer now provides the command to install the modules manually.

Also, because of the whole issue with os.popen() not working, the real-time output of the extraction process can't be shown, so a warning has been added that states the output will be shown as extraction has completed. Again, because of the os.popen() issue, the Toolbox also can't be auto started after installation, so the option has been grayed out.

Sudo Password and the Virtual Environment​

So, I'm embarrassed to admit this, but I just discovered that you don't actually need sudo to create a virtual environment from within a script. So, all prompts asking for the sudo password have been removed from the Installer. This is awesome because I've also learned that the method we were using to ask the user for their password was prone to major security risks, so I'm happy we were able to do away with it entirely.

Now, when it comes to the virtual environment creation, in previous versions of the Installer it was kind of hard to tell what the Installer was doing... so I've added a little message that pops up with a loading animation that should help provide a better indication that the virtual environment is being created. This also applies to the installation of the pip modules as well.

Copying Code to the Clipboard​

Again, I'm also embarrassed to state that I had no clue PySimpleGUI (the Toolbox/Installer's GUI framework) had a function for copying text to the clipboard. So copying code now works, and isn't dependent on xsel being installed like it was in the past. Freaking awesome!

Installer Settings​

To accompany the other two tabs, a brand-new tab has made its way into the installer: the Window tab. In this tab, you'll find the option to increase/decrease the length and width of the Installer windows by increments of 10. Once changed, the sizes will retain even if the Installer's process ends. Of course, if the window is too small to begin with, you may have problems with clicking the Settings icon at the bottom of the welcome screen in the first place. As a workaround, I've made it so the Settings window can now be launched simply by pressing the "s" key on your keyboard.

Also, if you'd prefer to change the length and width through a text editor or through the CLI you can edit the "length" and "width" values of the "added_sizes" key in the Settings,json file - just keep in mind that the length and width have a maximum value of 60, and a minimum value of 0. Anything over or under those defined values will be ignored.

Google Services Downloading Issue​

Now, this was one of the bigger issues I wanted to address. Due to an error in the URL filtering function, the Toolbox wasn't able to obtain the proper download links, leading to the download failing, and Python throwing a file not found error. This has been fixed, so downloads should now work as intended.

Improving the Toolbox Updater​

For some reason, the Updater would fail to close when it couldn't find any updates/patches so that has been fixed. I've also added in checks to ensure Rentry (where the download links are stored) can be reached.

Scam Sites and Ensuring Your Download is Legit​

It has come to my attention that there are some scam sites out there claiming to be the "official" website for Fire Toolbox. Please do NOT download anything from these sites! They could be distributing malware, or bundling it with the Toolbox. I do NOT run any other websites (besides the two WordPress websites - Datastream33, aftb), and I do NOT post Toolbox updates or builds anywhere else except right here on XDA. Once you've downloaded either the Installer or Portable build, I'd strongly suggest checking the SHA256 checksum and ensuring the file's checksum matches the checksum posted here before installing.

Downloads​

Version	Python Version	Installer
V5.0 (Beta)	3.10.x	Download
V5.0 (Beta)	3.11.x	Download

NOTICE: You must obtain the correct version for your installed Python version. Run "python3 -V" in the Terminal to get the installed python version for your distro.

SHA256 Hashes​

Filename	SHA256 Hash
FTB_V5.0_Installer_Python3.11.7z	110bebfe5e28c75bd6235434f3b0ea640d6f24f77ef859a704db2a673972e01b
FTB_V5.0_Installer_Python3.10.7z	985f1fc24d21c7506b9245f8ba37194380535fb5a8ef9af762d7d6d3853498ec

In order to get the SHA256 checksum for the builds once downloaded, open a new Terminal instance, and execute the sha256sum command while also passing the file path as the first parameter. Example:

sha256sum ~/Downloads/FTB_V5.0_Installer_Python3.10.7z

You should get the SHA256 checksum as output. Now compare that value to the checksum provided in the SHA256 Hashes table below. If the sha256sum output matches the one from the table, then the file is safe. However, if they don't match, try downloading the file again and re compare until it does match. Ensure you ONLY download the file from this post or the Downloads section of the OP.

Reporting Issues​

Even though I feel like a large majority of distros shouldn't have too many problems with the Toolbox, I think it's safe to say that it may struggle to run on some. It's impossible to account for every distro as they're all different and setup differently than one another... but that doesn't mean we can't still try, right? Please, if you come across any issues with the Toolbox (or Installer) on your distro please share info regarding your distro (such as what it is, what version of Python it runs, what it's based on, etc.) with us so we can look into resolving those issues as quickly as possible. Thank you!

Wrapping Things Up​

As always, THANK YOU all so much for being so patient and so supportive! I know this took a little while to release after the Windows version... but we wanted to ensure the Installer was updated to extend compatibility to more distros. ;)

HUGE thanks goes out to my good friend @blaacksheep for putting up with me, being willing to test the builds, and letting me know all the issues he came across. THANK you so much man, you've helped in so many ways that words cannot express.

Well, that's all I've got for now. Thank you so much for taking the time to read this post. It really does mean a lot ot me. Hope everyone is having a great week so far. Here's looking forward to the weekend!

Much love, and until next time, peace! :D