264 Commits

Author SHA1 Message Date
CJ van den Berg
a2a1d93d5c apprt: propagate OSC10/11 (set term fore/background color) through to apprt
This is to allow the running apprt to set the UI theme to match the
terminal application coloring.
2024-10-30 17:35:34 +01:00
axdank
e7bd60b28e fix type mismatch in moveTab function parameter 2024-10-25 16:53:13 -03:00
axdank
520dda65cb apply review changes 2024-10-25 08:07:11 -03:00
axdank
465d60def8 gui: add move_current_tab action 2024-10-24 00:01:54 -03:00
Mitchell Hashimoto
be3fc5c04a apprt/gtk: exit if there are CLI errors 2024-10-18 08:26:27 -07:00
Mitchell Hashimoto
4e25840e08 apprt/gtk: support new config diagnostics API 2024-10-18 08:11:11 -07:00
Mitchell Hashimoto
c614f2b485 apprt/gtk: use stackfallback for runtime CSS, explicit errors 2024-10-16 06:19:47 -07:00
Jeffrey C. Ollie
ca42b4ca1c gtk: use CSS variables and color calcs introduced in 4.16
This takes advantage of CSS variables and color expressions to improve
the `window-theme=ghostty` support. The only visibile difference from
the previous implementation is that the header bar will darken if the
Ghostty window is in the background, which is standard for GTK apps.

This is conditional at runtime. If Ghostty detects that you're running
against GTK 4.16 or newer it will use the CSS variables and color calcs.
If you're running against older versions it will use CSS classes to
achieve nearly the same effect.
2024-10-14 18:24:05 -05:00
Mitchell Hashimoto
b65a9ebc45 Merge pull request #2234 from jcollie/gtk-css-no-libadwaita
gtk: load css when libadwaita is not being used
2024-10-09 09:37:30 -07:00
Mitchell Hashimoto
5c1ffbb642 apprt: implement key_sequence action 2024-10-08 21:55:00 -07:00
Jeffrey C. Ollie
bb109c435f gtk: fix window-theme=ghostty 2024-10-08 11:17:33 -05:00
Jeffrey C. Ollie
ab0a736089 gtk: load css when libadwaita is not being used 2024-10-08 11:17:32 -05:00
Leah Amelia Chen
fbc621a7d8 gtk: implement splitting leftwards and upwards 2024-10-07 18:19:27 -07:00
Mitchell Hashimoto
494fedca2f apprt/gtk: report proper app focus state 2024-10-06 13:31:03 -07:00
Roland Peelen
24ba1a6100 Add action on Zig side 2024-10-02 10:33:36 -07:00
Christian Kugler
f9d3f64978 Merge branch 'main' into fix_2271 2024-09-29 14:15:56 +02:00
Christian Kugler
f309d4191e Use helper function to set correct env variables
GTK4 version 4.16 split the environment variable `GDK_DEBUG` into `GDK_DEBUG`
and `GDK_DISABLE`. This is being done by using the helper function `atLeast` to
handle certain versions accordingly.

