Appendix C — Settings Schema
Complete reference of the settings.json root object (AppSettings). Every default value listed here matches src/Tex.Core/Models/AppSettings.cs.
Tip
This schema is authoritative. Each section also has its own page in 10 — Settings and Preferences with more detail.
Tree
AppSettings
├── Hotkey
│ ├── RegionCapture : "Ctrl+Shift+S"
│ ├── FullscreenCapture : "Ctrl+Shift+F"
│ ├── RegionOcr : "Ctrl+Shift+O"
│ ├── WindowCapture : "Ctrl+Shift+W"
│ ├── StartRecording : "Ctrl+Shift+R"
│ └── StopRecording : "Ctrl+Shift+E"
├── Capture
│ ├── ShowDimensions : true
│ ├── PlaySound : true
│ ├── CopyToClipboard : true
│ ├── OverlayOpacity : 50
│ ├── OpenEditorAfterCapture: true
│ ├── DefaultDelay : 0
│ └── DelayOptions : [0, 3, 5, 10]
├── Ocr
│ ├── Language : "eng"
│ ├── AutoCopyText : false
│ └── PreprocessImage : true
├── Save
│ ├── DefaultFormat : "PNG"
│ ├── SaveFolder : ""
│ ├── FileNamePattern : "tex_{timestamp}"
│ ├── AutoSave : false
│ ├── JpegQuality : 90
│ ├── WebPQuality : 85
│ ├── WebPLossless : false
│ ├── PngCompressionLevel : 6
│ ├── StripMetadata : false
│ ├── ResizeOnSave : false
│ ├── MaxWidth : 1920
│ ├── MaxHeight : 1080
│ └── MaintainAspectRatio : true
├── Annotation
│ ├── DefaultPenColor : "#FF0000"
│ ├── DefaultHighlightColor : "#FFFF00"
│ ├── DefaultThickness : 3
│ ├── DefaultOpacity : 1.0
│ ├── HighlightOpacity : 0.4
│ ├── BlurRadius : 10
│ ├── PixelateSize : 10
│ └── RecentColors : []
├── Ui
│ ├── StartMinimized : false
│ ├── StartWithWindows : false
│ ├── MinimizeToTray : true
│ ├── ShowNotifications : true
│ ├── Theme : "Dark"
│ └── DockToBottom : false
├── License
│ ├── ShowLicenseInfo : true
│ ├── EulaAccepted : false
│ ├── EulaAcceptedDate : null
│ └── EulaVersion : "1.0"
├── Update
│ ├── CheckOnStartup : true
│ ├── AutoDownload : false
│ ├── AutoInstallOnRestart : true
│ ├── CheckIntervalHours : 24
│ ├── LastCheckTime : null
│ └── ShowUpdateNotifications: true
├── History
│ ├── PersistToDisk : true
│ ├── MaxItems : 50
│ ├── MaxSizeMB : 200
│ └── AutoSaveAnnotations : true
└── Recording
├── QualityPreset : "High"
├── CustomBitrateKbps : 8000
├── FrameRate : 30
├── Encoder : "H264"
├── UseHardwareEncoding : true
├── MonitorDeviceName : ""
├── SaveFolder : ""
├── FileNamePattern : "tex_rec_{timestamp}"
├── CaptureCursor : true
├── CaptureSystemAudio : false
├── CaptureMicrophone : false
└── MaxDurationMinutes : 0
Flat reference
| Path | Default | Description |
|---|---|---|
hotkey.regionCapture | "Ctrl+Shift+S" | Global hotkey for region capture |
hotkey.fullscreenCapture | "Ctrl+Shift+F" | Global hotkey for fullscreen capture |
hotkey.regionOcr | "Ctrl+Shift+O" | Global hotkey for region capture + OCR |
hotkey.windowCapture | "Ctrl+Shift+W" | Reserved hotkey for active-window capture |
hotkey.startRecording | "Ctrl+Shift+R" | Global hotkey to start recording |
hotkey.stopRecording | "Ctrl+Shift+E" | Global hotkey to stop recording |
capture.showDimensions | true | Show live W x H during region selection |
capture.playSound | true | Play shutter sound on capture |
capture.copyToClipboard | true | Auto-copy capture to clipboard |
capture.overlayOpacity | 50 | Dim-overlay darkness 0-100 |
capture.openEditorAfterCapture | true | Open annotation editor after capture |
capture.defaultDelay | 0 | Default pre-capture delay in seconds |
capture.delayOptions | [0,3,5,10] | Values offered in the delay combo |
ocr.language | "eng" | Tesseract traineddata language code |
ocr.autoCopyText | false | Auto-copy OCR text to clipboard |
ocr.preprocessImage | true | Apply contrast / threshold before OCR |
save.defaultFormat | "PNG" | Default image format |
save.saveFolder | "" | Output directory (empty = Pictures/Tex) |
save.fileNamePattern | "tex_{timestamp}" | Save filename template |
save.autoSave | false | Save without dialog |
save.jpegQuality | 90 | JPEG quality 1-100 |
save.webPQuality | 85 | WebP quality 1-100 |
save.webPLossless | false | WebP lossless mode |
save.pngCompressionLevel | 6 | PNG zlib level 0-9 |
save.stripMetadata | false | Strip EXIF / XMP metadata |
save.resizeOnSave | false | Downscale large images on save |
save.maxWidth | 1920 | Resize ceiling width |
save.maxHeight | 1080 | Resize ceiling height |
save.maintainAspectRatio | true | Preserve aspect when resizing |
annotation.defaultPenColor | "#FF0000" | Initial pen / shape colour |
annotation.defaultHighlightColor | "#FFFF00" | Initial highlighter colour |
annotation.defaultThickness | 3 | Default stroke thickness in px |
annotation.defaultOpacity | 1.0 | Default pen / shape opacity |
annotation.highlightOpacity | 0.4 | Highlighter opacity |
annotation.blurRadius | 10 | Blur tool radius in px |
annotation.pixelateSize | 10 | Pixelate tool block size in px |
annotation.recentColors | [] | Shared recent-colours palette (max 10) |
ui.startMinimized | false | Launch hidden to tray |
ui.startWithWindows | false | Reserved — does not yet write to Run key |
ui.minimizeToTray | true | Close / minimise hides to tray |
ui.showNotifications | true | Show Windows toasts |
ui.theme | "Dark" | UI theme (Dark / Light) |
ui.dockToBottom | false | Launch into docked pill mode |
license.showLicenseInfo | true | Show licence info in UI |
license.eulaAccepted | false | EULA acceptance flag |
license.eulaAcceptedDate | null | Timestamp of EULA acceptance |
license.eulaVersion | "1.0" | Version of EULA most recently accepted |
update.checkOnStartup | true | Run update check at launch |
update.autoDownload | false | Download updates without prompting |
update.autoInstallOnRestart | true | Install staged updates at next launch |
update.checkIntervalHours | 24 | Periodic update check interval |
update.lastCheckTime | null | Timestamp of last update check |
update.showUpdateNotifications | true | Show toasts for update events |
history.persistToDisk | true | Save history across sessions |
history.maxItems | 50 | Max captures retained |
history.maxSizeMB | 200 | Max total history size in MB |
history.autoSaveAnnotations | true | Write annotated edits back into history |
recording.qualityPreset | "High" | Bitrate preset (Low/Medium/High/Ultra/Custom) |
recording.customBitrateKbps | 8000 | Custom bitrate when preset = Custom |
recording.frameRate | 30 | Capture frame rate |
recording.encoder | "H264" | Video codec (H264 / H265) |
recording.useHardwareEncoding | true | Prefer GPU encoder with software fallback |
recording.monitorDeviceName | "" | Target monitor (empty = all) |
recording.saveFolder | "" | Output directory (empty = Videos/Tex) |
recording.fileNamePattern | "tex_rec_{timestamp}" | Output filename template |
recording.captureCursor | true | Include cursor in recording |
recording.captureSystemAudio | false | Loopback system audio |
recording.captureMicrophone | false | Mix microphone input |
recording.maxDurationMinutes | 0 | Auto-stop duration (0 = unlimited) |