Commit Graph

7882 Commits (34c3da43023b0c058c0647b604b8bc4b2f87ff7b)

Author SHA1 Message Date
Mitchell Hashimoto a4e14631ef
config: richer diagnostics for errors
Rather than storing a list of errors we now store a list of
"diagnostics." Each diagnostic has a richer set of structured
information, including a message, a key, the location where it occurred.

This lets us show more detailed messages, more human friendly messages, and
also let's us filter by key or location. We don't take advantage of
all of this capability in this initial commit, but we do use every field
for something.
2024-10-18 08:11:11 -07:00
Mitchell Hashimoto 3f1d6eb301
expand explicit error set usage
This continues our work to improve the amount of explicit error sets
we use in the codebase. Explicit error sets make it easier to understand
possible failure scenarios, allow us to use exhaustive matching, create
compiler errors if errors are unexpectedly added or removed, etc.

The goal eventually is 100% coverage but we're not even close yet.
This just moves us a little closer.
2024-10-18 08:10:41 -07:00
Mitchell Hashimoto 913c4b5801
Merge pull request #2450 from qwerasd205/undercurl-min-thickness
font/sprite: undercurl minimum thickness improvement
2024-10-17 19:54:56 -07:00
Qwerasd 2a4398b319 font/sprite: undercurl minimum thickness improvement 2024-10-17 21:07:52 -04:00
Mitchell Hashimoto d83fce794f
Merge pull request #2449 from injust/patch-1
Fix "external affects" typo in documentation
2024-10-17 17:01:38 -07:00
Justin Su 203110355d
Fix "external affects" typo in documentation 2024-10-17 14:59:20 -04:00
Mitchell Hashimoto b38c5876a0
Merge pull request #2448 from rcalixte/quick_typos
list_fonts and list_keybinds: Fix typos in documentation
2024-10-17 06:57:21 -07:00
Rick Calixte d0316b746d
list_fonts and list_keybinds: Fix typos in documentation
test.yml: Switch to Windows Server 2022 and update Zig URL
2024-10-16 22:56:16 -04:00
Mitchell Hashimoto 7b668d3dc1
Merge pull request #2440 from jcollie/window-theme-ghostty-4-16
gtk: use CSS variables and color calcs introduced in 4.16
2024-10-16 06:24:19 -07:00
Mitchell Hashimoto c614f2b485
apprt/gtk: use stackfallback for runtime CSS, explicit errors 2024-10-16 06:19:47 -07:00
Mitchell Hashimoto 9d341a9fca
Merge pull request #2444 from qwerasd205/quicklook-pos
macOS: fix quicklook position
2024-10-15 16:56:08 -07:00
Mitchell Hashimoto 1d88cd8036
Merge pull request #2445 from jcollie/cli-gtk-version
cli: add GTK & libadwaita version info
2024-10-15 16:47:52 -07:00
Jeffrey C. Ollie f645d6962b
cli: add GTK & libadwaita version info
If the apprt is GTK add the GTK and the libadwaita version info to the
`+version` action. This information is available in the log but it may
be more accessible here.
2024-10-15 14:48:34 -05:00
Qwerasd de16541bca macOS: fix quicklook position
Account for padding and properly calculate text baseline, since that is
the position that the NSView `showDefinition` method ultimately needs.
2024-10-15 15:40:15 -04:00
Mitchell Hashimoto 4c871246dd
update file sizes in README.md 2024-10-15 09:59:43 -07:00
Mitchell Hashimoto 0b1be01fee
Merge pull request #2443 from ghostty-org/push-ktxyxmvpvryw
build: strip symbols from release builds
2024-10-15 09:58:57 -07:00
Mitchell Hashimoto 2bbbdf7433
build: strip symbols from release builds
This significantly reduces the size of the binary.
2024-10-15 09:46:15 -07:00
Mitchell Hashimoto 4c18f1bf4b
Merge pull request #2439 from qwerasd205/unicode-16-sprite-font
Excise pixman, use z2d for sprite fonts, refactor box drawing, add new box characters
2024-10-15 09:39:04 -07:00
Mitchell Hashimoto 8a38c87d90
font: use explicit error sets where we can 2024-10-15 09:37:51 -07:00
Mitchell Hashimoto bb2c8e479d
font/sprite: clarify log 2024-10-15 09:30:55 -07:00
Mitchell Hashimoto dc26a9abe0
nix hash 2024-10-15 09:26:46 -07:00
Qwerasd c66042d6e0 font/sprite: address PR review feedback
- Make canvas geometry primitives generic, use `Rect(u32)` for `rect`
function, so that we don't have to worry about negatives or rounding.
- Make `Quads` struct packed just in case it gets non-comptime use in
the future.
- Clarify comment on why we're discarding out of range pixels + runtime
unreachable for any other type of error which we shouldn't ever see.
- Move z2d import above in-tree imports.
2024-10-15 12:00:11 -04:00
Mitchell Hashimoto 7673ce31a9
Merge pull request #2441 from ghostty-org/push-sqsmtmrsswxp
macos: NSProcessInfo-based arg iterator so CLI args work
2024-10-14 19:05:03 -07:00
Qwerasd 83a56afcb1 font/sprite: fix weird code 2024-10-14 20:52:42 -04:00
Qwerasd 37144fd5b8 font/sprite: fix light arc character for odd thicknesses
+ update Box.ppm ground truth image
2024-10-14 20:47:04 -04:00
Qwerasd c0315a04b4 test(font/sprite): add second size to box regression test
Smaller, odd cell size, odd (1) thickness, catches more edge cases with
rounding etc.
2024-10-14 20:31:01 -04:00
Mitchell Hashimoto 115e14f19f
macos: NSProcessInfo-based arg iterator
Fixes #2432

