What does `Flin' stand for? Flin means `Flin's a Learners Interface to 'Nix Systems'. What is `Flin'? Flin is a Un*x/ncurses menu interface. I originally wrote it when I tried to make a shell script to add some security to my guest account. I found that shell scripts are completely impossible to write in a decent way and just plain ugly to look at. So I had my hand at writing my own. Besides, I wanted to try out my gnu-ELF build environment on something other than one module programs. How do I write menus? This is a short primer, please see the file Manual for further details. Flin menus are very simple to write and read. They are laid out in a very logical way much like the menus to `fvwm' (1.xx anyway). Unfortunately, at this point the parser is a bit crude, but it has nice verbose output so you can trace down the problem in the menu file really easily. A menu starts with the word `Menu' followed by the menu name (not the title), and ends with the word `EndMenu'. Each menu consists of a variety of tokens and their respective arguments, tokens and arguments are split by the character `:'. At this point there is no escape character, so you cannot use `:' in menu text. Every token has at least one argument, which is what will appear on the screen. The tokens currently recognized by Flin are as follows: * `Title': denotes the title of the menu (you can have as many as you like). Title:Main Menu: * `Exec': denotes an executable item and has two arguments, the second is the command line to execute. Exec:Read Mail:pine: * `Args': denotes an executable with user-inputed command line arguments. The optional `Prompt' field contains the title for the dialog box. USE WITH CARE, this could be a whopping security whole when used improperly. Args:Send a file (ZMODEM):sz:Prompt: * `SubMenu': denotes a link to another menu and has two arguments, the second is the name of the Menu to link to. SubMenu:File Utilities:File-Util: * `Exit': quits the current menu, if the current menu is the first menu, you will be logged out. Exit:Back to Main Menu: * `Quit': Log out of Flin. Quit:Logout: * `Nop': is for comments Nop:This is a comment: Putting it together: To execute the menu, you can either put the line `#!/usr/local/bin/flin' at the first line in the menu, or type `flin <menu-name>'. A sample menu is provided with this distribution, please examine it. HOW TO GET HELP: If you find a bug PLEASE send me a report describing it, or fix it yourself and send me a patch with description. Send all patches/advice/questions/flames to `shmit@kublai.com' I hope you find this software useful, and please: hack away at the code, add new screen modules, take some items off the TODO list, add some items to the TODO list. The only thing I ask is that you send me patches (with comments) when you have done something. Or just talk to a good shrink. WHERE TO GET UPDATES: Major and minor version revisions will be posted to comp.os.linux.annouce. They will be released as a full distribution in the primary/secondary sites as listed in the lsm entry. The secondary site tends to get updated quicker than the primary, if you're keen on bleeding edge updates head there. Notes on patchlevel revisions: I revise the patchlevel when bugs are fixed or small features added, I bump up the minor version when big features change. Major level revisions happen rarely, and indicate major changes (or new-found stability). Patchlevel revisions will not be posted to comp.os.linux.announce. They will be released in unified diff form ONLY. Apply with `patch -p1 < flin-x.x.x.patch'. Alternately, if you wish to be informed of updates automagically, send me mail at `shmit@kublai.com' saying so. If a lot of you guys want to know I could set up a mailing list (as soon as majordomo works with perl-5).