Files
EnhancedTerminal/Settings.swift
Paul Bailey 9561e229aa Add 5 new features: edit snippets, clear scrollback, category filter, find in terminal, startup commands
1. Edit Snippets: Edit button to modify existing snippets
2. Clear Scrollback: Cmd+Shift+K to clear all terminal output
3. Category Filter: Dropdown to filter snippets by category
4. Find in Terminal: Cmd+F to search terminal output (built-in)
5. Startup Commands: Configure commands to run when opening new tabs

All features tested and working
2026-01-31 23:21:39 +00:00

73 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
var startupCommands: [String] = []
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]
}
}