Repository files navigation

dath

dath

Color & Visual Comfort for VS Code

Your editor, tuned to your eyes.

Irish: dath — colour


What is Dath?

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.


Features

CVD Colour Correction

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.

ModeCone affectedMost common in
DeuteranopiaM (green)~6% of males
ProtanopiaL (red)~2% of males
TritanopiaS (blue)~0.01% of population
AchromatopsiaAll conesRod monochromacy — luminance only

A severity slider (0.1–1.0) lets you dial in the correction strength — 1.0 for complete CVD, lower for partial deficiency.

Simulate mode — instead of correcting, show what your current theme looks like to someone with the selected CVD type. Useful for theme authors and for demonstrating CVD to colleagues.

Custom palette slots (Custom 1, 2, 3) let you define your own per-role colour overrides directly in the panel using colour pickers.

Contrast Comfort

ModeEffect
SoftenLifts pure whites toward a warm off-white — reduces snow blindness
WarmWarms the background tone
CoolCools the background tone
DimReduces overall brightness

A temperature bias slider lets you add a persistent warm or cool hue tint on top of all other corrections.

Rainbow Brackets

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.

Rainbow indent guides colour VS Code's indent guide lines to match the bracket palette, giving an additional spatial cue for nested code structure.

Font & Spacing

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

Profiles

Named configurations that switch in one click. Save, rename, delete, export, and import profiles from the panel or command palette. Three built-in starters are included on first install:

ProfileDescription
DeuteranopiaFull deuteranopia correction, softened backgrounds, CVD-safe brackets
ProtanopiaFull protanopia correction, CVD-safe brackets
Dyslexia ComfortSoftened contrast, Atkinson Hyperlegible font, increased line height

Auto dark/light switching — set dath.darkModeProfile and dath.lightModeProfile to automatically apply the right profile when VS Code (or the OS) switches between dark and light mode.

Visual Panel

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, save, rename, delete, export, and import profiles without leaving the panel
  • Simulate toggle — preview what your theme looks like to a CVD user
  • Status bar shows a warning indicator if the theme file could not be read

How It Works

  1. On activation, Dath reads your active theme's JSON file from disk (including JSONC comment stripping and include chain resolution)
  2. It applies the LMS daltonization pipeline to workbench colour tokens, TextMate syntax scopes, and semantic token colours
  3. Corrected values are written to workbench.colorCustomizations, editor.tokenColorCustomizations, and editor.semanticTokenColorCustomizations in your global settings
  4. 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. It also reads and corrects semanticTokenColors from the theme file, covering the semantic highlighting layer used by modern themes alongside TextMate scopes.


Getting Started

  1. Install from the VS Code Marketplace
  2. The setup wizard runs automatically on first install — choose your CVD type, contrast preference, and bracket options
  3. Click the $(eye) Dath item in the status bar to open the panel at any time
  4. Or: Ctrl+Alt+D / Cmd+Alt+D — or Ctrl/Cmd+Shift+PDath: Open Panel

VS Code forks

Dath uses only standard VS Code extension APIs and works in any VS Code-compatible editor — Cursor, Windsurf, Gitpod, Project IDX, and others — without any changes.

VSCodium users: VSCodium does not use the VS Code Marketplace. Install via the .vsix file from the GitHub releases page, or find Dath on open-vsx.org if it has been published there.


Commands

CommandDescription
Dath: Open PanelOpen the visual control panel
Dath: Toggle On/OffEnable or disable all corrections
Dath: Switch ProfileSwitch to a saved profile
Dath: Save Current Settings as ProfileSave current config as a named profile
Dath: Open SettingsJump to Dath settings in the VS Code settings UI
Dath: Run Setup WizardRun the onboarding wizard again
Dath: Export Profiles to ClipboardCopy all saved profiles as JSON
Dath: Import Profiles from ClipboardImport profiles from clipboard JSON
Dath: Rename ProfileRename a saved profile
Dath: Delete ProfileDelete a saved profile

Settings

SettingDefaultDescription
dath.enabledtrueEnable or disable all corrections
dath.cvdModenoneCVD correction: none · deuteranopia · protanopia · tritanopia · achromatopsia · custom1 · custom2 · custom3
dath.cvdSeverity1.0Correction strength 0.1–1.0 (ignored for custom and achromatopsia modes)
dath.simulationModefalseShow how the theme looks to a CVD user rather than correcting it
dath.contrastModenoneBackground adjustment: none · soften · warm · cool · dim
dath.contrastStrength0.5Contrast adjustment strength 0.1–1.0
dath.warmthBias0Hue tint: positive = warm, negative = cool, 0 = neutral
dath.rainbowBracketsfalseCVD-safe rainbow bracket colouring
dath.rainbowIndentsfalseColour indent guides to match the rainbow bracket palette
dath.bracketShapeHintsfalseUnderline hints on bracket pairs
dath.fontOverridenoneAny installed font name, or none for VS Code default
dath.fontSizeOverride0Font size in px (0 = VS Code default)
dath.lineHeightOverride0Line height override (0 = VS Code default)
dath.letterSpacingOverride0Letter 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
dath.darkModeProfile""Profile to auto-apply when VS Code switches to a dark theme
dath.lightModeProfile""Profile to auto-apply when VS Code switches to a light theme

Architecture

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

Development

npm install
npm run compile
# Press F5 in VS Code to launch an Extension Development Host
npm run watch # incremental compilation
npm run lint # ESLint
npm run package # build .vsix for local install or publishing

Licence

PolyForm Noncommercial 1.0.0 — free to use and modify for non-commercial purposes.

About

Your editor, tuned to your eyes. CVD colour correction, contrast comfort, rainbow brackets, and font controls — as a non-destructive layer over any VS Code theme.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

