README.md (10614B)
1 # Rich Interactive Widgets for Terminal UIs 2 3 [](https://pkg.go.dev/github.com/rivo/tview) 4 [](https://goreportcard.com/report/github.com/rivo/tview) 5 6 This Go package provides commonly used components for terminal based user interfaces. 7 8  9 10 Among these components are: 11 12 - __Input forms__ (including __text input__, __selections__, __checkboxes__, and __buttons__) 13 - Navigable multi-color __text views__ 14 - Editable multi-line __text areas__ 15 - Sophisticated navigable __table views__ 16 - Flexible __tree views__ 17 - Selectable __lists__ 18 - __Images__ 19 - __Grid__, __Flexbox__ and __page layouts__ 20 - Modal __message windows__ 21 - An __application__ wrapper 22 23 They come with lots of customization options and can be easily extended to fit your needs. 24 25 ## Usage 26 27 To add this package to your project: 28 29 ```bash 30 go get github.com/rivo/tview@master 31 ``` 32 33 ## Hello World 34 35 This basic example creates a box titled "Hello, World!" and displays it in your terminal: 36 37 ```go 38 package main 39 40 import ( 41 "github.com/rivo/tview" 42 ) 43 44 func main() { 45 box := tview.NewBox().SetBorder(true).SetTitle("Hello, world!") 46 if err := tview.NewApplication().SetRoot(box, true).Run(); err != nil { 47 panic(err) 48 } 49 } 50 ``` 51 52 Check out the [GitHub Wiki](https://github.com/rivo/tview/wiki) for more examples along with screenshots. Or try the examples in the "demos" subdirectory. 53 54 For a presentation highlighting this package, compile and run the program found in the "demos/presentation" subdirectory. 55 56 ## Projects using `tview` 57 58 - [K9s - Kubernetes CLI](https://github.com/derailed/k9s) 59 - [IRCCloud Terminal Client](https://github.com/termoose/irccloud) 60 - [Window manager for `tview`](https://github.com/epiclabs-io/winman) 61 - [CLI bookmark manager](https://github.com/Endi1/drawer) 62 - [A caving database interface written in Go](https://github.com/IdlePhysicist/cave-logger) 63 - [Interactive file browse and exec any command.](https://github.com/bannzai/itree) 64 - [A complete TUI for LDAP](https://github.com/Macmod/godap) 65 - [A simple CRM](https://github.com/broadcastle/crm) 66 - [Terminal UI for todist](https://github.com/cyberdummy/todoista) 67 - [Graphical kubectl wrapper](https://github.com/dcaiafa/kpick) 68 - [Decred Decentralized Exchange ](https://github.com/decred/dcrdex) 69 - [A CLI file browser for Raspberry PI](https://github.com/destinmoulton/pixi) 70 - [A tool to manage projects.](https://github.com/divramod/dp) 71 - [A simple app for BMI monitoring](https://github.com/erleene/go-bmi) 72 - [Stream TIDAL from command line](https://github.com/godsic/vibe) 73 - [Secure solution for fully decentralized password management](https://github.com/guillaumemichel/passtor/) 74 - [A growing collection of convenient little tools to work with systemd services](https://github.com/muesli/service-tools/) 75 - [A terminal based browser for Redis written in Go](https://github.com/nitishm/redis-terminal) 76 - [First project for the Computer Networks course.](https://github.com/pablogadhi/XMPPClient) 77 - [Test your typing speed in the terminal!](https://github.com/shilangyu/typer-go) 78 - [TUI Client for Docker](https://github.com/skanehira/docui) 79 - [SSH client using certificates signed by HashiCorp Vault](https://github.com/stephane-martin/vssh) 80 - [VMware vCenter Text UI](https://github.com/thebsdbox/vctui) 81 - [Bookmarks on terminal](https://github.com/tryffel/bookmarker) 82 - [A UDP testing utility](https://github.com/vaelen/udp-tester) 83 - [A simple Kanban board for your terminal](https://github.com/witchard/toukan) 84 - [The personal information dashboard for your terminal. ](https://github.com/wtfutil/wtf) 85 - [MySQL database to Golang struct](https://github.com/xxjwxc/gormt) 86 - [Discord, TUI and SIXEL.](https://gitlab.com/diamondburned/6cord) 87 - [A CLI Audio Player](https://www.github.com/dhulihan/grump) 88 - [GLab, a GitLab CLI tool](https://gitlab.com/profclems/glab) 89 - [Browse your AWS ECS Clusters in the Terminal](https://github.com/swartzrock/ecsview) 90 - [The CLI Task Manager for Geeks](https://github.com/ajaxray/geek-life) 91 - [Fast disk usage analyzer written in Go](https://github.com/dundee/gdu) 92 - [Multiplayer Chess On Terminal](https://github.com/qnkhuat/gochess) 93 - [Scriptable TUI music player](https://github.com/issadarkthing/gomu) 94 - [MangaDesk : TUI Client for downloading manga to your computer](https://github.com/darylhjd/mangadesk) 95 - [Go How Much? a Crypto coin price tracking from terminal](https://github.com/ledongthuc/gohowmuch) 96 - [dbui: Universal CLI for Database Connections](https://github.com/KenanBek/dbui) 97 - [ssmbrowse: Simple and elegant cli AWS SSM parameter browser](https://github.com/bnaydenov/ssmbrowse) 98 - [gobit: binance intelligence terminal](https://github.com/infl00p/gobit) 99 - [viddy: A modern watch command](https://github.com/sachaos/viddy) 100 - [s3surfer: CLI tool for browsing S3 bucket and download objects interactively](https://github.com/hirose31/s3surfer) 101 - [libgen-tui: A terminal UI for downloading books from Library Genesis](https://github.com/audstanley/libgen-tui) 102 - [kubectl-lazy: kubectl plugin to easy to view pod](https://github.com/togettoyou/kubectl-lazy) 103 - [podman-tui: podman user interface](https://github.com/containers/podman-tui) 104 - [tvxwidgets: tview extra widgets](https://github.com/navidys/tvxwidgets) 105 - [Domino card game on terminal](https://github.com/gusti-andika/card-domino.git) 106 - [goaround: Query stackoverflow API and get results on terminal](https://github.com/glendsoza/goaround) 107 - [resto: a CLI app can send pretty HTTP & API requests with TUI](https://github.com/abdfnx/resto) 108 - [twad: a WAD launcher for the terminal](https://github.com/zmnpl/twad) 109 - [pacseek: A TUI for searching and installing Arch Linux packages](https://github.com/moson-mo/pacseek) 110 - [7GUIs demo](https://github.com/letientai299/7guis/tree/master/tui) 111 - [tuihub: A utility hub/dashboard for personal use](https://github.com/ashis0013/tuihub) 112 - [l'oggo: A terminal app for structured log streaming (GCP stack driver, k8s, local streaming)](https://github.com/aurc/loggo) 113 - [reminder: Terminal based interactive app for organising tasks with minimal efforts.](https://github.com/goyalmunish/reminder) 114 - [tufw: A terminal UI for ufw.](https://github.com/peltho/tufw) 115 - [gh: the GitHub CLI](https://github.com/cli/cli) 116 - [piptui: Terminal UI to manage pip packages](https://github.com/glendsoza/piptui/) 117 - [cross-clipboard: A cross-platform clipboard sharing](https://github.com/ntsd/cross-clipboard) 118 - [tui-deck: nextcloud deck frontend](https://github.com/mebitek/tui-deck) 119 - [ktop: A top-like tool for your Kubernetes clusters](https://github.com/vladimirvivien/ktop) 120 - [blimp: UI for weather, network latency, application status, & more](https://github.com/merlinfuchs/blimp) 121 - [Curly - A simple TUI leveraging curl to test endpoints](https://github.com/migcaraballo/curly) 122 - [amtui: Alertmanager TUI](https://github.com/pehlicd/amtui) 123 - [A TUI CLI manager](https://github.com/costa86/cli-manager) 124 - [PrivateBTC](https://github.com/adrianbrad/privatebtc) 125 - [play: A TUI playground to experiment with your favorite programs, such as grep, sed, awk, jq and yq](https://github.com/paololazzari/play) 126 - [gorest: Enjoy making HTTP requests in your terminal, just like you do in Insomnia.](https://github.com/NathanFirmo/gorest) 127 - [Terminal-based application to listen Radio Stations around the world!](https://github.com/vergonha/garden-tui) 128 - [ntui: A TUI to manage Hashicorp Nomad clusters](https://github.com/SHAPPY0/ntui) 129 - [lazysql: A cross-platform TUI database management tool written in Go](https://github.com/jorgerojas26/lazysql) 130 - [redis-tui: A Redis Text-based UI client in CLI](https://github.com/mylxsw/redis-tui) 131 - [fen: File manager](https://github.com/kivattt/fen) 132 - [sqltui: A terminal UI to operate sql and nosql databases](https://github.com/LinPr/sqltui) 133 - [DBee: Simple database browser](https://github.com/murat-cileli/dbee) 134 - [oddshub: A TUI for sports betting odds](https://github.com/dos-2/oddshub) 135 - [envolve: Terminal based interactive app for manage enviroment variables](https://github.com/erdemkosk/envolve) 136 - [zfs-file-history: Terminal UI for inspecting and restoring file history on ZFS snapshots](https://github.com/markusressel/zfs-file-history) 137 - [fan2go-tui: Terminal UI for fan2go](https://github.com/markusressel/fan2go-tui) 138 - [NatsDash: Terminal UI for NATS Jetstream](https://nats-dash-gui.returnzero.win/) 139 - [tuissh: A terminal UI to manage ssh connections](https://github.com/linuxexam/tuissh) 140 - [chiko: Ultimate Beauty TUI gRPC Client](https://github.com/felangga/chiko) 141 - [kmip-explorer: Browse & manage your KMIP objects from the terminal](https://github.com/phsym/kmip-explorer) 142 - [stui: Slurm TUI for managing HPC clusters](https://github.com/antvirf/stui) 143 - [nerdlog: Fast, remote-first, multi-host log viewer with timeline histogram](https://github.com/dimonomid/nerdlog) 144 145 ## Documentation 146 147 Refer to https://pkg.go.dev/github.com/rivo/tview for the package's documentation. Also check out the [Wiki](https://github.com/rivo/tview/wiki). 148 149 ## Dependencies 150 151 This package is based on [github.com/gdamore/tcell](https://github.com/gdamore/tcell) (and its dependencies) as well as on [github.com/rivo/uniseg](https://github.com/rivo/uniseg). 152 153 ## Sponsor this Project 154 155 [Become a Sponsor on GitHub](https://github.com/sponsors/rivo?metadata_source=tview_readme) to further this project! 156 157 ## Backwards-Compatibility 158 159 I try really hard to keep this project backwards compatible. Your software should not break when you upgrade `tview`. But this also means that some of its shortcomings that were present in the initial versions will remain. Having said that, backwards compatibility may still break when: 160 161 - a new version of an imported package (most likely [`tcell`](https://github.com/gdamore/tcell)) changes in such a way that forces me to make changes in `tview` as well, 162 - I fix something that I consider a bug, rather than a feature, something that does not work as originally intended, 163 - I make changes to "internal" interfaces such as [`Primitive`](https://pkg.go.dev/github.com/rivo/tview#Primitive). You shouldn't need these interfaces unless you're writing your own primitives for `tview`. (Yes, I realize these are public interfaces. This has advantages as well as disadvantages. For the time being, it is what it is.) 164 165 ## Your Feedback 166 167 Add your issue here on GitHub. Feel free to get in touch if you have any questions. 168 169 ## Code of Conduct 170 171 We follow Golang's Code of Conduct which you can find [here](https://golang.org/conduct).