8195 Commits

Author SHA1 Message Date
Mitchell Hashimoto
4abff6735b Merge pull request #2605 from ghostty-org/push-zymoylrqolxx
coretext: set variations on deferred face load
2024-11-05 16:23:56 -08:00
Mitchell Hashimoto
e08eeb2b2a coretext: set variations on deferred face load
This commit makes CoreText behave a lot like FreeType where we set the
variation axes on the deferred face load. This fixes a bug where the
`slnt` variation axis could not be set with CoreText with the Monaspace
Argon Variable font.

This was a bug found in Discord. Specifically, with the Monaspace Argon
Variable font, the `slnt` variation axis could not be set with CoreText.
I'm not sure _exactly_ what causes this but I suspect it has to do with
the `slnt` axis being a negative value. I'm not sure if this is a bug
with CoreText or not.

What was happening was that with CoreText, we set the variation axes
during discovery and expect them to be preserved in the resulting
discovered faces. That seems to be true with the `wght` axis but not the
`slnt` axis for whatever reason.
2024-11-05 16:16:25 -08:00
Nico Elbers
34c3da4302 docs: fix the nixos install instructions
Not updating inputs resulted in a crash for me, this fixed it.

Relevant link from discord:
https://discord.com/channels/1005603569187160125/1301217629268213770
2024-11-05 21:57:51 +01:00
Mitchell Hashimoto
fc7ff2a7ef Merge pull request #2512 from reykjalin/fix-hostname-validation-with-macos-wifi-private-address
Make sure a potential port component is considered during hostname validation for OSC 7 handling and shell integration
2024-11-05 10:40:25 -08:00
Mitchell Hashimoto
c8b99f7891 remove refalldecls test 2024-11-05 10:36:16 -08:00
Mitchell Hashimoto
4a263f43af stylistic changes 2024-11-05 10:30:56 -08:00
Mitchell Hashimoto
f9199a4611 Merge pull request #2596 from tristan957/neovim
feat: install neovim plugin
2024-11-04 19:09:22 -08:00
Tristan Partin
16e8095d52 feat: install neovim plugin
$prefix/share/vim/vimfiles is not always read by Neovim. It is
distribution dependent. $prefix/share/nvim/site is a default path for
Neovim however.

Signed-off-by: Tristan Partin <tristan@partin.io>
2024-11-04 19:58:50 -06:00
Kristófer R
9c2f260351 os/hostname: add and use explicit error structs 2024-11-04 19:26:29 -05:00
Kristófer R
e85b114031 os/hostname: add better validation for mac-address hostnames 2024-11-04 18:59:42 -05:00
Kristófer R
9ae6806e30 os/hostname: test bufPrintHostnameFromFileUri
Note that this includes some failing tests because I want to make the
uri handling better and more specific. It's a little bit too general
right now so I want to lock it down to:

1. macOS only; and
2. valid mac address values

because that's how the macOS private Wi-Fi address thing works;
randomizes your mac address and sets that as your hostname.
2024-11-04 18:59:41 -05:00
Kristófer R
78abd051a2 os/hostname: test isLocalHostname 2024-11-04 18:59:41 -05:00
Mitchell Hashimoto
274759d391 Merge pull request #2589 from mnemnion/de-jure
ECMA 48 is de jure: as stated by law
2024-11-04 14:03:11 -08:00
Kristófer R
03bb16fcec Move hostname helpers to src/os/hostname.zig 2024-11-04 16:54:38 -05:00
Mitchell Hashimoto
960e52573b Merge pull request #2591 from ghostty-org/push-qzmuyzpprvmq
update zig-objc
2024-11-04 09:58:20 -08:00
Mitchell Hashimoto
f8d2ac6c8c update zig-objc
removes usingnamespace
2024-11-04 09:52:19 -08:00
Mitchell Hashimoto
21f5a2aa51 README: syntax highlight the config 2024-11-04 09:37:18 -08:00
Sam Atman
c7413bcf57 ECMA 48 is de jure: as stated by law
I am actually not sure if this was meant as a sly pun. It definitely works that way, terminals are _de jour_ meaning _of the day_, but the contrastive with _de facto_  makes me lean toward typo / malaprop. 

