mirror of
https://github.com/ghostty-org/ghostty.git
synced 2025-07-14 07:46:12 +03:00

Fixes #5256 This updates the macOS apprt to implement the `OPEN_URL` apprt action to use the NSWorkspace APIs instead of the `open` command line utility. As part of this, we removed the `ghostty_config_open` libghostty API and instead introduced a new `ghostty_config_open_path` API that returns the path to open, and then we use the `NSWorkspace` APIs to open it (same function as the `OPEN_URL` action).
74 lines
1.8 KiB
Swift
74 lines
1.8 KiB
Swift
import SwiftUI
|
|
import GhosttyKit
|
|
|
|
extension Ghostty {
|
|
struct Action {}
|
|
}
|
|
|
|
extension Ghostty.Action {
|
|
struct ColorChange {
|
|
let kind: Kind
|
|
let color: Color
|
|
|
|
enum Kind {
|
|
case foreground
|
|
case background
|
|
case cursor
|
|
case palette(index: UInt8)
|
|
}
|
|
|
|
init(c: ghostty_action_color_change_s) {
|
|
switch (c.kind) {
|
|
case GHOSTTY_ACTION_COLOR_KIND_FOREGROUND:
|
|
self.kind = .foreground
|
|
case GHOSTTY_ACTION_COLOR_KIND_BACKGROUND:
|
|
self.kind = .background
|
|
case GHOSTTY_ACTION_COLOR_KIND_CURSOR:
|
|
self.kind = .cursor
|
|
default:
|
|
self.kind = .palette(index: UInt8(c.kind.rawValue))
|
|
}
|
|
|
|
self.color = Color(red: Double(c.r) / 255, green: Double(c.g) / 255, blue: Double(c.b) / 255)
|
|
}
|
|
}
|
|
|
|
struct MoveTab {
|
|
let amount: Int
|
|
|
|
init(c: ghostty_action_move_tab_s) {
|
|
self.amount = c.amount
|
|
}
|
|
}
|
|
|
|
struct OpenURL {
|
|
enum Kind {
|
|
case unknown
|
|
case text
|
|
|
|
init(_ c: ghostty_action_open_url_kind_e) {
|
|
switch c {
|
|
case GHOSTTY_ACTION_OPEN_URL_KIND_TEXT:
|
|
self = .text
|
|
default:
|
|
self = .unknown
|
|
}
|
|
}
|
|
}
|
|
|
|
let kind: Kind
|
|
let url: String
|
|
|
|
init(c: ghostty_action_open_url_s) {
|
|
self.kind = Kind(c.kind)
|
|
|
|
if let urlCString = c.url {
|
|
let data = Data(bytes: urlCString, count: Int(c.len))
|
|
self.url = String(data: data, encoding: .utf8) ?? ""
|
|
} else {
|
|
self.url = ""
|
|
}
|
|
}
|
|
}
|
|
}
|