Configuration
TerminalSurfaceOptions
public struct TerminalSurfaceOptions: Sendable {
public var backend: TerminalSessionBackend
public var fontSize: Float?
public var workingDirectory: String?
public var context: TerminalSurfaceContext
public init(
backend: TerminalSessionBackend = .exec,
fontSize: Float? = nil,
workingDirectory: String? = nil,
context: TerminalSurfaceContext = .window
)
}
public enum TerminalSessionBackend: Sendable {
case exec
case inMemory(InMemoryTerminalSession)
}
public enum TerminalSurfaceContext: Sendable, Equatable {
case window
case split
}
TerminalConfiguration
public struct TerminalConfiguration: Sendable, Hashable {
public init()
public init(configure: (inout Builder) -> Void)
public init(
startingFrom base: TerminalConfiguration,
configure: (inout Builder) -> Void
)
public func appending(_ command: TerminalConfigCommand) -> TerminalConfiguration
public func fontFamily(_ value: String) -> TerminalConfiguration
public func fontSize(_ value: Float) -> TerminalConfiguration
public func cursorStyle(_ style: TerminalCursorStyle) -> TerminalConfiguration
public func background(_ value: String) -> TerminalConfiguration
public func foreground(_ value: String) -> TerminalConfiguration
public func palette(_ index: Int, color: String) -> TerminalConfiguration
public func backgroundOpacity(_ value: Double) -> TerminalConfiguration
public func windowPaddingX(_ value: Int) -> TerminalConfiguration
public func windowPaddingY(_ value: Int) -> TerminalConfiguration
public func custom(_ key: String, _ value: String) -> TerminalConfiguration
public static let `default`: TerminalConfiguration
public var rendered: String { get }
}
The builder variant has matching with* mutating methods, which are useful when composing a default config with many overrides.
TerminalTheme
public enum TerminalColorScheme: Sendable {
case light
case dark
}
public struct TerminalTheme: Sendable, Hashable {
public var light: TerminalConfiguration
public var dark: TerminalConfiguration
public init(
light: TerminalConfiguration,
dark: TerminalConfiguration
)
}
TerminalController selects the light or dark configuration when the active color scheme changes.
Metrics
public struct TerminalGridMetrics: Sendable, Equatable {
public var columns: UInt16
public var rows: UInt16
public var widthPixels: UInt32
public var heightPixels: UInt32
public var cellWidthPixels: UInt32
public var cellHeightPixels: UInt32
}
public struct InMemoryTerminalViewport: Sendable, Equatable {
public var columns: UInt16
public var rows: UInt16
public var widthPixels: UInt32
public var heightPixels: UInt32
public var cellWidthPixels: UInt32
public var cellHeightPixels: UInt32
}
public struct TerminalInputModifiers: OptionSet, Sendable {
public static let shift: TerminalInputModifiers
public static let ctrl: TerminalInputModifiers
public static let alt: TerminalInputModifiers
public static let super_: TerminalInputModifiers
}