Files
EnhancedTerminal/Settings.swift
Paul Bailey 7edf5d7186 Add working directory persistence, command aliases, and keyboard shortcuts reference
1. Working Directory Persistence: Tracks and restores last directory per tab
2. Command Aliases: Create shortcuts for long commands (e.g., gs=git status)
   - Manage aliases in Settings
   - Type 'aliases' to see all defined aliases
3. Keyboard Shortcuts Reference: Cmd+? to view all shortcuts

All features tested and working
2026-01-31 23:25:13 +00:00

74 lines
2.9 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] = []
var commandAliases: [String: String] = [:] // alias -> command
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]
}
}