On macOS, processes with an NSApplicationMain entrypoint do not have
access to libc argc/argv. Instead, we must use NSProcessInfo. This
commit introduces an args iterator that uses NSProcessInfo, giving us
access to the args.

This also fixes an issue where we were not properly skipping argv0 when
iterating over the args. This happened to be fine because we happened to
ignore invalid args but it introduces a config error.
2024-10-14 17:08:33 -07:00
Jeffrey C. Ollie ca42b4ca1c
gtk: use CSS variables and color calcs introduced in 4.16
This takes advantage of CSS variables and color expressions to improve
the `window-theme=ghostty` support. The only visibile difference from
the previous implementation is that the header bar will darken if the
Ghostty window is in the background, which is standard for GTK apps.

This is conditional at runtime. If Ghostty detects that you're running
against GTK 4.16 or newer it will use the CSS variables and color calcs.
If you're running against older versions it will use CSS classes to
achieve nearly the same effect.
2024-10-14 18:24:05 -05:00
Qwerasd bb5b7b0274 font/sprite(Box): refactor smooth mosaic rendering
+ un-`comptime` the line spec and make it a packed struct, to reduce
codegen size.
2024-10-14 17:50:49 -04:00
Qwerasd d38d0f30c4 font/sprite: replace pixman with z2d, extend Box coverage
More complete coverage of the Symbols For Legacy Computing block,
including characters from Unicode 16.0.

