620 Commits

Author SHA1 Message Date
Jeffrey C. Ollie
143e503d43 gtk: allow running in the background
This patch fixes #2010 by implementing `quit-after-last-window-closed`
for the GTK apprt. It also adds the ability for the GTK apprt to exit
after a delay once all surfaces have been closed and adds the ability to
start Ghostty without opening an initial window.
2024-08-01 01:25:17 -05:00
karei
5eb7925446 apprt/gtk: don't dim surface when opening context menu 2024-07-22 21:13:07 +03:00
Mitchell Hashimoto
53e942abae apprt/gtk: some stylistic changes 2024-07-22 10:29:59 -07:00
Mitchell Hashimoto
cc3b040571 apprt/gtk: get rid of forcing context menu for now
We have escapes (shift) so lets see how that goes and compare to some
other GTK apps first.
2024-07-22 10:21:18 -07:00
karei
6e5bc62726 apprt/gtk: disable copy in context menu while without selection
Left a FIXME where the "Copy" button action is disabled.

Though very hackish this was the best way I found to do this currently.
Disable sensitivity on the button didn't do anything and trying to
remove the button altogether like on macOS, causes the menu to become
really buggy. Either by the context menu turning into a scrollable list
or by it becoming really janky and showing the user pre-update UI.
2024-07-21 11:10:26 +03:00
karei
57db35036e apprt/gtk: implement context menu
Implements context menu for GTK with:
- copy
- paste
- split right
- split down
- terminal inspector
2024-07-21 11:10:21 +03:00
Chris Marchesi
d0446a8444 apprt/gtk: set mouse shape on GL area widget instead of overlay
In b7699b9a, mouse shape functionality was moved from the GL area widget
to the overlay that was newly created for the URL target information
that was included as part of #1928. This seems to have the side effect
of causing the pointer shape to revert to the default shape (here, the
basic arrow pointer) when dragging the mouse during selections.

