6129 Commits

Author SHA1 Message Date
Qwerasd
adf211f5d5 renderer/Metal: ArrayList cell Contents rows
This will allow for unlimited glyphs per row, eliminating the issue run in to with multi-substitution glyphs and combining characters which can result in more glyphs in a row than there are columns.
2024-05-07 19:19:06 -04:00
Qwerasd
dafabe3296 renderer/Metal: improve cell contents tracking
Previous version prevented multiple glyphs from belonging to the same coordinate, which broke quite a few things. This implementation fixes that (and may be more efficient too). Needs clean-up.
2024-05-07 19:19:06 -04:00
Mitchell Hashimoto
91bcc3de39 font/coretext: choose proper original font for CJK search 2024-05-07 15:39:17 -07:00
Mitchell Hashimoto
b7b76e352c Merge pull request #1734 from mitchellh/ct-fallback
coretext: let macOS choose the font for CJK Unified Ideographs
2024-05-07 15:21:38 -07:00
Mitchell Hashimoto
84095025d5 font: fontconfig has proper function 2024-05-07 15:10:53 -07:00
Mitchell Hashimoto
7c5d829274 font: use CoreText API for CJK unified ideographs 2024-05-07 15:05:34 -07:00
Mitchell Hashimoto
4dd3b107c6 Merge pull request #1733 from mitchellh/dirty-fixes
Track dirty bits in more places
2024-05-07 10:47:17 -07:00
Mitchell Hashimoto
cd42888182 terminal: eraseRows sets dirty bits 2024-05-07 10:38:27 -07:00
Mitchell Hashimoto
f975861891 terminal: maintain dirty bits when rotating rows on clone 2024-05-07 10:36:54 -07:00
Mitchell Hashimoto
165c2d9056 renderer/metal: rebuild full screen when viewport changes 2024-05-07 10:22:12 -07:00
Mitchell Hashimoto
a1372a0efd terminal: more dirty tracking 2024-05-07 09:55:32 -07:00
Mitchell Hashimoto
3cfce658c3 terminal: dirty tracking in more places, tests coverage 2024-05-07 09:52:03 -07:00
Mitchell Hashimoto
a84314befe renderer/metal: disable bandaid 2024-05-07 09:51:45 -07:00
Mitchell Hashimoto
c2c8660c62 renderer/metal: disable dirty tracking temporarily
While #1731 is not fixed.
2024-05-07 07:26:59 -07:00
Mitchell Hashimoto
4c39739a26 renderer/metal: rebuild all cells on resize 2024-05-06 20:51:55 -07:00
Mitchell Hashimoto
db1fccf28c Merge pull request #1730 from mitchellh/dirty
renderer/metal: reset screen dirty flag properly, be more careful setting selection dirty flag
2024-05-06 18:38:05 -07:00
Mitchell Hashimoto
d3abe65ad6 terminal: only set selection dirty to true on clear if previously set 2024-05-06 18:35:51 -07:00
Mitchell Hashimoto
26300447e4 renderer/metal: reset screen dirty flags
I introduced screen dirty flags fairly late, and never reset them. As a
result, dirty tracking basically gets disabled as soon as selection
changes in any form. This happens frequently because _unsetting_
selection also resets selection which happens for various events.
2024-05-06 18:31:26 -07:00
Mitchell Hashimoto
1189817dd8 pkg/macos: CTFontCreateForString 2024-05-05 21:38:19 -07:00
Mitchell Hashimoto
a29a0a1e5c pkg/macos: add more CoreText APIs 2024-05-05 21:01:44 -07:00
Jon Parise
861edc722f shell-integration: revise ShellIntegration.command comment 2024-05-05 14:03:31 -07:00
Jon Parise
73b3560e62 shell-integration: automatic bash integration
This change adds automatic bash shell detection and integration.

Unlike our other shell integrations, bash doesn't provide a built-in
mechanism for injecting our ghostty.bash script into the new shell
environment.