dath

dath

Color & Visual Comfort for VS Code

Your editor, tuned to your eyes.

Irish: dath — colour


What is Dath?

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.


Features

CVD Colour Correction

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.

ModeCone affectedMost common in
DeuteranopiaM (green)~6% of males
ProtanopiaL (red)~2% of males
TritanopiaS (blue)~0.01% of population
AchromatopsiaAll conesRod monochromacy — luminance only

A severity slider (0.1–1.0) lets you dial in the correction strength — 1.0 for complete CVD, lower for partial deficiency.

Simulate mode — instead of correcting, show what your current theme looks like to someone with the selected CVD type. Useful for theme authors and for demonstrating CVD to colleagues.

Custom palette slots (Custom 1, 2, 3) let you define your own per-role colour overrides directly in the panel using colour pickers.

Contrast Comfort

ModeEffect
SoftenLifts pure whites toward a warm off-white — reduces snow blindness
WarmWarms the background tone
CoolCools the background tone
DimReduces overall brightness

A temperature bias slider lets you add a persistent warm or cool hue tint on top of all other corrections.

Rainbow Brackets

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.

Rainbow indent guides colour VS Code's indent guide lines to match the bracket palette, giving an additional spatial cue for nested code structure.

Font & Spacing

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

Profiles

Named configurations that switch in one click. Save, rename, delete, export, and import profiles from the panel or command palette. Three built-in starters are included on first install:

ProfileDescription
DeuteranopiaFull deuteranopia correction, softened backgrounds, CVD-safe brackets
ProtanopiaFull protanopia correction, CVD-safe brackets
Dyslexia ComfortSoftened contrast, Atkinson Hyperlegible font, increased line height

Auto dark/light switching — set dath.darkModeProfile and dath.lightModeProfile to automatically apply the right profile when VS Code (or the OS) switches between dark and light mode.

Visual Panel

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, save, rename, delete, export, and import profiles without leaving the panel
  • Simulate toggle — preview what your theme looks like to a CVD user
  • Status bar shows a warning indicator if the theme file could not be read

How It Works

  1. On activation, Dath reads your active theme's JSON file from disk (including JSONC comment stripping and include chain resolution)
  2. It applies the LMS daltonization pipeline to workbench colour tokens, TextMate syntax scopes, and semantic token colours
  3. Corrected values are written to workbench.colorCustomizations, editor.tokenColorCustomizations, and editor.semanticTokenColorCustomizations in your global settings
  4. 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. It also reads and corrects semanticTokenColors from the theme file, covering the semantic highlighting layer used by modern themes alongside TextMate scopes.


Getting Started

  1. Install from the VS Code Marketplace
  2. The setup wizard runs automatically on first install — choose your CVD type, contrast preference, and bracket options
  3. Click the $(eye) Dath item in the status bar to open the panel at any time
  4. Or: Ctrl+Alt+D / Cmd+Alt+D — or Ctrl/Cmd+Shift+PDath: Open Panel

VS Code forks

Dath uses only standard VS Code extension APIs and works in any VS Code-compatible editor — Cursor, Windsurf, Gitpod, Project IDX, and others — without any changes.

VSCodium users: VSCodium does not use the VS Code Marketplace. Install via the .vsix file from the GitHub releases page, or find Dath on open-vsx.org if it has been published there.


Commands

CommandDescription
Dath: Open PanelOpen the visual control panel
Dath: Toggle On/OffEnable or disable all corrections
Dath: Switch ProfileSwitch to a saved profile
Dath: Save Current Settings as ProfileSave current config as a named profile
Dath: Open SettingsJump to Dath settings in the VS Code settings UI
Dath: Run Setup WizardRun the onboarding wizard again
Dath: Export Profiles to ClipboardCopy all saved profiles as JSON
Dath: Import Profiles from ClipboardImport profiles from clipboard JSON
Dath: Rename ProfileRename a saved profile
Dath: Delete ProfileDelete a saved profile

Settings

SettingDefaultDescription
dath.enabledtrueEnable or disable all corrections
dath.cvdModenoneCVD correction: none · deuteranopia · protanopia · tritanopia · achromatopsia · custom1 · custom2 · custom3
dath.cvdSeverity1.0Correction strength 0.1–1.0 (ignored for custom and achromatopsia modes)
dath.simulationModefalseShow how the theme looks to a CVD user rather than correcting it
dath.contrastModenoneBackground adjustment: none · soften · warm · cool · dim
dath.contrastStrength0.5Contrast adjustment strength 0.1–1.0
dath.warmthBias0Hue tint: positive = warm, negative = cool, 0 = neutral
dath.rainbowBracketsfalseCVD-safe rainbow bracket colouring
dath.rainbowIndentsfalseColour indent guides to match the rainbow bracket palette
dath.bracketShapeHintsfalseUnderline hints on bracket pairs
dath.fontOverridenoneAny installed font name, or none for VS Code default
dath.fontSizeOverride0Font size in px (0 = VS Code default)
dath.lineHeightOverride0Line height override (0 = VS Code default)
dath.letterSpacingOverride0Letter 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
dath.darkModeProfile""Profile to auto-apply when VS Code switches to a dark theme
dath.lightModeProfile""Profile to auto-apply when VS Code switches to a light theme

Architecture

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

Development

npm install
npm run compile
# Press F5 in VS Code to launch an Extension Development Host
npm run watch # incremental compilation
npm run lint # ESLint
npm run package # build .vsix for local install or publishing

Licence

PolyForm Noncommercial 1.0.0 — free to use and modify for non-commercial purposes.

About

Your editor, tuned to your eyes. CVD colour correction, contrast comfort, rainbow brackets, and font controls — as a non-destructive layer over any VS Code theme.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

