- Notifications
You must be signed in to change notification settings - Fork4
Minimal terminal emulator for Bubbletea.
License
BigJk/crt
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
CRT is a library to provide a simple terminal emulator that can be attached to atea.Program
. It usesebitengine
to render a terminal. It supports TrueColor, Mouse and Keyboard input. It interprets the CSI escape sequences coming from bubbletea and renders them to the terminal.
This started as a simple proof of concept for the game I'm writing with the help of bubbletea, calledEnd Of Eden. I wanted to give people who have no clue about the terminal a simple option to play the game without interacting with the terminal directly. It's also possible to apply shaders to the terminal to give it a more retro look which is a nice side effect.
go get github.com/BigJk/crt@latest
package mainimport ("github.com/BigJk/crt"bubbleadapter"github.com/BigJk/crt/bubbletea"tea"github.com/charmbracelet/bubbletea""github.com/charmbracelet/lipgloss""image/color")// Some tea.Model ...funcmain() {// Load fonts for normal, bold and italic text styles.fonts,err:=crt.LoadFaces("./fonts/SomeFont-Regular.ttf","./fonts/SomeFont-Bold.ttf","./fonts/SomeFont-Italic.ttf",crt.GetFontDPI(),16.0)iferr!=nil {panic(err)}// Just pass your tea.Model to the bubbleadapter, and it will render it to the terminal.win,_,err:=bubbleadapter.Window(1000,600,fonts,someModel{},color.Black,tea.WithAltScreen())iferr!=nil {panic(err)}// Star the terminal with the given title.iferr:=win.Run("Simple");err!=nil {panic(err)}}
See more examples in the/examples
folder!
Only supports TrueColor at the moment (no 256 color support) so you need to use TrueColor colors in lipgloss (e.g.Now supported.lipgloss.Color("#ff0000")
)- Not all CSI escape sequences are implemented but the ones that are used by bubbletea are implemented
- Key handling is a bit quirky atm. Ebiten to bubbletea key mapping is not perfect and some keys are not handled correctly yet.
- A lot of testing still needs to be done and there are probably edge cases that are not handled correctly yet
- Basic CRT Shader
./shader/crt_basic
:https://quasilyte.dev/blog/post/ebitengine-shaders/ - Lottes CRT Shader
./shader/crt_lotte
: Elias Dalerhttps://github.com/eliasdaler/crten and Timothy Lottes.
About
Minimal terminal emulator for Bubbletea.