The idea of building a better
fmon has come up a few times, with the main goal of avoiding potential catch-22 issues by making sure an icon has been processed by nickel before launching anything...
This came up once again in a
KOReader enhancement request, this time with a POC.
Since I don't use KSM, and I've always been interested in the trick used by fmon to launch stuff (using inotify, which I'm familiar with, especially how to deal with it in the peculiar environment of an USBMS device), I decided to take the plunge and build a proper, polished product out of that concept.
So here comes KFMon! The goal is to basically do what fmon does, but safer, more user-friendly, and more configurable.
Of particular interest to document readers is the ability to inhibit the launch of *anything* through KFMon while a specific action is running (that's in addition to the general protection against running concurrent instances of the same action). This feature is enabled in the KOReader & Plato configs featured in the repo
.
Speaking of KOReader & Plato, if that's what you're trying to run, see the
One Click Packages thread
.
I won't be rehashing the documentation here, see the
GitHub project for the full and up-to-date version
.
This documentation includes install instruction (notice how I'm not repeating those here, so you will *have* to read the doc? ;p).
Some quick but important notes: make sure you have
full backups of your device beforehand,
in particular your Nickel database & settings.
Full disclosure: I never had to resort to something more drastic than a pinhole reboot & a db & settings restore (i.e; no lost content, no factory reset) during my
early tests, but those Kobos sure are finicky, so, better be safe than sorry
.
It ships with a default config file providing a KOReader launch icon. In order for it not to do anything stupid, it
requires a current version of KOReader.
Of course, running both fmon & kfmon in parallel is highly discouraged. Thankfully, unless you're doing something wrong, you actually can't
.
If you encounter anything weird, detailed feedback will be key to fix potential issues
.
And, as usual, I'm open to all kind of trivial comments. In particular if you feel the documentation is lacking or confusing, don't hesitate to tell me
.
And, it bears repeating:
carefully read the full documentation from top to bottom before diving blindly into stuff
.
NOTE: macOS users, you may have to bypass a few of your OS's most dubious "Quality of Life" features to get things to work properly, c.f.,
this post for more details.
Enjoy!