dath

dath

Color & Visual Comfort for VS Code

Your editor, tuned to your eyes.

Irish: dath — colour


What is Dath?

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.


Features

CVD Colour Correction

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.

ModeCone affectedMost common in
DeuteranopiaM (green)~6% of males
ProtanopiaL (red)~2% of males
TritanopiaS (blue)~0.01% of population
AchromatopsiaAll conesRod monochromacy — luminance only

A severity slider (0.1–1.0) lets you dial in the correction strength — 1.0 for complete CVD, lower for partial deficiency.

Simulate mode — instead of correcting, show what your current theme looks like to someone with the selected CVD type. Useful for theme authors and for demonstrating CVD to colleagues.

Custom palette slots (Custom 1, 2, 3) let you define your own per-role colour overrides directly in the panel using colour pickers.

Contrast Comfort

ModeEffect
SoftenLifts pure whites toward a warm off-white — reduces snow blindness
WarmWarms the background tone
CoolCools the background tone
DimReduces overall brightness

A temperature bias slider lets you add a persistent warm or cool hue tint on top of all other corrections.

Rainbow Brackets

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.

Rainbow indent guides colour VS Code's indent guide lines to match the bracket palette, giving an additional spatial cue for nested code structure.

Font & Spacing

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

Profiles

Named configurations that switch in one click. Save, rename, delete, export, and import profiles from the panel or command palette. Three built-in starters are included on first install:

ProfileDescription
DeuteranopiaFull deuteranopia correction, softened backgrounds, CVD-safe brackets
ProtanopiaFull protanopia correction, CVD-safe brackets
Dyslexia ComfortSoftened contrast, Atkinson Hyperlegible font, increased line height

Auto dark/light switching — set dath.darkModeProfile and dath.lightModeProfile to automatically apply the right profile when VS Code (or the OS) switches between dark and light mode.

Visual Panel

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, save, rename, delete, export, and import profiles without leaving the panel
  • Simulate toggle — preview what your theme looks like to a CVD user
  • Status bar shows a warning indicator if the theme file could not be read

How It Works

  1. On activation, Dath reads your active theme's JSON file from disk (including JSONC comment stripping and include chain resolution)
  2. It applies the LMS daltonization pipeline to workbench colour tokens, TextMate syntax scopes, and semantic token colours
  3. Corrected values are written to workbench.colorCustomizations, editor.tokenColorCustomizations, and editor.semanticTokenColorCustomizations in your global settings
  4. 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. It also reads and corrects semanticTokenColors from the theme file, covering the semantic highlighting layer used by modern themes alongside TextMate scopes.


Getting Started

  1. Install from the VS Code Marketplace
  2. The setup wizard runs automatically on first install — choose your CVD type, contrast preference, and bracket options
  3. Click the $(eye) Dath item in the status bar to open the panel at any time
  4. Or: Ctrl+Alt+D / Cmd+Alt+D — or Ctrl/Cmd+Shift+PDath: Open Panel

VS Code forks

Dath uses only standard VS Code extension APIs and works in any VS Code-compatible editor — Cursor, Windsurf, Gitpod, Project IDX, and others — without any changes.

VSCodium users: VSCodium does not use the VS Code Marketplace. Install via the .vsix file from the GitHub releases page, or find Dath on open-vsx.org if it has been published there.


Commands

CommandDescription
Dath: Open PanelOpen the visual control panel
Dath: Toggle On/OffEnable or disable all corrections
Dath: Switch ProfileSwitch to a saved profile
Dath: Save Current Settings as ProfileSave current config as a named profile
Dath: Open SettingsJump to Dath settings in the VS Code settings UI
Dath: Run Setup WizardRun the onboarding wizard again
Dath: Export Profiles to ClipboardCopy all saved profiles as JSON
Dath: Import Profiles from ClipboardImport profiles from clipboard JSON
Dath: Rename ProfileRename a saved profile
Dath: Delete ProfileDelete a saved profile

Settings

SettingDefaultDescription
dath.enabledtrueEnable or disable all corrections
dath.cvdModenoneCVD correction: none · deuteranopia · protanopia · tritanopia · achromatopsia · custom1 · custom2 · custom3
dath.cvdSeverity1.0Correction strength 0.1–1.0 (ignored for custom and achromatopsia modes)
dath.simulationModefalseShow how the theme looks to a CVD user rather than correcting it
dath.contrastModenoneBackground adjustment: none · soften · warm · cool · dim
dath.contrastStrength0.5Contrast adjustment strength 0.1–1.0
dath.warmthBias0Hue tint: positive = warm, negative = cool, 0 = neutral
dath.rainbowBracketsfalseCVD-safe rainbow bracket colouring
dath.rainbowIndentsfalseColour indent guides to match the rainbow bracket palette
dath.bracketShapeHintsfalseUnderline hints on bracket pairs
dath.fontOverridenoneAny installed font name, or none for VS Code default
dath.fontSizeOverride0Font size in px (0 = VS Code default)
dath.lineHeightOverride0Line height override (0 = VS Code default)
dath.letterSpacingOverride0Letter 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
dath.darkModeProfile""Profile to auto-apply when VS Code switches to a dark theme
dath.lightModeProfile""Profile to auto-apply when VS Code switches to a light theme

Architecture

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

Development

npm install
npm run compile
# Press F5 in VS Code to launch an Extension Development Host
npm run watch # incremental compilation
npm run lint # ESLint
npm run package # build .vsix for local install or publishing

Licence

PolyForm Noncommercial 1.0.0 — free to use and modify for non-commercial purposes.

About

Your editor, tuned to your eyes. CVD colour correction, contrast comfort, rainbow brackets, and font controls — as a non-destructive layer over any VS Code theme.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

