summaryrefslogtreecommitdiff
path: root/src/themes
diff options
context:
space:
mode:
authorGabriel Schneider <[email protected]>2026-09-29 10:19:01 -0300
committerGabriel Schneider <[email protected]>2026-10-01 00:12:16 -0300
commit479b919c968d1d7413ec24d2e964d7f354450790 (patch)
tree1a70e1598002b5caf74141f0a5e2f8697ac50528 /src/themes
parent3630ad12b6bd2db3e03fc2641d850715bea3700f (diff)
downloadpardes-479b919c968d1d7413ec24d2e964d7f354450790.tar.gz
pardes-479b919c968d1d7413ec24d2e964d7f354450790.zip
Monokai Pro, as close to the original as pardes draws: monokai_pro, monokai_pro_classic, monokai_pro_machine, monokai_pro_octagon, monokai_pro_ristretto, monokai_pro_spectrum, monokai_pro_light, monokai_pro_light_sun
Every colour is the original's own, cited file:line in each theme file. Sources: Monokai Pro for VS Code 2.0.15, published by Wimer Hazenberg (Monokai), verified on Open VSX; https://open-vsx.org/api/monokai/theme-monokai-pro-vscode/2.0.15/file/monokai.theme-monokai-pro-vscode-2.0.15.vsix; ~/05-genizah/monokai-pro-vscode/vsix/extension/themes Chrome moved to meet pardes's floors (text, syntax, ANSI untouched): monokai_pro: focused tag ground #2d2a2e -> #4f4637: 1.00:1 off the unfocused #2d2a2e, pardes needs 1.5:1 on a dark page monokai_pro: rules between panes #221f22 -> #4e4b4d: 1.15:1 off the page, lifted toward the text to 1.6:1 (as colors.zig separatorOf does) monokai_pro: scroll thumb #434044 -> #4a484b: 1.39:1 on its track #2d2a2e monokai_pro_classic: focused tag ground #272822 -> #46452f: 1.00:1 off the unfocused #272822, pardes needs 1.5:1 on a dark page monokai_pro_classic: rules between panes #1d1e19 -> #4a4b44: 1.13:1 off the page, lifted toward the text to 1.6:1 (as colors.zig separatorOf does) monokai_pro_classic: scroll thumb #3e3f38 -> #46473f: 1.40:1 on its track #272822 monokai_pro_machine: focused tag ground #273136 -> #4a4f40: 1.00:1 off the unfocused #273136, pardes needs 1.5:1 on a dark page monokai_pro_machine: unfocused tag text #8b9798 -> #8d999a: 4.42:1 on #273136, tag text needs 4.5:1 to be read and run monokai_pro_machine: rules between panes #1d2528 -> #485152: 1.17:1 off the page, lifted toward the text to 1.6:1 (as colors.zig separatorOf does) monokai_pro_machine: scroll thumb #3d474b -> #444e52: 1.39:1 on its track #273136 monokai_pro_octagon: focused tag ground #282a3a -> #4a4642: 1.00:1 off the unfocused #282a3a, pardes needs 1.5:1 on a dark page monokai_pro_octagon: unfocused tag text #888d94 -> #8d9298: 4.24:1 on #282a3a, tag text needs 4.5:1 to be read and run monokai_pro_octagon: rules between panes #1e1f2b -> #4b4d57: 1.15:1 off the page, lifted toward the text to 1.6:1 (as colors.zig separatorOf does) monokai_pro_octagon: scroll thumb #3d3f4e -> #444655: 1.36:1 on its track #282a3a monokai_pro_ristretto: focused tag ground #2c2525 -> #514332: 1.00:1 off the unfocused #2c2525, pardes needs 1.5:1 on a dark page monokai_pro_ristretto: unfocused tag text #948a8b -> #968c8d: 4.48:1 on #2c2525, tag text needs 4.5:1 to be read and run monokai_pro_ristretto: rules between panes #211c1c -> #4d4747: 1.12:1 off the page, lifted toward the text to 1.6:1 (as colors.zig separatorOf does) monokai_pro_ristretto: scroll thumb #433b3b -> #4b4242: 1.38:1 on its track #2c2525 monokai_pro_spectrum: focused tag ground #222222 -> #45412d: 1.00:1 off the unfocused #222222, pardes needs 1.5:1 on a dark page monokai_pro_spectrum: rules between panes #191919 -> #454447: 1.11:1 off the page, lifted toward the text to 1.6:1 (as colors.zig separatorOf does) monokai_pro_spectrum: scroll thumb #39383a -> #413f42: 1.36:1 on its track #222222 monokai_pro_light: focused tag ground #faf4f2 -> #f5d1d9: 1.00:1 off the unfocused #faf4f2, pardes needs 1.25:1 on a light page monokai_pro_light: unfocused tag text #918c8e -> #716d6f: 3.04:1 on #faf4f2, tag text needs 4.5:1 to be read and run monokai_pro_light: focused tag text #e14775 -> #a73557: 2.80:1 on #f5d1d9, tag text needs 4.5:1 monokai_pro_light: rules between panes #ede7e5 -> #c6c0c0: 1.12:1 off the page, lifted toward the text to 1.6:1 (as colors.zig separatorOf does) monokai_pro_light: scroll thumb #e5e0de -> #cec9c8: 1.20:1 on its track #faf4f2 monokai_pro_light_sun: focused tag ground #f8efe7 -> #f0cdcf: 1.00:1 off the unfocused #f8efe7, pardes needs 1.25:1 on a light page monokai_pro_light_sun: unfocused tag text #92898a -> #726b6c: 3.00:1 on #f8efe7, tag text needs 4.5:1 to be read and run monokai_pro_light_sun: focused tag text #ce4770 -> #9d3655: 3.01:1 on #f0cdcf, tag text needs 4.5:1 monokai_pro_light_sun: rules between panes #eee5de -> #c7bebb: 1.09:1 off the page, lifted toward the text to 1.6:1 (as colors.zig separatorOf does) monokai_pro_light_sun: scroll thumb #e4dbd5 -> #cac1be: 1.20:1 on its track #f8efe7
Diffstat (limited to 'src/themes')
-rw-r--r--src/themes/monokai_pro.zig85
-rw-r--r--src/themes/monokai_pro_classic.zig85
-rw-r--r--src/themes/monokai_pro_light.zig87
-rw-r--r--src/themes/monokai_pro_light_sun.zig87
-rw-r--r--src/themes/monokai_pro_machine.zig86
-rw-r--r--src/themes/monokai_pro_octagon.zig86
-rw-r--r--src/themes/monokai_pro_ristretto.zig86
-rw-r--r--src/themes/monokai_pro_spectrum.zig85
8 files changed, 687 insertions, 0 deletions
diff --git a/src/themes/monokai_pro.zig b/src/themes/monokai_pro.zig
new file mode 100644
index 00000000..46a5d58b
--- /dev/null
+++ b/src/themes/monokai_pro.zig
@@ -0,0 +1,85 @@
+//! Monokai Pro: Monokai Pro, as close to the original as pardes can draw it.
+//! Every value is the original's own, cited on its line (path:line key); the
+//! chrome pardes needs and the original lacks is derived from its palette.
+//! Sources:
+//! Monokai Pro for VS Code 2.0.15, published by Wimer Hazenberg (Monokai), verified on Open VSX; url https://open-vsx.org/api/monokai/theme-monokai-pro-vscode/2.0.15/file/monokai.theme-monokai-pro-vscode-2.0.15.vsix; genizah ~/05-genizah/monokai-pro-vscode/vsix/extension/themes
+//! Tags: the tab (focused = the active tab, unfocused = the inactive one).
+//! Adjusted to meet pardes's floors (chrome only; text, syntax and ANSI are untouched):
+//! - focused tag ground #2d2a2e -> #4f4637: 1.00:1 off the unfocused #2d2a2e, pardes needs 1.5:1 on a dark page
+//! - rules between panes #221f22 -> #4e4b4d: 1.15:1 off the page, lifted toward the text to 1.6:1 (as colors.zig separatorOf does)
+//! - scroll thumb #434044 -> #4a484b: 1.39:1 on its track #2d2a2e
+pub const theme = .{
+ .name = "monokai_pro",
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro.json:1 colors."editor.background"
+ .bg = .{ 0x2d, 0x2a, 0x2e },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro.json:1 colors."editor.foreground"
+ .fg = .{ 0xfc, 0xfc, 0xfa },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro.json:1 colors."editor.selectionBackground" #c1c0c026 over #2d2a2e
+ .sel_bg = .{ 0x43, 0x40, 0x44 },
+ // the original keeps text colours over its selection; its text colour
+ .sel_fg = .{ 0xfc, 0xfc, 0xfa },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro.json:1 colors."tab.inactiveBackground"
+ .tag_bg = .{ 0x2d, 0x2a, 0x2e },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro.json:1 colors."tab.inactiveForeground"
+ .tag_fg = .{ 0x93, 0x92, 0x93 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro.json:1 colors."tab.activeBackground" #2d2a2e, adjusted
+ .tag_active_bg = .{ 0x4f, 0x46, 0x37 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro.json:1 colors."tab.activeForeground"
+ .tag_active_fg = .{ 0xff, 0xd8, 0x66 },
+ // the focused grip: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro.json:1 colors."tab.activeBorder"
+ .box = .{ 0xff, 0xd8, 0x66 },
+ // derived: the grip at rest, the accent #ffd866 faded toward the unfocused tag #2d2a2e as far as 1.6:1 off it (0.20 of the way)
+ .box_dim = .{ 0x57, 0x4d, 0x39 },
+ // an unsaved grip: the original's modified colour, ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro.json:1 colors."editorGutter.modifiedBackground"
+ .box_dirty = .{ 0xfc, 0x98, 0x67 },
+ // derived: the column grip, the original's type colour, ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro.json:1 tokenColors[42] "entity.name.type"
+ .column_box = .{ 0x78, 0xdc, 0xe8 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro.json:1 tokenColors[57] "keyword"
+ .kw = .{ 0xff, 0x61, 0x88 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro.json:1 tokenColors[132] "string"
+ .str = .{ 0xff, 0xd8, 0x66 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro.json:1 tokenColors[22] "constant.numeric"
+ .num = .{ 0xab, 0x9d, 0xf2 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro.json:1 tokenColors[0] "comment"
+ .comment = .{ 0x72, 0x70, 0x72 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro.json:1 colors."editorLineNumber.foreground"
+ .lineno = .{ 0x5b, 0x59, 0x5c },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro.json:1 colors."editorLineNumber.activeForeground"
+ .lineno_active = .{ 0xc1, 0xc0, 0xc0 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro.json:1 no scrollbar.background: the editor shows through
+ .scroll_track = .{ 0x2d, 0x2a, 0x2e },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro.json:1 colors."scrollbarSlider.background" #c1c0c026 over #2d2a2e #434044, adjusted
+ .scroll_thumb = .{ 0x4a, 0x48, 0x4b },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro.json:1 colors."editorGroup.border" #221f22, adjusted
+ .border = .{ 0x4e, 0x4b, 0x4d },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro.json:1 colors."editor.findMatchBackground" #fcfcfa26 over #2d2a2e
+ .search_bg = .{ 0x4c, 0x49, 0x4c },
+ // derived: the original keeps text colours over a match; the page's text, whichever reads better on it
+ .search_fg = .{ 0xfc, 0xfc, 0xfa },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro.json:1 colors."editorError.foreground"
+ .diagnostic_error = .{ 0xff, 0x61, 0x88 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro.json:1 colors."editorWarning.foreground"
+ .diagnostic_warning = .{ 0xfc, 0x98, 0x67 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro.json:1 colors."editorInfo.foreground"
+ .diagnostic_info = .{ 0x78, 0xdc, 0xe8 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro.json:1 colors."editorHint.foreground"
+ .diagnostic_hint = .{ 0xab, 0x9d, 0xf2 },
+ .palette = .{
+ .{ 0x40, 0x3e, 0x41 }, // 0: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro.json:1 colors."terminal.ansiBlack"
+ .{ 0xff, 0x61, 0x88 }, // 1: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro.json:1 colors."terminal.ansiRed"
+ .{ 0xa9, 0xdc, 0x76 }, // 2: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro.json:1 colors."terminal.ansiGreen"
+ .{ 0xff, 0xd8, 0x66 }, // 3: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro.json:1 colors."terminal.ansiYellow"
+ .{ 0xfc, 0x98, 0x67 }, // 4: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro.json:1 colors."terminal.ansiBlue"
+ .{ 0xab, 0x9d, 0xf2 }, // 5: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro.json:1 colors."terminal.ansiMagenta"
+ .{ 0x78, 0xdc, 0xe8 }, // 6: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro.json:1 colors."terminal.ansiCyan"
+ .{ 0xfc, 0xfc, 0xfa }, // 7: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro.json:1 colors."terminal.ansiWhite"
+ .{ 0x72, 0x70, 0x72 }, // 8: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro.json:1 colors."terminal.ansiBrightBlack"
+ .{ 0xff, 0x61, 0x88 }, // 9: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro.json:1 colors."terminal.ansiBrightRed"
+ .{ 0xa9, 0xdc, 0x76 }, // 10: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro.json:1 colors."terminal.ansiBrightGreen"
+ .{ 0xff, 0xd8, 0x66 }, // 11: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro.json:1 colors."terminal.ansiBrightYellow"
+ .{ 0xfc, 0x98, 0x67 }, // 12: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro.json:1 colors."terminal.ansiBrightBlue"
+ .{ 0xab, 0x9d, 0xf2 }, // 13: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro.json:1 colors."terminal.ansiBrightMagenta"
+ .{ 0x78, 0xdc, 0xe8 }, // 14: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro.json:1 colors."terminal.ansiBrightCyan"
+ .{ 0xfc, 0xfc, 0xfa }, // 15: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro.json:1 colors."terminal.ansiBrightWhite"
+ },
+};
diff --git a/src/themes/monokai_pro_classic.zig b/src/themes/monokai_pro_classic.zig
new file mode 100644
index 00000000..69f26327
--- /dev/null
+++ b/src/themes/monokai_pro_classic.zig
@@ -0,0 +1,85 @@
+//! Monokai Classic: Monokai Pro, as close to the original as pardes can draw it.
+//! Every value is the original's own, cited on its line (path:line key); the
+//! chrome pardes needs and the original lacks is derived from its palette.
+//! Sources:
+//! Monokai Pro for VS Code 2.0.15, published by Wimer Hazenberg (Monokai), verified on Open VSX; url https://open-vsx.org/api/monokai/theme-monokai-pro-vscode/2.0.15/file/monokai.theme-monokai-pro-vscode-2.0.15.vsix; genizah ~/05-genizah/monokai-pro-vscode/vsix/extension/themes
+//! Tags: the tab (focused = the active tab, unfocused = the inactive one).
+//! Adjusted to meet pardes's floors (chrome only; text, syntax and ANSI are untouched):
+//! - focused tag ground #272822 -> #46452f: 1.00:1 off the unfocused #272822, pardes needs 1.5:1 on a dark page
+//! - rules between panes #1d1e19 -> #4a4b44: 1.13:1 off the page, lifted toward the text to 1.6:1 (as colors.zig separatorOf does)
+//! - scroll thumb #3e3f38 -> #46473f: 1.40:1 on its track #272822
+pub const theme = .{
+ .name = "monokai_pro_classic",
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Classic.json:1 colors."editor.background"
+ .bg = .{ 0x27, 0x28, 0x22 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Classic.json:1 colors."editor.foreground"
+ .fg = .{ 0xfd, 0xff, 0xf1 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Classic.json:1 colors."editor.selectionBackground" #c0c1b526 over #272822
+ .sel_bg = .{ 0x3e, 0x3f, 0x38 },
+ // the original keeps text colours over its selection; its text colour
+ .sel_fg = .{ 0xfd, 0xff, 0xf1 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Classic.json:1 colors."tab.inactiveBackground"
+ .tag_bg = .{ 0x27, 0x28, 0x22 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Classic.json:1 colors."tab.inactiveForeground"
+ .tag_fg = .{ 0x91, 0x92, 0x88 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Classic.json:1 colors."tab.activeBackground" #272822, adjusted
+ .tag_active_bg = .{ 0x46, 0x45, 0x2f },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Classic.json:1 colors."tab.activeForeground"
+ .tag_active_fg = .{ 0xe6, 0xdb, 0x74 },
+ // the focused grip: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Classic.json:1 colors."tab.activeBorder"
+ .box = .{ 0xe6, 0xdb, 0x74 },
+ // derived: the grip at rest, the accent #e6db74 faded toward the unfocused tag #272822 as far as 1.6:1 off it (0.20 of the way)
+ .box_dim = .{ 0x4d, 0x4c, 0x32 },
+ // an unsaved grip: the original's modified colour, ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Classic.json:1 colors."editorGutter.modifiedBackground"
+ .box_dirty = .{ 0xfd, 0x97, 0x1f },
+ // derived: the column grip, the original's type colour, ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Classic.json:1 tokenColors[42] "entity.name.type"
+ .column_box = .{ 0x66, 0xd9, 0xef },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Classic.json:1 tokenColors[57] "keyword"
+ .kw = .{ 0xf9, 0x26, 0x72 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Classic.json:1 tokenColors[132] "string"
+ .str = .{ 0xe6, 0xdb, 0x74 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Classic.json:1 tokenColors[22] "constant.numeric"
+ .num = .{ 0xae, 0x81, 0xff },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Classic.json:1 tokenColors[0] "comment"
+ .comment = .{ 0x6e, 0x70, 0x66 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Classic.json:1 colors."editorLineNumber.foreground"
+ .lineno = .{ 0x57, 0x58, 0x4f },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Classic.json:1 colors."editorLineNumber.activeForeground"
+ .lineno_active = .{ 0xc0, 0xc1, 0xb5 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Classic.json:1 no scrollbar.background: the editor shows through
+ .scroll_track = .{ 0x27, 0x28, 0x22 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Classic.json:1 colors."scrollbarSlider.background" #c0c1b526 over #272822 #3e3f38, adjusted
+ .scroll_thumb = .{ 0x46, 0x47, 0x3f },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Classic.json:1 colors."editorGroup.border" #1d1e19, adjusted
+ .border = .{ 0x4a, 0x4b, 0x44 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Classic.json:1 colors."editor.findMatchBackground" #fdfff126 over #272822
+ .search_bg = .{ 0x47, 0x48, 0x41 },
+ // derived: the original keeps text colours over a match; the page's text, whichever reads better on it
+ .search_fg = .{ 0xfd, 0xff, 0xf1 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Classic.json:1 colors."editorError.foreground"
+ .diagnostic_error = .{ 0xf9, 0x26, 0x72 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Classic.json:1 colors."editorWarning.foreground"
+ .diagnostic_warning = .{ 0xfd, 0x97, 0x1f },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Classic.json:1 colors."editorInfo.foreground"
+ .diagnostic_info = .{ 0x66, 0xd9, 0xef },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Classic.json:1 colors."editorHint.foreground"
+ .diagnostic_hint = .{ 0xae, 0x81, 0xff },
+ .palette = .{
+ .{ 0x3b, 0x3c, 0x35 }, // 0: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Classic.json:1 colors."terminal.ansiBlack"
+ .{ 0xf9, 0x26, 0x72 }, // 1: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Classic.json:1 colors."terminal.ansiRed"
+ .{ 0xa6, 0xe2, 0x2e }, // 2: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Classic.json:1 colors."terminal.ansiGreen"
+ .{ 0xe6, 0xdb, 0x74 }, // 3: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Classic.json:1 colors."terminal.ansiYellow"
+ .{ 0xfd, 0x97, 0x1f }, // 4: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Classic.json:1 colors."terminal.ansiBlue"
+ .{ 0xae, 0x81, 0xff }, // 5: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Classic.json:1 colors."terminal.ansiMagenta"
+ .{ 0x66, 0xd9, 0xef }, // 6: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Classic.json:1 colors."terminal.ansiCyan"
+ .{ 0xfd, 0xff, 0xf1 }, // 7: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Classic.json:1 colors."terminal.ansiWhite"
+ .{ 0x6e, 0x70, 0x66 }, // 8: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Classic.json:1 colors."terminal.ansiBrightBlack"
+ .{ 0xf9, 0x26, 0x72 }, // 9: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Classic.json:1 colors."terminal.ansiBrightRed"
+ .{ 0xa6, 0xe2, 0x2e }, // 10: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Classic.json:1 colors."terminal.ansiBrightGreen"
+ .{ 0xe6, 0xdb, 0x74 }, // 11: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Classic.json:1 colors."terminal.ansiBrightYellow"
+ .{ 0xfd, 0x97, 0x1f }, // 12: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Classic.json:1 colors."terminal.ansiBrightBlue"
+ .{ 0xae, 0x81, 0xff }, // 13: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Classic.json:1 colors."terminal.ansiBrightMagenta"
+ .{ 0x66, 0xd9, 0xef }, // 14: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Classic.json:1 colors."terminal.ansiBrightCyan"
+ .{ 0xfd, 0xff, 0xf1 }, // 15: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Classic.json:1 colors."terminal.ansiBrightWhite"
+ },
+};
diff --git a/src/themes/monokai_pro_light.zig b/src/themes/monokai_pro_light.zig
new file mode 100644
index 00000000..ef638731
--- /dev/null
+++ b/src/themes/monokai_pro_light.zig
@@ -0,0 +1,87 @@
+//! Monokai Pro Light: Monokai Pro, as close to the original as pardes can draw it.
+//! Every value is the original's own, cited on its line (path:line key); the
+//! chrome pardes needs and the original lacks is derived from its palette.
+//! Sources:
+//! Monokai Pro for VS Code 2.0.15, published by Wimer Hazenberg (Monokai), verified on Open VSX; url https://open-vsx.org/api/monokai/theme-monokai-pro-vscode/2.0.15/file/monokai.theme-monokai-pro-vscode-2.0.15.vsix; genizah ~/05-genizah/monokai-pro-vscode/vsix/extension/themes
+//! Tags: the tab (focused = the active tab, unfocused = the inactive one).
+//! Adjusted to meet pardes's floors (chrome only; text, syntax and ANSI are untouched):
+//! - focused tag ground #faf4f2 -> #f5d1d9: 1.00:1 off the unfocused #faf4f2, pardes needs 1.25:1 on a light page
+//! - unfocused tag text #918c8e -> #716d6f: 3.04:1 on #faf4f2, tag text needs 4.5:1 to be read and run
+//! - focused tag text #e14775 -> #a73557: 2.80:1 on #f5d1d9, tag text needs 4.5:1
+//! - rules between panes #ede7e5 -> #c6c0c0: 1.12:1 off the page, lifted toward the text to 1.6:1 (as colors.zig separatorOf does)
+//! - scroll thumb #e5e0de -> #cec9c8: 1.20:1 on its track #faf4f2
+pub const theme = .{
+ .name = "monokai_pro_light",
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro Light.json:1 colors."editor.background"
+ .bg = .{ 0xfa, 0xf4, 0xf2 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro Light.json:1 colors."editor.foreground"
+ .fg = .{ 0x29, 0x24, 0x2a },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro Light.json:1 colors."editor.selectionBackground" #706b6e26 over #faf4f2
+ .sel_bg = .{ 0xe5, 0xe0, 0xde },
+ // the original keeps text colours over its selection; its text colour
+ .sel_fg = .{ 0x29, 0x24, 0x2a },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro Light.json:1 colors."tab.inactiveBackground"
+ .tag_bg = .{ 0xfa, 0xf4, 0xf2 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro Light.json:1 colors."tab.inactiveForeground" #918c8e, adjusted
+ .tag_fg = .{ 0x71, 0x6d, 0x6f },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro Light.json:1 colors."tab.activeBackground" #faf4f2, adjusted
+ .tag_active_bg = .{ 0xf5, 0xd1, 0xd9 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro Light.json:1 colors."tab.activeForeground" #e14775, adjusted
+ .tag_active_fg = .{ 0xa7, 0x35, 0x57 },
+ // the focused grip: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro Light.json:1 colors."tab.activeBorder"
+ .box = .{ 0xe1, 0x47, 0x75 },
+ // derived: the grip at rest, the accent #e14775 faded toward the unfocused tag #faf4f2 as far as 1.6:1 off it (0.38 of the way)
+ .box_dim = .{ 0xf1, 0xb2, 0xc3 },
+ // an unsaved grip: the original's modified colour, ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro Light.json:1 colors."editorGutter.modifiedBackground"
+ .box_dirty = .{ 0xe1, 0x60, 0x32 },
+ // derived: the column grip, the original's type colour, ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro Light.json:1 tokenColors[42] "entity.name.type"
+ .column_box = .{ 0x1c, 0x8c, 0xa8 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro Light.json:1 tokenColors[57] "keyword"
+ .kw = .{ 0xe1, 0x47, 0x75 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro Light.json:1 tokenColors[132] "string"
+ .str = .{ 0xcc, 0x7a, 0x0a },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro Light.json:1 tokenColors[22] "constant.numeric"
+ .num = .{ 0x70, 0x58, 0xbe },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro Light.json:1 tokenColors[0] "comment"
+ .comment = .{ 0xa5, 0x9f, 0xa0 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro Light.json:1 colors."editorLineNumber.foreground"
+ .lineno = .{ 0xbf, 0xb9, 0xba },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro Light.json:1 colors."editorLineNumber.activeForeground"
+ .lineno_active = .{ 0x70, 0x6b, 0x6e },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro Light.json:1 no scrollbar.background: the editor shows through
+ .scroll_track = .{ 0xfa, 0xf4, 0xf2 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro Light.json:1 colors."scrollbarSlider.background" #706b6e26 over #faf4f2 #e5e0de, adjusted
+ .scroll_thumb = .{ 0xce, 0xc9, 0xc8 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro Light.json:1 colors."editorGroup.border" #ede7e5, adjusted
+ .border = .{ 0xc6, 0xc0, 0xc0 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro Light.json:1 colors."editor.findMatchBackground" #29242a26 over #faf4f2
+ .search_bg = .{ 0xdb, 0xd5, 0xd4 },
+ // derived: the original keeps text colours over a match; the page's text, whichever reads better on it
+ .search_fg = .{ 0x29, 0x24, 0x2a },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro Light.json:1 colors."editorError.foreground"
+ .diagnostic_error = .{ 0xe1, 0x47, 0x75 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro Light.json:1 colors."editorWarning.foreground"
+ .diagnostic_warning = .{ 0xe1, 0x60, 0x32 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro Light.json:1 colors."editorInfo.foreground"
+ .diagnostic_info = .{ 0x1c, 0x8c, 0xa8 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro Light.json:1 colors."editorHint.foreground"
+ .diagnostic_hint = .{ 0x70, 0x58, 0xbe },
+ .palette = .{
+ .{ 0xd3, 0xcd, 0xcc }, // 0: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro Light.json:1 colors."terminal.ansiBlack"
+ .{ 0xe1, 0x47, 0x75 }, // 1: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro Light.json:1 colors."terminal.ansiRed"
+ .{ 0x26, 0x9d, 0x69 }, // 2: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro Light.json:1 colors."terminal.ansiGreen"
+ .{ 0xcc, 0x7a, 0x0a }, // 3: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro Light.json:1 colors."terminal.ansiYellow"
+ .{ 0xe1, 0x60, 0x32 }, // 4: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro Light.json:1 colors."terminal.ansiBlue"
+ .{ 0x70, 0x58, 0xbe }, // 5: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro Light.json:1 colors."terminal.ansiMagenta"
+ .{ 0x1c, 0x8c, 0xa8 }, // 6: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro Light.json:1 colors."terminal.ansiCyan"
+ .{ 0x29, 0x24, 0x2a }, // 7: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro Light.json:1 colors."terminal.ansiWhite"
+ .{ 0xa5, 0x9f, 0xa0 }, // 8: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro Light.json:1 colors."terminal.ansiBrightBlack"
+ .{ 0xe1, 0x47, 0x75 }, // 9: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro Light.json:1 colors."terminal.ansiBrightRed"
+ .{ 0x26, 0x9d, 0x69 }, // 10: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro Light.json:1 colors."terminal.ansiBrightGreen"
+ .{ 0xcc, 0x7a, 0x0a }, // 11: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro Light.json:1 colors."terminal.ansiBrightYellow"
+ .{ 0xe1, 0x60, 0x32 }, // 12: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro Light.json:1 colors."terminal.ansiBrightBlue"
+ .{ 0x70, 0x58, 0xbe }, // 13: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro Light.json:1 colors."terminal.ansiBrightMagenta"
+ .{ 0x1c, 0x8c, 0xa8 }, // 14: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro Light.json:1 colors."terminal.ansiBrightCyan"
+ .{ 0x29, 0x24, 0x2a }, // 15: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro Light.json:1 colors."terminal.ansiBrightWhite"
+ },
+};
diff --git a/src/themes/monokai_pro_light_sun.zig b/src/themes/monokai_pro_light_sun.zig
new file mode 100644
index 00000000..2d023deb
--- /dev/null
+++ b/src/themes/monokai_pro_light_sun.zig
@@ -0,0 +1,87 @@
+//! Monokai Pro Light (Filter Sun): Monokai Pro, as close to the original as pardes can draw it.
+//! Every value is the original's own, cited on its line (path:line key); the
+//! chrome pardes needs and the original lacks is derived from its palette.
+//! Sources:
+//! Monokai Pro for VS Code 2.0.15, published by Wimer Hazenberg (Monokai), verified on Open VSX; url https://open-vsx.org/api/monokai/theme-monokai-pro-vscode/2.0.15/file/monokai.theme-monokai-pro-vscode-2.0.15.vsix; genizah ~/05-genizah/monokai-pro-vscode/vsix/extension/themes
+//! Tags: the tab (focused = the active tab, unfocused = the inactive one).
+//! Adjusted to meet pardes's floors (chrome only; text, syntax and ANSI are untouched):
+//! - focused tag ground #f8efe7 -> #f0cdcf: 1.00:1 off the unfocused #f8efe7, pardes needs 1.25:1 on a light page
+//! - unfocused tag text #92898a -> #726b6c: 3.00:1 on #f8efe7, tag text needs 4.5:1 to be read and run
+//! - focused tag text #ce4770 -> #9d3655: 3.01:1 on #f0cdcf, tag text needs 4.5:1
+//! - rules between panes #eee5de -> #c7bebb: 1.09:1 off the page, lifted toward the text to 1.6:1 (as colors.zig separatorOf does)
+//! - scroll thumb #e4dbd5 -> #cac1be: 1.20:1 on its track #f8efe7
+pub const theme = .{
+ .name = "monokai_pro_light_sun",
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro Light (Filter Sun).json:1 colors."editor.background"
+ .bg = .{ 0xf8, 0xef, 0xe7 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro Light (Filter Sun).json:1 colors."editor.foreground"
+ .fg = .{ 0x2c, 0x23, 0x2e },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro Light (Filter Sun).json:1 colors."editor.selectionBackground" #72696d26 over #f8efe7
+ .sel_bg = .{ 0xe4, 0xdb, 0xd5 },
+ // the original keeps text colours over its selection; its text colour
+ .sel_fg = .{ 0x2c, 0x23, 0x2e },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro Light (Filter Sun).json:1 colors."tab.inactiveBackground"
+ .tag_bg = .{ 0xf8, 0xef, 0xe7 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro Light (Filter Sun).json:1 colors."tab.inactiveForeground" #92898a, adjusted
+ .tag_fg = .{ 0x72, 0x6b, 0x6c },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro Light (Filter Sun).json:1 colors."tab.activeBackground" #f8efe7, adjusted
+ .tag_active_bg = .{ 0xf0, 0xcd, 0xcf },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro Light (Filter Sun).json:1 colors."tab.activeForeground" #ce4770, adjusted
+ .tag_active_fg = .{ 0x9d, 0x36, 0x55 },
+ // the focused grip: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro Light (Filter Sun).json:1 colors."tab.activeBorder"
+ .box = .{ 0xce, 0x47, 0x70 },
+ // derived: the grip at rest, the accent #ce4770 faded toward the unfocused tag #f8efe7 as far as 1.6:1 off it (0.38 of the way)
+ .box_dim = .{ 0xe8, 0xaf, 0xba },
+ // an unsaved grip: the original's modified colour, ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro Light (Filter Sun).json:1 colors."editorGutter.modifiedBackground"
+ .box_dirty = .{ 0xd4, 0x57, 0x2b },
+ // derived: the column grip, the original's type colour, ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro Light (Filter Sun).json:1 tokenColors[42] "entity.name.type"
+ .column_box = .{ 0x24, 0x73, 0xb6 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro Light (Filter Sun).json:1 tokenColors[57] "keyword"
+ .kw = .{ 0xce, 0x47, 0x70 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro Light (Filter Sun).json:1 tokenColors[132] "string"
+ .str = .{ 0xb1, 0x68, 0x03 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro Light (Filter Sun).json:1 tokenColors[22] "constant.numeric"
+ .num = .{ 0x68, 0x51, 0xa2 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro Light (Filter Sun).json:1 tokenColors[0] "comment"
+ .comment = .{ 0xa5, 0x9c, 0x9c },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro Light (Filter Sun).json:1 colors."editorLineNumber.foreground"
+ .lineno = .{ 0xbe, 0xb5, 0xb3 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro Light (Filter Sun).json:1 colors."editorLineNumber.activeForeground"
+ .lineno_active = .{ 0x72, 0x69, 0x6d },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro Light (Filter Sun).json:1 no scrollbar.background: the editor shows through
+ .scroll_track = .{ 0xf8, 0xef, 0xe7 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro Light (Filter Sun).json:1 colors."scrollbarSlider.background" #72696d26 over #f8efe7 #e4dbd5, adjusted
+ .scroll_thumb = .{ 0xca, 0xc1, 0xbe },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro Light (Filter Sun).json:1 colors."editorGroup.border" #eee5de, adjusted
+ .border = .{ 0xc7, 0xbe, 0xbb },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro Light (Filter Sun).json:1 colors."editor.findMatchBackground" #2c232e26 over #f8efe7
+ .search_bg = .{ 0xda, 0xd1, 0xcb },
+ // derived: the original keeps text colours over a match; the page's text, whichever reads better on it
+ .search_fg = .{ 0x2c, 0x23, 0x2e },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro Light (Filter Sun).json:1 colors."editorError.foreground"
+ .diagnostic_error = .{ 0xce, 0x47, 0x70 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro Light (Filter Sun).json:1 colors."editorWarning.foreground"
+ .diagnostic_warning = .{ 0xd4, 0x57, 0x2b },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro Light (Filter Sun).json:1 colors."editorInfo.foreground"
+ .diagnostic_info = .{ 0x24, 0x73, 0xb6 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro Light (Filter Sun).json:1 colors."editorHint.foreground"
+ .diagnostic_hint = .{ 0x68, 0x51, 0xa2 },
+ .palette = .{
+ .{ 0xd2, 0xc9, 0xc4 }, // 0: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro Light (Filter Sun).json:1 colors."terminal.ansiBlack"
+ .{ 0xce, 0x47, 0x70 }, // 1: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro Light (Filter Sun).json:1 colors."terminal.ansiRed"
+ .{ 0x21, 0x88, 0x71 }, // 2: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro Light (Filter Sun).json:1 colors."terminal.ansiGreen"
+ .{ 0xb1, 0x68, 0x03 }, // 3: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro Light (Filter Sun).json:1 colors."terminal.ansiYellow"
+ .{ 0xd4, 0x57, 0x2b }, // 4: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro Light (Filter Sun).json:1 colors."terminal.ansiBlue"
+ .{ 0x68, 0x51, 0xa2 }, // 5: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro Light (Filter Sun).json:1 colors."terminal.ansiMagenta"
+ .{ 0x24, 0x73, 0xb6 }, // 6: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro Light (Filter Sun).json:1 colors."terminal.ansiCyan"
+ .{ 0x2c, 0x23, 0x2e }, // 7: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro Light (Filter Sun).json:1 colors."terminal.ansiWhite"
+ .{ 0xa5, 0x9c, 0x9c }, // 8: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro Light (Filter Sun).json:1 colors."terminal.ansiBrightBlack"
+ .{ 0xce, 0x47, 0x70 }, // 9: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro Light (Filter Sun).json:1 colors."terminal.ansiBrightRed"
+ .{ 0x21, 0x88, 0x71 }, // 10: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro Light (Filter Sun).json:1 colors."terminal.ansiBrightGreen"
+ .{ 0xb1, 0x68, 0x03 }, // 11: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro Light (Filter Sun).json:1 colors."terminal.ansiBrightYellow"
+ .{ 0xd4, 0x57, 0x2b }, // 12: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro Light (Filter Sun).json:1 colors."terminal.ansiBrightBlue"
+ .{ 0x68, 0x51, 0xa2 }, // 13: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro Light (Filter Sun).json:1 colors."terminal.ansiBrightMagenta"
+ .{ 0x24, 0x73, 0xb6 }, // 14: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro Light (Filter Sun).json:1 colors."terminal.ansiBrightCyan"
+ .{ 0x2c, 0x23, 0x2e }, // 15: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro Light (Filter Sun).json:1 colors."terminal.ansiBrightWhite"
+ },
+};
diff --git a/src/themes/monokai_pro_machine.zig b/src/themes/monokai_pro_machine.zig
new file mode 100644
index 00000000..5e4c6885
--- /dev/null
+++ b/src/themes/monokai_pro_machine.zig
@@ -0,0 +1,86 @@
+//! Monokai Pro (Filter Machine): Monokai Pro, as close to the original as pardes can draw it.
+//! Every value is the original's own, cited on its line (path:line key); the
+//! chrome pardes needs and the original lacks is derived from its palette.
+//! Sources:
+//! Monokai Pro for VS Code 2.0.15, published by Wimer Hazenberg (Monokai), verified on Open VSX; url https://open-vsx.org/api/monokai/theme-monokai-pro-vscode/2.0.15/file/monokai.theme-monokai-pro-vscode-2.0.15.vsix; genizah ~/05-genizah/monokai-pro-vscode/vsix/extension/themes
+//! Tags: the tab (focused = the active tab, unfocused = the inactive one).
+//! Adjusted to meet pardes's floors (chrome only; text, syntax and ANSI are untouched):
+//! - focused tag ground #273136 -> #4a4f40: 1.00:1 off the unfocused #273136, pardes needs 1.5:1 on a dark page
+//! - unfocused tag text #8b9798 -> #8d999a: 4.42:1 on #273136, tag text needs 4.5:1 to be read and run
+//! - rules between panes #1d2528 -> #485152: 1.17:1 off the page, lifted toward the text to 1.6:1 (as colors.zig separatorOf does)
+//! - scroll thumb #3d474b -> #444e52: 1.39:1 on its track #273136
+pub const theme = .{
+ .name = "monokai_pro_machine",
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Machine).json:1 colors."editor.background"
+ .bg = .{ 0x27, 0x31, 0x36 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Machine).json:1 colors."editor.foreground"
+ .fg = .{ 0xf2, 0xff, 0xfc },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Machine).json:1 colors."editor.selectionBackground" #b8c4c326 over #273136
+ .sel_bg = .{ 0x3d, 0x47, 0x4b },
+ // the original keeps text colours over its selection; its text colour
+ .sel_fg = .{ 0xf2, 0xff, 0xfc },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Machine).json:1 colors."tab.inactiveBackground"
+ .tag_bg = .{ 0x27, 0x31, 0x36 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Machine).json:1 colors."tab.inactiveForeground" #8b9798, adjusted
+ .tag_fg = .{ 0x8d, 0x99, 0x9a },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Machine).json:1 colors."tab.activeBackground" #273136, adjusted
+ .tag_active_bg = .{ 0x4a, 0x4f, 0x40 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Machine).json:1 colors."tab.activeForeground"
+ .tag_active_fg = .{ 0xff, 0xed, 0x72 },
+ // the focused grip: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Machine).json:1 colors."tab.activeBorder"
+ .box = .{ 0xff, 0xed, 0x72 },
+ // derived: the grip at rest, the accent #ffed72 faded toward the unfocused tag #273136 as far as 1.6:1 off it (0.18 of the way)
+ .box_dim = .{ 0x4e, 0x53, 0x41 },
+ // an unsaved grip: the original's modified colour, ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Machine).json:1 colors."editorGutter.modifiedBackground"
+ .box_dirty = .{ 0xff, 0xb2, 0x70 },
+ // derived: the column grip, the original's type colour, ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Machine).json:1 tokenColors[42] "entity.name.type"
+ .column_box = .{ 0x7c, 0xd5, 0xf1 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Machine).json:1 tokenColors[57] "keyword"
+ .kw = .{ 0xff, 0x6d, 0x7e },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Machine).json:1 tokenColors[132] "string"
+ .str = .{ 0xff, 0xed, 0x72 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Machine).json:1 tokenColors[22] "constant.numeric"
+ .num = .{ 0xba, 0xa0, 0xf8 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Machine).json:1 tokenColors[0] "comment"
+ .comment = .{ 0x6b, 0x76, 0x78 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Machine).json:1 colors."editorLineNumber.foreground"
+ .lineno = .{ 0x54, 0x5f, 0x62 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Machine).json:1 colors."editorLineNumber.activeForeground"
+ .lineno_active = .{ 0xb8, 0xc4, 0xc3 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Machine).json:1 no scrollbar.background: the editor shows through
+ .scroll_track = .{ 0x27, 0x31, 0x36 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Machine).json:1 colors."scrollbarSlider.background" #b8c4c326 over #273136 #3d474b, adjusted
+ .scroll_thumb = .{ 0x44, 0x4e, 0x52 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Machine).json:1 colors."editorGroup.border" #1d2528, adjusted
+ .border = .{ 0x48, 0x51, 0x52 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Machine).json:1 colors."editor.findMatchBackground" #f2fffc26 over #273136
+ .search_bg = .{ 0x45, 0x50, 0x54 },
+ // derived: the original keeps text colours over a match; the page's text, whichever reads better on it
+ .search_fg = .{ 0xf2, 0xff, 0xfc },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Machine).json:1 colors."editorError.foreground"
+ .diagnostic_error = .{ 0xff, 0x6d, 0x7e },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Machine).json:1 colors."editorWarning.foreground"
+ .diagnostic_warning = .{ 0xff, 0xb2, 0x70 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Machine).json:1 colors."editorInfo.foreground"
+ .diagnostic_info = .{ 0x7c, 0xd5, 0xf1 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Machine).json:1 colors."editorHint.foreground"
+ .diagnostic_hint = .{ 0xba, 0xa0, 0xf8 },
+ .palette = .{
+ .{ 0x3a, 0x44, 0x49 }, // 0: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Machine).json:1 colors."terminal.ansiBlack"
+ .{ 0xff, 0x6d, 0x7e }, // 1: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Machine).json:1 colors."terminal.ansiRed"
+ .{ 0xa2, 0xe5, 0x7b }, // 2: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Machine).json:1 colors."terminal.ansiGreen"
+ .{ 0xff, 0xed, 0x72 }, // 3: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Machine).json:1 colors."terminal.ansiYellow"
+ .{ 0xff, 0xb2, 0x70 }, // 4: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Machine).json:1 colors."terminal.ansiBlue"
+ .{ 0xba, 0xa0, 0xf8 }, // 5: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Machine).json:1 colors."terminal.ansiMagenta"
+ .{ 0x7c, 0xd5, 0xf1 }, // 6: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Machine).json:1 colors."terminal.ansiCyan"
+ .{ 0xf2, 0xff, 0xfc }, // 7: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Machine).json:1 colors."terminal.ansiWhite"
+ .{ 0x6b, 0x76, 0x78 }, // 8: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Machine).json:1 colors."terminal.ansiBrightBlack"
+ .{ 0xff, 0x6d, 0x7e }, // 9: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Machine).json:1 colors."terminal.ansiBrightRed"
+ .{ 0xa2, 0xe5, 0x7b }, // 10: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Machine).json:1 colors."terminal.ansiBrightGreen"
+ .{ 0xff, 0xed, 0x72 }, // 11: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Machine).json:1 colors."terminal.ansiBrightYellow"
+ .{ 0xff, 0xb2, 0x70 }, // 12: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Machine).json:1 colors."terminal.ansiBrightBlue"
+ .{ 0xba, 0xa0, 0xf8 }, // 13: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Machine).json:1 colors."terminal.ansiBrightMagenta"
+ .{ 0x7c, 0xd5, 0xf1 }, // 14: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Machine).json:1 colors."terminal.ansiBrightCyan"
+ .{ 0xf2, 0xff, 0xfc }, // 15: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Machine).json:1 colors."terminal.ansiBrightWhite"
+ },
+};
diff --git a/src/themes/monokai_pro_octagon.zig b/src/themes/monokai_pro_octagon.zig
new file mode 100644
index 00000000..62bb8c15
--- /dev/null
+++ b/src/themes/monokai_pro_octagon.zig
@@ -0,0 +1,86 @@
+//! Monokai Pro (Filter Octagon): Monokai Pro, as close to the original as pardes can draw it.
+//! Every value is the original's own, cited on its line (path:line key); the
+//! chrome pardes needs and the original lacks is derived from its palette.
+//! Sources:
+//! Monokai Pro for VS Code 2.0.15, published by Wimer Hazenberg (Monokai), verified on Open VSX; url https://open-vsx.org/api/monokai/theme-monokai-pro-vscode/2.0.15/file/monokai.theme-monokai-pro-vscode-2.0.15.vsix; genizah ~/05-genizah/monokai-pro-vscode/vsix/extension/themes
+//! Tags: the tab (focused = the active tab, unfocused = the inactive one).
+//! Adjusted to meet pardes's floors (chrome only; text, syntax and ANSI are untouched):
+//! - focused tag ground #282a3a -> #4a4642: 1.00:1 off the unfocused #282a3a, pardes needs 1.5:1 on a dark page
+//! - unfocused tag text #888d94 -> #8d9298: 4.24:1 on #282a3a, tag text needs 4.5:1 to be read and run
+//! - rules between panes #1e1f2b -> #4b4d57: 1.15:1 off the page, lifted toward the text to 1.6:1 (as colors.zig separatorOf does)
+//! - scroll thumb #3d3f4e -> #444655: 1.36:1 on its track #282a3a
+pub const theme = .{
+ .name = "monokai_pro_octagon",
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Octagon).json:1 colors."editor.background"
+ .bg = .{ 0x28, 0x2a, 0x3a },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Octagon).json:1 colors."editor.foreground"
+ .fg = .{ 0xea, 0xf2, 0xf1 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Octagon).json:1 colors."editor.selectionBackground" #b2b9bd26 over #282a3a
+ .sel_bg = .{ 0x3d, 0x3f, 0x4e },
+ // the original keeps text colours over its selection; its text colour
+ .sel_fg = .{ 0xea, 0xf2, 0xf1 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Octagon).json:1 colors."tab.inactiveBackground"
+ .tag_bg = .{ 0x28, 0x2a, 0x3a },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Octagon).json:1 colors."tab.inactiveForeground" #888d94, adjusted
+ .tag_fg = .{ 0x8d, 0x92, 0x98 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Octagon).json:1 colors."tab.activeBackground" #282a3a, adjusted
+ .tag_active_bg = .{ 0x4a, 0x46, 0x42 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Octagon).json:1 colors."tab.activeForeground"
+ .tag_active_fg = .{ 0xff, 0xd7, 0x6d },
+ // the focused grip: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Octagon).json:1 colors."tab.activeBorder"
+ .box = .{ 0xff, 0xd7, 0x6d },
+ // derived: the grip at rest, the accent #ffd76d faded toward the unfocused tag #282a3a as far as 1.6:1 off it (0.20 of the way)
+ .box_dim = .{ 0x53, 0x4d, 0x44 },
+ // an unsaved grip: the original's modified colour, ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Octagon).json:1 colors."editorGutter.modifiedBackground"
+ .box_dirty = .{ 0xff, 0x9b, 0x5e },
+ // derived: the column grip, the original's type colour, ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Octagon).json:1 tokenColors[42] "entity.name.type"
+ .column_box = .{ 0x9c, 0xd1, 0xbb },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Octagon).json:1 tokenColors[57] "keyword"
+ .kw = .{ 0xff, 0x65, 0x7a },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Octagon).json:1 tokenColors[132] "string"
+ .str = .{ 0xff, 0xd7, 0x6d },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Octagon).json:1 tokenColors[22] "constant.numeric"
+ .num = .{ 0xc3, 0x9a, 0xc9 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Octagon).json:1 tokenColors[0] "comment"
+ .comment = .{ 0x69, 0x6d, 0x77 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Octagon).json:1 colors."editorLineNumber.foreground"
+ .lineno = .{ 0x53, 0x57, 0x63 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Octagon).json:1 colors."editorLineNumber.activeForeground"
+ .lineno_active = .{ 0xb2, 0xb9, 0xbd },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Octagon).json:1 no scrollbar.background: the editor shows through
+ .scroll_track = .{ 0x28, 0x2a, 0x3a },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Octagon).json:1 colors."scrollbarSlider.background" #b2b9bd26 over #282a3a #3d3f4e, adjusted
+ .scroll_thumb = .{ 0x44, 0x46, 0x55 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Octagon).json:1 colors."editorGroup.border" #1e1f2b, adjusted
+ .border = .{ 0x4b, 0x4d, 0x57 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Octagon).json:1 colors."editor.findMatchBackground" #eaf2f126 over #282a3a
+ .search_bg = .{ 0x45, 0x48, 0x55 },
+ // derived: the original keeps text colours over a match; the page's text, whichever reads better on it
+ .search_fg = .{ 0xea, 0xf2, 0xf1 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Octagon).json:1 colors."editorError.foreground"
+ .diagnostic_error = .{ 0xff, 0x65, 0x7a },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Octagon).json:1 colors."editorWarning.foreground"
+ .diagnostic_warning = .{ 0xff, 0x9b, 0x5e },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Octagon).json:1 colors."editorInfo.foreground"
+ .diagnostic_info = .{ 0x9c, 0xd1, 0xbb },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Octagon).json:1 colors."editorHint.foreground"
+ .diagnostic_hint = .{ 0xc3, 0x9a, 0xc9 },
+ .palette = .{
+ .{ 0x3a, 0x3d, 0x4b }, // 0: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Octagon).json:1 colors."terminal.ansiBlack"
+ .{ 0xff, 0x65, 0x7a }, // 1: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Octagon).json:1 colors."terminal.ansiRed"
+ .{ 0xba, 0xd7, 0x61 }, // 2: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Octagon).json:1 colors."terminal.ansiGreen"
+ .{ 0xff, 0xd7, 0x6d }, // 3: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Octagon).json:1 colors."terminal.ansiYellow"
+ .{ 0xff, 0x9b, 0x5e }, // 4: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Octagon).json:1 colors."terminal.ansiBlue"
+ .{ 0xc3, 0x9a, 0xc9 }, // 5: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Octagon).json:1 colors."terminal.ansiMagenta"
+ .{ 0x9c, 0xd1, 0xbb }, // 6: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Octagon).json:1 colors."terminal.ansiCyan"
+ .{ 0xea, 0xf2, 0xf1 }, // 7: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Octagon).json:1 colors."terminal.ansiWhite"
+ .{ 0x69, 0x6d, 0x77 }, // 8: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Octagon).json:1 colors."terminal.ansiBrightBlack"
+ .{ 0xff, 0x65, 0x7a }, // 9: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Octagon).json:1 colors."terminal.ansiBrightRed"
+ .{ 0xba, 0xd7, 0x61 }, // 10: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Octagon).json:1 colors."terminal.ansiBrightGreen"
+ .{ 0xff, 0xd7, 0x6d }, // 11: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Octagon).json:1 colors."terminal.ansiBrightYellow"
+ .{ 0xff, 0x9b, 0x5e }, // 12: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Octagon).json:1 colors."terminal.ansiBrightBlue"
+ .{ 0xc3, 0x9a, 0xc9 }, // 13: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Octagon).json:1 colors."terminal.ansiBrightMagenta"
+ .{ 0x9c, 0xd1, 0xbb }, // 14: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Octagon).json:1 colors."terminal.ansiBrightCyan"
+ .{ 0xea, 0xf2, 0xf1 }, // 15: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Octagon).json:1 colors."terminal.ansiBrightWhite"
+ },
+};
diff --git a/src/themes/monokai_pro_ristretto.zig b/src/themes/monokai_pro_ristretto.zig
new file mode 100644
index 00000000..88b1788c
--- /dev/null
+++ b/src/themes/monokai_pro_ristretto.zig
@@ -0,0 +1,86 @@
+//! Monokai Pro (Filter Ristretto): Monokai Pro, as close to the original as pardes can draw it.
+//! Every value is the original's own, cited on its line (path:line key); the
+//! chrome pardes needs and the original lacks is derived from its palette.
+//! Sources:
+//! Monokai Pro for VS Code 2.0.15, published by Wimer Hazenberg (Monokai), verified on Open VSX; url https://open-vsx.org/api/monokai/theme-monokai-pro-vscode/2.0.15/file/monokai.theme-monokai-pro-vscode-2.0.15.vsix; genizah ~/05-genizah/monokai-pro-vscode/vsix/extension/themes
+//! Tags: the tab (focused = the active tab, unfocused = the inactive one).
+//! Adjusted to meet pardes's floors (chrome only; text, syntax and ANSI are untouched):
+//! - focused tag ground #2c2525 -> #514332: 1.00:1 off the unfocused #2c2525, pardes needs 1.5:1 on a dark page
+//! - unfocused tag text #948a8b -> #968c8d: 4.48:1 on #2c2525, tag text needs 4.5:1 to be read and run
+//! - rules between panes #211c1c -> #4d4747: 1.12:1 off the page, lifted toward the text to 1.6:1 (as colors.zig separatorOf does)
+//! - scroll thumb #433b3b -> #4b4242: 1.38:1 on its track #2c2525
+pub const theme = .{
+ .name = "monokai_pro_ristretto",
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Ristretto).json:1 colors."editor.background"
+ .bg = .{ 0x2c, 0x25, 0x25 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Ristretto).json:1 colors."editor.foreground"
+ .fg = .{ 0xff, 0xf1, 0xf3 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Ristretto).json:1 colors."editor.selectionBackground" #c3b7b826 over #2c2525
+ .sel_bg = .{ 0x43, 0x3b, 0x3b },
+ // the original keeps text colours over its selection; its text colour
+ .sel_fg = .{ 0xff, 0xf1, 0xf3 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Ristretto).json:1 colors."tab.inactiveBackground"
+ .tag_bg = .{ 0x2c, 0x25, 0x25 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Ristretto).json:1 colors."tab.inactiveForeground" #948a8b, adjusted
+ .tag_fg = .{ 0x96, 0x8c, 0x8d },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Ristretto).json:1 colors."tab.activeBackground" #2c2525, adjusted
+ .tag_active_bg = .{ 0x51, 0x43, 0x32 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Ristretto).json:1 colors."tab.activeForeground"
+ .tag_active_fg = .{ 0xf9, 0xcc, 0x6c },
+ // the focused grip: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Ristretto).json:1 colors."tab.activeBorder"
+ .box = .{ 0xf9, 0xcc, 0x6c },
+ // derived: the grip at rest, the accent #f9cc6c faded toward the unfocused tag #2c2525 as far as 1.6:1 off it (0.20 of the way)
+ .box_dim = .{ 0x55, 0x46, 0x33 },
+ // an unsaved grip: the original's modified colour, ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Ristretto).json:1 colors."editorGutter.modifiedBackground"
+ .box_dirty = .{ 0xf3, 0x8d, 0x70 },
+ // derived: the column grip, the original's type colour, ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Ristretto).json:1 tokenColors[42] "entity.name.type"
+ .column_box = .{ 0x85, 0xda, 0xcc },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Ristretto).json:1 tokenColors[57] "keyword"
+ .kw = .{ 0xfd, 0x68, 0x83 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Ristretto).json:1 tokenColors[132] "string"
+ .str = .{ 0xf9, 0xcc, 0x6c },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Ristretto).json:1 tokenColors[22] "constant.numeric"
+ .num = .{ 0xa8, 0xa9, 0xeb },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Ristretto).json:1 tokenColors[0] "comment"
+ .comment = .{ 0x72, 0x69, 0x6a },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Ristretto).json:1 colors."editorLineNumber.foreground"
+ .lineno = .{ 0x5b, 0x53, 0x53 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Ristretto).json:1 colors."editorLineNumber.activeForeground"
+ .lineno_active = .{ 0xc3, 0xb7, 0xb8 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Ristretto).json:1 no scrollbar.background: the editor shows through
+ .scroll_track = .{ 0x2c, 0x25, 0x25 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Ristretto).json:1 colors."scrollbarSlider.background" #c3b7b826 over #2c2525 #433b3b, adjusted
+ .scroll_thumb = .{ 0x4b, 0x42, 0x42 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Ristretto).json:1 colors."editorGroup.border" #211c1c, adjusted
+ .border = .{ 0x4d, 0x47, 0x47 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Ristretto).json:1 colors."editor.findMatchBackground" #fff1f326 over #2c2525
+ .search_bg = .{ 0x4b, 0x43, 0x44 },
+ // derived: the original keeps text colours over a match; the page's text, whichever reads better on it
+ .search_fg = .{ 0xff, 0xf1, 0xf3 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Ristretto).json:1 colors."editorError.foreground"
+ .diagnostic_error = .{ 0xfd, 0x68, 0x83 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Ristretto).json:1 colors."editorWarning.foreground"
+ .diagnostic_warning = .{ 0xf3, 0x8d, 0x70 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Ristretto).json:1 colors."editorInfo.foreground"
+ .diagnostic_info = .{ 0x85, 0xda, 0xcc },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Ristretto).json:1 colors."editorHint.foreground"
+ .diagnostic_hint = .{ 0xa8, 0xa9, 0xeb },
+ .palette = .{
+ .{ 0x40, 0x38, 0x38 }, // 0: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Ristretto).json:1 colors."terminal.ansiBlack"
+ .{ 0xfd, 0x68, 0x83 }, // 1: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Ristretto).json:1 colors."terminal.ansiRed"
+ .{ 0xad, 0xda, 0x78 }, // 2: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Ristretto).json:1 colors."terminal.ansiGreen"
+ .{ 0xf9, 0xcc, 0x6c }, // 3: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Ristretto).json:1 colors."terminal.ansiYellow"
+ .{ 0xf3, 0x8d, 0x70 }, // 4: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Ristretto).json:1 colors."terminal.ansiBlue"
+ .{ 0xa8, 0xa9, 0xeb }, // 5: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Ristretto).json:1 colors."terminal.ansiMagenta"
+ .{ 0x85, 0xda, 0xcc }, // 6: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Ristretto).json:1 colors."terminal.ansiCyan"
+ .{ 0xff, 0xf1, 0xf3 }, // 7: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Ristretto).json:1 colors."terminal.ansiWhite"
+ .{ 0x72, 0x69, 0x6a }, // 8: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Ristretto).json:1 colors."terminal.ansiBrightBlack"
+ .{ 0xfd, 0x68, 0x83 }, // 9: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Ristretto).json:1 colors."terminal.ansiBrightRed"
+ .{ 0xad, 0xda, 0x78 }, // 10: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Ristretto).json:1 colors."terminal.ansiBrightGreen"
+ .{ 0xf9, 0xcc, 0x6c }, // 11: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Ristretto).json:1 colors."terminal.ansiBrightYellow"
+ .{ 0xf3, 0x8d, 0x70 }, // 12: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Ristretto).json:1 colors."terminal.ansiBrightBlue"
+ .{ 0xa8, 0xa9, 0xeb }, // 13: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Ristretto).json:1 colors."terminal.ansiBrightMagenta"
+ .{ 0x85, 0xda, 0xcc }, // 14: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Ristretto).json:1 colors."terminal.ansiBrightCyan"
+ .{ 0xff, 0xf1, 0xf3 }, // 15: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Ristretto).json:1 colors."terminal.ansiBrightWhite"
+ },
+};
diff --git a/src/themes/monokai_pro_spectrum.zig b/src/themes/monokai_pro_spectrum.zig
new file mode 100644
index 00000000..3abd67ee
--- /dev/null
+++ b/src/themes/monokai_pro_spectrum.zig
@@ -0,0 +1,85 @@
+//! Monokai Pro (Filter Spectrum): Monokai Pro, as close to the original as pardes can draw it.
+//! Every value is the original's own, cited on its line (path:line key); the
+//! chrome pardes needs and the original lacks is derived from its palette.
+//! Sources:
+//! Monokai Pro for VS Code 2.0.15, published by Wimer Hazenberg (Monokai), verified on Open VSX; url https://open-vsx.org/api/monokai/theme-monokai-pro-vscode/2.0.15/file/monokai.theme-monokai-pro-vscode-2.0.15.vsix; genizah ~/05-genizah/monokai-pro-vscode/vsix/extension/themes
+//! Tags: the tab (focused = the active tab, unfocused = the inactive one).
+//! Adjusted to meet pardes's floors (chrome only; text, syntax and ANSI are untouched):
+//! - focused tag ground #222222 -> #45412d: 1.00:1 off the unfocused #222222, pardes needs 1.5:1 on a dark page
+//! - rules between panes #191919 -> #454447: 1.11:1 off the page, lifted toward the text to 1.6:1 (as colors.zig separatorOf does)
+//! - scroll thumb #39383a -> #413f42: 1.36:1 on its track #222222
+pub const theme = .{
+ .name = "monokai_pro_spectrum",
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Spectrum).json:1 colors."editor.background"
+ .bg = .{ 0x22, 0x22, 0x22 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Spectrum).json:1 colors."editor.foreground"
+ .fg = .{ 0xf7, 0xf1, 0xff },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Spectrum).json:1 colors."editor.selectionBackground" #bab6c026 over #222222
+ .sel_bg = .{ 0x39, 0x38, 0x3a },
+ // the original keeps text colours over its selection; its text colour
+ .sel_fg = .{ 0xf7, 0xf1, 0xff },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Spectrum).json:1 colors."tab.inactiveBackground"
+ .tag_bg = .{ 0x22, 0x22, 0x22 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Spectrum).json:1 colors."tab.inactiveForeground"
+ .tag_fg = .{ 0x8b, 0x88, 0x8f },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Spectrum).json:1 colors."tab.activeBackground" #222222, adjusted
+ .tag_active_bg = .{ 0x45, 0x41, 0x2d },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Spectrum).json:1 colors."tab.activeForeground"
+ .tag_active_fg = .{ 0xfc, 0xe5, 0x66 },
+ // the focused grip: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Spectrum).json:1 colors."tab.activeBorder"
+ .box = .{ 0xfc, 0xe5, 0x66 },
+ // derived: the grip at rest, the accent #fce566 faded toward the unfocused tag #222222 as far as 1.6:1 off it (0.18 of the way)
+ .box_dim = .{ 0x49, 0x45, 0x2e },
+ // an unsaved grip: the original's modified colour, ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Spectrum).json:1 colors."editorGutter.modifiedBackground"
+ .box_dirty = .{ 0xfd, 0x93, 0x53 },
+ // derived: the column grip, the original's type colour, ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Spectrum).json:1 tokenColors[42] "entity.name.type"
+ .column_box = .{ 0x5a, 0xd4, 0xe6 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Spectrum).json:1 tokenColors[57] "keyword"
+ .kw = .{ 0xfc, 0x61, 0x8d },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Spectrum).json:1 tokenColors[132] "string"
+ .str = .{ 0xfc, 0xe5, 0x66 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Spectrum).json:1 tokenColors[22] "constant.numeric"
+ .num = .{ 0x94, 0x8a, 0xe3 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Spectrum).json:1 tokenColors[0] "comment"
+ .comment = .{ 0x69, 0x67, 0x6c },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Spectrum).json:1 colors."editorLineNumber.foreground"
+ .lineno = .{ 0x52, 0x50, 0x53 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Spectrum).json:1 colors."editorLineNumber.activeForeground"
+ .lineno_active = .{ 0xba, 0xb6, 0xc0 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Spectrum).json:1 no scrollbar.background: the editor shows through
+ .scroll_track = .{ 0x22, 0x22, 0x22 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Spectrum).json:1 colors."scrollbarSlider.background" #bab6c026 over #222222 #39383a, adjusted
+ .scroll_thumb = .{ 0x41, 0x3f, 0x42 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Spectrum).json:1 colors."editorGroup.border" #191919, adjusted
+ .border = .{ 0x45, 0x44, 0x47 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Spectrum).json:1 colors."editor.findMatchBackground" #f7f1ff26 over #222222
+ .search_bg = .{ 0x42, 0x41, 0x43 },
+ // derived: the original keeps text colours over a match; the page's text, whichever reads better on it
+ .search_fg = .{ 0xf7, 0xf1, 0xff },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Spectrum).json:1 colors."editorError.foreground"
+ .diagnostic_error = .{ 0xfc, 0x61, 0x8d },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Spectrum).json:1 colors."editorWarning.foreground"
+ .diagnostic_warning = .{ 0xfd, 0x93, 0x53 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Spectrum).json:1 colors."editorInfo.foreground"
+ .diagnostic_info = .{ 0x5a, 0xd4, 0xe6 },
+ // ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Spectrum).json:1 colors."editorHint.foreground"
+ .diagnostic_hint = .{ 0x94, 0x8a, 0xe3 },
+ .palette = .{
+ .{ 0x36, 0x35, 0x37 }, // 0: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Spectrum).json:1 colors."terminal.ansiBlack"
+ .{ 0xfc, 0x61, 0x8d }, // 1: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Spectrum).json:1 colors."terminal.ansiRed"
+ .{ 0x7b, 0xd8, 0x8f }, // 2: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Spectrum).json:1 colors."terminal.ansiGreen"
+ .{ 0xfc, 0xe5, 0x66 }, // 3: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Spectrum).json:1 colors."terminal.ansiYellow"
+ .{ 0xfd, 0x93, 0x53 }, // 4: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Spectrum).json:1 colors."terminal.ansiBlue"
+ .{ 0x94, 0x8a, 0xe3 }, // 5: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Spectrum).json:1 colors."terminal.ansiMagenta"
+ .{ 0x5a, 0xd4, 0xe6 }, // 6: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Spectrum).json:1 colors."terminal.ansiCyan"
+ .{ 0xf7, 0xf1, 0xff }, // 7: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Spectrum).json:1 colors."terminal.ansiWhite"
+ .{ 0x69, 0x67, 0x6c }, // 8: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Spectrum).json:1 colors."terminal.ansiBrightBlack"
+ .{ 0xfc, 0x61, 0x8d }, // 9: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Spectrum).json:1 colors."terminal.ansiBrightRed"
+ .{ 0x7b, 0xd8, 0x8f }, // 10: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Spectrum).json:1 colors."terminal.ansiBrightGreen"
+ .{ 0xfc, 0xe5, 0x66 }, // 11: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Spectrum).json:1 colors."terminal.ansiBrightYellow"
+ .{ 0xfd, 0x93, 0x53 }, // 12: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Spectrum).json:1 colors."terminal.ansiBrightBlue"
+ .{ 0x94, 0x8a, 0xe3 }, // 13: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Spectrum).json:1 colors."terminal.ansiBrightMagenta"
+ .{ 0x5a, 0xd4, 0xe6 }, // 14: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Spectrum).json:1 colors."terminal.ansiBrightCyan"
+ .{ 0xf7, 0xf1, 0xff }, // 15: ~/05-genizah/monokai-pro-vscode/vsix/extension/themes/Monokai Pro (Filter Spectrum).json:1 colors."terminal.ansiBrightWhite"
+ },
+};