Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/chriseidhof/TerminalUI
https://github.com/chriseidhof/TerminalUI
Last synced: 3 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/chriseidhof/TerminalUI
- Owner: chriseidhof
- License: mit
- Created: 2021-05-06T14:02:54.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2022-11-30T09:13:08.000Z (almost 2 years ago)
- Last Synced: 2024-08-05T20:46:12.299Z (3 months ago)
- Language: Swift
- Size: 53.7 KB
- Stars: 323
- Watchers: 6
- Forks: 7
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# terminal-ui
A way to build [TUI](https://en.wikipedia.org/wiki/Text-based_user_interface) apps with a layout system and API that's similar to SwiftUI.
This was just a proof of concept. [SwiftTUI](https://github.com/rensbreur/SwiftTUI) looks a lot more complete and supported.
We reimplemented parts of the SwiftUI layout system in the Swift Talk series [SwiftUI Layout Explained](https://talk.objc.io/collections/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)
- [x] Alignment
- [x] GeometryReader
- [x] Border
- [x] Color (so far we only support 16 colors)
- [x] FixedFrame
- [x] FlexibleFrame
- [x] HStack
- [x] Overlay
- [x] Background
- [x] ZStack
- [x] Text
- [x] Padding (In progress)
- [ ] Add tests
- [x] 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:
- https://github.com/migueldeicaza/TermKit
- https://github.com/migueldeicaza/gui.csInspiration:
- https://github.com/aristocratos/bashtop
- https://github.com/rothgar/awesome-tuis
- ...