dath

dath

Color & Visual Comfort for VS Code

Your editor, tuned to your eyes.

Irish: dath — colour


What is Dath?

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.


Features

CVD Colour Correction

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.

ModeCone affectedMost common in
DeuteranopiaM (green)~6% of males
ProtanopiaL (red)~2% of males
TritanopiaS (blue)~0.01% of population
AchromatopsiaAll conesRod monochromacy — luminance only

A severity slider (0.1–1.0) lets you dial in the correction strength — 1.0 for complete CVD, lower for partial deficiency.

Simulate mode — instead of correcting, show what your current theme looks like to someone with the selected CVD type. Useful for theme authors and for demonstrating CVD to colleagues.

Custom palette slots (Custom 1, 2, 3) let you define your own per-role colour overrides directly in the panel using colour pickers.

Contrast Comfort

ModeEffect
SoftenLifts pure whites toward a warm off-white — reduces snow blindness
WarmWarms the background tone
CoolCools the background tone
DimReduces overall brightness

A temperature bias slider lets you add a persistent warm or cool hue tint on top of all other corrections.

Rainbow Brackets

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.

Rainbow indent guides colour VS Code's indent guide lines to match the bracket palette, giving an additional spatial cue for nested code structure.

Font & Spacing

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

Profiles

Named configurations that switch in one click. Save, rename, delete, export, and import profiles from the panel or command palette. Three built-in starters are included on first install:

ProfileDescription
DeuteranopiaFull deuteranopia correction, softened backgrounds, CVD-safe brackets
ProtanopiaFull protanopia correction, CVD-safe brackets
Dyslexia ComfortSoftened contrast, Atkinson Hyperlegible font, increased line height

Auto dark/light switching — set dath.darkModeProfile and dath.lightModeProfile to automatically apply the right profile when VS Code (or the OS) switches between dark and light mode.

Visual Panel

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, save, rename, delete, export, and import profiles without leaving the panel
  • Simulate toggle — preview what your theme looks like to a CVD user
  • Status bar shows a warning indicator if the theme file could not be read

How It Works

  1. On activation, Dath reads your active theme's JSON file from disk (including JSONC comment stripping and include chain resolution)
  2. It applies the LMS daltonization pipeline to workbench colour tokens, TextMate syntax scopes, and semantic token colours
  3. Corrected values are written to workbench.colorCustomizations, editor.tokenColorCustomizations, and editor.semanticTokenColorCustomizations in your global settings
  4. 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. It also reads and corrects semanticTokenColors from the theme file, covering the semantic highlighting layer used by modern themes alongside TextMate scopes.


Getting Started

  1. Install from the VS Code Marketplace
  2. The setup wizard runs automatically on first install — choose your CVD type, contrast preference, and bracket options
  3. Click the $(eye) Dath item in the status bar to open the panel at any time
  4. Or: Ctrl+Alt+D / Cmd+Alt+D — or Ctrl/Cmd+Shift+PDath: Open Panel

VS Code forks

Dath uses only standard VS Code extension APIs and works in any VS Code-compatible editor — Cursor, Windsurf, Gitpod, Project IDX, and others — without any changes.

VSCodium users: VSCodium does not use the VS Code Marketplace. Install via the .vsix file from the GitHub releases page, or find Dath on open-vsx.org if it has been published there.


Commands

CommandDescription
Dath: Open PanelOpen the visual control panel
Dath: Toggle On/OffEnable or disable all corrections
Dath: Switch ProfileSwitch to a saved profile
Dath: Save Current Settings as ProfileSave current config as a named profile
Dath: Open SettingsJump to Dath settings in the VS Code settings UI
Dath: Run Setup WizardRun the onboarding wizard again
Dath: Export Profiles to ClipboardCopy all saved profiles as JSON
Dath: Import Profiles from ClipboardImport profiles from clipboard JSON
Dath: Rename ProfileRename a saved profile
Dath: Delete ProfileDelete a saved profile

Settings

SettingDefaultDescription
dath.enabledtrueEnable or disable all corrections
dath.cvdModenoneCVD correction: none · deuteranopia · protanopia · tritanopia · achromatopsia · custom1 · custom2 · custom3
dath.cvdSeverity1.0Correction strength 0.1–1.0 (ignored for custom and achromatopsia modes)
dath.simulationModefalseShow how the theme looks to a CVD user rather than correcting it
dath.contrastModenoneBackground adjustment: none · soften · warm · cool · dim
dath.contrastStrength0.5Contrast adjustment strength 0.1–1.0
dath.warmthBias0Hue tint: positive = warm, negative = cool, 0 = neutral
dath.rainbowBracketsfalseCVD-safe rainbow bracket colouring
dath.rainbowIndentsfalseColour indent guides to match the rainbow bracket palette
dath.bracketShapeHintsfalseUnderline hints on bracket pairs
dath.fontOverridenoneAny installed font name, or none for VS Code default
dath.fontSizeOverride0Font size in px (0 = VS Code default)
dath.lineHeightOverride0Line height override (0 = VS Code default)
dath.letterSpacingOverride0Letter 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
dath.darkModeProfile""Profile to auto-apply when VS Code switches to a dark theme
dath.lightModeProfile""Profile to auto-apply when VS Code switches to a light theme

Architecture

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

Development

npm install
npm run compile
# Press F5 in VS Code to launch an Extension Development Host
npm run watch # incremental compilation
npm run lint # ESLint
npm run package # build .vsix for local install or publishing

Licence

PolyForm Noncommercial 1.0.0 — free to use and modify for non-commercial purposes.

About

Your editor, tuned to your eyes. CVD colour correction, contrast comfort, rainbow brackets, and font controls — as a non-destructive layer over any VS Code theme.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

