A lot of what you write here is also on my mind.
Yes, Lua drawings is because of my limited knowledge. If I had more succes in implementing features the CHDK menu has, I might not have tried this approach.
But still, I think it gives the best oppurtunity to create a comprehensive menu.
Making it possible to create a tree-structure that would involve no scrolling, but moving to a different page that is only used for a sub menu or setting one menu item.
A few years back I have given some A480 & A490 cams away with CHDK and SUIx plus a printed manual.... i still have a few if somebody wants one
The feedback I got led me a.o. to make title headings in the script menu. And these might not be ideal, but improved the understanding and readability nontheless.
But it still is a long list to scroll through. And I was looking at ways to make the list more compact.
The obvious choice to me was combining related features, like in the CHDK menu where you have a on/off bullet with the setting on the same line. Or combining hours and minutes on the same line.
So I started to look into the way the CHDK menu was made, but i could not get that implemented in the CHDK script menu.
And since one line only gives you limited characters, combining setting might lead to even more cryptic text and from the feedback i got not much people actually read the manual.
This led me to try to make something with Lua drawings.
However, this meant the script would grow a few hundred lines of code and I was reluctant to do this because of performance issues.
So that is where I thought that a seperate menu script would be more usefull, keeping the working script lean and quick.
......And possibly making it generic enough to work with any script....after you copied the relevant dataset from the script you want to use it for.
Alas reading the *.0 file does not give enough data to make it work and pulling it out of a script automatically will need a very strict setup of your script. So making that copy is a manual thing, but it only has to be done once or when you change the parameter set of your script..
Considering that Lua drawings gave me a free hand in how much text there is per setting. (by using multiple lines)
I think it could lead to a more comprehensive menu. Making it easyer to find a setting and set up the script without reading the manual.
About 'hidden' items, a lot of settings are only set once when you first start to use the script.
Like, the day of reboot, display settings, led settings, usb connections etc.
Naturally I moved those to the bottom of the script menu and that is fine too.
But I think these items could be hidden in the regular script menu. Maybe only after the first time when you have set them correctly for your cam model or because default is good enough for most uses.
You can see the same in some of the CF settings:
If you press [SET] you get a few choices on the left hand side, like ISO, bracketing and resolution/file size.
If you press [MENU] you can also find ISO, but then with an extra feature, namely the upper limit of ISO in automatic.
Yes, it is quite challenging to create a comprehensive menu.
And it is a lot of work for something that is only used a few times.
But setting up a script for your specific needs is important and if you get lost in that, it usually leads to not using that feature or that script.
As for developing something separate for a menu, I'd rather use what is available than something that could lead to a buggy ad-hoc scripting language.
In my opinion, that's again an argument for using Lua drawings.
However, there are also some argument why Lua drawings would be the wrong choice.
-the flickering on digic 6 and up cams
smaller things, like how flexible drawings is for creating a clear and obvious menu f.i.
-i tried to increase the size of the active line of text. But with the size setting available (1-4) setting that to 2 wasn't just a few pixels more, but a doubling of text height leading to unreadable large characters in the menu. but maybe that can be solved by setting it to all capitals when active and/or what i've done now, changing bg color of the active line.