summaryrefslogtreecommitdiff
path: root/src/apprt.zig
AgeCommit message (Collapse)Author
2025-09-19build: move apprt, font, renderer enums to dedicated filesMitchell Hashimoto
This reduces the surface area of files we depend on for builds.
2025-09-05gtk: the Future is NowLeah Amelia Chen
2025-09-05gtk: nuke the legacy apprt from orbitLeah Amelia Chen
We don't really have any large outstanding regressions on -ng to warrant keeping this alive anymore. ¡Adiós!
2025-08-30ci: build on freebsdJeffrey C. Ollie
2025-08-14apprt: make gtk-ng the default apprt on LinuxMitchell Hashimoto
2025-07-16apprt/gtk-ng: boilerplateMitchell Hashimoto
2025-07-14apprt: clean up stray structJeffrey C. Ollie
2025-07-14cli/gtk: move IPC/sendIPC to App/performIpcJeffrey C. Ollie
2025-07-14cli/gtk: replace @hasDecl for performAction-style APIJeffrey C. Ollie
Instead of using @hasDecl, use a performAction-stype API. The C interface for interfacing with macOS (or any other apprt where Ghostty is embedded) is unfinished.
2025-07-14cli/gtk: move actual IPC code tp apprtJeffrey C. Ollie
2025-07-04Nuke GLFW from OrbitMitchell Hashimoto
This deletes the GLFW apprt from the Ghostty codebase. The GLFW apprt was the original apprt used by Ghostty (well, before Ghostty even had the concept of an "apprt" -- it was all just a single application then). It let me iterate on the core terminal features, rendering, etc. without bothering about the UI. It was a good way to get started. But it has long since outlived its usefulness. We've had a stable GTK apprt for Linux (and Windows via WSL) and a native macOS app via libghostty for awhile now. The GLFW apprt only remained within the tree for a few reasons: 1. Primarily, it provided a faster feedback loop on macOS because building the macOS app historically required us to hop out of the zig build system and into Xcode, which is slow and cumbersome. 2. It was a convenient way to narrow whether a bug was in the core Ghostty codebase or in the apprt itself. If a bug was in both the glfw and macOS app then it was likely in the core. 3. It provided us a way on macOS to test OpenGL. All of these reasons are no longer valid. Respectively: 1. Our Zig build scripts now execute the `xcodebuild` CLI directly and can open the resulting app, stream logs, etc. This is the same experience we have on Linux. (Xcode has always been a dependency of building on macOS in general, so this is not cumbersome.) 2. We have a healthy group of maintainers, many of which have access to both macOS and Linux, so we can quickly narrow down bugs regardless of the apprt. 3. Our OpenGL renderer hasn't been compatible with macOS for some time now, so this is no longer a useful feature. At this point, the GLFW apprt is just a burden. It adds complexity across the board, and some people try to run Ghostty with it in the real world and get confused when it doesn't work (it's always been lacking in features and buggy compared to the other apprts). So, it's time to say goodbye. Its bittersweet because it is a big part of Ghostty's history, but we've grown up now and it's time to move on. Thank you, goodbye. (NOTE: If you are a user of the GLFW apprt, then please fork the project prior to this commit or start a new project based on it. We've warned against using it for a very, very long time now.)
2024-09-26libghostty: unified action dispatchMitchell Hashimoto
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-26core: many more actionsMitchell Hashimoto
2024-09-26core: more actionsMitchell Hashimoto
2024-09-25apprt: begin transition to making actions an enum and not use hasDeclMitchell Hashimoto
2024-08-26apprt: make gotoTab handle all tab movementsMitchell Hashimoto
2024-08-16apprt: yeet usingnamespaceMitchell Hashimoto
2024-01-03WIP: Update to new build module API after Zig PR #18160Krzysztof Wolicki
Temporarily change dependency sources to forks until they update
2023-11-05apprt: default runtime for windows is glfwMitchell Hashimoto
2023-10-24apprt: none has app/surface so tests passMitchell Hashimoto
2023-09-18ci: don't run gtk tests in CIMitchell Hashimoto
2023-09-18apprt/gtk: key file for logic related to keysMitchell Hashimoto
2023-08-17build: make glfw opt-in on all platforms, default to GTK on LinuxMitchell Hashimoto
The GLFW build has grown farther and farther in feature parity with GTK on Linux. And on macOS, the GLFW build has been unstable (crashes) for months. I still find the GLFW build useful for testing some core terminal work, but it is increasingly user-hostile in case someone just downloads the project and does a `zig build`. I keep GLFW as up to date as I can, but the features that are missing are due to fundamental limitations: - GLFW has no tabs, splits, etc. because it has no UI elements. I am not interested in painting UI widgets from scratch. - GLFW cannot support keyboard layouts robustly because it has no hooks to detect keyboard layouts or functions to get keymaps. - GLFW cannot support the Kitty keyboard protocol because the key/char API is too high level and it provides no low-level alternatives. - GLFW crashes on macOS under certain scenarios (this is my problem). I'm not interested in fixing it because the AppKit-based build is highly recommended. To build or run the GLFW build you must now explicitly pass in `-Dapp-runtime=glfw` to `zig build`.
2023-02-24rename more stuffMitchell Hashimoto
2023-02-24Integrating new surfaceMitchell Hashimoto
2023-02-24apprt refactor in progress, launches glfw no windowMitchell Hashimoto
2023-02-24add app runtime option, add gtk backendMitchell Hashimoto
2023-02-19apprt: start embedded implement, make App API available to CMitchell Hashimoto
2022-12-31can specify a wasm target in buildMitchell Hashimoto
2022-12-29rename window package to apprtMitchell Hashimoto