This moves it back to the GL area, which seems to correct this. It
doesn't seem to need to be added to both - everything seems to function
correctly when a link is moused over, and then selection is made down to
the overlay area (not that this scenario is very likely, though).
2024-07-18 08:56:24 -07:00
karei
50c562bb47 gtk: fix terminal inspector menu button 2024-07-16 15:17:26 +03:00
Mitchell Hashimoto
2d7baaa7d7 apprt/gtk: toggle_window_decorations keybinding
Fixes #1943
2024-07-15 21:23:52 -07:00
Tim Culverhouse
76df732169 gtk: add unfocused_widget when split created from menu
When a split is created from a menu action, the focus is lost before the
split is made which prevents the surface from having the
unfocused_widget. Move the logic to add the unfocused_widget to the
overlay to an exported function which is called when the split is
created.
2024-07-11 10:29:40 -05:00
Tim Culverhouse
fc3d885022 gtk: remove unused css class on GtkNotebook 2024-07-11 08:34:51 -05:00
Tim Culverhouse
11c2ae1007 gtk: use GtkDrawingArea to dim unfocused split
Refactor the GTK unfocused split code to use a GtkDrawingArea widget to
dim the unfocused split. The GtkDrawingArea is added to the overlay and
a CSS style is used to give it a background color and opacity. This
aligns with the macOS design of drawing on top of the surface. In GTK,
we don't need to actually draw a rectangle because we can apply CSS
directly to the widget.
2024-07-11 08:28:47 -05:00
Tim Culverhouse
f04fe01ac6 gtk: improve readability of runtime css fmt 2024-07-10 14:17:58 -05:00
Tim Culverhouse
d1d3de758c gtk: prevent CSS collision on notebook stack
Add a class to the GtkNotebook which holds our tabs so we can more
precisely set the background color of just this `stack`. A collision was
occurring with the menu widgets, which are also a `stack`.
2024-07-10 13:56:03 -05:00
Tim Culverhouse
6c40cd963d gtk: implement unfocused-split opacity and fill
For a long time, us GTK users have been subject to lesser UX by not
knowing which split was focused. Improve the GTK UX by implementing both
unfocused-split-opacity and unfocused-split-fill. This is implemented by
setting the background-color of the notebook stack, and conditionally
applying a new css class "unfocused-split" to the unfocused split.
2024-07-10 12:56:09 -05:00
Mitchell Hashimoto
53fbed492b apprt/gtk: ellipsize URLs in middle to show end 2024-07-09 09:26:07 -07:00
Mitchell Hashimoto
f1561a4cae apprt/gtk: committed the forever status bar again 2024-07-07 12:25:08 -07:00
Mitchell Hashimoto
b7699b9af9 apprt/gtk: add all event handlers to the overlay so both receive 2024-07-07 12:17:40 -07:00
Mitchell Hashimoto
45d0653f46 apprt/gtk: add deinit for url widget 2024-07-07 09:48:39 -07:00
Mitchell Hashimoto
10a3214cb4 apprt/gtk: forgot to remove debug code to hide overlay 2024-07-07 09:39:41 -07:00
Mitchell Hashimoto
f9e5d9c10b apprt/gtk: move url hover bar when its under the mouse 2024-07-07 09:37:43 -07:00
Mitchell Hashimoto
ecdb0a74b0 apprt/gtk: style the overlay 2024-07-06 15:09:59 -07:00
Mitchell Hashimoto
8858c2ba4e apprt/gtk: convert surface to overlay so we can support the url overlay 2024-07-06 15:01:18 -07:00
Mitchell Hashimoto
36648ae397 apprt: stubs for mouseOverLink 2024-07-06 10:29:23 -07:00
Mitchell Hashimoto
cb790b8e39 macos: show URL on OSC8 hover 2024-07-06 10:25:12 -07:00
Mitchell Hashimoto
7fbc73ad37 macos: implement ctrl+command+d for quicklook under cursor 2024-07-01 10:08:38 -07:00
Mitchell Hashimoto
57d71450ab ctrl+click is handled as right-click (with various details)
If mouse capturing is enabled, we encode ctrl+click as ctrl+left-click
and DO NOT handle it as right click.
2024-06-30 19:44:51 -07:00
Mitchell Hashimoto
27fd05d112 apprt/gtk: conform to new mouse button API 2024-06-30 10:26:27 -07:00
Mitchell Hashimoto
03f37087a5 mouse button callbacks returns bool for consumption 2024-06-30 09:42:15 -07:00
Mitchell Hashimoto
db29c10bce apprt: scale coretext font size for quicklook properly 2024-06-29 11:43:13 -05:00
Mitchell Hashimoto
9a78563428 add TODO for branch 2024-06-29 11:29:02 -05:00
Mitchell Hashimoto
26735f0e05 apprt: convert selection info to a single struct and C API 2024-06-29 11:23:14 -05:00
Mitchell Hashimoto
80700d524d macos: add API to get selection top-left for quicklook 2024-06-29 10:42:45 -05:00
Mitchell Hashimoto
4c3fbffa4b macos: return valid selection range 2024-06-29 10:42:45 -05:00
Mitchell Hashimoto
d5f27245d4 macos: hacky API to get a CTFont for QuickLook 2024-06-29 10:42:45 -05:00
Mitchell Hashimoto
6faeb9ba40 core: mouse pressure state and callbacks 2024-06-29 10:42:45 -05:00
Severus
49d10fb661 Fix issue 1667
When GTK 4.14 released, it used ngl by default with GSK_RENDERER. It
leads to destroy VAO state when we closed tab or detach tab. It handles
it incorrectly with opengl's engine.

This is a fix for that issue.
2024-06-28 23:35:55 +07:00
Mitchell Hashimoto
cb76fe6634 fix linux builds 2024-06-24 15:16:24 -07:00
Cameron Dart
406d494e1d feat(gtk): focus follows mouse 2024-06-13 00:59:38 +00:00
Mitchell Hashimoto
25484d2ccc macos: set background opacity/blur on window controller not surface 2024-06-07 12:31:45 -07:00
Mitchell Hashimoto
dda6a22ea9 apprt/gtk: cgroup hierarchy only affects surfaces 2024-06-05 10:42:43 -07:00
Mitchell Hashimoto
99d567274b config: add cgroup memory limit config 2024-06-05 10:27:53 -07:00
Mitchell Hashimoto
3b41b89c23 apprt/gtk: config to hard fail on cgroup init 2024-06-05 09:47:48 -07:00
Mitchell Hashimoto
ad5d44af10 config: control cgroup isolation 2024-06-05 09:43:57 -07:00
Mitchell Hashimoto
a63c8d0913 termio: plumb a lot more to get ready to move into cgroup 2024-06-05 09:25:36 -07:00
Mitchell Hashimoto
dc51b8269c plumb the linux cgroup through to termio 2024-06-04 21:37:34 -07:00
Mitchell Hashimoto
1285b4f243 apprt/gtk: store transient cgroup 2024-06-04 21:10:42 -07:00
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