dath

dath

Color & Visual Comfort for VS Code

Your editor, tuned to your eyes.

Irish: dath — colour


What is Dath?

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.


Features

CVD Colour Correction

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.

ModeCone affectedMost common in
DeuteranopiaM (green)~6% of males
ProtanopiaL (red)~2% of males
TritanopiaS (blue)~0.01% of population
AchromatopsiaAll conesRod monochromacy — luminance only

A severity slider (0.1–1.0) lets you dial in the correction strength — 1.0 for complete CVD, lower for partial deficiency.

Simulate mode — instead of correcting, show what your current theme looks like to someone with the selected CVD type. Useful for theme authors and for demonstrating CVD to colleagues.

Custom palette slots (Custom 1, 2, 3) let you define your own per-role colour overrides directly in the panel using colour pickers.

Contrast Comfort

ModeEffect
SoftenLifts pure whites toward a warm off-white — reduces snow blindness
WarmWarms the background tone
CoolCools the background tone
DimReduces overall brightness

A temperature bias slider lets you add a persistent warm or cool hue tint on top of all other corrections.

Rainbow Brackets

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.

Rainbow indent guides colour VS Code's indent guide lines to match the bracket palette, giving an additional spatial cue for nested code structure.

Font & Spacing

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

Profiles

Named configurations that switch in one click. Save, rename, delete, export, and import profiles from the panel or command palette. Three built-in starters are included on first install:

ProfileDescription
DeuteranopiaFull deuteranopia correction, softened backgrounds, CVD-safe brackets
ProtanopiaFull protanopia correction, CVD-safe brackets
Dyslexia ComfortSoftened contrast, Atkinson Hyperlegible font, increased line height

Auto dark/light switching — set dath.darkModeProfile and dath.lightModeProfile to automatically apply the right profile when VS Code (or the OS) switches between dark and light mode.

Visual Panel

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, save, rename, delete, export, and import profiles without leaving the panel
  • Simulate toggle — preview what your theme looks like to a CVD user
  • Status bar shows a warning indicator if the theme file could not be read

How It Works

  1. On activation, Dath reads your active theme's JSON file from disk (including JSONC comment stripping and include chain resolution)
  2. It applies the LMS daltonization pipeline to workbench colour tokens, TextMate syntax scopes, and semantic token colours
  3. Corrected values are written to workbench.colorCustomizations, editor.tokenColorCustomizations, and editor.semanticTokenColorCustomizations in your global settings
  4. 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. It also reads and corrects semanticTokenColors from the theme file, covering the semantic highlighting layer used by modern themes alongside TextMate scopes.


Getting Started

  1. Install from the VS Code Marketplace
  2. The setup wizard runs automatically on first install — choose your CVD type, contrast preference, and bracket options
  3. Click the $(eye) Dath item in the status bar to open the panel at any time
  4. Or: Ctrl+Alt+D / Cmd+Alt+D — or Ctrl/Cmd+Shift+PDath: Open Panel

VS Code forks

Dath uses only standard VS Code extension APIs and works in any VS Code-compatible editor — Cursor, Windsurf, Gitpod, Project IDX, and others — without any changes.

VSCodium users: VSCodium does not use the VS Code Marketplace. Install via the .vsix file from the GitHub releases page, or find Dath on open-vsx.org if it has been published there.


Commands

CommandDescription
Dath: Open PanelOpen the visual control panel
Dath: Toggle On/OffEnable or disable all corrections
Dath: Switch ProfileSwitch to a saved profile
Dath: Save Current Settings as ProfileSave current config as a named profile
Dath: Open SettingsJump to Dath settings in the VS Code settings UI
Dath: Run Setup WizardRun the onboarding wizard again
Dath: Export Profiles to ClipboardCopy all saved profiles as JSON
Dath: Import Profiles from ClipboardImport profiles from clipboard JSON
Dath: Rename ProfileRename a saved profile
Dath: Delete ProfileDelete a saved profile

Settings

SettingDefaultDescription
dath.enabledtrueEnable or disable all corrections
dath.cvdModenoneCVD correction: none · deuteranopia · protanopia · tritanopia · achromatopsia · custom1 · custom2 · custom3
dath.cvdSeverity1.0Correction strength 0.1–1.0 (ignored for custom and achromatopsia modes)
dath.simulationModefalseShow how the theme looks to a CVD user rather than correcting it
dath.contrastModenoneBackground adjustment: none · soften · warm · cool · dim
dath.contrastStrength0.5Contrast adjustment strength 0.1–1.0
dath.warmthBias0Hue tint: positive = warm, negative = cool, 0 = neutral
dath.rainbowBracketsfalseCVD-safe rainbow bracket colouring
dath.rainbowIndentsfalseColour indent guides to match the rainbow bracket palette
dath.bracketShapeHintsfalseUnderline hints on bracket pairs
dath.fontOverridenoneAny installed font name, or none for VS Code default
dath.fontSizeOverride0Font size in px (0 = VS Code default)
dath.lineHeightOverride0Line height override (0 = VS Code default)
dath.letterSpacingOverride0Letter 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
dath.darkModeProfile""Profile to auto-apply when VS Code switches to a dark theme
dath.lightModeProfile""Profile to auto-apply when VS Code switches to a light theme

Architecture

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

Development

npm install
npm run compile
# Press F5 in VS Code to launch an Extension Development Host
npm run watch # incremental compilation
npm run lint # ESLint
npm run package # build .vsix for local install or publishing

Licence

PolyForm Noncommercial 1.0.0 — free to use and modify for non-commercial purposes.

About

Your editor, tuned to your eyes. CVD colour correction, contrast comfort, rainbow brackets, and font controls — as a non-destructive layer over any VS Code theme.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

