Files
ghostty-rs/crates/ghostty-macos/src/ghostty/capi/mod.rs
T
ddidderr 4861015105 feat(macos): foundation of the macOS app ported from Swift to Rust
Phase 9, MA1: crates/ghostty-macos (AppKit via objc2; empty stub on
non-Apple targets) ports the foundation of Ghostty 1.3.1's Swift macOS
app (ghostty/macos): main, AppDelegate (+Ghostty) with lifecycle, dock
menu, open-file, notifications, shortcut sync and quit/reopen paths;
MainMenu.xib as generated menu tables built into NSMenus; the
Ghostty.App/Config/Surface wrappers driving libghostty in-process via
ghostty-lib; the generic helpers; scripts/macos-bundle.sh to assemble
Ghostty.app (dry-run on Linux). Feature areas are stubbed for MA2-MA5.
Design and type mapping: docs/rewrite/notes/macos-app-design.md
(App Intents is a Swift-only framework and cannot be ported).

Compile-checked only (no macOS here): just check-macos passes for
aarch64/x86_64-apple-darwin with -D warnings; 125 platform-independent
tests run on Linux.

Test Plan:
- just check-macos
- cargo test -p ghostty-macos
2026-10-12 19:25:44 +02:00

23 lines
888 B
Rust

//! The libghostty C API as seen by the app.
//!
//! The Swift app imports `ghostty.h` (module `GhosttyKit`). The Rust app links
//! `ghostty-lib` and calls the very same entry points as Rust functions: the
//! exported `extern "C"` functions keep their C names and signatures, and
//! `types` holds the `#[repr(C)]` structs/unions of the header. [`consts`] holds
//! the enumerators (`GHOSTTY_ACTION_QUIT`, ...), generated from the header by
//! `scripts/gen-macos-capi-consts.py`.
//!
//! The functions are `unsafe` (raw handles); the safe wrappers are the types
//! in `ghostty::{app, config, surface}`.
pub mod consts;
pub use libghostty::{config_capi::*, embedded::*, main_c::*, types::*};
/// Length of `s` in bytes as the `usize` the `*_len` parameters of the C API
/// take (`UInt(s.lengthOfBytes(using: .utf8))`).
#[must_use]
pub fn utf8_len(s: &str) -> usize {
s.len()
}