MudOutput will be a GTK+-based custom terminal widget aimed primarily at the developers of MUD clients. A key goal of the project will be to provide an implementation that can be binded to different gui toolkits. At the start of the project, GTK+ and WxWidgets will be the primary toolkits targeted.
- Provide a cross-toolkit solution.
- Implement a robust terminal emulation layer.
- Allow for modern MUD protocols like MXP to be easily supported.
The current terminal emulation solution provided for GNOME/GTK+ environment is VTE. VTE works quite well for doing standard terminal things. However, when the mud client developer gets to a certain maturity of codebase and wants to start implementing some of the more modern MUD protocols she finds that VTE is incapable of producing the desired result. In point of fact, the following items are areas that VTE supports either poorly or not at all:
- Inline images.
- Variable-width font support.
- An API solution for marking hyperlinks in text output.
- The ability to split itself into frames.
- Textview-like text formatting (italics, bold, etc; on a word by word basis)
The following is a list of features that a successful implementation of MudOutput will provide. Since the project is in the early-design phase very few of these are set in stone.
- VT-100 (VT-102? xterm?) Terminal Emulation
- 'ANSI' colors. (included in terminal emulation layer?)
- 256 color support (6x6x6 color cubes)
- Arbitrary RGB color support (the other color types could simply be 'layers' of this color type)
- CMUD colors
- Variable width fonts should be supported.
- The ability to calculate it's Row and Column count into values that make sense even with variable width fonts. (To support NAWS)
- Inline images should be supported.
- The ability to split the main area into numerous, independently accessible, sub-frames.
- Be able to detach the subframes to make them floating.
- Enable creating floating frames programatically.
- Styled text support (bold, italic, underline, etc)
- Hyperlink support - both for ingame links and links that launch a browser.
- Charset encoding support.
- Cross-toolkit support.