How demonkingswarn/josh works
Josh is a Jai terminal emulator. The documented user workflow is to launch it, run a program in a real PTY, process that program’s VT output into terminal state, and display the result; users can also configure appearance and interact through keyboard, mouse, selection, and search. The tree contains dependency headers but no Josh application source, so app-level wiring and several integrations cannot be verified. Dashed links indicate documented capabilities whose implementation path or connection is not shown; Raylib modules are included as dependencies without assuming Josh invokes them.
Main entry points: terminal.h VT processing · screen.h Screen and scrollback · raylib.h Raylib interface · rcamera.h Camera utilities
Components 16
Terminal runtime
- Josh terminal
- PTY session
- Dix configuration
VT engine
- VT processing
modules/libghostty-vt-jai/include/ghostty/vt/terminal.h - Screen and scrollback
modules/libghostty-vt-jai/include/ghostty/vt/screen.h - Terminal rendering
modules/libghostty-vt-jai/include/ghostty/vt/render.h - Kitty graphics
modules/libghostty-vt-jai/include/ghostty/vt/kitty_graphics.h
Terminal interaction
- Keyboard encoding
modules/libghostty-vt-jai/include/ghostty/vt/key/encoder.h - Mouse encoding
modules/libghostty-vt-jai/include/ghostty/vt/mouse/encoder.h - Text selection
modules/libghostty-vt-jai/include/ghostty/vt/selection.h - Terminal search
modules/libghostty-vt-jai/include/ghostty/vt/search.h
Graphics dependencies
- Raylib interface
modules/Raylib/include/raylib.h - OpenGL abstraction
modules/Raylib/include/rlgl.h - Raylib math
modules/Raylib/include/raymath.h - Camera utilities
modules/Raylib/include/rcamera.h
Other components
- User
Connections 13
- User → Josh terminal: launches
- Josh terminal → PTY session: starts PTY
- PTY session → VT processing: provides VT output
- VT processing → Screen and scrollback: maintains state
- Screen and scrollback → Terminal rendering: renders state
- User → Keyboard encoding: types keys
- User → Mouse encoding: reports mouse
- User → Text selection: selects text
- User → Terminal search: searches contents
- User → Dix configuration: configures terminal
- Josh terminal → Kitty graphics: supports images
- Raylib interface → OpenGL abstraction
- Camera utilities → Raylib math: uses math
modules/Raylib/include/rcamera.h