72 lines
2.8 KiB
Swift
72 lines
2.8 KiB
Swift
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
|
|
|
|
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]
|
|
}
|
|
}
|