---
name: "flin"
section: "1"
platform: "linux"
package: "flin"
version: "0.5.1-9.2"
release: "Debian 3.1 (Sarge)"
platforms: ["linux"]
url: "https://new.carta.tech/flin"
---

# flin(1)

Flin's a Learners Interface to 'Nix Systems.

## NAME

flin - **F**lin's a **L**earners **I**nterface to '**N**ix **S**ystems.

## SYNOPSIS

**flin \[-hV\] \[-d delimiter\] \[-e escape\] \[-c comment\] \[menu file\]**

## DESCRIPTION

**flin** loads *menu file* and displays it. The menu is made up of any combination of *token structures* seperated by line breaks.

## OPTIONS

- *-h*

  Print a help message and usage information.

- *-V*

  Print version information and compile-time defaults.

- *-d delimiter*

  Set the delimiter character to *delimiter*.

- *-e escape*

  Set the escape character to *escape*.

- *-c comment*

  Set the comment character to *comment*.

- *menu file*

  Load menu from *menu file*.

## FILE FORMAT

*Note: I will be using \`:' as the token delimiter,* *\`\\' as the escape character, and \`#' as the* *comment character throughout this document.*

Flin files are made up of a series of *token structures* and *directives*. There is a limit of one token structure or directive per line.

Lines beginning with \`#' will be ignored by **flin**.\
 Characters preceded by \`\\' will be treated literally by **flin**.

## Directives

Directives tell **flin** how to interperet text. Currently **flin** only understands the *Menu* directive. Directives may not be nested.

- *Menu name*

  Starts a menu named *name*, all following lines will be interpereted as *token structures* until *EndMenu* is read.

## Token Structures

Token structures are enclosed within a *Menu directive*, with one structure per line. A token structure is made up of at least two fields separated by delimiters. The last field **must** end with a delimiter. The format of the token structure is:

Token:Name:Args:

Where *Token* is the type of item to display, *Name* is the name of the item, and *Args* is the argument field. Not all tokens require the argument field, see the **Tokens** section for details.

**Tokens**

- *Title*

  Title inserts a non-selectable title line in the menu.

  Title:Name:

- *Nop*

  Nop inserts a non-selectable line in the menu, when blank will display a line.

  Nop:Name:\
   or\
   Nop::

- *SubMenu*

  SubMenu creates a link to another menu named in the *Args* field.

  SubMenu:Name:Args:

- *Exec*

  Exec executes the *Args* field.

  Exec:Name:Args:

- *Args*

  Args executes the *Args* field with user inputted command-line arguments. The optional *Prompt* field contains the prompt for the dialog box. *Use with care!* If you use this improperly, you could open up a big security whole on your system.

  Args:Name:Args:*Prompt:*

- *Exit*

  Exit exits the current menu, returning to the previous menu. If Exit is executed in the first menu loaded Flin will quit.

  Exit:Name:

- *Quit*

  Exits flin.

  Quit:Name:

## EXAMPLE MENU

Here is an example menu (comment character is \`#', delimiter is \`:'):

```
#
#	test.menu - A sample menu for `flin'
#		    to try it out type:
#		    flin test.menu
#
# Startup Menu
Menu Main
    Title:Main Menu:
    Nop::
    SubMenu:File Utitities:File-Util:
    SubMenu:Surf the 'Net:InterNet:
    Exit:Logout:
EndMenu
# File utilities
Menu File-Util
    Title:File Menu:
    Nop::
    Exec:Directory listing:ls -F:
    Exit:Back to Main Menu:
EndMenu
# Net `Surfing'
Menu InterNet
    Title:Internet:
    Nop::
    Exec:CyberMail:pine:
    Nop:Anything's cooler if you prepend it with `cyber':
    Exec:Telnet:telnet:
    Exec:Ftp:ftp:
    Exit:Back to Main Menu:
EndMenu
```

## BUGS

No! No! Never! Yes. A bit. She has got a wart.

## AUTHOR

Brian Cully (shmit@kublai.com)
