Tim Culverhouse
e6c8be4bd6
render: use provided character width
...
As a pretty large optimization, use the provided width when possible to
avoid measuring glyphs each render
Signed-off-by: Tim Culverhouse <tim@timculverhouse.com>
2024-01-28 22:42:51 -06:00
Tim Culverhouse
a355d7519a
fix name
...
Signed-off-by: Tim Culverhouse <tim@timculverhouse.com>
2024-01-28 21:36:30 -06:00
Tim Culverhouse
5c9ce93a63
update ziglyph
...
update ziglyph to include proper default text emoji with VS16 selector
widths
Signed-off-by: Tim Culverhouse <tim@timculverhouse.com>
2024-01-28 21:35:31 -06:00
Tim Culverhouse
c99dffaecf
WIP: images
...
Signed-off-by: Tim Culverhouse <tim@timculverhouse.com>
2024-01-25 13:32:22 -06:00
Tim Culverhouse
8f311da873
vaxis: implement hyperlinks (osc8)
...
This requires additional allocations anytime there is a hyperlink
Signed-off-by: Tim Culverhouse <tim@timculverhouse.com>
2024-01-24 19:07:05 -06:00
Tim Culverhouse
9950c9eac5
vaxis: mode cleanup, initial mouse implementation
...
Signed-off-by: Tim Culverhouse <tim@timculverhouse.com>
2024-01-24 18:36:45 -06:00
Tim Culverhouse
85060b001f
vaxis: implement mouse shapes
...
Signed-off-by: Tim Culverhouse <tim@timculverhouse.com>
2024-01-24 13:36:24 -06:00
Tim Culverhouse
4c84faddfa
vaxis: implement bracketed paste
...
Signed-off-by: Tim Culverhouse <tim@timculverhouse.com>
2024-01-24 13:23:02 -06:00
Tim Culverhouse
400e2d5cac
vaxis: implement osc2 set title
...
Signed-off-by: Tim Culverhouse <tim@timculverhouse.com>
2024-01-24 13:18:24 -06:00
Tim Culverhouse
33d43dc6d1
vaxis: implement osc9 and osc777 notifications
...
Signed-off-by: Tim Culverhouse <tim@timculverhouse.com>
2024-01-24 13:15:04 -06:00
Tim Culverhouse
3d6f42a66e
build: remove libxev dependency
...
We aren't using this anymore
2024-01-24 11:54:58 -06:00
Tim Culverhouse
1d74a6e4d0
add license
...
Signed-off-by: Tim Culverhouse <tim@timculverhouse.com>
2024-01-24 11:43:59 -06:00
Tim Culverhouse
7e3ae8ffbf
add readme
...
Signed-off-by: Tim Culverhouse <tim@timculverhouse.com>
2024-01-24 11:43:59 -06:00
Tim Culverhouse
35fcbd05d7
update example
...
Signed-off-by: Tim Culverhouse <tim@timculverhouse.com>
2024-01-24 10:20:00 -06:00
Tim Culverhouse
8d496ffcdd
widgets(textinput): move key handling to ifelse block
...
Signed-off-by: Tim Culverhouse <tim@timculverhouse.com>
2024-01-24 09:54:22 -06:00
Tim Culverhouse
b57342726f
parser: parse 0x08 as backspace
...
Signed-off-by: Tim Culverhouse <tim@timculverhouse.com>
2024-01-24 06:45:24 -06:00
Tim Culverhouse
1b83dfe652
fix: don't use sixel geometry query yet
...
This query has a response that interferes with key f4. We need to fix
that parsing before doing sixel queries, and we don't even support
sixels yet.
Signed-off-by: Tim Culverhouse <tim@timculverhouse.com>
2024-01-24 06:25:45 -06:00
Tim Culverhouse
9f89ed06f3
vaxis: use vt caps to measure grapheme widths
...
Implement our own grapheme measuring function which switches on whether
the terminal supports mode 2027
Signed-off-by: Tim Culverhouse <tim@timculverhouse.com>
2024-01-24 06:12:39 -06:00
Tim Culverhouse
04f6117cfe
vaxis: enable da1 parsing, use futex timeout to return from query
...
Now that DA1 parsing is done, block the queryTerminal function until the
DA1 response is received, or a 1 second timeout elapses. With this
functionality, move certain events into Vaxis's realm of handling: IE
enabling kitty keyboard, unicode mode, etc
Signed-off-by: Tim Culverhouse <tim@timculverhouse.com>
2024-01-23 21:30:09 -06:00
Tim Culverhouse
a2dc97c039
vaxis: add mode 2027 query parsing, wcwidth measurement
...
Signed-off-by: Tim Culverhouse <tim@timculverhouse.com>
2024-01-23 21:06:02 -06:00
Tim Culverhouse
ef7b30dbee
render: advance by width of grapheme
...
Signed-off-by: Tim Culverhouse <tim@timculverhouse.com>
2024-01-23 16:29:44 -06:00
Tim Culverhouse
aaa1c17a81
key: enable kitty keyboard
...
Signed-off-by: Tim Culverhouse <tim@timculverhouse.com>
2024-01-23 13:25:31 -06:00
Tim Culverhouse
44ff960cb0
caps: implement first capability response (kitty keyboard)
...
Signed-off-by: Tim Culverhouse <tim@timculverhouse.com>
2024-01-23 08:10:59 -06:00
Tim Culverhouse
59470f18e8
vaxis: add sync and refresh
...
Signed-off-by: Tim Culverhouse <tim@timculverhouse.com>
2024-01-23 07:36:44 -06:00
Tim Culverhouse
5d8f78ccd2
parser: return null events when unhandled
...
Signed-off-by: Tim Culverhouse <tim@timculverhouse.com>
2024-01-23 07:28:57 -06:00
Tim Culverhouse
8ac44bf3c9
key: implement better keymatching rules
...
This doesn't handle each case yet, I'm not certain that the rest of the
logic I have in go-vaxis is correct so I want to sit on it some more
Signed-off-by: Tim Culverhouse <tim@timculverhouse.com>
2024-01-23 06:35:56 -06:00
Tim Culverhouse
fd97fff931
text_input: add comment about ArrayList not being ideal
...
Siged-off-by: Tim Culverhouse <tim@timculverhouse.com>
2024-01-22 20:14:15 -06:00
Tim Culverhouse
d2f02897dc
render: use different internal model of screen
...
We use two screens: one which the user provides a slice of bytes for the
graphemes, and the user owns the bytes. We copy those bytes to our
internal model so that we can compare between frames
Signed-off-by: Tim Culverhouse <tim@timculverhouse.com>
2024-01-22 20:09:35 -06:00
Tim Culverhouse
1b7608f469
examples: update text_input
...
Signed-off-by: Tim Culverhouse <tim@timculverhouse.com>
2024-01-22 11:24:09 -06:00
Tim Culverhouse
c9c704d4a7
render: fix when we set current cursor to new style, update examples
...
Signed-off-by: Tim Culverhouse <tim@timculverhouse.com>
2024-01-22 11:19:28 -06:00
Tim Culverhouse
70e0cafafe
window: add hideCursor and showCursor
...
Signed-off-by: Tim Culverhouse <tim@timculverhouse.com>
2024-01-22 11:18:59 -06:00
Tim Culverhouse
f1a9e21a98
tty: use grapheme cache in the tty run method
...
We only need the grapheme cache when we are parsing input
Signed-off-by: Tim Culverhouse <tim@timculverhouse.com>
2024-01-22 10:40:30 -06:00
Tim Culverhouse
64557bf9ab
parser: use a ring buffer to store raw text
...
Signed-off-by: Tim Culverhouse <tim@timculverhouse.com>
2024-01-22 10:26:33 -06:00
Tim Culverhouse
393279d978
queue: add tryPush method, a nonblocking push attempt
...
Signed-off-by: Tim Culverhouse <tim@timculverhouse.com>
2024-01-22 09:33:23 -06:00
Tim Culverhouse
5148d20f52
widgets: create an initial text_input and border widget
...
Signed-off-by: Tim Culverhouse <tim@timculverhouse.com>
2024-01-21 19:12:46 -06:00
Tim Culverhouse
558b64544c
grapheme_cache: increase cache size
...
Signed-off-by: Tim Culverhouse <tim@timculverhouse.com>
2024-01-21 18:09:55 -06:00
Tim Culverhouse
40525eb038
parser: handle graphemes
...
I'm not positive this is the final approach. We fill in the `text` field
if there was multi-codepoint text generated from the key_press.
Signed-off-by: Tim Culverhouse <tim@timculverhouse.com>
2024-01-21 17:54:44 -06:00
Tim Culverhouse
0f12881c17
parser: handle non-ascii input
...
But not full on graphemes, yet
Signed-off-by: Tim Culverhouse <tim@timculverhouse.com>
2024-01-21 16:11:51 -06:00
Tim Culverhouse
25d844702f
tty: add events to parser handling, update comment
...
Signed-off-by: Tim Culverhouse <tim@timculverhouse.com>
2024-01-21 13:20:34 -06:00
Tim Culverhouse
8caa67d5b3
tty: add todo for incomplete parsing
...
Signed-off-by: Tim Culverhouse <tim@timculverhouse.com>
2024-01-21 13:16:52 -06:00
Tim Culverhouse
244ad8b68e
parser: add unit tests
...
Test (nearly?) implementation so far
Signed-off-by: Tim Culverhouse <tim@timculverhouse.com>
2024-01-21 13:14:30 -06:00
Tim Culverhouse
4ac15e2195
parser: refactor into testable function
...
Signed-off-by: Tim Culverhouse <tim@timculverhouse.com>
2024-01-21 12:47:34 -06:00
Tim Culverhouse
38b41c4ecf
parser: more kitty key parsing
...
Add some more implementation details to kitty key parsing
Signed-off-by: Tim Culverhouse <tim@timculverhouse.com>
2024-01-21 11:53:25 -06:00
Tim Culverhouse
5df727f77d
key: assign certain keys to implicit kitty values
...
Kitty has implicit private area key values for certain keys. Let's just
use those in our definitions as well
Signed-off-by: Tim Culverhouse <tim@timculverhouse.com>
2024-01-21 11:52:10 -06:00
Tim Culverhouse
93d9ead99c
parser: more progress on CSI parsing
...
Add additional CSI parsing for keys
Signed-off-by: Tim Culverhouse <tim@timculverhouse.com>
2024-01-20 08:05:22 -06:00
Tim Culverhouse
462a303903
examples: add some comments
...
Signed-off-by: Tim Culverhouse <tim@timculverhouse.com>
2024-01-19 22:02:10 -06:00
Tim Culverhouse
7c85f72e7f
screen: move debug log
...
Signed-off-by: Tim Culverhouse <tim@timculverhouse.com>
2024-01-19 19:47:08 -06:00
Tim Culverhouse
de91cbe2d0
render: complete the render loop
...
This loop matches the go version of Vaxis to a tee. :chefs-kiss:
Signed-off-by: Tim Culverhouse <tim@timculverhouse.com>
2024-01-19 19:43:35 -06:00
Tim Culverhouse
13e9dadbb1
window: implement fill
...
Signed-off-by: Tim Culverhouse <tim@timculverhouse.com>
2024-01-19 13:16:53 -06:00
Tim Culverhouse
58bc6864cb
render: implement double buffered screen for rendering
...
This lets us efficiently render by only updating cells that have changed
since last render
Signed-off-by: Tim Culverhouse <tim@timculverhouse.com>
2024-01-19 13:13:20 -06:00