7627 Commits

Author SHA1 Message Date
Mitchell Hashimoto
c49b896f22 Merge pull request #2398 from ghostty-org/app-focus
Make core app-focus aware, used to determine global keybind behavior
2024-10-06 10:47:46 -10:00
Mitchell Hashimoto
494fedca2f apprt/gtk: report proper app focus state 2024-10-06 13:31:03 -07:00
Mitchell Hashimoto
e56cfbdc8b macos: set the proper app focus state 2024-10-06 10:06:17 -10:00
Mitchell Hashimoto
8dc4ebb4f7 apprt/embedded: add ghostty_app_set_focus 2024-10-06 09:58:46 -10:00
Mitchell Hashimoto
bac1780c3c core: add app focused state, make App.keyEvent focus aware 2024-10-06 09:58:46 -10:00
Mitchell Hashimoto
2e0a514384 Merge pull request #2395 from ghostty-org/mods
Hyperlink state improvements (no mouse move, blurred splits/windows on macOS)
2024-10-06 09:40:49 -10:00
Mitchell Hashimoto
6785f886ad core: ghostty_app_key only handles global keybinds for now
This introduces a separate bug fixes #2396
2024-10-06 09:32:30 -10:00
Mitchell Hashimoto
50b52da638 Merge pull request #2389 from ghostty-org/fn-globe
macOS: Allow binding the function/globe modifier
2024-10-06 06:07:32 -10:00
Mitchell Hashimoto
520c21d665 core: refresh hyperlink state without hacky cursorPosCallback
This fixes a longstanding piece of tech debt which caused all sorts of
bugs. Instead of trying to jam cursorPosCallback into a modsChanged
event we bring out the link refreshing into a dedicated method that is
shared.
2024-10-05 15:31:36 -10:00
Mitchell Hashimoto
e3dd0edc4f macos: use local event listener to propagate modifier changes to all
Related to #1547

Concretely, if you are highlighting a link and then release the
modifier, the other surfaces will be notified of this change.
2024-10-05 10:33:15 -10:00
Mitchell Hashimoto
e9f1fe327f cli/list-keybinds: output function modifier 2024-10-05 10:13:39 -10:00
Mitchell Hashimoto
b9fa6b1b83 config: more caveats for fn 2024-10-05 10:11:25 -10:00
Mitchell Hashimoto
f9e6d6efa6 macos: forward key events to the app when no windows exist 2024-10-05 10:05:06 -10:00
Mitchell Hashimoto
6fdfa9d491 Make the function/globe key available as a modifier on macOS 2024-10-05 09:39:55 -10:00
Mitchell Hashimoto
a36bdd97de Merge pull request #2387 from ghostty-org/push-pkurnzzzyxyx
Bind ctrl+tab and ctrl+shift+tab by default
2024-10-05 06:37:17 -10:00
Mitchell Hashimoto
a278022e5d Bind ctrl+tab and ctrl+shift+tab by default
This matches default behaviors on native apps for macOS and GTK so we
should always bind it.
2024-10-05 09:34:46 -07:00
Mitchell Hashimoto
23f81f8084 Merge pull request #2386 from ghostty-org/push-ryyxywkwxypz
macos: non-native fs keeps track of screen number for change screen comp
2024-10-05 06:29:44 -10:00
Mitchell Hashimoto
1ae9322959 macos: non-native fs keeps track of screen number for change screen comp
Fixes #2370

Comparing NSScreens directly was fragile. It appears that AppKit/Cocoa
can return different instances of NSScreen for the same screen for
unknown reasons between calls to windowDidChangeScreen. I don't fully
understand why this happens.

