562 Commits

Author SHA1 Message Date
Mitchell Hashimoto
0abb6b9efa apprt/gtk: when dragging tab out, grab focus 2024-06-03 14:40:19 -07:00
Mitchell Hashimoto
14417d2592 Allow keybinding arbitrary unicode codepoints (#1814)
Fixes #1802 

This allows `keybind` configurations to map to any Unicode codepoint. This enables keybindings for which we don't have a registered keycode or for custom keyboard firmwares that may produce arbitrary text (but the Ghostty support is limited to a single codepoint).

The `keybind` syntax is unchanged. If a bound character doesn't map to a known logical key that Ghostty knows about, we map it to a Unicode codepoint. The unicode codepoint is compared against the _unshifted codepoint_ from the apprt key event. 

Note that this binding is to a single _codepoint_. We don't support arbitrary sequences of characters or multi-code point graphemes for keybindings due to the complexity in memory management that would introduce.

This also provides a good fallback for scenarios where it might make sense to educate Ghostty about a key code or fix a bug in our keyboard input system, but the unicode data is correct. In that scenario, unicode key binds should allow key binds to still work while we investigate the input issues.

Example:

```
shift+ö=text:hello
```

This now works as expected on a US hardware keyboard with the Hungarian keyboard layout.
2024-06-02 10:53:36 -07:00
Jon Parise
2a66d37e48 Update functional URLs for ghostty-org 2024-06-01 16:44:09 -04:00
Jeffrey C. Ollie
aa9813bc79 Add split right & split down menu entries for the GTK apprt.
Inspired by #1752
2024-05-11 11:48:11 -05:00
Mitchell Hashimoto
a11c7ac785 update Dear Imgui to 1.90.6 2024-05-10 10:17:33 -07:00
Mitchell Hashimoto
ae0464cf70 Merge pull request #1741 from qwerasd205/non-integer-point-size
feat(font): Non-integer point sizes
2024-05-08 21:36:48 -07:00
Mitchell Hashimoto
e81f525101 apprt/gtk: set GDK_DEBUG 2024-05-08 21:04:50 -07:00
Qwerasd
5df0935f82 update font_size to f32 in libghostty 2024-05-09 00:03:40 -04:00
Mitchell Hashimoto
ca9689be46 renderer/metal: API to handle macOS display ID changing 2024-05-04 19:40:58 -07:00
Mitchell Hashimoto
e31e25f54d apprt/embedded: add draw now API 2024-05-04 14:49:49 -07:00
Mitchell Hashimoto
57bf0b08ff Revert "Merge pull request #1690 from TheOnlyMrCat/gtk_opacity"
This reverts commit cbd787c92d296fc4b990a2d1cbf5c901af5b08bc, reversing
changes made to 74e8275e8ba38116a2f6a585902e7f8897c9b085.

See: https://github.com/mitchellh/ghostty/issues/1704
2024-04-21 10:17:38 -07:00
Mitchell Hashimoto
915e09367a Merge pull request #1696 from mitchellh/update-zig
Update to Latest Zig
2024-04-18 16:40:37 -07:00
Mitchell Hashimoto
cbd787c92d Merge pull request #1690 from TheOnlyMrCat/gtk_opacity
Fix background-opacity for the GTK backend
2024-04-18 15:04:56 -07:00
Mitchell Hashimoto
bd7d71440e update zig, fix linux build 2024-04-18 13:27:15 -07:00
Max Guppy
2c8a1ada17 apprt/gtk: Fix background-opacity 2024-04-18 15:42:17 +10:00
Mitchell Hashimoto
595f24585e working on more zig breaking changes 2024-04-17 20:50:50 -07:00
Jon Parise
1087b9b0fd apprt/embedded: store userdata directly on Surface
We were previously retaining Options on the Surface struct, but other
than userdata, we only use those values for initialization. Instead,
store just the opaque userdata value on the Surface and clarify that
Surface.Options are only used for initialization.
2024-04-17 12:57:19 -07:00
Mitchell Hashimoto
21605eaab7 apprt/embedded: setfontsize 2024-04-06 19:37:41 -07:00
Mitchell Hashimoto
84f30a6064 apprt/gtk: setFontsize should have error 2024-04-06 19:36:59 -07:00
Mitchell Hashimoto
506ba854fa core: font size changes work 2024-04-06 19:33:49 -07:00
Tristan Partin
0adbe097ed fix: remove deprecated to-pixdata gresource preprocessor
It was deprecated in gdk-pixbuf 2.32.

Link: https://docs.gtk.org/gio/struct.Resource.html
2024-03-28 21:15:09 -05:00
Mitchell Hashimoto
77c8a5998f apprt/gtk: handle gtk realize error more gracefully
Fixes #1606

This improves our logging when this occurs and prevents a crash.
The program will just run indefinitely with no windows (you can try to
create another but it will probably fail) but the logs are much more
helpful now.
2024-03-28 15:11:45 -07:00
Mitchell Hashimoto
054aeebf17 Merge pull request #1506 from jcollie/gtk-resources
GTK: Add compiled-in GTK resources and use them for icons.
2024-03-28 14:48:40 -07:00
Mitchell Hashimoto
b6f5970264 minor style changes 2024-03-28 14:45:44 -07:00
Mitchell Hashimoto
9aadf59ab1 macos,libghostty: font size is a u8 2024-03-27 20:53:03 -07:00
Jeffrey C. Ollie
9f0468f950 generate gresource xml and dependencies at comptime rather than hardcoding 2024-03-27 16:47:27 -05:00
Jeffrey C. Ollie
f943a4cf87 GTK: Add compiled-in GTK resources and use them for icons.
Use glib-compile-resources to compile CSS style sheets and icons into
the Ghostty GTK binary. Makes for simpler access to icons and sets
things up for customizing the look of Ghostty with CSS in the future.
The CSS style sheets are blank for now so there will be no visual
changes.
2024-03-27 16:47:26 -05:00
Igor Anić
137359bcb5 gtk: use symbolic icon for tab close
On my system (xorg Ubuntu 24.04, Adwaita:dark theme) tab close icon was
red while in all other applications was more discrete. With adding
`-symbolic` to the icon name now looks like all other application.
2024-03-27 20:04:17 +01:00
Mitchell Hashimoto
b68e1c6a5d Merge pull request #1555 from BvngeeCord/gtk-tabs-location
add 'gtk-tabs-location'
2024-03-25 21:37:50 -07:00
Kyungrok Chung
612d98d8f8 apprt/gtk: commit buffer before preeditchanged resets
When gtkInputPreeditChanged is called after gtkInputCommit, character
that should be committed is cleared. Check if there's buffered character
and send the characters directly when preedit changed.

Fix #1563
2024-03-18 21:17:40 +09:00
Jack N
fab3490d6e add gtk-tabs-location 2024-02-25 22:56:33 -08:00
Mitchell Hashimoto
be0595d71d apprt/embedded: add occlusion state callback 2024-02-12 13:48:09 -08:00
Mitchell Hashimoto
f414787779 move SplitDirection to apprt 2024-02-04 20:42:42 -08:00
Mitchell Hashimoto
d315223423 apprt/gtk: small stylistic edits 2024-02-02 20:00:10 -08:00
Jeffrey C. Ollie
0938835f87 Implement mode 2031 and DSR 996 for GTK 2024-02-02 21:10:58 -06:00
Mitchell Hashimoto
258d51395c apprt/embedded: add API for reporting color scheme 2024-02-02 13:02:16 -08:00
Mitchell Hashimoto
ae8f5f3ceb core: colorSchemeCallback on surface, can report 2024-02-02 12:51:20 -08:00
Mitchell Hashimoto
e5400bad06 config: add window-theme = auto for automatic choosing based on bg color 2024-02-01 20:49:28 -08:00
Mitchell Hashimoto
5c0e63458f apprt/embedded: do not allow NaN or small content scales
Fixes #1408
2024-01-29 08:35:23 -08:00
Mitchell Hashimoto
0726a8d1fa apprt/embedded: ctrl-only should use binding-mods only
This allows it to ignore control side differences.
2024-01-27 11:15:54 -08:00
Mitchell Hashimoto
d177b20bab macos: do not trust AppKit's text translation with ctrl only
Normally, when `ctrl+<character>` is pressed, such as `ctrl+z` or
`ctrl+c`, macOS (AppKit) doesn't do any key translation because that
doesn't map to any printable text on its own. Ghostty does the
translation to correctly determine the character is "z" or "c" or
whatever.

For some reason when the keyboard layout is "Dvorak - QWERTY Cmd"
specifically (_not_ plain "Dvorak") on a US layout keyboard, AppKit
decides that "ctrl+z" ("/" on a qwerty keyboard) translates to "/"...
I can't find any explanation for this.

To workaround this, this commit makes it so that if the following
conditions are true, then we IGNORE AppKit's text translation and
manually do it using UCKeyTranslate:

  (1) We're on macOS specifically (not iOS, etc.)
  (2) We have a key event with ONLY control pressed

This fixes `ctrl+z` on this unique Dvorak keyboard layout.
2024-01-27 08:13:53 -08:00
Mitchell Hashimoto
bf4211e060 input: handle more ctrl+<key> sequences, namely ctrl+_
Previously, we encoded `ctrl+_` in the CSIu format[1]. This breaks most
notably emacs which expects the legacy ambiguous encoding.

This commit utilizes the generator from Kitty to generate our control
key mappings. We also switch from keycode mapping to key contents
mapping which appears to be the correct behavior also compared to other
terminals.

In the course of doing this, I also found one bug with our fixterms
implementation. Fixterms states: "The Shift key should not be considered
as a modifier for Unicode characters, because it is most likely used to
obtain the character in the first place (e.g. the shift key is often
required to obtain the ! symbol)." We were not applying that logic and
now do.

[1]: https://www.leonerd.org.uk/hacks/fixterms/
2024-01-25 15:25:23 -08:00
Mitchell Hashimoto
4dbd10c913 apprt/embedded: support asking for selection text, existence 2024-01-21 17:22:44 -08:00
Mitchell Hashimoto
26e6e8cec8 apprt/embedded: add iOS platform with uivew 2024-01-18 15:03:03 -08:00
Krzysztof Wolicki
316cb5314c cimgui metal impl available only when target is Darwin 2024-01-18 21:43:57 +01:00
Mitchell Hashimoto
01afa293c8 apprt/embedded: fix initialization on macOS 2024-01-18 08:55:03 -08:00
Mitchell Hashimoto
df09c21103 apprt/embedded: compile for Linux 2024-01-18 08:44:56 -08:00
Thorsten Ball
551d19205b gtk: respect minimum split size when using resize keys
This is the GTK equivalent of #1304.
2024-01-18 06:38:08 +01:00
Mitchell Hashimoto
93c87f21ff apprt/embedded: set wait-after-command when command is set 2024-01-17 08:43:04 -08:00
Mitchell Hashimoto
ed3f1df5f0 Merge pull request #1316 from qwerasd205/macos-file-handler
Added macOS file open handler
2024-01-16 18:56:34 -08:00