An embeddable terminal widget for tcell
vt: preserve environment of start command
example: add a show_keys example
eventHandler: buffer events in channel before sending to host



You can also use your local clone with git send-email.


A virtual terminal widget for tcell

tcell-term implements the native tcell Widget interface.

screen := tcell.NewScreen()
term := tcellterm.New()
// Create a view. A screen is also a valid view
view := views.NewViewport(screen, 0, 0, -1, -1)

// Set the view. This must be set before calling Draw in your event
// handler

// Call watch with your model. It should HandleEvent(ev tcell.Event)

cmd := exec.Command(os.Getenv("SHELL"))

go func() {

For general discussion or patches, use the mailing list: ~rockorager/tcell-term@lists.sr.ht.


Anyone can contribute to tcell-term:

  • Clone the repository.
  • Patch the code.
  • Make some tests.
  • Ensure that your code is properly formatted with gofmt.
  • Ensure that everything works as expected.
  • Ensure that you did not break anything.
  • Do not forget to update the docs.

Once you are happy with your work, you can create a commit (or several commits). Follow these general rules:

  • Limit the first line (title) of the commit message to 60 characters.
  • Use a short prefix for the commit title for readability with git log --oneline.
  • Use the body of the commit message to actually explain what your patch does and why it is useful.
  • Address only one issue/topic per commit.
  • If you are fixing a ticket, use appropriate commit trailers.
  • If you are fixing a regression introduced by another commit, add a Fixes: trailer with the commit id and its title.

There is a great reference for commit messages in the Linux kernel documentation.

Before sending the patch, you should configure your local clone with sane defaults:

git config format.subjectPrefix "PATCH tcell-term"
git config sendemail.to "~rockorager/tcell-term@lists.sr.ht"

And send the patch to the mailing list:

git sendemail --annotate -1

Wait for feedback. Address comments and amend changes to your original commit. Then you should send a v2:

git sendemail --in-reply-to=$first_message_id --annotate -v2 -1