The thing is it's a good pun, and I almost let it be for that reason. But I lean towards unintended, so here's a patch, feel free to close it if I read it wrong, er, right? Y'know.
2024-11-03 17:33:35 -10:00
Mitchell Hashimoto
737dc0896d Merge pull request #2581 from FineFindus/fix/adw-headerbar-ghostty-theme
apprt/adw: reapply headerbar colors in toolbarview
2024-11-03 18:43:15 -08:00
Mitchell Hashimoto
3d29ea16f5 Merge pull request #2586 from emilazy/push-zrqyslkkznvo
renderer/metal: prefer low‐power GPUs
2024-11-03 18:34:38 -08:00
Emily
20a77123d4 renderer/metal: prefer low‐power GPUs
Some Intel MacBook Pro laptops have both an integrated and discrete
GPU and support automatically switching between them. The system
uses the integrated GPU by default, but the default Metal device on
those systems is the discrete GPU. This means that Metal‐using
applications activate it by default, presumably as the intended
audience is high‐performance graphics applications.

This is unfortunate for productivity applications like terminals,
however, as the discrete GPU decreases battery life and worsens the
thermal throttling problems these machines have always had. Prefer
to use an integrated GPU when present and not using an external GPU.

The behaviour should be unchanged on Apple Silicon, as the platform
only supports one GPU. I have confirmed that the resulting app runs,
works, and doesn’t activate the AMD GPU on my MacBook Pro, but have
not done any measurements of the resulting performance impact. If
it is considered sufficiently noticeable, a GPU preference setting
could be added.

See <https://github.com/zed-industries/zed/issues/5124>,
<https://github.com/zed-industries/zed/pull/13685>,
<https://github.com/zed-industries/zed/pull/14738>, and
<https://github.com/zed-industries/zed/pull/14744> for discussion,
measurements, and changes relating to this issue in the Zed
project. The logic implemented here reflects what Zed ended up
settling on.

The [Metal documentation] recommends using
`MTLCopyAllDevicesWithObserver` to receive notifications of when
the list of available GPUs changes, such as when [external GPUs
are connected or disconnected]. I didn’t bother implementing that
because it seemed like a lot of fussy work to deal with migrating
everything to a new GPU on the fly just for a niche use case on a
legacy platform. Zed doesn’t implement it and I haven’t heard
about anyone complaining that their computer caught fire when they
unplugged an external GPU, so hopefully it’s fine.

[Metal documentation]: https://developer.apple.com/documentation/metal/gpu_devices_and_work_submission/multi-gpu_systems/finding_multiple_gpus_on_an_intel-based_mac
[external GPUs are connected or disconnected]: https://developer.apple.com/documentation/metal/gpu_devices_and_work_submission/multi-gpu_systems/handling_external_gpu_additions_and_removals

Closes: #2572
2024-11-04 00:35:21 +00:00
Emily
9c8b00f87d renderer/metal: release device on deinit() 2024-11-04 00:21:39 +00:00
Emily
e5f9f222b2 renderer/metal: use release() consistently
I’m not sure why this variation was here previously – maybe it
predated the introduction of `release()`?
2024-11-04 00:21:39 +00:00
Mitchell Hashimoto
9665ff8945 Merge pull request #2588 from ghostty-org/push-wuptulqmurnq
update zig-objc
2024-11-03 15:38:57 -08:00
Mitchell Hashimoto
038b3dec79 update zig-objc
This fixes a hack we had around apple paths since we do this now
upstream in zig-objc. This also adds in support for NSFastEnumeration
needed for #2586
2024-11-03 15:21:26 -08:00
FineFindus
89f7f88286 apprt/adw: reapply headerbar colors
Fixes a regression in ca42b4ca1c7a9319b7fbc17cabab0cbb4120f0fb that
caused the headerbar to no longer use the same color as the
ghostty-theme.
2024-11-03 19:42:58 +01:00
Mitchell Hashimoto
4dd6598a69 Merge pull request #2583 from ghostty-org/push-qvypslzouwzx
font/harfbuzz: force LTR font shaping
2024-11-03 09:55:40 -08:00
Mitchell Hashimoto
f04b6c8768 font/harfbuzz: force LTR font shaping
Fixes #2570
Related to #1740

See #1740 for details.
2024-11-03 09:51:51 -08:00
Mitchell Hashimoto
d47df211b0 Merge pull request #2573 from ghostty-org/push-vptzlskpyvys
macos: restore window frame on cascadeTopLeft since macOS 15 moves it
2024-11-02 10:24:09 -07:00
Mitchell Hashimoto
9262cc5704 macos: restore window frame on cascadeTopLeft since macOS 15 moves it
Fixes #2565

This appears to be a bug in macOS 15. Specifically on macOS 15 when the
new native window snapping feature is used, `cascadeTopLeft(from: zero)`
will move the window frame back to its prior unsnapped position.

The docs for `cascadeTopLeft(from:)` explicitly say:

> When NSZeroPoint, the window is not moved, except as needed to constrain
> to the visible screen

