250 Commits

Author SHA1 Message Date
Mitchell Hashimoto
01bfce0981 os: cgroup can set memory limits 2024-06-04 21:02:25 -07:00
Mitchell Hashimoto
d351e80158 os: cgroup create/move 2024-06-04 20:22:17 -07:00
Mitchell Hashimoto
bbe525c964 os: API to configure cgroup controllers 2024-06-04 19:36:48 -07:00
Mitchell Hashimoto
b5c4d2f60d os: rename linux => cgroup 2024-06-04 19:28:12 -07:00
Mitchell Hashimoto
c0b061edd9 os: API for listing cgroup controllers 2024-06-04 19:23:18 -07:00
Mitchell Hashimoto
409c958b7e apprt/gtk: cgroup initialization 2024-06-04 18:59:44 -07:00
Paul Berg
2d9aad9806 gtk: update tab's window upon switching notebook 2024-06-04 09:19:15 +02:00
Mitchell Hashimoto
29b3f9d528 gtk: set tab group so that tabs can be dropped onto other windows
Related to #1122
2024-06-03 16:21:50 -07:00
Mitchell Hashimoto
a72a02488f gtk: goto_split:previous/next wrap
Fixes #1258

This matches macOS.
2024-06-03 16:06:24 -07:00
Mitchell Hashimoto
d6f79ce96b gtk: note setting title unhides the cursor 2024-06-03 15:36:10 -07:00
Mitchell Hashimoto
67c17cba1a apprt/gtk: only set cursor on shape change if its visible 2024-06-03 15:07:33 -07:00
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
e81f525101 apprt/gtk: set GDK_DEBUG 2024-05-08 21:04:50 -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
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
Mitchell Hashimoto
84f30a6064 apprt/gtk: setFontsize should have error 2024-04-06 19:36:59 -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
b6f5970264 minor style changes 2024-03-28 14:45:44 -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
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
e5400bad06 config: add window-theme = auto for automatic choosing based on bg color 2024-02-01 20:49:28 -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
34d5cbda13 apprt/gtk: xft-dpi can be fractional, do not expect exact division
This was reported on Discord. A Chromebook reported an `Xft.dpi` of
`96.1025390625` which resulted in a `gtk-xft-dpi` of 98409. This caused
`divExact` to crash in runtime safety modes.
2024-01-15 20:49:12 -08:00
Paul Berg
2b52c5ed88 gtk: update tab title even when the tab is unfocused
This change updates the tab title if the tab is unfocused. Tab title
updates only occur when the update surface is the focused child of the
tab.
2024-01-15 11:53:30 +01:00
Mitchell Hashimoto
81b9a6b623 config: rename window-append-new-tab to window-new-tab-position 2024-01-12 09:50:47 -08:00
Thorsten Ball
2aa1874f94 gtk: append new tabs at the end if config is set
This adds a new config option: `window-append-new-tabs` (please: if you
have a better name, let me know). If this is set to true, then new GTK
tabs aren't added after the current tab, but after at the end.
2024-01-12 17:35:15 +01:00
Gregory Anders
d059c57440 gtk: use modifier state from GTK key event on X11
On X11 gdk_device_get_modifier_state does not correctly return the
modifier state, while the modifier state passed to the key callback
does. On Wayland, the situation is exactly reversed.

Therefore on X11 we use the mods provided by the key callback and on
Wayland we continue to get the modifier state from the device.

`App.modifier_state_from_xkb` is removed since we can lift the
conditional out of the function call (we would need to make a second,
redundant check for the presence of `x11_xkb` otherwise).
2024-01-10 16:26:53 -06:00
Gregory Anders
36a5965eea x11: fix modifier mask for Super key
Mod4 is "Super" in X11, verified via the `xmodmap` command:

    xmodmap:  up to 4 keys per modifier, (keycodes in parentheses):

    shift       Shift_L (0x32),  Shift_R (0x3e)
    lock        Caps_Lock (0x42)
    control     Control_L (0x25),  Caps_Lock (0x42),  Control_R (0x69)
    mod1        Alt_L (0x85),  Alt_R (0x86),  Alt_L (0xcc),  Meta_L (0xcd)
    mod2        Num_Lock (0x4d)
    mod3        ISO_Level5_Shift (0xcb)
    mod4        Super_L (0x40),  Super_R (0x6c),  Super_L (0xce),  Hyper_L (0xcf)
    mod5        ISO_Level3_Shift (0x5c)
2024-01-10 10:15:39 -06:00
Mitchell Hashimoto
b62c78b61d apprt/gtk: stylistic changes 2024-01-07 12:25:56 -08:00
Riccardo Binetti
ad503b8c4f linux: consider Xft.dpi to scale the content
Many applications use Xft.dpi to scale their contents (e.g. Chromium,
kitty, alacritty...). This value also gets set by DE setting managers
and can be manually set in ~/.Xresources if using, e.g., i3.

This should make HiDPI on Linux more consistent even when not using
GTK-specific methods (e.g. GDK_SCALE=2).

Note that we still consider GTK scaling, so it's possible to use the two
independently.

Closes #1243
2024-01-07 17:16:16 +01:00
Riccardo Binetti
fe0842c2d0 linux: add a function to check if we're running on X11 2024-01-07 16:54:01 +01:00
Jeffrey C. Ollie
698954031a Add 'Open Config' menu to the GTK runtime and synchronize config-related keybindings across platforms. 2024-01-04 23:30:22 -06:00
Mitchell Hashimoto
732063375a apprt/gtk: stylistic changes 2024-01-01 08:34:19 -08:00
Chris Marchesi
d235554606 apprt/gtk: Move Xkb state to App, remove un-needed fields, style changes 2023-12-31 12:10:25 -08:00
Mitchell Hashimoto
a3ce446fee apprt/gtk: use some comptime to load X11 functions 2023-12-31 08:00:43 -08:00