dath

dath

Color & Visual Comfort for VS Code

Your editor, tuned to your eyes.

Irish: dath — colour


What is Dath?

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.


Features

CVD Colour Correction

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.

ModeCone affectedMost common in
DeuteranopiaM (green)~6% of males
ProtanopiaL (red)~2% of males
TritanopiaS (blue)~0.01% of population
AchromatopsiaAll conesRod monochromacy — luminance only

A severity slider (0.1–1.0) lets you dial in the correction strength — 1.0 for complete CVD, lower for partial deficiency.

Simulate mode — instead of correcting, show what your current theme looks like to someone with the selected CVD type. Useful for theme authors and for demonstrating CVD to colleagues.

Custom palette slots (Custom 1, 2, 3) let you define your own per-role colour overrides directly in the panel using colour pickers.

Contrast Comfort

ModeEffect
SoftenLifts pure whites toward a warm off-white — reduces snow blindness
WarmWarms the background tone
CoolCools the background tone
DimReduces overall brightness

A temperature bias slider lets you add a persistent warm or cool hue tint on top of all other corrections.

Rainbow Brackets

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.

Rainbow indent guides colour VS Code's indent guide lines to match the bracket palette, giving an additional spatial cue for nested code structure.

Font & Spacing

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

Profiles

Named configurations that switch in one click. Save, rename, delete, export, and import profiles from the panel or command palette. Three built-in starters are included on first install:

ProfileDescription
DeuteranopiaFull deuteranopia correction, softened backgrounds, CVD-safe brackets
ProtanopiaFull protanopia correction, CVD-safe brackets
Dyslexia ComfortSoftened contrast, Atkinson Hyperlegible font, increased line height

Auto dark/light switching — set dath.darkModeProfile and dath.lightModeProfile to automatically apply the right profile when VS Code (or the OS) switches between dark and light mode.

Visual Panel

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, save, rename, delete, export, and import profiles without leaving the panel
  • Simulate toggle — preview what your theme looks like to a CVD user
  • Status bar shows a warning indicator if the theme file could not be read

How It Works

  1. On activation, Dath reads your active theme's JSON file from disk (including JSONC comment stripping and include chain resolution)
  2. It applies the LMS daltonization pipeline to workbench colour tokens, TextMate syntax scopes, and semantic token colours
  3. Corrected values are written to workbench.colorCustomizations, editor.tokenColorCustomizations, and editor.semanticTokenColorCustomizations in your global settings
  4. 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. It also reads and corrects semanticTokenColors from the theme file, covering the semantic highlighting layer used by modern themes alongside TextMate scopes.


Getting Started

  1. Install from the VS Code Marketplace
  2. The setup wizard runs automatically on first install — choose your CVD type, contrast preference, and bracket options
  3. Click the $(eye) Dath item in the status bar to open the panel at any time
  4. Or: Ctrl+Alt+D / Cmd+Alt+D — or Ctrl/Cmd+Shift+PDath: Open Panel

VS Code forks

Dath uses only standard VS Code extension APIs and works in any VS Code-compatible editor — Cursor, Windsurf, Gitpod, Project IDX, and others — without any changes.

VSCodium users: VSCodium does not use the VS Code Marketplace. Install via the .vsix file from the GitHub releases page, or find Dath on open-vsx.org if it has been published there.


Commands

CommandDescription
Dath: Open PanelOpen the visual control panel
Dath: Toggle On/OffEnable or disable all corrections
Dath: Switch ProfileSwitch to a saved profile
Dath: Save Current Settings as ProfileSave current config as a named profile
Dath: Open SettingsJump to Dath settings in the VS Code settings UI
Dath: Run Setup WizardRun the onboarding wizard again
Dath: Export Profiles to ClipboardCopy all saved profiles as JSON
Dath: Import Profiles from ClipboardImport profiles from clipboard JSON
Dath: Rename ProfileRename a saved profile
Dath: Delete ProfileDelete a saved profile

Settings

SettingDefaultDescription
dath.enabledtrueEnable or disable all corrections
dath.cvdModenoneCVD correction: none · deuteranopia · protanopia · tritanopia · achromatopsia · custom1 · custom2 · custom3
dath.cvdSeverity1.0Correction strength 0.1–1.0 (ignored for custom and achromatopsia modes)
dath.simulationModefalseShow how the theme looks to a CVD user rather than correcting it
dath.contrastModenoneBackground adjustment: none · soften · warm · cool · dim
dath.contrastStrength0.5Contrast adjustment strength 0.1–1.0
dath.warmthBias0Hue tint: positive = warm, negative = cool, 0 = neutral
dath.rainbowBracketsfalseCVD-safe rainbow bracket colouring
dath.rainbowIndentsfalseColour indent guides to match the rainbow bracket palette
dath.bracketShapeHintsfalseUnderline hints on bracket pairs
dath.fontOverridenoneAny installed font name, or none for VS Code default
dath.fontSizeOverride0Font size in px (0 = VS Code default)
dath.lineHeightOverride0Line height override (0 = VS Code default)
dath.letterSpacingOverride0Letter 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
dath.darkModeProfile""Profile to auto-apply when VS Code switches to a dark theme
dath.lightModeProfile""Profile to auto-apply when VS Code switches to a light theme

Architecture

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

Development

npm install
npm run compile
# Press F5 in VS Code to launch an Extension Development Host
npm run watch # incremental compilation
npm run lint # ESLint
npm run package # build .vsix for local install or publishing

Licence

PolyForm Noncommercial 1.0.0 — free to use and modify for non-commercial purposes.

About

Your editor, tuned to your eyes. CVD colour correction, contrast comfort, rainbow brackets, and font controls — as a non-destructive layer over any VS Code theme.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