In any case, our comparison was not safe. Instad, we now keep track of
of the CGDirectDisplayID for each screen and compare those instead.
2024-10-05 06:21:30 -10:00
Mitchell Hashimoto
9971d7a93d macos: toggle_visibility needs to sync to the correct menu item 2024-10-05 06:05:13 -10:00
Mitchell Hashimoto
0dbf9796ef Merge pull request #2383 from ghostty-org/push-xosyoktxxmoq
renderer: fg/bg/cursor change must mark the screen as dirty
2024-10-04 10:02:24 -07:00
Mitchell Hashimoto
89fadfc202 renderer: fg/bg/cursor change must mark the screen as dirty
Fixes #2372
2024-10-04 06:58:50 -10:00
Mitchell Hashimoto
c973ca6e03 macos: move show/hide all terminal windows
I don't think "View" was the right place.

Also, the menu was incorrectly bound to the quick terminal variable.
2024-10-04 06:35:20 -10:00
Mitchell Hashimoto
136dd8d0f9 Merge pull request #2376 from lucymhdavies/macos-initial-window-false
Implements initial-window=false for macOS
2024-10-04 08:47:49 -07:00
Mitchell Hashimoto
251a90c007 Merge pull request #2375 from ThePrimeagen/main
scroll_with_fractional would scroll by different line count depending on direction
2024-10-04 08:47:05 -07:00
Mitchell Hashimoto
694ca32edd Merge pull request #2379 from ghostty-org/dependabot/github_actions/cachix/install-nix-action-30
build(deps): bump cachix/install-nix-action from 29 to 30
2024-10-03 17:45:54 -07:00
dependabot[bot]
1cee9cc698 build(deps): bump cachix/install-nix-action from 29 to 30
Bumps [cachix/install-nix-action](https://github.com/cachix/install-nix-action) from 29 to 30.
- [Release notes](https://github.com/cachix/install-nix-action/releases)
- [Commits](https://github.com/cachix/install-nix-action/compare/v29...v30)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-04 00:16:50 +00:00
Lucy Davinhart
a109b8d755 Implements initial-window=false for macOS
Closes https://github.com/ghostty-org/ghostty/issues/2361
2024-10-03 19:09:37 +01:00
theprimeagen
f0591b4afb fix: scrolling with fraction produces different lines count due to @floor vs @trunc (-1 vs 1) 2024-10-03 11:19:41 -06:00
Mitchell Hashimoto
e78a56a033 Merge pull request #2371 from jparise/vim-github-url
config: update project URL
2024-10-03 07:49:37 -07:00
Jon Parise
865f8bd456 config: update project URL 2024-10-03 10:07:25 -04:00
Mitchell Hashimoto
29a63ac303 fix xtshiftescape docs 2024-10-02 20:40:29 -07:00
Mitchell Hashimoto
0705e8dbb5 Merge pull request #2368 from ghostty-org/dependabot/github_actions/namespacelabs/nscloud-cache-action-1.2.0
build(deps): bump namespacelabs/nscloud-cache-action from 1.1.8 to 1.2.0
2024-10-02 17:36:48 -07:00
Mitchell Hashimoto
a3fef9f14e Merge pull request #2367 from ghostty-org/push-qtpouzmnnqqs
Mouse movement events are sent with shift until a button is pressed
2024-10-02 17:25:51 -07:00
dependabot[bot]
48ef182bb0 build(deps): bump namespacelabs/nscloud-cache-action from 1.1.8 to 1.2.0
Bumps [namespacelabs/nscloud-cache-action](https://github.com/namespacelabs/nscloud-cache-action) from 1.1.8 to 1.2.0.
- [Release notes](https://github.com/namespacelabs/nscloud-cache-action/releases)
- [Commits](https://github.com/namespacelabs/nscloud-cache-action/compare/v1.1.8...v1.2.0)

---
updated-dependencies:
- dependency-name: namespacelabs/nscloud-cache-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-03 00:11:51 +00:00
Mitchell Hashimoto
1d09cdb382 Mouse movement events are sent with shift until a button is pressed
Ghostty was previously treating shift as a way to always stop mouse
reporting. That's true for mouse button events, but not for mouse
movement events. For mouse movement events, shift should be treated as
a modifier until a button (any mouse button) is pressed. Once it is
pressed, we pause mouse reporting until all buttons are released.

Found by @ldemailly. This matches the behavior of Kitty, Alacritty,
WezTerm, and xterm.
2024-10-02 17:08:37 -07:00
Mitchell Hashimoto
6940af2a16 Merge pull request #2365 from qwerasd205/underline-fixes
Underline Fixes
2024-10-02 15:49:03 -07:00
Mitchell Hashimoto
7aa2e2b24f renderer: some tweaks 2024-10-02 15:44:06 -07:00
Mitchell Hashimoto
11adb7a999 Merge pull request #2366 from ghostty-org/push-tztyurvtwnor
font: add stylistic variants for built-in font, fix naming convention
2024-10-02 15:21:34 -07:00
Mitchell Hashimoto
be3ae56bc8 font: add stylistic variants for built-in font, fix naming convention
Fixes #2364

This adds the bold, italic, and bold italic variants of JB Mono so it is
built-in. This also fixes up the naming convention for the embedded font
files across tests and removes redundant embedded font files.
2024-10-02 15:17:18 -07:00
Qwerasd
dfc0894d5d fix(renderer): make all decorations and combining marks visible under cursor
Metal needed to be changed to account for wide chars having decorations
on the right half and OpenGL needed to account for multiple glyphs being
under the cursor at once (decorations and combining marks) as well as
wide chars.
2024-10-02 17:18:26 -04:00
Qwerasd
f9e2cb6aec fix(renderer): use 1-wide ul/st chars, ignore null shaper cells
This makes sure that underline styles are consistent and not stretched,
and avoids rendering overlapping text decorations or extraneous
background cells for the right halves of wide chars.
2024-10-02 16:38:31 -04:00
Mitchell Hashimoto
991cbcec21 Merge pull request #2338 from rolandpeelen/main
Add an equivalent to iTerm's "show/hide all windows" hotkey (Fix for: #2205)
2024-10-02 10:58:18 -07:00
Mitchell Hashimoto
28ec11e52b docs updates 2024-10-02 10:52:59 -07:00
Roland Peelen
9e00eeff86 Review Feedback - formatting / docs 2024-10-02 10:33:36 -07:00
Roland Peelen
af48c1af0c Refactor to hide only BaseTerminalController windows
This also slightly changes the code, as the duplication of the for loop
was making it harder to read now. I think technically slightly less
efficient, but this is hardly a hot code path, so should be fine imo.
2024-10-02 10:33:36 -07:00
Roland Peelen
2dbd46096f Fix typo 2024-10-02 10:33:36 -07:00
Roland Peelen
4aac4ecd98 Add hiding toggle, hook up to menu / shortcut 2024-10-02 10:33:36 -07:00
Roland Peelen
24ba1a6100 Add action on Zig side 2024-10-02 10:33:36 -07:00
Mitchell Hashimoto
03abc18adb Merge pull request #2347 from ghostty-org/push-nqtkputomwxx
Change copy-on-select behavior to be more idiomatic for Linux
2024-10-01 20:38:46 -07:00
Mitchell Hashimoto
66f2d75ddd Change copy-on-select behavior to be more idiomatic for Linux
Fixes #2345

The new docs for `copy-on-select`:

Whether to automatically copy selected text to the clipboard. `true`
will prefer to copy to the selection clipboard if supported by the
OS, otherwise it will copy to the system clipboard.

The value `clipboard` will always copy text to the system clipboard
(for supported systems) as well as the system clipboard. This is sometimes
a preferred behavior on Linux.

Middle-click paste will always use the selection clipboard on Linux
and the system clipboard on macOS. Middle-click paste is always enabled
even if this is `false`.

The default value is true on Linux and false on macOS. macOS copy on
select behavior is not typical for applications so it is disabled by
default. On Linux, this is a standard behavior so it is enabled by
default.
2024-10-01 20:38:27 -07:00