389 Commits

Author SHA1 Message Date
Mitchell Hashimoto
cf84a5513f apprt/gtk: listen to page-removed to hide tab bar if only one 2023-09-16 11:48:33 -07:00
Mitchell Hashimoto
5dc0746a17 gtk: tabs are draggable to the desktop to extract a window 2023-09-16 11:30:22 -07:00
Mitchell Hashimoto
f7272d506e apprt/gtk: handle scenario where OpenGL area becomes unrealized 2023-09-16 09:38:28 -07:00
Mitchell Hashimoto
d2fa79effb apprt/gtk: shuffle some lines around in Window 2023-09-16 08:32:32 -07:00
Mitchell Hashimoto
35c956fd05 apprt/gtk: Window css styling is no longer used 2023-09-16 08:29:15 -07:00
Mitchell Hashimoto
d5036e78f4 apprt/gtk: refactor into separate files 2023-09-16 08:28:49 -07:00
Mitchell Hashimoto
120588fb62 apprt/gtk: show warning when running debug version 2023-09-15 15:57:51 -07:00
Tim Culverhouse
de5c416341 gtk: handle all close-requests
When compiling in any Release mode, the default gtk close-request
handler does not properly fire. We only rely on the default handler if
we aren't confirming the close. Replace the default handler with our own
in all cases (and just destroy the window if we don't need
confirmation).

Fixes #458
2023-09-15 04:31:50 -05:00
Mitchell Hashimoto
54f58d9cd2 apprt/gtk: implement hide cursor 2023-09-14 19:45:20 -07:00
Mitchell Hashimoto
724900f143 macos: implement setCursorVisibility 2023-09-14 19:37:30 -07:00
Mitchell Hashimoto
a7e8b7559e mouse-hide-while-typing config and glfw implementation 2023-09-14 17:36:21 -07:00
Mitchell Hashimoto
62ae59cd97 apprt/gtk: apply GDK scale factor to mouse coordinates
Fixes #452
2023-09-14 12:26:36 -07:00
Mitchell Hashimoto
01cb1ad90e apprt/gtk: cursor state should be on surface 2023-09-14 11:22:54 -07:00
Thorsten Ball
d96d60445a Fix compilation issues with GTK cursor support 2023-09-14 20:19:53 +02:00
Mitchell Hashimoto
cb2931cb27 rename cursor shape to mouse shape for OSC 22 2023-09-14 11:12:17 -07:00
Mitchell Hashimoto
674575e598 apprt/gtk: support set cursor shape 2023-09-14 10:55:05 -07:00
Mitchell Hashimoto
3356146bb4 macos: support cursor style 2023-09-14 10:40:40 -07:00
Mitchell Hashimoto
31a61613e9 apprt/glfw: support setting cursor shape 2023-09-14 10:23:11 -07:00
Mitchell Hashimoto
7734bab8c4 terminal: cursor shape parsing, hook up to apprt callback 2023-09-14 10:12:38 -07:00
Mitchell Hashimoto
c3bf054dd4 apprt/embedded: call core app reload config so changes go to all threads 2023-09-13 19:01:05 -07:00
Mitchell Hashimoto
678bd0de0c core: surface should not use app mailbox
The surface runs on the same thread as the app so if we use the app
mailbox then we risk filling the queue before it can drain. The surface
should use the app directly.

This commit just changes all the calls to use the app directly. We may
also want to coalesce certain changes to avoid too much CPU but I defer
that to a future change.
2023-09-13 08:34:09 -07:00
Mitchell Hashimoto
fc90a4a052 apprt/gtk: do not ask for confirm window close if all surfaces idle 2023-09-11 15:53:20 -07:00
Mitchell Hashimoto
868b66ce74 apprt/gtk: integrate app needsConfirmQuit 2023-09-11 15:47:37 -07:00
Mitchell Hashimoto
56ccadd7f1 core: app needsConfirmQuit to streamline quitting if no active sessions 2023-09-11 15:44:08 -07:00
Mitchell Hashimoto
2f0905b60c macos: reload config MUST go through Zig core 2023-09-11 15:20:31 -07:00
Mitchell Hashimoto
9be46fa80a apprt/gtk: log configuration errors 2023-09-11 09:18:03 -07:00
Mitchell Hashimoto
4ee9531ce3 apprt/glfw: log configuration errors 2023-09-11 09:16:56 -07:00
Mitchell Hashimoto
f31bde48fc macos: add prev/next tab custom binding support 2023-09-09 13:00:23 -07:00
Thorsten Ball
cac5b00d94 gtk: add gtk-single-instance setting to allow disabling of it
This is based on our conversation on Discord and adds a setting for GTK
that allows disabling the GTK single-instance mode.

If this is off, it's possible to start multiple applications from the
same release binary.

Tested like this:

