Mitchell Hashimoto
c4a978b07a
macos: set toolbar title isBordered
to avoid glass view
...
This was recommended by the WWDC25 session on AppKit updates. My hack
was not the right approach.
2025-06-14 13:50:02 -07:00
Kristófer R
2f33eee166
fix comptime if statement
2025-06-14 16:26:03 -04:00
Mitchell Hashimoto
22776adc28
ci: update macOS builders to Sequoia (15) and Xcode 16.4 ( #7592 )
...
We have been building on macOS 14 and Xcode 16.0 for a longggg time now.
This gets us to a version that will be running Xcode 26 eventually so we
can ultimately build for Tahoe on a stable OS.
This should change nothing in the interim.
2025-06-14 12:48:31 -07:00
Mitchell Hashimoto
5b9f4acbc8
ci: update macOS builders to Sequoia (15) and Xcode 16.4
...
We have been building on macOS 14 and Xcode 16.0 for a longggg time now.
This gets us to a version that will be running Xcode 26 eventually so
we can ultimately build for Tahoe on a stable OS.
This should change nothing in the interim.
2025-06-14 12:32:48 -07:00
Mitchell Hashimoto
f26dec559a
macOS: Tahoe Titlebar Styling Fixes ( #7588 )
...
Fixes #7568
Fixes #7563
This PR incorporates all the fixes necessary to make all of our
`macos-titlebar-style` values work on macOS Tahoe.
All titlebar styles are significantly more efficient on macOS Tahoe. I
was able to refactor a lot of our complicated logic out of `update`
ticks (which are called on _every event loop tick_) to being eventful,
so the CPU required to render any titlebar style on Tahoe is
dramatically lowered. This fix _might_ be able to be back ported but I
tried my best to not modify Sequoia and earlier codebases to keep them
stable.
The major change here is `macos-titlebar-style = tabs`, which takes on a
whole new look with Tahoe. The ultimate goal of this setting is that the
_native tab bar_ goes into the titlebar, and we've respected that here.
For more background, see #7563 on why we can't easily mimic the Sequoia
style. I think longer term, for people who don't want capsule-tabs in
their titlebar, we'll need a custom tab bar.
## Future Improvements
There are obviously future improvements that can be made. I think for
example the readability in some cases of the `tabs` styling is pretty
bad. But I wonder if Apple themselves will do something about this with
the tab bar, so I'm going to hold out on caring too much.
The main goal of this PR was to make sure Ghostty was usable when
recompiled with the v26 SDKs.
## Screenshots
> [!NOTE]
>
> Ignore the weird background color glitches in the titlebar. That's a
screenshot artifact (bug probably in macOS) and not actually visible
when running.
### `macos-titlebar-style = tabs`


### `macos-titlebar-style = transparent`


### `macos-titlebar-style = native`


## TODO
- [x] A really weird bug where if I resize vertically to create
scrollback then create a new tab my font size is... tiny?
- [x] Verify no major regressions on Sequoia
- [x] Sequoia regression: non-native fullscreen with titlebar tabs
doesn't work
- [x] Sequoia regression: reset split zoom button doesn't restore for
tabs titlebar going to zero tabs
- [x] Sequoia regression: transparent isn't working
- [x] Check macOS 26 gates on Solarium instead of version?
- [ ] Merge all windows doesn't create titlebar tabs on Tahoe
2025-06-14 07:02:12 -07:00
Mitchell Hashimoto
928603c23e
macos: use a runtime liquid glass check for our Tahoe styling
2025-06-13 20:20:56 -07:00
Mitchell Hashimoto
1b6142b271
macos: don't restore tab bar with non-native fs
2025-06-13 15:02:06 -07:00
Mitchell Hashimoto
ac4b0dcac0
macos: fix transparent tabs on sequoia
2025-06-13 14:57:54 -07:00
Mitchell Hashimoto
1388c277d5
macos: sequoia should use same tab bar identifier as TerminalWindow
2025-06-13 14:43:04 -07:00
Mitchell Hashimoto
8cfc904c0c
macos: fix up some sequoia regressions
2025-06-13 14:39:12 -07:00
Mitchell Hashimoto
a7df90ee55
macos: remove split zoom accessory when tabs appear
2025-06-13 13:36:42 -07:00
Mitchell Hashimoto
f7f0514b9f
macos: move old toolbar into ventura file
2025-06-13 13:14:16 -07:00
Mitchell Hashimoto
59812c3b02
macos: remove TODO
2025-06-13 12:27:44 -07:00
Mitchell Hashimoto
b1b74d3421
comments
2025-06-13 12:25:21 -07:00
Mitchell Hashimoto
00d41239da
macOS: prep the tab bar when system appearance changes
2025-06-13 12:22:29 -07:00
Jeffrey C. Ollie
c1d04a6175
gtk: document effect of changing the class on launching Ghostty
2025-06-13 10:22:17 -05:00
Jeffrey C. Ollie
e5c737a423
linux: use launched-from for new window action
2025-06-13 10:22:16 -05:00
Jeffrey C. Ollie
57392dfcb5
linux: use explicit launched-from config in service files
2025-06-13 10:22:16 -05:00
Jeffrey C. Ollie
649cca61eb
gtk: use exhaustive switch for initial-window
2025-06-13 10:22:16 -05:00
Jeffrey C. Ollie
8824d11e1c
linux: add dbus and systemd activation services
2025-06-13 10:22:12 -05:00
Mitchell Hashimoto
17ad77b5b0
macos: fix background color of terminal window to match surface
2025-06-12 21:36:00 -07:00
Mitchell Hashimoto
9d9c451b0a
macos: titlebar tabs handle hidden traffic buttons
2025-06-12 20:03:21 -07:00
Mitchell Hashimoto
d84c30ce71
macos: titlebar tabs should be transparent
2025-06-12 18:10:37 -07:00
Mitchell Hashimoto
5f99670247
macos: tahoe titlebar tabs taking shape
2025-06-12 17:52:15 -07:00
Mitchell Hashimoto
6ae8bd737a
macos: hide the reset zoom titlebar accessory when tab bar is shown
2025-06-12 15:13:23 -07:00
Mitchell Hashimoto
5c8f1948ce
macos: remove the duplicated reset zoom accessory view from legacy
2025-06-12 14:42:09 -07:00
Mitchell Hashimoto
de40e7ce02
macos: non-native fullscreen should restore toolbars
2025-06-12 14:36:33 -07:00
Mitchell Hashimoto
658ec2eb6f
macos: add reset zoom to all window titles
2025-06-12 14:33:53 -07:00
Mitchell Hashimoto
70029bf82a
macos: tahoe terminal tabs shows title
2025-06-12 13:39:19 -07:00
Mitchell Hashimoto
5877913ab8
macoS: Split out terminal tabs for ventura vs tahoe
2025-06-12 12:06:30 -07:00
Mitchell Hashimoto
fd785f98bb
macos: titlebar tabs uses legacy window for now
2025-06-12 11:39:10 -07:00
Mitchell Hashimoto
ccfd33022f
macos: only titlebar tabs uses legacy styling now
2025-06-11 15:18:02 -07:00
Mitchell Hashimoto
e5cb33e911
typos
2025-06-11 15:18:02 -07:00
Mitchell Hashimoto
63e56d0402
macos: titlebar fonts work with new terminal window
2025-06-11 15:18:02 -07:00
Mitchell Hashimoto
a804dab288
macos: native terminal style works with new subclasses
2025-06-11 15:18:02 -07:00
Mitchell Hashimoto
dfa7a114de
macos: make transparent titlebars robust against show/hide tabs
2025-06-11 15:18:02 -07:00
Mitchell Hashimoto
3595b2a847
macos: transparent titlebar handles transparent background
2025-06-11 15:18:02 -07:00
Mitchell Hashimoto
6ce7f612a6
macos: transparent titlebar needs to be rehidden when tabs change
2025-06-11 15:18:02 -07:00
Mitchell Hashimoto
7d02977482
macos: add NSView hierarchy debugging code
2025-06-11 15:18:02 -07:00
Mitchell Hashimoto
4d33a73fc4
wip: redo terminal window styling
2025-06-11 15:18:02 -07:00
Mitchell Hashimoto
c3d65d3975
build(deps): bump softprops/action-gh-release from 2.2.2 to 2.3.2 ( #7569 )
...
Bumps
[softprops/action-gh-release](https://github.com/softprops/action-gh-release )
from 2.2.2 to 2.3.2.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/softprops/action-gh-release/releases ">softprops/action-gh-release's
releases</a>.</em></p>
<blockquote>
<h2>v2.3.2</h2>
<ul>
<li>fix: revert fs <code>readableWebStream</code> change</li>
</ul>
<h2>v2.3.1</h2>
<!-- raw HTML omitted -->
<h2>What's Changed</h2>
<h3>Bug fixes 🐛 </h3>
<ul>
<li>fix: fix file closing issue by <a
href="https://github.com/WailGree "><code>@WailGree</code></a> in <a
href="https://redirect.github.com/softprops/action-gh-release/pull/629 ">softprops/action-gh-release#629</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/WailGree "><code>@WailGree</code></a>
made their first contribution in <a
href="https://redirect.github.com/softprops/action-gh-release/pull/629 ">softprops/action-gh-release#629</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/softprops/action-gh-release/compare/v2.3.0...v2.3.1 ">https://github.com/softprops/action-gh-release/compare/v2.3.0...v2.3.1 </a></p>
<h2>v2.3.0</h2>
<!-- raw HTML omitted -->
<ul>
<li>Migrate from jest to vitest</li>
<li>Replace <code>mime</code> with <code>mime-types</code></li>
<li>Bump to use node 24</li>
<li>Dependency updates</li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/softprops/action-gh-release/compare/v2.2.2...v2.3.0 ">https://github.com/softprops/action-gh-release/compare/v2.2.2...v2.3.0 </a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md ">softprops/action-gh-release's
changelog</a>.</em></p>
<blockquote>
<h2>2.3.2</h2>
<ul>
<li>fix: revert fs <code>readableWebStream</code> change</li>
</ul>
<h2>2.3.1</h2>
<h3>Bug fixes 🐛 </h3>
<ul>
<li>fix: fix file closing issue by <a
href="https://github.com/WailGree "><code>@WailGree</code></a> in <a
href="https://redirect.github.com/softprops/action-gh-release/pull/629 ">softprops/action-gh-release#629</a></li>
</ul>
<h2>2.3.0</h2>
<ul>
<li>Migrate from jest to vitest</li>
<li>Replace <code>mime</code> with <code>mime-types</code></li>
<li>Bump to use node 24</li>
<li>Dependency updates</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="72f2c25fcb
"><code>72f2c25</code></a>
release 2.3.2</li>
<li><a
href="552dc5524b
"><code>552dc55</code></a>
fix: revert <code>fs:readableWebStream</code> change (<a
href="https://redirect.github.com/softprops/action-gh-release/issues/632 ">#632</a>)</li>
<li><a
href="f3cad8bcbf
"><code>f3cad8b</code></a>
release 2.3.1</li>
<li><a
href="07a2257003
"><code>07a2257</code></a>
fix: fix file closing issue (<a
href="https://redirect.github.com/softprops/action-gh-release/issues/629 ">#629</a>)</li>
<li><a
href="d5382d3e6f
"><code>d5382d3</code></a>
release 2.3.0</li>
<li><a
href="a0e2122208
"><code>a0e2122</code></a>
feat: migrate from jest to vitest (<a
href="https://redirect.github.com/softprops/action-gh-release/issues/626 ">#626</a>)</li>
<li><a
href="8836085300
"><code>8836085</code></a>
chore: replace <code>mime</code> with <code>mime-types</code> (<a
href="https://redirect.github.com/softprops/action-gh-release/issues/624 ">#624</a>)</li>
<li><a
href="86463358d8
"><code>8646335</code></a>
chore: bump node to 20.19.2</li>
<li><a
href="46b284799f
"><code>46b2847</code></a>
chore(deps): bump the npm group across 1 directory with 5 updates (<a
href="https://redirect.github.com/softprops/action-gh-release/issues/623 ">#623</a>)</li>
<li><a
href="37fd9d0351
"><code>37fd9d0</code></a>
chore(deps): bump undici from 5.28.5 to 5.29.0 (<a
href="https://redirect.github.com/softprops/action-gh-release/issues/621 ">#621</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/softprops/action-gh-release/compare/v2.2.2...v2.3.2 ">compare
view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores )
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
</details>
2025-06-11 06:54:43 -07:00
Kristófer R
31e386afa6
use else if instead of else { if }
2025-06-10 22:03:33 -04:00
dependabot[bot]
990b6a6b08
build(deps): bump softprops/action-gh-release from 2.2.2 to 2.3.2
...
Bumps [softprops/action-gh-release](https://github.com/softprops/action-gh-release ) from 2.2.2 to 2.3.2.
- [Release notes](https://github.com/softprops/action-gh-release/releases )
- [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md )
- [Commits](https://github.com/softprops/action-gh-release/compare/v2.2.2...v2.3.2 )
---
updated-dependencies:
- dependency-name: softprops/action-gh-release
dependency-version: 2.3.2
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com>
2025-06-11 00:31:07 +00:00
Mitchell Hashimoto
76a3612195
macos: hidden titlebar windows should cascade on new tab ( #7567 )
...
Windows with `macos-titlebar-style = hidden` create new windows when the
new tab binding is pressed. This behavior has existed for a long time.
However, these windows did not cascade, meaning they'd appear overlapped
directly on top of the previous window, which is kind of nasty.
This commit changes it so that new windows created via new tab from a
hidden titlebar window will cascade.
2025-06-10 14:38:48 -07:00
Mitchell Hashimoto
3db5b3da75
macos: hidden titlebar windows should cascade on new tab
...
Windows with `macos-titlebar-style = hidden` create new windows when the
new tab binding is pressed. This behavior has existed for a long time.
However, these windows did not cascade, meaning they'd appear overlapped
directly on top of the previous window, which is kind of nasty.
This commit changes it so that new windows created via new tab from a
hidden titlebar window will cascade.
2025-06-10 14:31:41 -07:00
Mitchell Hashimoto
e5f5e19eef
macos: for windowShouldClose, only close the tab if we have multiple ( #7566 )
...
Fixes a regression from our undo/redo rework. We were accidentally
closing the entire window when the "X" button in the tab bar was
clicked.
2025-06-10 12:46:47 -07:00
Mitchell Hashimoto
1f340b4b2d
macos: for windowShouldClose, only close the tab if we have multiple
...
Fixes a regression from our undo/redo rework. We were accidentally
closing the entire window when the "X" button in the tab bar was
clicked.
2025-06-10 12:39:09 -07:00
Mitchell Hashimoto
8b5cceed3e
ci: pin gh-action-release to 2.2.2 to workaround issue
...
https://github.com/softprops/action-gh-release/issues/628
2025-06-10 12:30:22 -07:00
Mitchell Hashimoto
95a04eebc8
macos: unsplit window shouldn't allow split zooming ( #7565 )
...
This was always the case, and is a recent regression from the SplitTree
rework. This brings it back to the previous behavior.
2025-06-10 12:21:58 -07:00
Mitchell Hashimoto
2b9a6a4820
macos: unsplit window shouldn't allow split zooming
...
This was always the case, and is a recent regression from the SplitTree
rework. This brings it back to the previous behavior.
2025-06-10 12:11:18 -07:00