Files
EnhancedTerminal/Settings.swift
2026-01-31 23:01:54 +00:00

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]
}
}