```
$ zig build -Dapp-runtime=gtk -Doptimize=ReleaseFast && ./zig-out/bin/ghostty --gtk-single-instance=false

[... starts new application ...]
```

and

```
$ zig build -Dapp-runtime=gtk -Doptimize=ReleaseFast && ./zig-out/bin/ghostty --gtk-single-instance=true
info: ghostty version=0.1.0-main+42a22893
info: runtime=apprt.Runtime.gtk
info: font_backend=font.main.Backend.fontconfig_freetype
info: dependency harfbuzz=8.0.0
info: dependency fontconfig=21400
info: renderer=renderer.OpenGL
info: libxev backend=main.Backend.io_uring
info(os): LANG is not valid according to libc, will use en_US.UTF-8
info: reading configuration file path=/home/mrnugget/.config/ghostty/config
info(config): default shell source=env value=/usr/bin/zsh

(process:49045): GLib-GIO-WARNING **: 13:55:56.116: Your application did not unregister from D-Bus before destruction. Consider using g_application_run().

[exits]
```
2023-09-05 13:59:07 +02:00
Mitchell Hashimoto
2c5271ca82 Merge pull request #397 from mitchellh/mrn/gtk-window-decoration
gtk: allow hiding window decoration in configuration
2023-09-03 12:41:14 -07:00
Thorsten Ball
a1a48eb3f0 gtk: allow hiding window decoration in configuration
This is part of #319 by fixing it for GTK and introducing the
configuration option.

This adds `window-decoration = false` as a possible configuration
option. If set to `false`, then no window decorations are used.
2023-09-03 21:27:21 +02:00
Mitchell Hashimoto
4570356e57 turn zoom into a toggle rather than an explicit zoom/unzoom 2023-09-02 16:03:51 -07:00
Mitchell Hashimoto
519a97b782 core: add unzoom_split binding 2023-09-02 15:15:12 -07:00
Mitchell Hashimoto
50a1a52ae3 core: add zoom keybinding for splits 2023-09-02 14:52:43 -07:00
Mitchell Hashimoto
22eb533473 content scale change events should also impact viewport padding
This calculates the new padding pixel values and propogates those
changes to the renderer.
2023-09-02 11:00:51 -07:00
Mitchell Hashimoto
6c7ccae848 Merge pull request #385 from mgeist/update-font-dpi
Update font DPI when the content scale is updated
2023-09-02 10:41:07 -07:00
Mat
0d094f244e Update font DPI when the content scale is updated 2023-09-02 13:00:04 -04:00
Will Pragnell
86122624e0 macos: add visible-menu non-native-fullscreen option 2023-09-01 21:45:45 -07:00
Mitchell Hashimoto
c71979804e apprt/embedded: ghostty_surface_binding_action can now run any action 2023-08-30 21:46:38 -07:00
Seth Rider
c56d07c36f use Gtk.Notebook::switch-page callback for setting window title 2023-08-28 07:26:30 -07:00
Seth Rider
fc774cf21a Set gtk window title on change and tab swap (by key command) 2023-08-26 21:25:54 +01:00
Mitchell Hashimoto
3a93aaf9cf apprt/embedded: do not translate control characters
macOS translates inputs such as shift+tab into the control character tab
(ascii 0x09). Linux/GTK does not translate character inputs except to
printable characters. We don't want control character translations
because these are all handled manually by our key encoder (i.e.
translating ctrl+c to 0x03).
2023-08-24 15:01:57 -07:00
Mitchell Hashimoto
7ccf86b175 remove imgui and devmode
imgui has been a source of compilation challenges (our fault not theirs)
and devmode hasn't worked in awhile, so drop it.
2023-08-20 08:50:24 -07:00
Thorsten Ball
fbe42fbac7 macOS: reduce mechanism to create windows back to one 2023-08-19 19:41:34 +02:00
Thorsten Ball
a76aea4d0a macOS: new split can inherit font size 2023-08-19 09:59:04 +02:00
Thorsten Ball
2e9b787668 macOS: new window can inherit font size
This is the second part of #281 and adds the same mechanism that was
added for tabs in #296 for windows.

It works exactly the same way.
2023-08-19 09:29:56 +02:00
Mitchell Hashimoto
4f5460475c Merge pull request #296 from mitchellh/mrn/macos-inherit-font-size
macOS: inherit font size when creating new tab
2023-08-18 09:22:06 -07:00
Mitchell Hashimoto
a960faa2b8 apprt/embedded: use setfontsize so that the original font size is
retained
2023-08-18 09:13:59 -07:00
Mitchell Hashimoto
79971c62a6 macos: pass around a base surface_config_s rather than a new tab 2023-08-18 09:09:43 -07:00
Thorsten Ball
cda87a6963 embedded: use separate struct to pass options to new_tab_cb 2023-08-18 06:50:47 +02:00