Instead, we start bash in POSIX mode and use the ENV environment
variable to load our integration script, and the rest of the bash
startup sequence becomes the responsibility of our script to emulate
(along with disabling POSIX mode).
2024-05-05 13:59:52 -07:00
Mitchell Hashimoto
2e2d924353 Merge pull request #1728 from mitchellh/vsync
macOS: add window-vsync option for vsync
2024-05-05 10:24:03 -07:00
Mitchell Hashimoto
8fdf6b4b64 renderer: add window-vsync option (defaults to false) 2024-05-05 10:18:15 -07:00
Mitchell Hashimoto
fe070f10cd Merge pull request #1727 from mitchellh/metal-link2
macOS: Unleash the Framerate
2024-05-04 20:20:11 -07:00
Mitchell Hashimoto
ca9689be46 renderer/metal: API to handle macOS display ID changing 2024-05-04 19:40:58 -07:00
Mitchell Hashimoto
6b3cb69101 renderer/metal: clean up some unnecessary state around rebuilds 2024-05-04 19:06:43 -07:00
Mitchell Hashimoto
0836aa7318 renderer: add comment why we have dead code 2024-05-04 14:50:15 -07:00
Mitchell Hashimoto
c56e016ab3 renderer: remove 10ms delay on repaint 2024-05-04 14:50:15 -07:00
Mitchell Hashimoto
b00e7009d7 renderer/metal: do not update frames if cells don't change 2024-05-04 14:50:13 -07:00
Mitchell Hashimoto
92caea6948 renderer/metal: remove unnecessary logs 2024-05-04 14:49:50 -07:00
Mitchell Hashimoto
ac813c9244 renderer/metal: stop/start display link on occlusion 2024-05-04 14:49:50 -07:00
Mitchell Hashimoto
6ae1784f4b renderer/metal: stop display link when we lose focus 2024-05-04 14:49:49 -07:00
Mitchell Hashimoto
a40ffad218 renderer/metal: setup display link 2024-05-04 14:49:49 -07:00
Mitchell Hashimoto
cc72e6de23 pkg/macos: display link callback slightly more typesafe 2024-05-04 14:49:49 -07:00
Mitchell Hashimoto
f76af48613 pkg/macos: add CVDisplayLinkSetCurrentCGDisplay 2024-05-04 14:49:49 -07:00
Mitchell Hashimoto
e31e25f54d apprt/embedded: add draw now API 2024-05-04 14:49:49 -07:00
Mitchell Hashimoto
fe7ff998c9 renderer: move our constant draw timer up to 120fps
Our renderers can now handle it
2024-05-04 14:49:49 -07:00
Mitchell Hashimoto
caaf6a496f renderer: add draw now async wakeup 2024-05-04 14:49:48 -07:00
Mitchell Hashimoto
1b0e4da423 Merge pull request #1726 from mitchellh/renderer-dirty
Dirty Tracking
2024-05-04 14:49:35 -07:00
Mitchell Hashimoto
7c9ce0af73 terminal: Screen selection marks dirty 2024-05-01 20:41:53 -07:00
Mitchell Hashimoto
851b1fe2ac font: noop shaper 2024-05-01 20:31:50 -07:00
Mitchell Hashimoto
22702b6941 renderer/metal: re-enable triple buffer 2024-05-01 20:31:49 -07:00
Mitchell Hashimoto
bb138becc5 terminal: resize causes full screen redraw 2024-05-01 20:31:49 -07:00
Mitchell Hashimoto
037f8d3a5e terminal: set dirty bit for screen swap 2024-05-01 20:31:49 -07:00
Mitchell Hashimoto
b166ca7e30 renderer/Metal: only rebuild rows that are dirty 2024-05-01 20:31:49 -07:00
Mitchell Hashimoto
7e52f94278 terminal: on clone, only mark rows dirty that were previously dirty 2024-05-01 20:31:49 -07:00
Mitchell Hashimoto
d47f14f86a terminal: dirty tracking on screen clone 2024-05-01 20:31:49 -07:00
Mitchell Hashimoto
3f9e3c39a4 terminal: track dirty state of palette and reverse colors 2024-05-01 20:31:49 -07:00
Mitchell Hashimoto
f867fabf8e terminal: new coordinate type 2024-05-01 20:31:49 -07:00