dath

dath

Color & Visual Comfort for VS Code

Your editor, tuned to your eyes.

Irish: dath — colour


What is Dath?

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.


Features

CVD Colour Correction

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.

ModeCone affectedMost common in
DeuteranopiaM (green)~6% of males
ProtanopiaL (red)~2% of males
TritanopiaS (blue)~0.01% of population
AchromatopsiaAll conesRod monochromacy — luminance only

A severity slider (0.1–1.0) lets you dial in the correction strength — 1.0 for complete CVD, lower for partial deficiency.

Simulate mode — instead of correcting, show what your current theme looks like to someone with the selected CVD type. Useful for theme authors and for demonstrating CVD to colleagues.

Custom palette slots (Custom 1, 2, 3) let you define your own per-role colour overrides directly in the panel using colour pickers.

Contrast Comfort

ModeEffect
SoftenLifts pure whites toward a warm off-white — reduces snow blindness
WarmWarms the background tone
CoolCools the background tone
DimReduces overall brightness

A temperature bias slider lets you add a persistent warm or cool hue tint on top of all other corrections.

Rainbow Brackets

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.

Rainbow indent guides colour VS Code's indent guide lines to match the bracket palette, giving an additional spatial cue for nested code structure.

Font & Spacing

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

Profiles

Named configurations that switch in one click. Save, rename, delete, export, and import profiles from the panel or command palette. Three built-in starters are included on first install:

ProfileDescription
DeuteranopiaFull deuteranopia correction, softened backgrounds, CVD-safe brackets
ProtanopiaFull protanopia correction, CVD-safe brackets
Dyslexia ComfortSoftened contrast, Atkinson Hyperlegible font, increased line height

Auto dark/light switching — set dath.darkModeProfile and dath.lightModeProfile to automatically apply the right profile when VS Code (or the OS) switches between dark and light mode.

Visual Panel

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, save, rename, delete, export, and import profiles without leaving the panel
  • Simulate toggle — preview what your theme looks like to a CVD user
  • Status bar shows a warning indicator if the theme file could not be read

How It Works

  1. On activation, Dath reads your active theme's JSON file from disk (including JSONC comment stripping and include chain resolution)
  2. It applies the LMS daltonization pipeline to workbench colour tokens, TextMate syntax scopes, and semantic token colours
  3. Corrected values are written to workbench.colorCustomizations, editor.tokenColorCustomizations, and editor.semanticTokenColorCustomizations in your global settings
  4. 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. It also reads and corrects semanticTokenColors from the theme file, covering the semantic highlighting layer used by modern themes alongside TextMate scopes.


Getting Started

  1. Install from the VS Code Marketplace
  2. The setup wizard runs automatically on first install — choose your CVD type, contrast preference, and bracket options
  3. Click the $(eye) Dath item in the status bar to open the panel at any time
  4. Or: Ctrl+Alt+D / Cmd+Alt+D — or Ctrl/Cmd+Shift+PDath: Open Panel

VS Code forks

Dath uses only standard VS Code extension APIs and works in any VS Code-compatible editor — Cursor, Windsurf, Gitpod, Project IDX, and others — without any changes.

VSCodium users: VSCodium does not use the VS Code Marketplace. Install via the .vsix file from the GitHub releases page, or find Dath on open-vsx.org if it has been published there.


Commands

CommandDescription
Dath: Open PanelOpen the visual control panel
Dath: Toggle On/OffEnable or disable all corrections
Dath: Switch ProfileSwitch to a saved profile
Dath: Save Current Settings as ProfileSave current config as a named profile
Dath: Open SettingsJump to Dath settings in the VS Code settings UI
Dath: Run Setup WizardRun the onboarding wizard again
Dath: Export Profiles to ClipboardCopy all saved profiles as JSON
Dath: Import Profiles from ClipboardImport profiles from clipboard JSON
Dath: Rename ProfileRename a saved profile
Dath: Delete ProfileDelete a saved profile

Settings

SettingDefaultDescription
dath.enabledtrueEnable or disable all corrections
dath.cvdModenoneCVD correction: none · deuteranopia · protanopia · tritanopia · achromatopsia · custom1 · custom2 · custom3
dath.cvdSeverity1.0Correction strength 0.1–1.0 (ignored for custom and achromatopsia modes)
dath.simulationModefalseShow how the theme looks to a CVD user rather than correcting it
dath.contrastModenoneBackground adjustment: none · soften · warm · cool · dim
dath.contrastStrength0.5Contrast adjustment strength 0.1–1.0
dath.warmthBias0Hue tint: positive = warm, negative = cool, 0 = neutral
dath.rainbowBracketsfalseCVD-safe rainbow bracket colouring
dath.rainbowIndentsfalseColour indent guides to match the rainbow bracket palette
dath.bracketShapeHintsfalseUnderline hints on bracket pairs
dath.fontOverridenoneAny installed font name, or none for VS Code default
dath.fontSizeOverride0Font size in px (0 = VS Code default)
dath.lineHeightOverride0Line height override (0 = VS Code default)
dath.letterSpacingOverride0Letter 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
dath.darkModeProfile""Profile to auto-apply when VS Code switches to a dark theme
dath.lightModeProfile""Profile to auto-apply when VS Code switches to a light theme

Architecture

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

Development

npm install
npm run compile
# Press F5 in VS Code to launch an Extension Development Host
npm run watch # incremental compilation
npm run lint # ESLint
npm run package # build .vsix for local install or publishing

Licence

PolyForm Noncommercial 1.0.0 — free to use and modify for non-commercial purposes.

About

Your editor, tuned to your eyes. CVD colour correction, contrast comfort, rainbow brackets, and font controls — as a non-destructive layer over any VS Code theme.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

