terminal-ui

A way to build TUI apps with a layout system and API that’s similar to SwiftUI.

We reimplemented parts of the SwiftUI layout system in the Swift Talk series SwiftUI Layout Explained. This tries to stay as close to that as possible.

A specific goal is to keep the layout behavior as close to SwiftUI as possible. So most SwiftUI programs should “just work” here as well.

Implementation Status

  • Views (in random order)
    • Alignment
    • GeometryReader
    • Border
    • Color (so far we only support 16 colors)
    • FixedFrame
    • FlexibleFrame
    • HStack
    • Overlay
    • Background
    • ZStack
    • Text
    • Padding (In progress)
      • Add tests
    • VStack
    • Progress
    • ScrollView
    • List
    • Button
    • Switch
    • Custom Alignment Guides
    • Layout Priorities
    • More ideas (lower priority)
      • Tree View (similar to outlines)
      • Menus
      • Navigation? (Not sure if this is a good idea, but could be fun to try)
  • State/Lifecycle/Interactivity
    • Custom View structures (I think we can build this on top of BuiltinView)
    • Environment (should be easy)
    • Preferences
    • State/Binding/ObservedObject
    • Focus (we should have some way for a control to be in focus, and )
    • Interaction (nothing is interactive yet)
    • Animations

Similar Projects:

Inspiration:

GitHub

https://github.com/chriseidhof/TerminalUI