This is not the behavior we are seeing on macOS 15. The window is on the
visible screen, we're using NSZeroPoint, and yet the window is still
being moved. This does not happen on macOS 14 (but its hard to say
exactly because macOS 14 didn't have window snapping).

This commit works around the issue by saving the window frame before
calling `cascadeTopLeft(from: zero)` and then restoring it afterwards
if it has changed.

I've also filed a radar with Apple for this issue.
2024-11-02 10:16:42 -07:00
Mitchell Hashimoto
0ba3c67be5 Merge pull request #2562 from neurocyte/apprt-send-color_change-on-reset
apprt: also send color_change notifications when colors are reset
2024-11-02 09:46:12 -07:00
Mitchell Hashimoto
d22464fbfd Merge pull request #2566 from jcollie/gtk-window-destroy
gtk: use correct function to destroy window
2024-11-01 20:04:26 -07:00
Jeffrey C. Ollie
6d8cf55040 gtk: use correct function to destroy window
adw_application_window_destroy and gtk_application_window_destroy do not
exist. I believe that this didn't trigger a compile error because the
errdefer got compiled out because there are no potential error returns
after this code in the function.
2024-11-01 10:33:18 -05:00
Kristófer R
3b0a34afbc Extract OSC 7 hostname parsing into helper functions 2024-10-31 21:55:02 -04:00
Kristófer R
3a3da82aa9 Update explanation for number of digits in port number
The explanation now refers to RFC 793 instead of just claiming some
arbitrary value as truth. The previous value was correct, but now there
is a proper source for the correct value.
2024-10-31 18:09:36 -04:00
Mitchell Hashimoto
e7ccc60ed5 CONTRIBUTING.md 2024-10-31 10:03:02 -07:00
CJ van den Berg
24f5050484 apprt: also send color_change notifications when colors are reset 2024-10-31 17:52:02 +01:00
Mitchell Hashimoto
b56cb7038a core: only do cursor click to move without a mouse selection 2024-10-31 09:34:46 -07:00
Mitchell Hashimoto
63b11ceb5e macos: quick terminal set colorspace 2024-10-31 09:29:14 -07:00
Mitchell Hashimoto
30e95e4b9a Revert "macos: setup colorspace in base terminal controller"
This reverts commit e64b231248f68b2fd1e19d538d243b886d5284ff.
2024-10-31 09:28:08 -07:00
Mitchell Hashimoto
9bc9ea27bc Merge pull request #2554 from ghostty-org/push-rnmwvqopwlvk
cli: do not parse actions (+command) after -e
2024-10-30 21:00:12 -04:00
Mitchell Hashimoto
b11b5871e9 cli: do not parse actions (+command) after -e
Fixes #2506
2024-10-30 20:56:53 -04:00
Mitchell Hashimoto
9dfe1fc7a0 Merge pull request #2553 from ghostty-org/push-zxvmpvrlxusn
macos: rectangle select only requires option + drag
2024-10-30 20:50:57 -04:00
Mitchell Hashimoto
c0a37e8b98 Merge pull request #2552 from ghostty-org/push-ryrokukruoxr
macos: setup colorspace in base terminal controller
2024-10-30 20:48:30 -04:00
Mitchell Hashimoto
c97c0858be macos: rectangle select only requires option + drag
Fixes #2537

This matches Terminal.app. iTerm2 requires cmd+option (our old
behavior). Kitty doesn't seem to support rectangle select or I couldn't
figure out how to make it work. WezTerm matches Terminal.app too.
Outside of terminal emulators, this is also the rectangular select
binding for neovim.
2024-10-30 20:47:24 -04:00
Mitchell Hashimoto
e64b231248 macos: setup colorspace in base terminal controller
Fixes #2519

This sets up the colorspace for terminal windows in the base controller.

This also modifies some of our logic so its easier for subclasses of
base controllers to specify custom logic when the configuration reloads,
since that's likely to be a common thing.
2024-10-30 20:35:13 -04:00
Mitchell Hashimoto
569d887de8 core: show mouse whenever focus state changes on surface
Related to #2525
2024-10-30 18:03:16 -04:00
Rick Calixte
e0c5bdc53b Terminal: Reinitialize screens on scrollback reset
When resetting the terminal screen, the memory buffer allocated for the
scrollback is now cleared by reinitializing the screen and falling back to the
current method if any of the attempts to reinitialize fail.

Closes #2464
2024-10-30 17:21:38 -04:00
Mitchell Hashimoto
c483c8c475 Merge pull request #2530 from Nyaa97/main
Fix linking freetype and glslang
2024-10-30 16:51:47 -04:00
Mitchell Hashimoto
7bf253043c Merge pull request #2543 from marvinruder/2527-macos-visual-glitch-when-switching-between-full-screen-apps
fix(macOS): Fix visual glitch when switching between full-screen apps
2024-10-30 16:49:02 -04:00