Jeffrey C. Ollie
d2ee80bc49
gtk: use std.Io.Writer to generate runtime CSS
2025-10-06 09:39:50 -05:00
Mitchell Hashimoto
86421c9e09
lib-vt: trying to fix up hosted docs
2025-10-05 20:36:22 -07:00
Mitchell Hashimoto
6ef0be7580
libghostty website: update to use arch for doxygen for latest
2025-10-05 20:26:18 -07:00
Mitchell Hashimoto
f3c1357337
lib-vt: fix dockerfile to include assets for web
2025-10-05 20:18:48 -07:00
Mitchell Hashimoto
ed65401bf8
osc: reorder osc tests and name them consistently ( #9042 )
...
No changes in the tests were made, but reordering them and naming them
consistently will makes finding tests easier (there are a LOT).
2025-10-05 19:51:07 -07:00
Jeffrey C. Ollie
d9de5909d9
linux cgroup: also fix controllers()
...
This fix was found by Claude Code, but I manually reviewed this change
and removed extraneous changes made by the AI tool.
Co-authored-by: moderation <michael@sooper.org >
2025-10-05 21:03:14 -05:00
Jeffrey C. Ollie
a249b3da3a
linux cgroup: fix initialization
2025-10-05 20:46:48 -05:00
Jeffrey C. Ollie
f03344b1c6
osc: reorder osc tests and name them consistently
2025-10-05 19:49:21 -05:00
Mitchell Hashimoto
c5ea4a8079
libghostty: use Arch for docs container to get later Doxygen
2025-10-05 15:19:20 -07:00
Mitchell Hashimoto
aeb6647aa6
libghostty docs: use latest Doxygen
2025-10-05 15:04:51 -07:00
Mitchell Hashimoto
48f5e4a16d
lib-vt: expose key encoding as a C API ( #9040 )
...
Example in `example/c-vt-key-encode`, but here is an abridged version:
```c
#include <assert.h>
#include <stddef.h>
#include <stdio.h>
#include <string.h>
#include <ghostty/vt.h>
int main() {
GhosttyKeyEncoder encoder;
GhosttyResult result = ghostty_key_encoder_new(NULL, &encoder);
assert(result == GHOSTTY_SUCCESS);
ghostty_key_encoder_setopt(encoder, GHOSTTY_KEY_ENCODER_OPT_KITTY_FLAGS, &(uint8_t){GHOSTTY_KITTY_KEY_ALL});
GhosttyKeyEvent event;
result = ghostty_key_event_new(NULL, &event);
assert(result == GHOSTTY_SUCCESS);
ghostty_key_event_set_action(event, GHOSTTY_KEY_ACTION_RELEASE);
ghostty_key_event_set_key(event, GHOSTTY_KEY_CONTROL_LEFT);
ghostty_key_event_set_mods(event, GHOSTTY_MODS_CTRL);
char buf[128];
size_t written = 0;
result = ghostty_key_encoder_encode(encoder, event, buf, sizeof(buf), &written);
assert(result == GHOSTTY_SUCCESS);
ghostty_key_event_free(event);
ghostty_key_encoder_free(encoder);
return 0;
}
```
2025-10-05 14:44:55 -07:00
Mitchell Hashimoto
61fe78c1d3
lib-vt: expose key encoding as a C API
2025-10-05 14:40:20 -07:00
NikoMalik
ff3a6d0650
fix: do not remove libc memmove until performance comparisons have been conducted
2025-10-05 17:35:58 +03:00
NikoMalik
1c0282d658
fix:use builtin memmove
2025-10-05 12:30:51 +03:00
Mitchell Hashimoto
44496df899
input: use std.Io.Writer for key encoder, new API, expose via libghostty
...
This modernizes `KeyEncoder` to a new `std.Io.Writer`-based API.
Additionally, instead of a single struct, it is now an `encode` function
that takes a series of more focused options. This is more idiomatic Zig
while also making it easier to expose via libghostty-vt.
libghostty-vt also gains access to key encoding APIs.
2025-10-04 20:19:39 -07:00
Mitchell Hashimoto
503a25653f
build: framegen can use self-hosted ( #9021 )
...
This was a red herring when I was doing the 0.15 port. It works with
self-hosted just fine.
2025-10-04 14:08:42 -07:00
Mitchell Hashimoto
d4dcecb071
Move paste encoding to the input package, test, optimize away one alloc
...
This moves our paste logic to `src/input` in preparation for exposing
this as part of libghostty-vt. This yields an immediate benefit of
unit tests for paste encoding.
Additionally, we were able to remove one allocation on every unbracketed
paste path unless the input specifically contains a newline. Unlikely to
be noticable, but nice.
NOTE: This also includes one change in behavior: we no longer encode
`\r\n` and a single `\r`, but as a duplicate `\r\r`. This matches xterm
behavior and I don't think will result in any issues since duplicate
carriage returns should do nothing in well-behaved terminals.
2025-10-04 14:05:32 -07:00
Mitchell Hashimoto
18eee610bc
Expand ~ in macos-custom-icon ( #9024 )
...
Since #8999 , `macos-custom-icon` works when its a fully expanded
absolute path like `/Users/username/dir/icon.icns`, but not when it's
abbreviated as `~/dir/icon.icns`. Users were understandably surprised
and confused by this. This PR adds tilde expansion using `NSString`s
built-in property for this.
Also removed a line from the config docs that seemed erroneous. Given
that the option has a functional default, it seems incorrect to say that
it's required.
2025-10-04 07:18:50 -07:00
Daniel Wennberg
3620132dfc
Remove incorrect note from config docs
2025-10-04 00:13:23 -07:00
Daniel Wennberg
6bc60b6c64
Add comprehensive constraint tests
2025-10-03 22:30:52 -07:00
Daniel Wennberg
5360aeb8aa
Fix botched cherry-pick from #8990
2025-10-03 22:20:45 -07:00
Mitchell Hashimoto
e07415a2e2
build: framegen can use self-hosted
...
This was a red herring when I was doing the 0.15 port. It works with
self-hosted just fine.
2025-10-03 14:41:05 -07:00
Daniel Wennberg
78f1bf1807
Handle font_patcher codepoint range overlaps
2025-10-03 13:50:11 -07:00
Daniel Wennberg
44951d9b1c
Handle font_patcher codepoint offsets
2025-10-03 13:50:11 -07:00
Daniel Wennberg
d07237fff5
Skip patchsets and codepoints not in SymbolsNF
2025-10-03 13:50:11 -07:00
Daniel Wennberg
a1b7ea2e71
Add font_patcher's grouped vs individual alignment
2025-10-03 13:50:11 -07:00
Daniel Wennberg
50bdd3bac6
Align stretched glyphs to cell, not face
2025-10-03 13:46:36 -07:00
Daniel Wennberg
32f8c71be3
Always clamp scaled glyph to cell
...
Also take padding into account for centered alignment, necessary since
our constraint type allows asymmetric padding.
2025-10-03 13:44:22 -07:00
Daniel Wennberg
7acf617763
fix(font): Anchor scaling at bounding box center
2025-10-03 13:44:22 -07:00
Mitchell Hashimoto
93c634c866
flush output for our builddata executable
...
Fixes #9018
We were truncated our terminfo causing tmux to not respect some
features.
2025-10-03 13:32:15 -07:00
Daniel Wennberg
f245574087
Fix comment
2025-10-03 12:53:46 -07:00
Daniel Wennberg
5c129205a5
Use correct and consistent pre-constraint glyph rect
...
In Freetype, measure rect after emboldening, so constraints apply to the
true glyph size like in CoreText.
In CoreText, don't let font smoothing affect the rect (only the canvas).
2025-10-03 12:53:46 -07:00
Daniel Wennberg
96fbff681b
Center before quantizing bitmap glyphs
2025-10-03 12:53:46 -07:00
Andreas Deininger
a667b740ee
Fix typos
2025-10-03 18:52:26 +02:00
Mitchell Hashimoto
1c1a56394d
apprt/gtk: Zig 0.15 whack a mole
2025-10-03 07:33:58 -07:00
Mitchell Hashimoto
4d97186643
apprt/gtk: fix Zig 0.15
2025-10-03 07:17:35 -07:00
Mitchell Hashimoto
569fe92389
fix up merge conflicts
2025-10-03 07:11:48 -07:00
Mitchell Hashimoto
87b77e1980
ci: cleanup
2025-10-03 07:10:43 -07:00
Mitchell Hashimoto
4e3e0ed056
Zig 0.15: Flatpak
2025-10-03 07:10:43 -07:00
Mitchell Hashimoto
e1b5464bab
Zig 0.15: build snap
2025-10-03 07:10:43 -07:00
Mitchell Hashimoto
2af424268a
Zig 0.15: emit bench
2025-10-03 07:10:43 -07:00
Mitchell Hashimoto
9ec3b1b152
Zig 0.15: webdata
2025-10-03 07:10:43 -07:00
Mitchell Hashimoto
f0cfaa9580
zig 0.15: build on macOS
2025-10-03 07:10:43 -07:00
Mitchell Hashimoto
0112607532
Zig 0.15: zig build test macOS
2025-10-03 07:10:43 -07:00
Mitchell Hashimoto
d59d754e29
Zig 0.15: zig build GTK exe
2025-10-03 07:10:43 -07:00
Mitchell Hashimoto
cb295b84a0
Zig 0.15: zig build test
2025-10-03 07:10:43 -07:00
Mitchell Hashimoto
3770f97608
terminal: Zig 0.15, lib-vt and test-lib-vt work
2025-10-03 07:10:43 -07:00
Mitchell Hashimoto
913d2dfb23
unicode: fix lookup table generation
2025-10-03 07:10:43 -07:00
Mitchell Hashimoto
7ec57aeebd
Zig 0.15: zig fmt
2025-10-03 07:10:43 -07:00
Mitchell Hashimoto
d02770d292
zig-15: build binary builds
2025-10-03 07:10:41 -07:00