import AppKit import GhosttyKit extension NSPasteboard { /// The pasteboard to used for Ghostty selection. static var ghosttySelection: NSPasteboard = { NSPasteboard(name: .init("com.mitchellh.ghostty.selection")) }() /// Gets the contents of the pasteboard as a string following a specific set of semantics. /// Does these things in order: /// - Tries to get the absolute filesystem path of the file in the pasteboard if there is one. /// - Tries to get any string from the pasteboard. /// If all of the above fail, returns None. func getOpinionatedStringContents() -> String? { if let file = self.string(forType: .fileURL) { if let path = NSURL(string: file)?.path { return path } } return self.string(forType: .string) } /// The pasteboard for the Ghostty enum type. static func ghostty(_ clipboard: ghostty_clipboard_e) -> NSPasteboard? { switch (clipboard) { case GHOSTTY_CLIPBOARD_STANDARD: return Self.general case GHOSTTY_CLIPBOARD_SELECTION: return Self.ghosttySelection default: return nil } } }