4487 Commits

Author SHA1 Message Date
Mitchell Hashimoto
6bf1acc5a2 terminal: move kitty color structs out to kitty package 2024-08-21 09:18:42 -04:00
Mitchell Hashimoto
9faca303dc termio: move renderer message sending out to separate func 2024-08-21 09:11:20 -04:00
Mitchell Hashimoto
e15db88656 termio: use new formatter, palette helper for kitty color protocol 2024-08-20 23:36:45 -04:00
Mitchell Hashimoto
e12cfe80b0 terminal: formatter for kitty color protocol kinds 2024-08-20 23:31:34 -04:00
Mitchell Hashimoto
3b2ed40854 terminal: stylistic tweaks to kitty color protocol parsing 2024-08-20 23:21:28 -04:00
Mitchell Hashimoto
f4b2925434 terminal: make kitty color tests a bit more readable 2024-08-20 23:06:09 -04:00
Jeffrey C. Ollie
a2ef0ca751 Address review comments.
- Cap the total number of requests at twice the maximum number of
  keys (currently 263, so 526 requests). Basically you can set and then
  query every key in one message. This is an absurdly high number
  but should prevent serious DOS attacks.
- Clarify meaning of new hex color codes.
- Better handle sending messages to the renderer in a way that should
  prevent deadlocks.
- Handle 0-255 palette color requests by creatively using non-exhautive
  enums.
