Menu: * Implemented menu item updating based on config file creation/deletion/modtime. * Fixed ordering and separators for dynamically added actions. * Simplified separator property setting. * Fixed issue with item ordering on every second update (it keeps track by the item index based on the original menu, which changes after we add our items, so we actually need to remove our items before we find the item to prepend our new items to). * Note: generators can't trigger updates yet, and are only updated when the config changes. Config: * Split config parsing and scanning into multiple steps. * No more memory leaks on error. * Properly handle memory allocation errors. * Cleaner code. * Less chance of making mistakes when adding features in the future. * Also made if statements easier to read. * Refactored config state and list management into separate functions. * Extracted parsers for each config type into separate functions. * Cleaned up whitespace. * Rearranged variables. * Fixed a few memory leaks and use-after-free issues for errors in the config parser. * Fixed use-after-free of line in config parser. * Moved config file filtering into scandir. See #47 for details.
NickelMenu
The easiest way to launch custom scripts, change hidden settings, and run actions on Kobo eReaders.
See the thread on MobileRead for more details.
Installation
You can download pre-built packages of the latest stable release from the releases page, or you can find bleeding-edge builds of each commit from here.
After you download the package, copy KoboRoot.tgz into the .kobo folder of your eReader, then eject it.
After it installs, you will find a new menu item named NickelMenu with further instructions which you can also read here.
To uninstall NickelMenu, just create a new file named uninstall in .adds/nm/, or trigger the failsafe mechanism by immediately powering off the Kobo after it starts booting.
Most errors, if any, will be displayed as a menu item in the main menu in the top-left corner of the home screen. If no new menu entries appear here after a reboot, try reinstalling NickelMenu. If that still doesn't work, connect over telnet or SSH and check the output of logread.
Compiling
@NiLuJe's toolchain and sysroot are required to compile NickelMenu. They can also be found as a Docker image. To compile NickelMenu, just run make all koboroot with the toolchain in your PATH, or use docker run --volume="$PWD:$PWD" --user="$(id --user):$(id --group)" --workdir="$PWD" --env=HOME --entrypoint=make --rm -it geek1011/kobo-toolchain all koboroot with the Docker image.