From Fedora Project Wiki

Text UI

Rational

Why a Text UI

  • lots of servers don't have X11 installed
  • serial console
  • can't drop support (where there is one)

Requirements

  • Python or Python bindings
  • Unicode/UTF-8 support
  • similar look and feel to the current (snack) UIs
  • Managed Widgets
  • Must cope with changing screen size (xterm)
  • Must be simple to program
  • must match paradigms found in the Gtk UIs

Urwid

We've looked at Urwid which

  • has Unicode/UTF-8 support
  • copes with changing screen size

Problems

  • Constructor driven API makes dynamic interfaces difficult
  • Some Callbacks are missing
  • API is awkward and difficult to use
  • Constructor driven
  • Not all widgets fit into each other - needs a lot of care by the programmer
  • Spacing is done in separate widgets (widget bloat)
  • Lots of parameters needed to build widgets
  • No sensitive default - because widgets are not smart enough to know
  • Widgets are only partially managed
  • Missing widget attributes
  • sensitive
  • visible (set_no_show_all?)
  • No theming - only per widget colors (recursive)
  • Some important widgets are missing (see below)
  • Internal workflow is -- interesting

Widgets needed

  • --- Not needed
  • XXX missing/needs work
Gtk Widget Urwid status
!GtkAlignment Padding
!GtkButton Button
!GtkEntry Edit
!GtkEventBox ---
!GtkFrame Frame
GtkHBox Columns
GtkHButtonBox XXX
GtkHPaned XXX (Columns)
!GtkImage ---
!GtkImageMenuItem ---
!GtkLabel Text
!GtkMenu XXX
!GtkMenuBar XXX
!GtkMenuItem XXX
!GtkNotebook XXX
!GtkRadioButton !RadioButton
!GtkScrolledWindow XXX
!GtkSeparatorMenuItem XXX
!GtkStatusbar Text
!GtkTable !GridFlow
!GtkTextView Edit (XXX)
!GtkTreeView XXX browse.py
GtkVBox Pile
!GtkViewport Canvas?
!GtkWindow ??? - Window manager needed?


Other Text UIs

Other stuff we looked at

  • Turbo Vision
  • No Python bindings
  • No unicode
  • Not managed
  • Snack
  • Not Unicode capable
  • Not managed
  • Not much