11438 Commits

Author SHA1 Message Date
Mitchell Hashimoto
a705b42899 Add Gnome Nightly Icon Set
This adds a nightly-variant for the icons. These aren't hooked up to our
build system yet.
2025-07-29 12:10:42 -07:00
Mitchell Hashimoto
92c1f4b0b9 macOS: update Float on Top menu icon to square.filled.on.square (#8087)
Address a minor UI confusion introduced by #7594.

Ghostty's "Float on Top" action icon uses
`square.3.layers.3d.top.filled`, which is the same as macOS's "Bring All
to Front" action. This may cause confusion.

Before:
<img width="333" height="156" alt="image"
src="https://github.com/user-attachments/assets/5148909c-f090-4b2f-8206-c45cb30cf30e"
/>

After:
<img width="336" height="148" alt="image"
src="https://github.com/user-attachments/assets/3c3a820f-ece3-4778-af47-767758c23266"
/>
2025-07-28 10:01:14 -07:00
Mitchell Hashimoto
3278507ae8 Fix typo in VM Acceptance Criteria (#8092)
This PR fixes a small typo in the "VM Acceptance Criteria" section —
replaces "The" with "They".
2025-07-28 10:01:03 -07:00
Ahmed Harabi
87bb949a93 Fix typo in VM Acceptance Criteria ('The' → 'They') 2025-07-28 15:57:48 +00:00
Mitchell Hashimoto
a5a09f5ba4 apprt/gtk-ng: port SIGUSR2 to reload config (#8091)
Nothing controversial here.
2025-07-28 08:33:22 -07:00
Mitchell Hashimoto
c149ba1907 apprt/gtk-ng: port SIGUSR2 to reload config 2025-07-28 08:21:28 -07:00
Mitchell Hashimoto
d474c81b90 gtk-ng: fix up background of resize and url overlays (#8089)
PR #8088 had the unexpected side-effect of making the resize and url
overlays transparent as well. This PR fixes that.
2025-07-27 21:33:59 -07:00
Jeffrey C. Ollie
96573917a0 gtk-ng: fix up background of resize and url overlays
PR #8088 had the unexpected side-effect of making the resize and url
overlays transparent as well. This PR fixes that.
2025-07-27 23:28:28 -05:00
Mitchell Hashimoto
4c01d776c5 valgrind: make some GSK renderer supressions less strict 2025-07-27 21:08:15 -07:00
Mitchell Hashimoto
466aab543f gtk-ng: add/remove 'background' css class from window depending on opacity (#8088) 2025-07-27 21:04:11 -07:00
Jeffrey C. Ollie
92c004cb25 gtk-ng: add/remove 'background' css class from window depending on opacity 2025-07-27 22:05:16 -05:00
Mitchell Hashimoto
520ba27bb7 build(deps): bump cachix/install-nix-action from 31.5.1 to 31.5.2 (#8086)
Bumps
[cachix/install-nix-action](https://github.com/cachix/install-nix-action)
from 31.5.1 to 31.5.2.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/cachix/install-nix-action/releases">cachix/install-nix-action's
releases</a>.</em></p>
<blockquote>
<h2>v31.5.2</h2>
<h2>What's Changed</h2>
<ul>
<li>nix: 2.30.1 -&gt; 2.30.2 by <a
href="https://github.com/github-actions"><code>@​github-actions</code></a>[bot]
in <a
href="https://redirect.github.com/cachix/install-nix-action/pull/246">cachix/install-nix-action#246</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/cachix/install-nix-action/compare/v31...v31.5.2">https://github.com/cachix/install-nix-action/compare/v31...v31.5.2</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="fc6e360bed"><code>fc6e360</code></a>
Merge pull request <a
href="https://redirect.github.com/cachix/install-nix-action/issues/246">#246</a>
from cachix/create-pull-request/patch</li>
<li><a
href="9d5112343e"><code>9d51123</code></a>
nix: 2.30.1 -&gt; 2.30.2</li>
<li>See full diff in <a
href="c134e4c9e3...fc6e360bed">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=cachix/install-nix-action&package-manager=github_actions&previous-version=31.5.1&new-version=31.5.2)](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-07-27 19:58:31 -07:00
Aaron Ruan
1f710768e9 Update Float on Top menu icon to square.filled.on.square 2025-07-28 09:26:54 +08:00
dependabot[bot]
b5a34f5f3c build(deps): bump cachix/install-nix-action from 31.5.1 to 31.5.2
Bumps [cachix/install-nix-action](https://github.com/cachix/install-nix-action) from 31.5.1 to 31.5.2.
- [Release notes](https://github.com/cachix/install-nix-action/releases)
- [Changelog](https://github.com/cachix/install-nix-action/blob/master/RELEASE.md)
- [Commits](c134e4c9e3...fc6e360bed)

---
updated-dependencies:
- dependency-name: cachix/install-nix-action
  dependency-version: 31.5.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-28 01:05:10 +00:00
Mitchell Hashimoto
75d5a519c8 apprt/gtk-ng: configuration reloading, toasts (#8084)
This brings in configuration reloading and toasts to gtk-ng. 

Config reloading is fairly different in ng than legacy because we rely
on our GObject `Config` class and ref counting more heavily. We rely on
various property bindings and notify signals to propagate configuration
changes out to all subscribers. Previously we manually had to chain this
together.

Toasts are straightforward, with the main difference being that the
window owns its own toasts (surfaces can't trigger them) and triggers
them via signal emission.
2025-07-27 15:20:10 -07:00
Mitchell Hashimoto
bf61f29f57 apprt/gtk-ng: create the privateObjFieldAccessor helper to unref 2025-07-27 15:11:07 -07:00
Mitchell Hashimoto
c4de001023 apprt/gtk-ng: avoid reading corrupt memory in event loop 2025-07-27 14:28:21 -07:00
Mitchell Hashimoto
b011706aad suppressions 2025-07-27 14:12:26 -07:00
Mitchell Hashimoto
53c7b8922f apprt/gtk-ng: reload config 2025-07-27 13:57:28 -07:00
Mitchell Hashimoto
ccde429bde apprt/gtk-ng: toasts 2025-07-27 13:27:03 -07:00
Mitchell Hashimoto
18831374ca apprt/gtk-ng: fix scrolling on surface (#8080)
We forgot to specify the scroll controller's `flags` property.
2025-07-26 12:17:09 -07:00
Mitchell Hashimoto
b5c1f52ddb apprt/gtk-ng: fix scrolling on surface
We forgot to specify the scroll controller's `flags` property.
2025-07-26 12:13:51 -07:00
Mitchell Hashimoto
fd1db0c8e6 apprt/gtk-ng: new window menu action
Not sure why I skipped this one, its super easy.
2025-07-26 07:29:15 -07:00
Mitchell Hashimoto
c24aa0e9be update valgrind suppressions for a Linux wayland machine 2025-07-26 07:23:34 -07:00
Mitchell Hashimoto
b389171476 Add per-font size adjustment, don't adjust nf symbol font or emoji font; use non-Mono symbols nerd font (#7953)
This adds functionality for choosing different normalization metrics for
each fallback font. It's not exposed as a config option, but could be in
the future, which would probably go a long way towards addressing
concerns like #7929.

The currently available reference metrics are, in priority order:
`ic_width, ex_height, cap_height, line_height, em_size`. The default
value is `ic_width`.

By priority order, I mean that if the chosen metric is not defined in
the fallback font, we move to the next metric in the list---we don't
normalize by an estimated metric from the fallback font (however, we're
happy to use an estimated metric from the primary font, that's how
`ic_width` normalization between CJK and Latin fonts work). This extends
the pattern that was used between `ic_width` and `ex_height` in the
existing hardcoded rule. `line_height` is always defined, so the buck
stops there.

What motivated me to implement this was the fact that, with the existing
hardcoded rule, the embedded symbols-only Nerd Font was always scaled up
by a factor of 1.2, which turned out to be an important reason why it's
been difficult to make icon scaling work to everyone's satisfaction.
Accordingly, the symbols-only font is the first to take advantage of the
new functionality. If this PR is merged, #7917 is no longer needed. (To
limit the scope of this PR, it only includes the minimal changes to let
icon scaling take advantage of this functionality. I may submit a
follow-up PR with some further icon scaling improvement enabled by
this.)
2025-07-26 07:08:44 -07:00
Mitchell Hashimoto
fcbc58401f Upgrade hustcer/milestone-action to v2.9 (#8074)
Upgrade
[hustcer/milestone-action](https://github.com/hustcer/milestone-action)
to v2.9, [Release
Detail](https://github.com/hustcer/milestone-action/releases/tag/v2.9)

Fix the deprecated warning here:
https://github.com/ghostty-org/ghostty/actions/runs/16531137360/job/46756561930#step:3:37
2025-07-26 07:01:12 -07:00
Mitchell Hashimoto
bdf14cf29d gtk-ng: add ipc infrastructure and connect +new-window ipcs (#8069) 2025-07-26 07:00:59 -07:00
hustcer
259266223c Upgrade hustcer/milestone-action to v2.9 2025-07-26 11:57:13 +08:00
Jeffrey C. Ollie
ed584e769f gtk-ng: add ipc infrastructure and connect +new-window ipcs 2025-07-25 22:48:39 -05:00
Mitchell Hashimoto
858e705973 apprt/gtk-ng: window headerbar, maximize, fullscreen (#8071)
This ports over a basic headerbar, maximize, and fullscreen. The
headerbar only has the main menu button for now since we have no tabbing
or splits. The main menu has the full main menu that mainline GTK has
but most of it is disabled since we don't implement the actions yet.

I didn't use anything from your branch @tristan957 so I didn't add
coauthor but I want to note that @tristan957 worked on this as well and
I suspect there's overlap.
2025-07-25 20:45:41 -07:00
Mitchell Hashimoto
a8d0a84530 apprt/gtk-ng: hook up window close confirmation 2025-07-25 15:12:55 -07:00
Mitchell Hashimoto
a25a0011ea apprt/gtk-ng: more actions 2025-07-25 14:53:18 -07:00
Mitchell Hashimoto
7d33d39a45 blp formatting 2025-07-25 13:56:41 -07:00
Mitchell Hashimoto
7f2f603fbd apprt/gtk-ng: handle headerbar visibility by config 2025-07-25 13:52:12 -07:00
Mitchell Hashimoto
20b6d8ad79 gtk-ng: tell systemd when Ghostty is ready (#8070) 2025-07-25 13:36:45 -07:00
Mitchell Hashimoto
5fd7e0814d typos 2025-07-25 13:36:05 -07:00
Mitchell Hashimoto
7f3dda7ea4 apprt/gtk-ng: setup headervar-visible binding 2025-07-25 13:35:43 -07:00
Mitchell Hashimoto
6cf8007cf7 apprt/gtk-ng: toggle fullscreen and maximize 2025-07-25 13:17:13 -07:00
Jeffrey C. Ollie
95df073455 gtk-ng: tell systemd when Ghostty is ready 2025-07-25 15:16:50 -05:00
Mitchell Hashimoto
5b37e86391 apprt/gtk-ng: close surface, close window 2025-07-25 12:59:47 -07:00
Mitchell Hashimoto
f27fd0f550 apprt/gtk-ng: main menu button shouldn't focus 2025-07-25 12:47:26 -07:00
Mitchell Hashimoto
297e9cb8ab new suppressions to deal solely with showing the about window 2025-07-25 12:19:34 -07:00
Mitchell Hashimoto
02e6ef7e9b apprt/gtk-ng: setup action maps in app and window 2025-07-25 12:10:30 -07:00
Mitchell Hashimoto
e865535f6e apprt/gtk-ng: simple headerbar 2025-07-25 12:10:11 -07:00
Mitchell Hashimoto
b8dd767fe4 apprt/gtk: fix double-free if quit action is used (#8068)
This fixes a double-free that Valgrind found when the quit action was
used (the keybinding to quit or the menu item). This fixes it in both
the gtk and gtk-ng apprts.

The issue stems from the fact that our quit action worked by traversing
the toplevels and destroying all windows. When all windows are
destroyed, GTK exits the main loop.

When fcitx is used as the input method editor (IME), it appears to hold
its own `gtk.Window` widget as a property (probably for the IME popup).
Unfortunately this does not react well to being destroyed externally and
triggers a double-free when the IME widget also tries to dispose itself.

I think this is probably a bug somewhere in the GTK IME widget because
it should be resilient to this kind of destruction. But, we can't
tolerate a double free in the mean time.

We can still quit by destroying only OUR windows (which cascades to
destroy everything else).
2025-07-25 12:01:54 -07:00
Mitchell Hashimoto
a477921b80 apprt/gtk: fix double-free if quit action is used
This fixes a double-free that Valgrind found when the quit action was
used (the keybinding to quit or the menu item). 

The issue stems from the fact that our quit action worked by traversing the 
toplevels and destroying all windows. When all windows are destroyed,
GTK exits the main loop.

When fcitx is used as the input method editor (IME), it appears to hold
its own `gtk.Window` widget as a property (probably for the IME popup).
Unfortunately this does not react well to being destroyed externally and
triggers a double-free when the IME widget also tries to dispose itself.

I think this is probably a bug somewhere in the GTK IME widget because
it should be resilient to this kind of destruction. But, we can't
tolerate a double free in the mean time.

We can still quit by destroying only OUR windows (which cascades to
destroy everything else).
2025-07-25 11:53:22 -07:00
Qwerasd
92fa2228e9 font: use non-mono symbols nerd font for embedded symbols
I changed my mind, this is a pretty small change and relevant to the
intent of the PR. This brings the appearance of the embedded symbols
much closer to patched fonts.

With this, the sizes of most symbols are nearly identical to a patched
font, the only big difference is positioning (and TBH I think we do a
better job positioning than the patcher does, since we have knowledge
about the cell size).
2025-07-25 12:41:00 -06:00
Jeffrey C. Ollie
abfab82ef7 gtk-ng: add debug warning banner (#8057) 2025-07-25 13:18:58 -05:00
Qwerasd
6af6357949 font: clean up Collection api somewhat
Move size adjustment logic out of `Entry`, I understand the impulse to
put it there but it results in passing a lot of stuff around which isn't
great.

Rework `add(...)` in to `add(...)` and `addDeferred(...)`, faces are
passed directly now instead of passing an entry, and an options struct
is used instead of positional arguments for things like style, fallback,
and size adjustment.

Change size adjustment test back to a half pixel tolerance instead of 5%
because the previous commit (allowing fractional pixel sizes) fixed the
root cause of large differences.
2025-07-25 11:50:59 -06:00
Jeffrey C. Ollie
f390941fd6 gtk-ng: move debug property to window 2025-07-25 12:46:56 -05:00