dath

dath

Color & Visual Comfort for VS Code

Your editor, tuned to your eyes.

Irish: dath — colour


What is Dath?

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.


Features

CVD Colour Correction

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.

ModeCone affectedMost common in
DeuteranopiaM (green)~6% of males
ProtanopiaL (red)~2% of males
TritanopiaS (blue)~0.01% of population
AchromatopsiaAll conesRod monochromacy — luminance only

A severity slider (0.1–1.0) lets you dial in the correction strength — 1.0 for complete CVD, lower for partial deficiency.

Simulate mode — instead of correcting, show what your current theme looks like to someone with the selected CVD type. Useful for theme authors and for demonstrating CVD to colleagues.

Custom palette slots (Custom 1, 2, 3) let you define your own per-role colour overrides directly in the panel using colour pickers.

Contrast Comfort

ModeEffect
SoftenLifts pure whites toward a warm off-white — reduces snow blindness
WarmWarms the background tone
CoolCools the background tone
DimReduces overall brightness

A temperature bias slider lets you add a persistent warm or cool hue tint on top of all other corrections.

Rainbow Brackets

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.

Rainbow indent guides colour VS Code's indent guide lines to match the bracket palette, giving an additional spatial cue for nested code structure.

Font & Spacing

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

Profiles

Named configurations that switch in one click. Save, rename, delete, export, and import profiles from the panel or command palette. Three built-in starters are included on first install:

ProfileDescription
DeuteranopiaFull deuteranopia correction, softened backgrounds, CVD-safe brackets
ProtanopiaFull protanopia correction, CVD-safe brackets
Dyslexia ComfortSoftened contrast, Atkinson Hyperlegible font, increased line height

Auto dark/light switching — set dath.darkModeProfile and dath.lightModeProfile to automatically apply the right profile when VS Code (or the OS) switches between dark and light mode.

Visual Panel

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, save, rename, delete, export, and import profiles without leaving the panel
  • Simulate toggle — preview what your theme looks like to a CVD user
  • Status bar shows a warning indicator if the theme file could not be read

How It Works

  1. On activation, Dath reads your active theme's JSON file from disk (including JSONC comment stripping and include chain resolution)
  2. It applies the LMS daltonization pipeline to workbench colour tokens, TextMate syntax scopes, and semantic token colours
  3. Corrected values are written to workbench.colorCustomizations, editor.tokenColorCustomizations, and editor.semanticTokenColorCustomizations in your global settings
  4. 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. It also reads and corrects semanticTokenColors from the theme file, covering the semantic highlighting layer used by modern themes alongside TextMate scopes.


Getting Started

  1. Install from the VS Code Marketplace
  2. The setup wizard runs automatically on first install — choose your CVD type, contrast preference, and bracket options
  3. Click the $(eye) Dath item in the status bar to open the panel at any time
  4. Or: Ctrl+Alt+D / Cmd+Alt+D — or Ctrl/Cmd+Shift+PDath: Open Panel

VS Code forks

Dath uses only standard VS Code extension APIs and works in any VS Code-compatible editor — Cursor, Windsurf, Gitpod, Project IDX, and others — without any changes.

VSCodium users: VSCodium does not use the VS Code Marketplace. Install via the .vsix file from the GitHub releases page, or find Dath on open-vsx.org if it has been published there.


Commands

CommandDescription
Dath: Open PanelOpen the visual control panel
Dath: Toggle On/OffEnable or disable all corrections
Dath: Switch ProfileSwitch to a saved profile
Dath: Save Current Settings as ProfileSave current config as a named profile
Dath: Open SettingsJump to Dath settings in the VS Code settings UI
Dath: Run Setup WizardRun the onboarding wizard again
Dath: Export Profiles to ClipboardCopy all saved profiles as JSON
Dath: Import Profiles from ClipboardImport profiles from clipboard JSON
Dath: Rename ProfileRename a saved profile
Dath: Delete ProfileDelete a saved profile

Settings

SettingDefaultDescription
dath.enabledtrueEnable or disable all corrections
dath.cvdModenoneCVD correction: none · deuteranopia · protanopia · tritanopia · achromatopsia · custom1 · custom2 · custom3
dath.cvdSeverity1.0Correction strength 0.1–1.0 (ignored for custom and achromatopsia modes)
dath.simulationModefalseShow how the theme looks to a CVD user rather than correcting it
dath.contrastModenoneBackground adjustment: none · soften · warm · cool · dim
dath.contrastStrength0.5Contrast adjustment strength 0.1–1.0
dath.warmthBias0Hue tint: positive = warm, negative = cool, 0 = neutral
dath.rainbowBracketsfalseCVD-safe rainbow bracket colouring
dath.rainbowIndentsfalseColour indent guides to match the rainbow bracket palette
dath.bracketShapeHintsfalseUnderline hints on bracket pairs
dath.fontOverridenoneAny installed font name, or none for VS Code default
dath.fontSizeOverride0Font size in px (0 = VS Code default)
dath.lineHeightOverride0Line height override (0 = VS Code default)
dath.letterSpacingOverride0Letter 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
dath.darkModeProfile""Profile to auto-apply when VS Code switches to a dark theme
dath.lightModeProfile""Profile to auto-apply when VS Code switches to a light theme

Architecture

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

Development

npm install
npm run compile
# Press F5 in VS Code to launch an Extension Development Host
npm run watch # incremental compilation
npm run lint # ESLint
npm run package # build .vsix for local install or publishing

Licence

PolyForm Noncommercial 1.0.0 — free to use and modify for non-commercial purposes.

About

Your editor, tuned to your eyes. CVD colour correction, contrast comfort, rainbow brackets, and font controls — as a non-destructive layer over any VS Code theme.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages