(K·Web·Brew)
Kindle Web-Based HomeBrew Launcher
The KWebBrew Launcher (Kindle Web-Based HomeBrew Launcher) allows people to code custom HTML webapps which are then stored locally on the Kindle itself, without the need for an internet connection or jailbreak!
The KWebBrew Launcher acts as a launcher which automatically scans for apps, and then allows you to launch them with ease
The KWebBrew Launcher also comes with a few applications of its own, such as a read-only file manager (write filesystem access requires jailbreak, which is not the point of KWebBrew
Lastly, the KWebBrew Launcher also comes with an API which other applications can use to read local files/directories as well as a polyfill including most standard ES6 features (see Limitations)
Last Tested on Kindle Firmware: 5.15.1.1
Should work an all previous and future firmware versions
- Download the latest release
KWebBrew.zip
file - Extract the zip file
- Copy the
apps
andkwebbrew
folders to the root of your Kindle - Copy the
.active_content_sandbox
folder to the root of your Kindle (note: this erases your web browser history and any custom bookmarks) DONE!
KWebBrew automatically installs a bookmark for itself when copying the .active_content_sandbox
folder, simply select this bookmark and it will open KWebBrew
KWebBrew also doesn't require an internet connection to function, simply open it and select an app
Apps are HTML apps which are installed in the apps
folder of your Kindle, they will appear on the launcher as shown in the images
To install an app, simply download it, and copy the folder to the apps
folder
KWebBrew comes with a few proof-of-concept apps such as Sudoku (Created by tesseractcat on the mobileread forums) or KChess (still a work in progress) and KCalc (a Kindle calculator)
Please see the wiki (Work In Progress)
Since the Kindle browser can access local files, and the fact that we know the mount path for USB, this means that the browser can load local HTML files!
In fact, the browser itself can even bookmark these files for quick access.
However, the browser does not support fetch or xmlhttprequests to get local files, luckily, I found a workaround by using iframes and getting their source. Additionally, the use of a polyfill allows apps using the KWebBrew API to use ES6 syntax in their apps, while the browser normally wouldn't support it
Note that whilst the polyfill works extremely well, there are some things that can't be replaced by a polyfill, for this reason the following features do not work:
If you find any unexpected behaviour, please open an issue
Using custom polyfill from: polyfill.io - MIT
"Exploit" Discovery: mobileread forums also here