Pixman and the web canvas impl for Canvas have been removed in favor of
z2d for drawing, since it has a nicer API with more powerful methods,
and is in Zig with no specific platform optimizations so should compile
to wasm no problem.
2024-10-14 17:50:49 -04:00
Qwerasd c86b5f44ce font/sprite: refactor box drawing quads/sextants
Move away from C-style bit sets, calculate sextants procedurally rather
than hard coding.
2024-10-14 17:50:49 -04:00
Qwerasd d63cf6eaec test(font/sprite): generate diff image on failed regression check 2024-10-14 17:50:49 -04:00
Qwerasd ced4247e55 font/sprite: refactor lines and fractional blocks, add ground truth for regression test
Use a single unified function for intersection-style line drawing chars,
and one for fractional block characters. Add a ground truth image based
on this commit for the regression test (differences from before changes
validated visually, 1 incorrect rendering actually fixed)
2024-10-14 17:50:49 -04:00
Qwerasd f3e74384bb test(font/sprite): add regression test for box drawing sprites 2024-10-14 17:50:49 -04:00
Qwerasd 74750fbd49 font/Atlas: add dump method to dump to ppm 2024-10-14 17:50:49 -04:00
Mitchell Hashimoto 9f50ed07a5
Merge pull request #2438 from qwerasd205/undercurl-thickness
Undercurl tweaks
2024-10-14 12:57:11 -07:00
Qwerasd 2462921681 font/sprite(underline): make undercurl segment symmetrical
Previously was biased half a pixel to one side.
2024-10-14 14:53:09 -04:00
Qwerasd 63f82119cd font/sprite(underline): add thickness correction to undercurl 2024-10-14 14:46:43 -04:00
Mitchell Hashimoto 10aad444b7
Merge pull request #2436 from isabelroses/nix/prefer-hostplatforn
refactor(nix): stdenv.isX -> stdenv.hostPlatform.isX
2024-10-14 09:46:25 -07:00
Mitchell Hashimoto 0cf12cd88b
input: make clear the open keybinding uses xdg-open 2024-10-14 09:32:38 -07:00
isabel 02be641358
refactor(nix): stdenv.isX -> stdenv.hostPlatform.isX
In preparation for the deprecation of `stdenv.isX`

e0464e4788
2024-10-14 16:39:28 +01:00
Mitchell Hashimoto ccb97c6c33
Merge pull request #2417 from qwerasd205/misc-shaper-fixes
Renderer `rebuildCells` rework
2024-10-12 09:39:08 -07:00
Mitchell Hashimoto 6ce5f3f94b
Merge pull request #2434 from ofseed/en-space
renderer: generalize the definition of "space"
2024-10-12 09:37:15 -07:00
Mitchell Hashimoto 862bdcb92a
apprt/gtk: adw about dialog introduces in libadw 1.5.0
Fixes #2433
2024-10-12 09:35:09 -07:00
Yi Ming 0571c50d63 renderer: generalize the definition of "space" 2024-10-12 17:56:51 +08:00
Qwerasd e4f4b708c9 font/shaper: explicitly skip invisible cells while shaping
Fixes a bug caused by the renderer logic assuming this behavior and not
advancing the run iterator when skipping foreground elements in cells
with the invisible flag set.
2024-10-11 13:50:16 -04:00
Mitchell Hashimoto 97abf3c370
font/noop: conform to new run struct type 2024-10-10 17:24:44 -07:00
Mitchell Hashimoto c26d1cb28e
config: add accidentally removed keybinding 2024-10-10 16:47:35 -07:00
Mitchell Hashimoto 2b5263032f
Merge pull request #2431 from ghostty-org/push-xrvpptonzowr
core: simplify scroll math, fix horizontal scroll direction on macOS
2024-10-10 16:46:26 -07:00
Mitchell Hashimoto 745079cbb5
core: simplify scroll math, fix horizontal scroll direction on macOS
This simplifies the math for calculating scroll vectors based on mouse
scroll events. This was done to fix inverted horizontal scrolling on
macOS with natural scrolling enabled. Many assertions were added for
assumptions and our preconditions are clearly documented.

The preconditions are:

  * Apprt scroll offsets are negative down/left, positive up/right
  * Terminal vertical scroll is postive down, negative up (opposite
    since scroll for a terminal means how many rows to move down).
  * `Surface.scrollCallback` is always call with an apprt offset.
  * Apprt is responsible for implementing natural scrolling. Surface
    always assumes negative is down/left.
2024-10-10 16:24:16 -07:00