`GSK_RENDERER` also only needs to be set in later GTK versions (>=1.14.0).
2024-09-29 14:04:13 +02:00
Mitchell Hashimoto
1570ef01a7 rename slide to quick terminal 2024-09-28 15:20:35 -07:00
Mitchell Hashimoto
7806366eec core: fix up toggle_slide_terminal action for rebase 2024-09-27 18:36:06 -07:00
Mitchell Hashimoto
576453cfde apprt/gtk: set null url if url is empty
Fixes #2306
2024-09-27 18:34:08 -07:00
Paul Berg
f1474c220d bind: add toggle_tab_overview binding 2024-09-27 10:13:05 -07:00
Mitchell Hashimoto
4ae20212bf libghostty: unified action dispatch
First, this commit modifies libghostty to use a single unified action
dispatch system based on a tagged union versus the one-off callback
system that was previously in place. This change simplifies the code on
both the core and consumer sides of the library. Importantly, as we
introduce new actions, we can now maintain ABI compatibility so long as
our union size does not change (something I don't promise yet).

Second, this moves a lot more of the functions call on a surface into
the action system. This affects all apprts and continues the previous
work of introducing a more unified API for optional surface features.
2024-09-26 22:00:11 -07:00
Mitchell Hashimoto
3b419a2ba2 apprt/gtk: handle zero value notification pointers 2024-09-26 14:40:33 -07:00
Mitchell Hashimoto
4e2781fdec apprt/gtk 2024-09-26 14:13:18 -07:00
Paul
b41f45d7a3 apprt/gtk: support window-theme != ghostty
- support for gtk-tabs-location=bottom
 - support for gtk-titlebar=false
2024-09-24 08:10:06 +02:00
Tristan Partin
81c50e588c apprt/gtk: override the top bar colors in libadwaita correctly
This is the way to override the color in libadwaita < 1.6. We can
transition to named colors, specifically headerbar-{fg,bg}-color for
libadwaita 1.6.

Fixes: #2266
Signed-off-by: Tristan Partin <tristan@partin.io>
2024-09-23 17:09:14 -05:00
Mitchell Hashimoto
a503e0250e apprt/gtk: add version helpers
This adds version helpers similar to the adwaita version helpers so that
build time and runtime version checks can be done.
2024-09-19 20:24:52 -07:00
Severus
888861984d Fix typo 2024-09-20 10:18:19 +07:00
Severus
b675905cc2 Fix 2271 issue
From GTK 4.16, GDK_DEBUG is splitted into GDK_DEBUG and GDK_DISABLE
2024-09-20 07:55:40 +07:00
Paul Berg
990bcb9573 gtk: respect window-theme=ghostty when gtk-titlebar=false 2024-09-18 13:52:44 +02:00
Tristan Partin
d0c6c4f367 apprt/gtk: use toast UX from Adwaita if available
Notify the user with in-app notifications if libadwaita is available.

Co-authored-by: Paul Berg <paul@ber.gp>
Signed-off-by: Tristan Partin <tristan@partin.io>
2024-09-16 11:57:58 -05:00
Mitchell Hashimoto
941adcdac8 apprt/gtk: rename the other underscore actions to match naming rules 2024-09-13 20:49:31 -07:00
Mitchell Hashimoto
9e73d865fb apprt/gtk: small comments 2024-09-13 20:45:39 -07:00
Jeffrey C. Ollie
5f759a19d1 GTK: Fix clicking on desktop notifications
Currently, clicking on a desktop notification will bring Ghostty
to the foreground, but it won't necessarily bring the right window
to the top and it won't switch tabs or change the focus on splits.

With this patch, clicking on a desktop notification will raise the
correct window, change to the correct tab, and focus on the correct
split that send the original desktop notification.
2024-09-13 13:37:38 -07:00
Paul
ac985937cd apprt/gtk: add theme variant in window-theme
this colours the header bar with the config colour.
2024-09-13 10:06:42 +02:00
Mitchell Hashimoto
4cacea3813 apprt/gtk: inline adwaita checks so comptime disables conditional paths
This fixes building without libadwaita or building with an older version
of libadwaita. This also updates the CI to test this.
2024-09-12 09:34:39 -07:00
Mitchell Hashimoto
2b5d436792 apprt/gtk: log the libadwaita version at startup if we use it 2024-09-11 10:27:35 -07:00
Mitchell Hashimoto
c27f427e02 apprt/gtk: the comptimeEnabled check is redundant 2024-09-11 09:50:37 -07:00
Mitchell Hashimoto
afc95fefe2 apprt/gtk: use adwaita helpers, move out some complicated logic 2024-09-11 09:38:05 -07:00
Mitchell Hashimoto
9409e3072f apprt/gtk: remove usingnamespace 2024-08-16 14:58:04 -07:00
Jeffrey C. Ollie
301826dfff gtk: add resize overlay
This adds a transient overlay that shows the size of the surface
while you are resizing the window or the surfaces.
2024-08-09 22:58:33 -05:00
Paul
c461d58519 gtk: One's complement the opacity of overlay for unfocused splits
The case where the split if fully opaque (`unfocused-split-opacity = 1.0`) should result in the overlay being fully transparent (`opacity: 0.0`).
This would be consistent with how this is implemented in the macos app:

dcc492f19b/macos/Sources/Ghostty/Ghostty.Config.swift (L302)
2024-08-06 09:58:23 +02:00
Mitchell Hashimoto
656c720866 apprt/gtk: can manually expire our quit timer instead of 0 second timer 2024-08-04 19:06:17 -07:00
Jeffrey C. Ollie
4657f30f7f Fix quit-after-last-window-closed=true, quit-after-last-window-closed-delay=null
The case when `quit-after-last-window-closed=true` and
`quit-after-last-window-closed-delay=null` was broken because control
gets stuck inside `g_main_context_iteration` and never returns to our
code. In that case add a 0ms timer that will return control flow from
GLib back to our code so that we can quit.

Fixes #2039
2024-08-04 14:47:58 -05:00
Mitchell Hashimoto
288a1fe549 Merge pull request #2021 from jcollie/background
gtk: allow running in the background
2024-08-03 10:08:45 -07:00
Mitchell Hashimoto
224f2d0491 apprt/gtk: use tagged union for quit timer 2024-08-03 10:05:31 -07:00
Jeffrey C. Ollie
3a4b236e6d re-use code to cancel old timer 2024-08-02 10:24:17 -05:00
Jeffrey C. Ollie
38e9847bd2 fix typo 2024-08-01 19:48:00 -05:00
Mitchell Hashimoto
99b1b6305f reset only 2024-08-01 14:54:39 -07:00
Jeffrey C. Ollie
ec0f90d1b6 Improve quit timers.
Instead of "polling" to see if a quit timer has expired, start a single
timer that expires after the confiugred delay when no more surfaces are
open. That timer can be cancelled if necessary.
2024-08-01 14:49:02 -05:00