- Fix an error in the query reply.
2024-08-19 00:22:09 -05:00
Jeffrey C. Ollie
254072e656 fix test error and improve error logging 2024-08-17 15:34:35 -05:00
Jeffrey C. Ollie
b11b8be124 Implement Kitty Color Protocol (OSC 21)
Kitty 0.36.0 added support for a new OSC escape sequence for
quering, setting, and resetting the terminal colors. Details
can be found [here](https://sw.kovidgoyal.net/kitty/color-stack/#setting-and-querying-colors).

This fully parses the OSC 21 escape sequences, but only supports
actually querying and changing the foreground color, the background
color, and the cursor color because that's what Ghostty currently
supports. Adding support for the other settings that Kitty supports
changing ranges from easy (cursor text) to difficult (visual bell,
second transparent background color).
2024-08-17 07:05:28 -05:00
Mitchell Hashimoto
d7299b16bf apprt/gtk: fix imgui calls 2024-08-16 16:53:17 -07:00
Mitchell Hashimoto
7a7f7da4ef pkg: yeet more usingns 2024-08-16 16:52:28 -07:00
Mitchell Hashimoto
318dc85c02 pkg/macos: yeet more usingns 2024-08-16 16:50:41 -07:00
Mitchell Hashimoto
a9107e7eb6 apprt/embedded: fix usingnamespace usage 2024-08-16 15:00:07 -07:00
Mitchell Hashimoto
9409e3072f apprt/gtk: remove usingnamespace 2024-08-16 14:58:04 -07:00
Mitchell Hashimoto
c3e37b7e15 move global state to dedicated file 2024-08-16 14:43:00 -07:00
Mitchell Hashimoto
b65a804bb2 almost yeeted it all! 2024-08-16 14:42:32 -07:00
Mitchell Hashimoto
ba29bf759b lots more yeeting 2024-08-16 14:35:10 -07:00
Mitchell Hashimoto
677f0376a0 os: yeet usingns 2024-08-16 14:29:08 -07:00
Mitchell Hashimoto
d0ca949c09 os: start yeeting 2024-08-16 10:57:19 -07:00
Mitchell Hashimoto
29de3e80f1 config: yeet usingns 2024-08-16 10:49:37 -07:00
Mitchell Hashimoto
14e3f43db2 font: yeet usingns 2024-08-16 10:47:15 -07:00
Mitchell Hashimoto
b660380b01 renderer: yeet usingns 2024-08-16 10:43:32 -07:00
Mitchell Hashimoto
9f52a963f5 pty: remove usingns 2024-08-16 10:37:31 -07:00
Mitchell Hashimoto
3404f8e53a termio: yeet usingns 2024-08-16 10:36:10 -07:00
Mitchell Hashimoto
d8f43b34ba terminal: yeet usingnamespace 2024-08-16 10:32:43 -07:00
Mitchell Hashimoto
dbeb4c1a4a apprt: yeet usingnamespace 2024-08-16 10:19:46 -07:00
Mitchell Hashimoto
6a44d3196d input: yeet usingnamespace 2024-08-16 10:16:46 -07:00
Qwerasd
37872afbce kitty graphics: support loading 1 channel grayscale images 2024-08-15 21:38:46 -04:00
Mitchell Hashimoto
da8e4c7f95 Merge pull request #2102 from qwerasd205/misc-fix
Misc fixes
2024-08-15 16:48:27 -07:00
Qwerasd
c37ee6c428 fix(terminal): proper style cleanup in cursorCopy
Old implementation sometimes resulted in an attempt to free the style
from a different page than it originates. This way is also generally
cleaner.
2024-08-15 19:08:12 -04:00
Qwerasd
16284dbb3f test(terminal/Screen): add failing unit test for cursorCopy
Detects issue with style reference counting when the cursor is moved
across pages during the copy.
2024-08-15 19:06:41 -04:00
Mitchell Hashimoto
78e9e9f93a Merge pull request #2100 from qwerasd205/mac-opengl
macos/opengl: lock context while rendering to stop resize crashes
2024-08-15 14:25:20 -07:00
Mitchell Hashimoto
bc667714dd renderer/opengl: add comment explaning ogl lock on darwin 2024-08-15 14:25:05 -07:00
Qwerasd
0c11d256c8 RefCountedSet: use usize for living count to avoid overflow 2024-08-15 16:28:27 -04:00
Qwerasd
4c2fbe8f74 fix(renderer/Metal): bail out of drawFrame if we haven't sized screen yet 2024-08-15 15:12:49 -04:00
Qwerasd
57d850822e macos/opengl: lock context while rendering to stop resize crashes 2024-08-14 23:47:33 -04:00
Qwerasd
ff6a0bf9a2 termio: wake renderer outside of critical area in resize 2024-08-14 23:46:52 -04:00
Qwerasd
900aab10f2 renderer: don't update frame if renderer grid size != terminal size 2024-08-14 22:43:58 -04:00
Qwerasd
7929e0bc09 fix: prevent flicker while shrinking screen by eliminating thread race
Before this fix, if vsync was on the GPU cells buffer could be cleared
for a frame while resizing the terminal down. This was due to the fact
that the surface sent messages for the resize to both the renderer and
the IO thread. If the renderer thread was processed first then the GPU
cells buffer(s) would be cleared and not rebuilt, because the terminal
state would be larger than the GPU cell buffers causing updateFrame to
bail out early, leaving empty cell buffers.

This fixes the problem by changing the origin of the renderer's resize
message to be the IO thread, only after properly updating the terminal
state, to avoid clearing the GPU cells buffers at a time they can't be
successfully rebuilt.
2024-08-14 19:46:24 -04:00
Jeffrey C. Ollie
414fdc0214 gtk: prettify the url overlays 2024-08-13 14:21:28 -05:00
Gregory Anders
59f259d7e4 config: fix typo
Disabling vsync reduces input latency, so this should say "minimize"
rather than "maximize".
2024-08-12 09:24:03 -05:00
Mitchell Hashimoto
60f6576770 Merge pull request #2088 from rockorager/main
fix(surface): account for padding in mouse pixel reports
2024-08-11 18:04:21 -07:00
Mitchell Hashimoto
59de7d8239 Merge pull request #2087 from qwerasd205/murica
spelling: normalize grey -> gray
2024-08-11 18:03:22 -07:00
Mitchell Hashimoto
23de1fb4ea Merge pull request #2085 from Syphdias/option-to-limit-procs
Add Config Option to Limit Number of Processes
2024-08-11 15:57:13 -07:00
Tim Culverhouse
97db055b54 fix(surface): account for padding in mouse pixel reports
Padding was accounted for in cell reports, but not pixel reports. Update
inspector to report the pixel coordinates the terminal reports.
2024-08-11 17:47:21 -05:00
Mitchell Hashimoto
ed49670d2f font: remove broken test (on purpose) due to improvements in shaping 2024-08-11 15:46:08 -07:00
Mitchell Hashimoto
a158a1d45f os: unify memory/processes cgroup limiting func 2024-08-11 15:37:54 -07:00
Qwerasd
10b8ca3c69 spelling: normalize grey -> gray 2024-08-11 18:31:01 -04:00
Mitchell Hashimoto
e385e0f9d0 font/shaper: split text runs on common bad ligature pairs
Fixes #2081

Many fonts have a bad ligature for "fl", "fi", or "st". We previously
maintained a list of such fonts in quirks.zig. However, these are so
common that it was suggested we do something more systematic and this
commit is that.

This commit changes our text run splitting algorithm to always split on
`fl`, `fi`, and `st`. This will cause some more runs for well behaved
fonts but the combination of those characters is rare enough and our
caching algorithm is good enough that it should be minimal overhead.

This commit renders our existing quirks fonts obsolete but I kept that
logic around so we can add to it if/when we find other quirky font
behaviors.
2024-08-11 15:26:36 -07:00
Mitchell Hashimoto
de9ea2d735 font: add test for fl lig 2024-08-11 15:04:56 -07:00