import Cocoa import Foundation // MARK: - Terminal Settings class TerminalSettings { static let shared = TerminalSettings() var theme: Theme = .dracula var fontSize: CGFloat = 14 var fontName: String = "Menlo" var opacity: CGFloat = 1.0 var aiProvider: AIProvider = .ollama var openAIKey: String = "" var ollamaURL: String = "http://localhost:11434" var ollamaModel: String = "llama3.2:latest" var enableAutoSuggestions: Bool = true var maxHistorySize: Int = 1000 var startupCommands: [String] = [] var commandAliases: [String: String] = [:] // alias -> command var copyOnSelect: Bool = true var visualBell: Bool = true enum AIProvider: String, CaseIterable { case none = "None" case openai = "OpenAI" case ollama = "Ollama" } struct Theme { let name: String let background: NSColor let foreground: NSColor let cursor: NSColor let selection: NSColor let suggestion: NSColor static let dracula = Theme( name: "Dracula", background: NSColor(red: 0.16, green: 0.16, blue: 0.21, alpha: 1.0), foreground: NSColor(red: 0.95, green: 0.95, blue: 0.95, alpha: 1.0), cursor: NSColor(red: 0.97, green: 0.97, blue: 0.95, alpha: 1.0), selection: NSColor(red: 0.27, green: 0.28, blue: 0.35, alpha: 1.0), suggestion: NSColor(red: 0.5, green: 0.5, blue: 0.5, alpha: 0.6) ) static let solarizedDark = Theme( name: "Solarized Dark", background: NSColor(red: 0.0, green: 0.17, blue: 0.21, alpha: 1.0), foreground: NSColor(red: 0.51, green: 0.58, blue: 0.59, alpha: 1.0), cursor: NSColor(red: 0.51, green: 0.58, blue: 0.59, alpha: 1.0), selection: NSColor(red: 0.03, green: 0.21, blue: 0.26, alpha: 1.0), suggestion: NSColor(red: 0.4, green: 0.5, blue: 0.5, alpha: 0.6) ) static let nord = Theme( name: "Nord", background: NSColor(red: 0.18, green: 0.20, blue: 0.25, alpha: 1.0), foreground: NSColor(red: 0.85, green: 0.87, blue: 0.91, alpha: 1.0), cursor: NSColor(red: 0.85, green: 0.87, blue: 0.91, alpha: 1.0), selection: NSColor(red: 0.26, green: 0.30, blue: 0.37, alpha: 1.0), suggestion: NSColor(red: 0.5, green: 0.55, blue: 0.6, alpha: 0.6) ) static let classic = Theme( name: "Classic", background: .black, foreground: NSColor(red: 0.0, green: 1.0, blue: 0.0, alpha: 1.0), cursor: NSColor(red: 0.0, green: 1.0, blue: 0.0, alpha: 1.0), selection: NSColor(red: 0.2, green: 0.2, blue: 0.2, alpha: 1.0), suggestion: NSColor(red: 0.0, green: 0.6, blue: 0.0, alpha: 0.6) ) static let allThemes: [Theme] = [.dracula, .solarizedDark, .nord, .classic] } }