mirror of
https://github.com/ghostty-org/ghostty.git
synced 2026-04-25 16:53:54 +00:00
The xcframework now generates its own headers directory with a GhosttyVt module map instead of reusing include/ directly, which contains the GhosttyKit module map for the macOS app. The generated directory copies the ghostty headers and adds a module.modulemap that exposes ghostty/vt.h as the umbrella header. A new swift-vt-xcframework example demonstrates consuming the xcframework from a Swift Package. It creates a terminal, writes VT sequences, and formats the output as plain text, verifying the full round-trip works with swift build and swift run.
46 lines
1.3 KiB
Swift
46 lines
1.3 KiB
Swift
import GhosttyVt
|
|
|
|
// Create a terminal with a small grid
|
|
var terminal: GhosttyTerminal?
|
|
var opts = GhosttyTerminalOptions(
|
|
cols: 80,
|
|
rows: 24,
|
|
max_scrollback: 0
|
|
)
|
|
let result = ghostty_terminal_new(nil, &terminal, opts)
|
|
guard result == GHOSTTY_SUCCESS, let terminal else {
|
|
fatalError("Failed to create terminal")
|
|
}
|
|
|
|
// Write some VT-encoded content
|
|
let text = "Hello from \u{1b}[1mSwift\u{1b}[0m via xcframework!\r\n"
|
|
text.withCString { ptr in
|
|
ghostty_terminal_vt_write(terminal, ptr, strlen(ptr))
|
|
}
|
|
|
|
// Format the terminal contents as plain text
|
|
var fmtOpts = GhosttyFormatterTerminalOptions()
|
|
fmtOpts.size = MemoryLayout<GhosttyFormatterTerminalOptions>.size
|
|
fmtOpts.emit = GHOSTTY_FORMATTER_FORMAT_PLAIN
|
|
fmtOpts.trim = true
|
|
|
|
var formatter: GhosttyFormatter?
|
|
let fmtResult = ghostty_formatter_terminal_new(nil, &formatter, terminal, fmtOpts)
|
|
guard fmtResult == GHOSTTY_SUCCESS, let formatter else {
|
|
fatalError("Failed to create formatter")
|
|
}
|
|
|
|
var buf: UnsafeMutablePointer<UInt8>?
|
|
var len: Int = 0
|
|
let allocResult = ghostty_formatter_format_alloc(formatter, nil, &buf, &len)
|
|
guard allocResult == GHOSTTY_SUCCESS, let buf else {
|
|
fatalError("Failed to format")
|
|
}
|
|
|
|
print("Plain text (\(len) bytes):")
|
|
print(String(cString: buf))
|
|
|
|
ghostty_free(nil, buf, len)
|
|
ghostty_formatter_free(formatter)
|
|
ghostty_terminal_free(terminal)
|