Your editor, tuned to your eyes.
Irish: dath — colour
Dath is a visual comfort layer that sits on top of any VS Code theme you already use. It does not replace your theme — it corrects it.
For developers with colour vision deficiency (CVD), the problem isn't that themes are badly designed — it's that they're designed for trichromat vision. Red strings and green comments look identical to a deuteranope. Dath shifts those specific colour ranges to safe alternatives while preserving the character of your theme.
For everyone else, Dath addresses the broader comfort problems that themes don't solve: harsh white backgrounds, snow blindness, visual noise, and the friction of font and spacing settings buried in JSON.
Everything is non-destructive. Dath writes only to VS Code's workbench.colorCustomizations override layer — never your theme files. Disable it and your editor is exactly as it was.
Applies LMS daltonization (Brettel, Viénot & Mollon, 1997) to your active theme's colours. Reads the theme JSON directly from disk and corrects both workbench UI tokens and TextMate syntax token colours.
| Mode | Cone affected | Most common in |
|---|---|---|
| Deuteranopia | M (green) | ~6% of males |
| Protanopia | L (red) | ~2% of males |
| Tritanopia | S (blue) | ~0.01% of population |
A severity slider (0.1–1.0) lets you dial in the correction strength — 1.0 for complete CVD, lower for partial deficiency.
Custom palette slots (Custom 1, 2, 3) let you define your own per-role colour overrides directly in the panel using colour pickers.
| Mode | Effect |
|---|---|
| Soften | Lifts pure whites toward a warm off-white — reduces snow blindness |
| Warm | Warms the background tone |
| Cool | Cools the background tone |
| Dim | Reduces overall brightness |
A temperature bias slider lets you add a persistent warm or cool hue tint on top of all other corrections.
CVD-safe bracket palettes derived from the Wong (2011) colour palette — distinguishable under all CVD types. The palette updates automatically to match your active CVD mode.
Shape hints add a subtle underline to matching bracket pairs so they are identifiable without relying on colour alone.
Override editor typography without editing settings.json manually:
- Font family — quick picks for OpenDyslexic, Atkinson Hyperlegible, and Lexie Readable, or type any font installed on your system
- Font size — px override (0 = VS Code default)
- Line height — override for improved readability (suggested 1.4–1.8)
- Letter spacing — px override
Named configurations that switch in one click. Save your current settings as a profile at any time. Three built-in starters are included on first install:
| Profile | Description |
|---|---|
| Deuteranopia | Full deuteranopia correction, softened backgrounds, CVD-safe brackets |
| Protanopia | Full protanopia correction, CVD-safe brackets |
| Dyslexia Comfort | Softened contrast, Atkinson Hyperlegible font, increased line height |
Click the status bar item to open the Dath panel — a live interactive control surface. Changes apply immediately as you adjust sliders or click mode buttons.
- Per-section reset buttons restore individual sections to defaults
- Global reset restores all Dath settings at once
- Live colour correction preview shows before/after swatches for representative theme colours
- Bracket palette preview updates in real time
- Profile management — apply or save profiles without leaving the panel
- On activation, Dath reads your active theme's JSON file from disk (including JSONC comment stripping and
includechain resolution) - It applies the LMS daltonization pipeline to workbench colour tokens and TextMate syntax scopes
- Corrected values are written to
workbench.colorCustomizationsandeditor.tokenColorCustomizationsin your global settings - When you disable Dath or change settings, only Dath's entries are removed — your own customisations are preserved
Dath manages 185 workbench colour tokens spanning the editor, sidebar, tabs, terminal, diff view, and more.
- Install from the VS Code Marketplace
- The setup wizard runs automatically on first install — choose your CVD type, contrast preference, and bracket options
- Click the
$(eye) Dathitem in the status bar to open the panel at any time - Or: Ctrl/Cmd+Shift+P →
Dath: Open Panel
| Command | Description |
|---|---|
Dath: Open Panel |
Open the visual control panel |
Dath: Toggle On/Off |
Enable or disable all corrections |
Dath: Switch Profile |
Switch to a saved profile |
Dath: Save Current Settings as Profile |
Save current config as a named profile |
Dath: Open Settings |
Jump to Dath settings in the VS Code settings UI |
Dath: Run Setup Wizard |
Run the onboarding wizard again |
| Setting | Default | Description |
|---|---|---|
dath.enabled |
true |
Enable or disable all corrections |
dath.cvdMode |
none |
CVD correction: none · deuteranopia · protanopia · tritanopia · custom1 · custom2 · custom3 |
dath.cvdSeverity |
1.0 |
Correction strength 0.1–1.0 (ignored for custom modes) |
dath.contrastMode |
none |
Background adjustment: none · soften · warm · cool · dim |
dath.contrastStrength |
0.5 |
Contrast adjustment strength 0.1–1.0 |
dath.warmthBias |
0 |
Hue tint: positive = warm, negative = cool, 0 = neutral |
dath.rainbowBrackets |
false |
CVD-safe rainbow bracket colouring |
dath.bracketShapeHints |
false |
Underline hints on bracket pairs |
dath.fontOverride |
none |
Any installed font name, or none for VS Code default |
dath.fontSizeOverride |
0 |
Font size in px (0 = VS Code default) |
dath.lineHeightOverride |
0 |
Line height override (0 = VS Code default) |
dath.letterSpacingOverride |
0 |
Letter spacing in px (0 = VS Code default) |
dath.activeProfile |
"" |
Active profile name — managed by Dath |
dath.customPalettes |
{} |
Custom colour role mappings for Custom 1/2/3 modes |
extension.ts ← entry point, commands, config listener, onboarding
├── cvd.ts ← LMS daltonization engine (zero external dependencies)
├── themeReader.ts ← locates and parses active theme JSON from disk
├── themeEngine.ts ← read → correct → write pipeline (185 tokens)
├── panel.ts ← interactive webview control surface
├── profiles.ts ← named profile save/apply/delete
└── statusBar.ts ← status bar item and toggle
npm install
npm run compile
# Press F5 in VS Code to launch an Extension Development Hostnpm run watch # incremental compilation
npm run lint # ESLint
npm run package # build .vsix for local install or publishingPolyForm Noncommercial 1.0.0 — free to use and modify for non-commercial purposes.
