This project is pre-alpha, and is not usable or stable.
This project is some widgets for a text user interface inspired by the fictional computer from the Fallout video games, and a basic application written in those widgets. The widget API is in the GNU Guile dialect of Scheme. The code is a mixture of GNU Guile dialect of Scheme and of C.
To build, the code requires or could someday require
- guile-2.0.x
- guile-ncurses-1.7
- libunistring
- fribidi
- libpng
- pulseaudio
- maybe eventually gstreamer
- maybe eventually guile-gstreamer if that can be resurrected
- maybe eventually guile-mysql or guile-db
- maybe eventually gpsd
- Notebook: a tabbed notebook container
- Label: (string) auto wrapping text in a box
- Progress Bar: (string/number) a short text and a progress bar
- Terminal: (string) auto wrapping text that reveals itself one character at a time. Bracketed text are clickable links.
- Message Dialog (string x3): wrapped, centered text in a frame, with one or two buttons.
- Menu Bar: (alist key string) a small menu, arranged horizontally in one line, that associates keys with actions
- List Menu: (list) a scrolling list of elements, where one can be selected.
- Alphabetized List Menu: (list) a scrolling list of elements, where one can be selected.
- Description Menu: (alist) a scrolling list of elements and short descrpitions. The short descriptions are on the same line as the elements.
- Info Menu: (alist) a scrolling list of elements with long descriptions. The long description of the currently selected element is displayed as wrapped multi-line text to the right of the list of elements.
- Image: (u32 array) an Unicode-art rendering of an RGB32 array
- Form: (?) a form with fillable fields
- Text Entry: (?) a multi-line text entry widget
- Streaming audio playback
- GPS position
- Database query
- Streaming music player
- Security camera control
- Retro-futurist blog engine
Putting together a main loop with Pulseaudio support was more annoying than I thought, but, it is cool that I get to recycle some chiptune code.
Guile's GStreamer support is rotten; how will I play Icecast streams?
If I really want to do fallback rendering for Latin1, it would take some effort.