spitewaste 0.1.001

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +8 -0
  3. data/README.md +55 -0
  4. data/Rakefile +10 -0
  5. data/TUTORIAL.md +125 -0
  6. data/bin/spw +10 -0
  7. data/demo/factorial-nicespace.png +0 -0
  8. data/demo/factorial.asm +47 -0
  9. data/demo/factorial.png +0 -0
  10. data/demo/factorial.wsa +5 -0
  11. data/lib/spitewaste.rb +35 -0
  12. data/lib/spitewaste/assembler.rb +56 -0
  13. data/lib/spitewaste/cli.rb +51 -0
  14. data/lib/spitewaste/cli/asm.rb +10 -0
  15. data/lib/spitewaste/cli/compile.rb +60 -0
  16. data/lib/spitewaste/cli/convert.rb +53 -0
  17. data/lib/spitewaste/cli/exec.rb +43 -0
  18. data/lib/spitewaste/cli/image.rb +53 -0
  19. data/lib/spitewaste/emitter.rb +10 -0
  20. data/lib/spitewaste/emitters/assembly.rb +7 -0
  21. data/lib/spitewaste/emitters/codegen.rb +72 -0
  22. data/lib/spitewaste/emitters/image.rb +135 -0
  23. data/lib/spitewaste/emitters/linefeed.png +0 -0
  24. data/lib/spitewaste/emitters/schemes.yaml +1143 -0
  25. data/lib/spitewaste/emitters/whitespace.rb +14 -0
  26. data/lib/spitewaste/emitters/wsassembly.rb +7 -0
  27. data/lib/spitewaste/libspw/array.spw +82 -0
  28. data/lib/spitewaste/libspw/bits.spw +72 -0
  29. data/lib/spitewaste/libspw/case.spw +32 -0
  30. data/lib/spitewaste/libspw/fun.spw +42 -0
  31. data/lib/spitewaste/libspw/io.spw +39 -0
  32. data/lib/spitewaste/libspw/math.spw +117 -0
  33. data/lib/spitewaste/libspw/prime.spw +46 -0
  34. data/lib/spitewaste/libspw/random.spw +10 -0
  35. data/lib/spitewaste/libspw/stack.spw +84 -0
  36. data/lib/spitewaste/libspw/string.spw +233 -0
  37. data/lib/spitewaste/libspw/syntax.spw +2 -0
  38. data/lib/spitewaste/libspw/test.spw +8 -0
  39. data/lib/spitewaste/libspw/util.spw +98 -0
  40. data/lib/spitewaste/parsers/assembly.rb +35 -0
  41. data/lib/spitewaste/parsers/fucktional.rb +72 -0
  42. data/lib/spitewaste/parsers/spitewaste.rb +192 -0
  43. data/lib/spitewaste/parsers/whitespace.rb +60 -0
  44. data/lib/spitewaste/version.rb +3 -0
  45. data/spitewaste.gemspec +17 -0
  46. metadata +88 -0
@@ -0,0 +1,53 @@
1
+ class SpitewasteCLI
2
+ desc 'convert [OPTIONS] INPUT OUTPUT',
3
+ 'Convert a Whitespace program from one format to another.'
4
+ long_desc <<DESC
5
+ OUTFMT is one of:
6
+  {ws, whitespace} for Whitespace
7
+  {wsa, wsassembly} for Whitespace assembly (preprocessed Spitewaste)
8
+  {asm, assembly} for straight-line Whitespace opcodes
9
+  {cpp, codegen} for C++ (no compilation)
10
+ defaults to the extension of OUTPUT
11
+ DESC
12
+
13
+ option :output_format,
14
+ banner: 'OUTFMT',
15
+ desc: 'the format to convert the input to',
16
+ aliases: '-o'
17
+
18
+ option :symbol_file,
19
+ banner: 'FILE',
20
+ desc: 'a file to write the symbol table to (intended for use by other tools, namely Spiceweight)
21
+ - use % to write to $HOME/.cache/spitewaste directory, where Spiceweight knows to look',
22
+ aliases: '-s'
23
+
24
+ def convert input = '/dev/stdin', output = '/dev/stdout'
25
+ ext = File.extname output
26
+ Kernel.exec 'spw', 'image', input, output if ext == '.png'
27
+ fmt = SpitewasteCLI.validate_format options
28
+
29
+ valid_outputs = %i[ws whitespace
30
+ wsa wsassembly
31
+ asm assembly
32
+ cpp codegen]
33
+ if out_fmt = options[:output_format]&.to_sym and !valid_outputs.include?(out_fmt)
34
+ raise ArgumentError, "invalid output format '#{out_fmt}'", []
35
+ end
36
+
37
+ ext_map = {
38
+ '.ws' => :whitespace,
39
+ '.wsa' => :wsassembly,
40
+ '.asm' => :assembly,
41
+ '.cpp' => :codegen}
42
+ out_fmt = Hash[*valid_outputs][out_fmt] || ext_map[ext]
43
+ raise ArgumentError, "can't determine output format", [] unless out_fmt
44
+
45
+ opts = options.dup # options is frozen
46
+ if opts[:symbol_file] == '%'
47
+ opts[:symbol_file] = SpitewasteCLI.make_cache_path input
48
+ end
49
+
50
+ as = Spitewaste::Assembler.new File.read(input), format: fmt, **opts
51
+ File.open(output, ?w) { |of| as.assemble! format: out_fmt, io: of }
52
+ end
53
+ end
@@ -0,0 +1,43 @@
1
+ require 'tempfile'
2
+
3
+ class SpitewasteCLI
4
+ desc 'exec [OPTIONS] FILE',
5
+ 'Execute a Whitespace program using the specified interpreter.'
6
+
7
+ option :interpreter,
8
+ desc: 'the command to execute for interpretation, with % in place of the filename',
9
+ banner: 'COMMAND',
10
+ default: 'ws %',
11
+ aliases: '-i'
12
+
13
+ option :symbol_file,
14
+ banner: 'FILE',
15
+ desc: 'a file to write the symbol table to (intended for use by other tools, namely Spiceweight)
16
+ - use % to write to $HOME/.cache/spitewaste directory, where Spiceweight knows to look',
17
+ aliases: '-s'
18
+
19
+ def exec file = '/dev/stdin'
20
+ fmt = SpitewasteCLI.validate_format options
21
+
22
+ raise LoadError, "No such file '#{file}'", [] unless File.exists? file
23
+
24
+ opts = options.dup # options is frozen
25
+ if opts[:symbol_file] == '%'
26
+ opts[:symbol_file] = SpitewasteCLI.make_cache_path file
27
+ end
28
+
29
+ path =
30
+ if File.extname(file) != '.ws'
31
+ io = Tempfile.new
32
+ as = Spitewaste::Assembler.new File.read(file), format: fmt, **opts
33
+ as.assemble! format: :whitespace, io: io
34
+ io.tap(&:close).path
35
+ else
36
+ file
37
+ end
38
+
39
+ cmd = options[:interpreter].split
40
+ cmd.map! { |c| c == '%' ? path : c }
41
+ Kernel.exec *cmd
42
+ end
43
+ end
@@ -0,0 +1,53 @@
1
+ class SpitewasteCLI
2
+ desc 'image [OPTIONS] INPUT OUTPUT', <<DESC
3
+ Generate a PNG file of syntax-highlighted Whitespace.
4
+
5
+ TODO:
6
+ more desc here
7
+ DESC
8
+
9
+ option :colors,
10
+ banner: 'scheme|FILE',
11
+ desc: 'colors to use to highlight instructions "semantically"',
12
+ aliases: '-c'
13
+
14
+ option :tab_width,
15
+ banner: 'SPACES',
16
+ desc: 'number of spaces that tabs should be displayed as (default: 4)',
17
+ type: :numeric,
18
+ aliases: '-t'
19
+
20
+ option :margin,
21
+ banner: 'PIXELS',
22
+ desc: 'amount of whitespace (😉) around the edge of the program (default: 20)',
23
+ type: :numeric,
24
+ aliases: '-m'
25
+
26
+ option :padding,
27
+ banner: 'PIXELS',
28
+ desc: 'amount of padding between individual elements of syntax (default: 1)',
29
+ type: :numeric,
30
+ aliases: '-p'
31
+
32
+ option :cell_size,
33
+ banner: 'PIXELS',
34
+ desc: 'height of individual cells; width will be half of this value (default: 24)',
35
+ type: :numeric,
36
+ aliases: '-s'
37
+
38
+ option :line_height,
39
+ banner: 'PIXELS',
40
+ desc: 'height of individual lines to influence vertical spacing (default: 28)',
41
+ type: :numeric,
42
+ aliases: '-l'
43
+
44
+ def image input, output = nil
45
+ fmt = SpitewasteCLI.validate_format options
46
+ output ||= Pathname.new(input).sub_ext '.png'
47
+
48
+ as = Spitewaste::Assembler.new File.read(input), format: fmt
49
+ File.open(output, ?w) { |of|
50
+ as.assemble! format: :image, io: of, **options.transform_keys(&:to_sym)
51
+ }
52
+ end
53
+ end
@@ -0,0 +1,10 @@
1
+ module Spitewaste
2
+ class Emitter
3
+ attr_reader :instructions, :options
4
+
5
+ def initialize instructions, **options
6
+ @instructions = instructions
7
+ @options = options
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,7 @@
1
+ module Spitewaste
2
+ class AssemblyEmitter < Emitter
3
+ def emit io:
4
+ io.puts instructions.map { (_1 * ' ').rstrip }
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,72 @@
1
+ module Spitewaste
2
+ # Despite my best efforts to torture it into something vaguely resembling a
3
+ # high-level language, Whitespace is quite simple at bottom; so much so that
4
+ # mapping almost all of its instructions to equivalent C++ code is a
5
+ # relatively straightforward endeavor, so long as we don't mind using goto.
6
+ #
7
+ # The only interesting aspect of this approach is how we go about calling
8
+ # into and returning from subroutines. A call instruction generates a goto
9
+ # to the label in its argument and a label immediately after that goto, whose
10
+ # address gets pushed onto a stack of "call sites". Naturally, a return
11
+ # instruction simply pops the address to jump to by way of a computed goto.
12
+ class CodegenEmitter < Emitter
13
+ def emit io:
14
+ io.puts <<CPP
15
+ #include <algorithm>
16
+ #include <iostream>
17
+ #include <map>
18
+ #include <stack>
19
+ #include <vector>
20
+ #include <gmpxx.h>
21
+
22
+ using namespace std;
23
+ typedef mpz_class num;
24
+
25
+ vector<num> S;
26
+ map<num, num> H;
27
+ stack<void *> C;
28
+ void *cs;
29
+ num n;
30
+
31
+ num pop() { num c = S.back(); S.pop_back(); return c; }
32
+
33
+ int main(void) {
34
+ CPP
35
+ cs = -1 # call site
36
+ instructions.each do |op, arg|
37
+ io.puts case op
38
+ when :push ; "S.push_back(#{arg});"
39
+ when :pop ; "pop();"
40
+ when :dup ; "S.push_back(S.back());"
41
+ when :swap ; "reverse(S.end() - 2, S.end());"
42
+ when :copy ; "S.push_back(S[S.size() - 1 - #{arg}]);"
43
+ when :slide ; "S.erase(S.end() - #{arg} - 1, S.end() - 1);"
44
+
45
+ when :add ; "S[S.size() - 2] += S.back(); S.pop_back();"
46
+ when :sub ; "S[S.size() - 2] -= S.back(); S.pop_back();"
47
+ when :mul ; "S[S.size() - 2] *= S.back(); S.pop_back();"
48
+ when :div ; "{ auto d = pop(); auto n = S.back().get_mpz_t();" +
49
+ "mpz_fdiv_q(n, n, d.get_mpz_t()); }"
50
+ when :mod ; "{ auto d = pop(); auto n = S.back().get_mpz_t();" +
51
+ "mpz_fdiv_r(n, n, d.get_mpz_t()); }"
52
+
53
+ when :label ; "L#{arg}:"
54
+ when :jump ; "goto L#{arg};"
55
+ when :jz ; "if (!pop()) goto L#{arg};"
56
+ when :jn ; "if (pop() < 0) goto L#{arg};"
57
+ when :call ; "C.push(&&C#{cs += 1}); goto L#{arg}; C#{cs}:"
58
+ when :ret ; "cs = C.top(); C.pop(); goto *cs;"
59
+ when :exit ; "goto done;"
60
+
61
+ when :ichr ; "H[pop()] = cin.get();"
62
+ when :inum ; "cin >> n; cin.ignore(); H[pop()] = n;"
63
+ when :ochr ; "cout << (char) pop().get_ui();"
64
+ when :onum ; "cout << pop();"
65
+ when :store ; "n = pop(); H[pop()] = n;"
66
+ when :load ; "S.push_back(H[pop()]);"
67
+ end
68
+ end
69
+ io.puts 'done: return S.size(); }' # punish dirty exit
70
+ end
71
+ end
72
+ end
@@ -0,0 +1,135 @@
1
+ require 'oily_png'
2
+ require 'stringio'
3
+ require 'yaml'
4
+
5
+ module Spitewaste
6
+ class ImageEmitter < Emitter
7
+ SCHEMES = YAML.load_file(File.join __dir__, 'schemes.yaml')['schemes']
8
+ LINEFEED = ChunkyPNG::Image.from_file File.join __dir__, 'linefeed.png'
9
+ DEFAULTS = {
10
+ colors: 'gruvbox_dark',
11
+ tab_width: 4, padding: 1, margin: 20,
12
+ cell_size: 24, line_height: 28
13
+ }
14
+
15
+ def emit io:
16
+ io.write generate_image
17
+ end
18
+
19
+ private
20
+
21
+ def generate_image
22
+ @options = DEFAULTS.merge options
23
+ line, padding, margin = @options.values_at :line_height, :padding, :margin
24
+ height = @options[:cell_size]
25
+ width = height / 2
26
+
27
+ img, rects = generate_rects
28
+ linefeeds = @palette[:bright].values.map { |c|
29
+ lf = LINEFEED # no need to dup; modify in-place then store resampled
30
+ lf.pixels.map! { |p| p == 0 ? 0 : c }
31
+ [c, lf.resample_bilinear(height, height / 2)]
32
+ }.to_h
33
+
34
+ rects.each do |x, y, x2, color|
35
+ if x2 # space or tab
36
+ img.rect x * width + margin,
37
+ y * line + margin,
38
+ x2 * width + margin - padding - 1,
39
+ y * line + height + margin - padding - 1,
40
+ color, color
41
+ else # draw fancy linefeed
42
+ img.compose! linefeeds[color],
43
+ x * width + margin + padding,
44
+ y * line + margin + height / 4
45
+ end
46
+ end
47
+
48
+ img
49
+ end
50
+
51
+ def generate_rects
52
+ # We need two representations of the program:
53
+ # - stream of ops/args to determine how to emit (colors, etc.)
54
+ # - Whitespace tokens (what to emit)
55
+ # We know `instructions` to be a valid instance of the first, so we just
56
+ # convert those to get the second rather than doing another parse + emit.
57
+ stream = instructions.flatten.compact
58
+ chunks = stream.map { |token|
59
+ OPERATORS_M2T[token] || WhitespaceEmitter.encode(token)
60
+ }
61
+
62
+ # Determine the size of the output image.
63
+ tw = @options[:tab_width]
64
+ lines = chunks.join.lines
65
+ rows = lines.size
66
+ cols = lines.map { |line|
67
+ line.size + tw.pred * line.count(?\t) + line.count(?\n)
68
+ }.max
69
+ width = cols * @options[:cell_size] / 2 + @options[:margin] * 2
70
+ height = rows * @options[:line_height] + @options[:margin] * 2
71
+
72
+ # Map palette colors to 32-bit values for ChunkyPNG.
73
+ @palette = generate_palette.transform_keys &:to_sym
74
+ %i[normal bright].each { |style|
75
+ @palette[style].transform_values!(&ImageEmitter.method(:parse_color))
76
+ }
77
+
78
+ img = ChunkyPNG::Image.new width, height, @palette[:primary]['background']
79
+ x = y = 0
80
+
81
+ rects = chunks.zip(stream).flat_map { |tokens, type|
82
+ tokens.chars.map { |token|
83
+ cx, cy = x, y
84
+ nx = case token
85
+ when ' ' ; x += 1 ; cx + 1
86
+ when ?\t ; x += tw ; cx + tw
87
+ when ?\n ; x, y = 0, y + 1 ; nil
88
+ end
89
+ [cx, cy, nx, color_for(token, type)]
90
+ }
91
+ }
92
+
93
+ [img, rects]
94
+ end
95
+
96
+ def generate_palette
97
+ scheme = @options[:colors]
98
+ palette = SCHEMES[scheme]
99
+ palette ||= if File.exists?(scheme)
100
+ YAML.load_file(scheme)['colors']
101
+ else
102
+ warn "can't load colorscheme #{scheme}; " +
103
+ "falling back to gruvbox_dark"
104
+ SCHEMES['gruvbox_dark']
105
+ end
106
+ {stack: 'blue', flow: 'red', math: 'green', heap: 'yellow',
107
+ io: 'yellow', calls: 'cyan', number: 'magenta'}.merge palette
108
+ end
109
+
110
+ INSN_GROUPS = {
111
+ stack: %i[push pop dup swap copy slide],
112
+ flow: %i[jump jz jn ret exit],
113
+ math: %i[add sub mul div mod],
114
+ heap: %i[store load],
115
+ io: %i[ichr inum ochr onum],
116
+ calls: %i[call label]
117
+ }.flat_map { |type, insns| insns.map { |i| [i, type] } }.to_h
118
+
119
+ def color_for token, type
120
+ colors = @palette[token == ?\t ? :normal : :bright]
121
+ type = :number if type.is_a? Integer
122
+ type = INSN_GROUPS[type] unless @palette[type]
123
+ colors[@palette[type]]
124
+ end
125
+
126
+ def self.parse_color color
127
+ case color
128
+ when Integer
129
+ color << 8 | 255
130
+ else
131
+ Integer(color) << 8 | 255
132
+ end
133
+ end
134
+ end
135
+ end
@@ -0,0 +1,1143 @@
1
+ schemes:
2
+ afterglow: &afterglow
3
+ primary:
4
+ background: '0x2c2c2c'
5
+ foreground: '0xd6d6d6'
6
+ dim_foreground: '0xdbdbdb'
7
+ bright_foreground: '0xd9d9d9'
8
+ dim_background: '0x202020' # not sure
9
+ bright_background: '0x3a3a3a' # not sure
10
+ cursor:
11
+ text: '0x2c2c2c'
12
+ cursor: '0xd9d9d9'
13
+ normal:
14
+ black: '0x1c1c1c'
15
+ red: '0xbc5653'
16
+ green: '0x909d63'
17
+ yellow: '0xebc17a'
18
+ blue: '0x7eaac7'
19
+ magenta: '0xaa6292'
20
+ cyan: '0x86d3ce'
21
+ white: '0xcacaca'
22
+ bright:
23
+ black: '0x636363'
24
+ red: '0xbc5653'
25
+ green: '0x909d63'
26
+ yellow: '0xebc17a'
27
+ blue: '0x7eaac7'
28
+ magenta: '0xaa6292'
29
+ cyan: '0x86d3ce'
30
+ white: '0xf7f7f7'
31
+ dim:
32
+ black: '0x232323'
33
+ red: '0x74423f'
34
+ green: '0x5e6547'
35
+ yellow: '0x8b7653'
36
+ blue: '0x556b79'
37
+ magenta: '0x6e4962'
38
+ cyan: '0x5c8482'
39
+ white: '0x828282'
40
+
41
+ argonaut: &argonaut
42
+ primary:
43
+ background: '0x292C3E'
44
+ foreground: '0xEBEBEB'
45
+ cursor:
46
+ text: '0xFF261E'
47
+ cursor: '0xFF261E'
48
+ normal:
49
+ black: '0x0d0d0d'
50
+ red: '0xFF301B'
51
+ green: '0xA0E521'
52
+ yellow: '0xFFC620'
53
+ blue: '0x1BA6FA'
54
+ magenta: '0x8763B8'
55
+ cyan: '0x21DEEF'
56
+ white: '0xEBEBEB'
57
+ bright:
58
+ black: '0x6D7070'
59
+ red: '0xFF4352'
60
+ green: '0xB8E466'
61
+ yellow: '0xFFD750'
62
+ blue: '0x1BA6FA'
63
+ magenta: '0xA578EA'
64
+ cyan: '0x73FBF1'
65
+ white: '0xFEFEF8'
66
+
67
+ ayu_dark: &ayu_dark
68
+ primary:
69
+ background: '0x0A0E14'
70
+ foreground: '0xB3B1AD'
71
+ normal:
72
+ black: '0x01060E'
73
+ red: '0xEA6C73'
74
+ green: '0x91B362'
75
+ yellow: '0xF9AF4F'
76
+ blue: '0x53BDFA'
77
+ magenta: '0xFAE994'
78
+ cyan: '0x90E1C6'
79
+ white: '0xC7C7C7'
80
+ bright:
81
+ black: '0x686868'
82
+ red: '0xF07178'
83
+ green: '0xC2D94C'
84
+ yellow: '0xFFB454'
85
+ blue: '0x59C2FF'
86
+ magenta: '0xFFEE99'
87
+ cyan: '0x95E6CB'
88
+ white: '0xFFFFFF'
89
+
90
+ base16_dark: &base16_dark
91
+ primary:
92
+ background: '0x181818'
93
+ foreground: '0xd8d8d8'
94
+ cursor:
95
+ text: '0xd8d8d8'
96
+ cursor: '0xd8d8d8'
97
+ normal:
98
+ black: '0x181818'
99
+ red: '0xab4642'
100
+ green: '0xa1b56c'
101
+ yellow: '0xf7ca88'
102
+ blue: '0x7cafc2'
103
+ magenta: '0xba8baf'
104
+ cyan: '0x86c1b9'
105
+ white: '0xd8d8d8'
106
+ bright:
107
+ black: '0x585858'
108
+ red: '0xab4642'
109
+ green: '0xa1b56c'
110
+ yellow: '0xf7ca88'
111
+ blue: '0x7cafc2'
112
+ magenta: '0xba8baf'
113
+ cyan: '0x86c1b9'
114
+ white: '0xf8f8f8'
115
+
116
+ blood_moon: &blood_moon
117
+ primary:
118
+ background: '0x10100E'
119
+ foreground: '0xC6C6C4'
120
+ normal:
121
+ black: '0x10100E'
122
+ red: '0xC40233'
123
+ green: '0x009F6B'
124
+ yellow: '0xFFD700'
125
+ blue: '0x0087BD'
126
+ magenta: '0x9A4EAE'
127
+ cyan: '0x20B2AA'
128
+ white: '0xC6C6C4'
129
+ bright:
130
+ black: '0x696969'
131
+ red: '0xFF2400'
132
+ green: '0x03C03C'
133
+ yellow: '0xFDFF00'
134
+ blue: '0x007FFF'
135
+ magenta: '0xFF1493'
136
+ cyan: '0x00CCCC'
137
+ white: '0xFFFAFA'
138
+
139
+ breeze: &breeze
140
+ primary:
141
+ background: '0x232627'
142
+ foreground: '0xfcfcfc'
143
+ dim_foreground: '0xeff0f1'
144
+ bright_foreground: '0xffffff'
145
+ dim_background: '0x31363b'
146
+ bright_background: '0x000000'
147
+ normal:
148
+ black: '0x232627'
149
+ red: '0xed1515'
150
+ green: '0x11d116'
151
+ yellow: '0xf67400'
152
+ blue: '0x1d99f3'
153
+ magenta: '0x9b59b6'
154
+ cyan: '0x1abc9c'
155
+ white: '0xfcfcfc'
156
+ bright:
157
+ black: '0x7f8c8d'
158
+ red: '0xc0392b'
159
+ green: '0x1cdc9a'
160
+ yellow: '0xfdbc4b'
161
+ blue: '0x3daee9'
162
+ magenta: '0x8e44ad'
163
+ cyan: '0x16a085'
164
+ white: '0xffffff'
165
+ dim:
166
+ black: '0x31363b'
167
+ red: '0x783228'
168
+ green: '0x17a262'
169
+ yellow: '0xb65619'
170
+ blue: '0x1b668f'
171
+ magenta: '0x614a73'
172
+ cyan: '0x186c60'
173
+ white: '0x63686d'
174
+
175
+ campbell: &campbell
176
+ primary:
177
+ background: '0x0c0c0c'
178
+ foreground: '0xcccccc'
179
+ normal:
180
+ black: '0x0c0c0c'
181
+ red: '0xc50f1f'
182
+ green: '0x13a10e'
183
+ yellow: '0xc19c00'
184
+ blue: '0x0037da'
185
+ magenta: '0x881798'
186
+ cyan: '0x3a96dd'
187
+ white: '0xcccccc'
188
+ bright:
189
+ black: '0x767676'
190
+ red: '0xe74856'
191
+ green: '0x16c60c'
192
+ yellow: '0xf9f1a5'
193
+ blue: '0x3b78ff'
194
+ magenta: '0xb4009e'
195
+ cyan: '0x61d6d6'
196
+ white: '0xf2f2f2'
197
+
198
+ challenger_deep: &challenger_deep
199
+ primary:
200
+ background: '0x1e1c31'
201
+ foreground: '0xcbe1e7'
202
+ cursor:
203
+ text: '0xff271d'
204
+ cursor: '0xfbfcfc'
205
+ normal:
206
+ black: '0x141228'
207
+ red: '0xff5458'
208
+ green: '0x62d196'
209
+ yellow: '0xffb378'
210
+ blue: '0x65b2ff'
211
+ magenta: '0x906cff'
212
+ cyan: '0x63f2f1'
213
+ white: '0xa6b3cc'
214
+ bright:
215
+ black: '0x565575'
216
+ red: '0xff8080'
217
+ green: '0x95ffa4'
218
+ yellow: '0xffe9aa'
219
+ blue: '0x91ddff'
220
+ magenta: '0xc991e1'
221
+ cyan: '0xaaffe4'
222
+ white: '0xcbe3e7'
223
+
224
+ Cobalt2: &Cobalt2
225
+ primary:
226
+ background: '0x122637'
227
+ foreground: '0xffffff'
228
+ cursor:
229
+ text: '0x122637'
230
+ cursor: '0xf0cb09'
231
+ normal:
232
+ black: '0x000000'
233
+ red: '0xff0000'
234
+ green: '0x37dd21'
235
+ yellow: '0xfee409'
236
+ blue: '0x1460d2'
237
+ magenta: '0xff005d'
238
+ cyan: '0x00bbbb'
239
+ white: '0xbbbbbb'
240
+ bright:
241
+ black: '0x545454'
242
+ red: '0xf40d17'
243
+ green: '0x3bcf1d'
244
+ yellow: '0xecc809'
245
+ blue: '0x5555ff'
246
+ magenta: '0xff55ff'
247
+ cyan: '0x6ae3f9'
248
+ white: '0xffffff'
249
+
250
+ cyber_punk_neon: &cyber_punk_neon
251
+ primary:
252
+ background: "0x000b1e"
253
+ foreground: "0x0abdc6"
254
+ cursor:
255
+ text: "0x000b1e"
256
+ cursor: "0x0abdc6"
257
+ normal:
258
+ black: "0x123e7c"
259
+ red: "0xff0000"
260
+ green: "0xd300c4"
261
+ yellow: "0xf57800"
262
+ blue: "0x123e7c"
263
+ magenta: "0x711c91"
264
+ cyan: "0x0abdc6"
265
+ white: "0xd7d7d5"
266
+ bright:
267
+ black: "0x1c61c2"
268
+ red: "0xff0000"
269
+ green: "0xd300c4"
270
+ yellow: "0xf57800"
271
+ blue: "0x00ff00"
272
+ magenta: "0x711c91"
273
+ cyan: "0x0abdc6"
274
+ white: "0xd7d7d5"
275
+
276
+ darcula: &darcula
277
+ primary:
278
+ background: '0x282a36'
279
+ foreground: '0xf8f8f2'
280
+ normal:
281
+ black: '0x000000'
282
+ red: '0xff5555'
283
+ green: '0x50fa7b'
284
+ yellow: '0xf1fa8c'
285
+ blue: '0xcaa9fa'
286
+ magenta: '0xff79c6'
287
+ cyan: '0x8be9fd'
288
+ white: '0xbfbfbf'
289
+ bright:
290
+ black: '0x282a35'
291
+ red: '0xff6e67'
292
+ green: '0x5af78e'
293
+ yellow: '0xf4f99d'
294
+ blue: '0xcaa9fa'
295
+ magenta: '0xff92d0'
296
+ cyan: '0x9aedfe'
297
+ white: '0xe6e6e6'
298
+
299
+ dark_pastels: &dark_pastels
300
+ primary:
301
+ background: '0x2C2C2C'
302
+ foreground: '0xDCDCCC'
303
+ normal:
304
+ black: '0x3F3F3F'
305
+ red: '0x705050'
306
+ green: '0x60B48A'
307
+ yellow: '0xDFAF8F'
308
+ blue: '0x9AB8D7'
309
+ magenta: '0xDC8CC3'
310
+ cyan: '0x8CD0D3'
311
+ white: '0xDCDCCC'
312
+ bright:
313
+ black: '0x709080'
314
+ red: '0xDCA3A3'
315
+ green: '0x72D5A3'
316
+ yellow: '0xF0DFAF'
317
+ blue: '0x94BFF3'
318
+ magenta: '0xEC93D3'
319
+ cyan: '0x93E0E3'
320
+ white: '0xFFFFFF'
321
+
322
+ doom_one: &doom_one
323
+ primary:
324
+ background: '0x282c34'
325
+ foreground: '0xbbc2cf'
326
+ normal:
327
+ black: '0x282c34'
328
+ red: '0xff6c6b'
329
+ green: '0x98be65'
330
+ yellow: '0xecbe7b'
331
+ blue: '0x51afef'
332
+ magenta: '0xc678dd'
333
+ cyan: '0x46d9ff'
334
+ white: '0xbbc2cf'
335
+
336
+ dracula: &dracula
337
+ primary:
338
+ background: '0x282a36'
339
+ foreground: '0xf8f8f2'
340
+ normal:
341
+ black: '0x000000'
342
+ red: '0xff5555'
343
+ green: '0x50fa7b'
344
+ yellow: '0xf1fa8c'
345
+ blue: '0xbd93f9'
346
+ magenta: '0xff79c6'
347
+ cyan: '0x8be9fd'
348
+ white: '0xbbbbbb'
349
+ bright:
350
+ black: '0x555555'
351
+ red: '0xff5555'
352
+ green: '0x50fa7b'
353
+ yellow: '0xf1fa8c'
354
+ blue: '0xcaa9fa'
355
+ magenta: '0xff79c6'
356
+ cyan: '0x8be9fd'
357
+ white: '0xffffff'
358
+
359
+ falcon: &falcon
360
+ primary:
361
+ background: '0x020221'
362
+ foreground: '0xb4b4b9'
363
+ cursor:
364
+ text: '0x020221'
365
+ cursor: '0xffe8c0'
366
+ normal:
367
+ black: '0x000004'
368
+ red: '0xff3600'
369
+ green: '0x718e3f'
370
+ yellow: '0xffc552'
371
+ blue: '0x635196'
372
+ magenta: '0xff761a'
373
+ cyan: '0x34bfa4'
374
+ white: '0xb4b4b9'
375
+ bright:
376
+ black: '0x020221'
377
+ red: '0xff8e78'
378
+ green: '0xb1bf75'
379
+ yellow: '0xffd392'
380
+ blue: '0x99a4bc'
381
+ magenta: '0xffb07b'
382
+ cyan: '0x8bccbf'
383
+ white: '0xf8f8ff'
384
+
385
+ flat_remix: &flat_remix
386
+ primary:
387
+ background: '0x272a34'
388
+ foreground: '0xFFFFFF'
389
+ normal:
390
+ black: '0x1F2229'
391
+ red: '0xEC0101'
392
+ green: '0x47D4B9'
393
+ yellow: '0xFF8A18'
394
+ blue: '0x277FFF'
395
+ magenta: '0xD71655'
396
+ cyan: '0x05A1F7'
397
+ white: '0xFFFFFF'
398
+ bright:
399
+ black: '0x1F2229'
400
+ red: '0xD41919'
401
+ green: '0x5EBDAB'
402
+ yellow: '0xFEA44C'
403
+ blue: '0x367bf0'
404
+ magenta: '0xBF2E5D'
405
+ cyan: '0x49AEE6'
406
+ white: '0xFFFFFF'
407
+
408
+ gotham: &gotham
409
+ primary:
410
+ background: '0x0a0f14'
411
+ foreground: '0x98d1ce'
412
+ normal:
413
+ black: '0x0a0f14'
414
+ red: '0xc33027'
415
+ green: '0x26a98b'
416
+ yellow: '0xedb54b'
417
+ blue: '0x195465'
418
+ magenta: '0x4e5165'
419
+ cyan: '0x33859d'
420
+ white: '0x98d1ce'
421
+ bright:
422
+ black: '0x10151b'
423
+ red: '0xd26939'
424
+ green: '0x081f2d'
425
+ yellow: '0x245361'
426
+ blue: '0x093748'
427
+ magenta: '0x888ba5'
428
+ cyan: '0x599caa'
429
+ white: '0xd3ebe9'
430
+
431
+ gruvbox_dark: &gruvbox_dark
432
+ primary:
433
+ # hard contrast: background = '0x1d2021'
434
+ background: '0x282828'
435
+ # soft contrast: background = '0x32302f'
436
+ foreground: '0xebdbb2'
437
+ normal:
438
+ black: '0x282828'
439
+ red: '0xcc241d'
440
+ green: '0x98971a'
441
+ yellow: '0xd79921'
442
+ blue: '0x458588'
443
+ magenta: '0xb16286'
444
+ cyan: '0x689d6a'
445
+ white: '0xa89984'
446
+ bright:
447
+ black: '0x928374'
448
+ red: '0xfb4934'
449
+ green: '0xb8bb26'
450
+ yellow: '0xfabd2f'
451
+ blue: '0x83a598'
452
+ magenta: '0xd3869b'
453
+ cyan: '0x8ec07c'
454
+ white: '0xebdbb2'
455
+
456
+ gruvbox_light: &gruvbox_light
457
+ primary:
458
+ # hard contrast: background = '0xf9f5d7'
459
+ background: '0xfbf1c7'
460
+ # soft contrast: background = '0xf2e5bc'
461
+ foreground: '0x3c3836'
462
+ normal:
463
+ black: '0xfbf1c7'
464
+ red: '0xcc241d'
465
+ green: '0x98971a'
466
+ yellow: '0xd79921'
467
+ blue: '0x458588'
468
+ magenta: '0xb16286'
469
+ cyan: '0x689d6a'
470
+ white: '0x7c6f64'
471
+ bright:
472
+ black: '0x928374'
473
+ red: '0x9d0006'
474
+ green: '0x79740e'
475
+ yellow: '0xb57614'
476
+ blue: '0x076678'
477
+ magenta: '0x8f3f71'
478
+ cyan: '0x427b58'
479
+ white: '0x3c3836'
480
+
481
+ gruvbox_material: &gruvbox_material
482
+ primary:
483
+ background: '0x282828'
484
+ foreground: '0xdfbf8e'
485
+ normal:
486
+ black: '0x665c54'
487
+ red: '0xea6962'
488
+ green: '0xa9b665'
489
+ yellow: '0xe78a4e'
490
+ blue: '0x7daea3'
491
+ magenta: '0xd3869b'
492
+ cyan: '0x89b482'
493
+ white: '0xdfbf8e'
494
+ bright:
495
+ black: '0x928374'
496
+ red: '0xea6962'
497
+ green: '0xa9b665'
498
+ yellow: '0xe3a84e'
499
+ blue: '0x7daea3'
500
+ magenta: '0xd3869b'
501
+ cyan: '0x89b482'
502
+ white: '0xdfbf8e'
503
+
504
+ high_contrast: &high_contrast
505
+ primary:
506
+ background: '0x444444'
507
+ foreground: '0xdddddd'
508
+ cursor:
509
+ text: '0xaaaaaa'
510
+ cursor: '0xffffff'
511
+ normal:
512
+ black: '0x000000'
513
+ red: '0xff0000'
514
+ green: '0x00ff00'
515
+ yellow: '0xffff00'
516
+ blue: '0x0000ff'
517
+ magenta: '0xff00ff'
518
+ cyan: '0x00ffff'
519
+ white: '0xffffff'
520
+ bright:
521
+ black: '0x000000'
522
+ red: '0xff0000'
523
+ green: '0x00ff00'
524
+ yellow: '0xffff00'
525
+ blue: '0x0000ff'
526
+ magenta: '0xff00ff'
527
+ cyan: '0x00ffff'
528
+ white: '0xffffff'
529
+
530
+ horizon-dark: &horizon-dark
531
+ primary:
532
+ background: '0x1c1e26'
533
+ foreground: '0xe0e0e0'
534
+ normal:
535
+ black: '0x16161c'
536
+ red: '0xe95678'
537
+ green: '0x29d398'
538
+ yellow: '0xfab795'
539
+ blue: '0x26bbd9'
540
+ magenta: '0xee64ac'
541
+ cyan: '0x59e1e3'
542
+ white: '0xd5d8da'
543
+ bright:
544
+ black: '0x5b5858'
545
+ red: '0xec6a88'
546
+ green: '0x3fdaa4'
547
+ yellow: '0xfbc3a7'
548
+ blue: '0x3fc4de'
549
+ magenta: '0xf075b5'
550
+ cyan: '0x6be4e6'
551
+ white: '0xd5d8da'
552
+
553
+ hyper: &hyper
554
+ primary:
555
+ background: '0x000000'
556
+ foreground: '0xffffff'
557
+ cursor:
558
+ text: '0xF81CE5'
559
+ cursor: '0xffffff'
560
+ normal:
561
+ black: '0x000000'
562
+ red: '0xfe0100'
563
+ green: '0x33ff00'
564
+ yellow: '0xfeff00'
565
+ blue: '0x0066ff'
566
+ magenta: '0xcc00ff'
567
+ cyan: '0x00ffff'
568
+ white: '0xd0d0d0'
569
+ bright:
570
+ black: '0x808080'
571
+ red: '0xfe0100'
572
+ green: '0x33ff00'
573
+ yellow: '0xfeff00'
574
+ blue: '0x0066ff'
575
+ magenta: '0xcc00ff'
576
+ cyan: '0x00ffff'
577
+ white: '0xFFFFFF'
578
+
579
+ iterm_default: &iterm_default
580
+ primary:
581
+ background: '0x101421'
582
+ foreground: '0xfffbf6'
583
+ normal:
584
+ black: '0x2e2e2e'
585
+ red: '0xeb4129'
586
+ green: '0xabe047'
587
+ yellow: '0xf6c744'
588
+ blue: '0x47a0f3'
589
+ magenta: '0x7b5cb0'
590
+ cyan: '0x64dbed'
591
+ white: '0xe5e9f0'
592
+ bright:
593
+ black: '0x565656'
594
+ red: '0xec5357'
595
+ green: '0xc0e17d'
596
+ yellow: '0xf9da6a'
597
+ blue: '0x49a4f8'
598
+ magenta: '0xa47de9'
599
+ cyan: '0x99faf2'
600
+ white: '0xffffff'
601
+
602
+ low_contrast: &low_contrast
603
+ primary:
604
+ background: '0x333333'
605
+ foreground: '0xdddddd'
606
+ cursor:
607
+ text: '0xaaaaaa'
608
+ cursor: '0xffffff'
609
+ normal:
610
+ black: '0x000000'
611
+ red: '0xbb0000'
612
+ green: '0x00bb00'
613
+ yellow: '0xbbbb00'
614
+ blue: '0x0000bb'
615
+ magenta: '0xbb00bb'
616
+ cyan: '0x00bbbb'
617
+ white: '0xbbbbbb'
618
+ bright:
619
+ black: '0x000000'
620
+ red: '0xbb0000'
621
+ green: '0x00bb00'
622
+ yellow: '0xbbbb00'
623
+ blue: '0x0000bb'
624
+ magenta: '0xbb00bb'
625
+ cyan: '0x00bbbb'
626
+ white: '0xbbbbbb'
627
+
628
+ material_theme: &material_theme
629
+ primary:
630
+ background: '0x1e282d'
631
+ foreground: '0xc4c7d1'
632
+ normal:
633
+ black: '0x666666'
634
+ red: '0xeb606b'
635
+ green: '0xc3e88d'
636
+ yellow: '0xf7eb95'
637
+ blue: '0x80cbc4'
638
+ magenta: '0xff2f90'
639
+ cyan: '0xaeddff'
640
+ white: '0xffffff'
641
+ bright:
642
+ black: '0xff262b'
643
+ red: '0xeb606b'
644
+ green: '0xc3e88d'
645
+ yellow: '0xf7eb95'
646
+ blue: '0x7dc6bf'
647
+ magenta: '0x6c71c4'
648
+ cyan: '0x35434d'
649
+ white: '0xffffff'
650
+
651
+ material_theme_mod: &material_theme_mod
652
+ primary:
653
+ background: '0x1e282d'
654
+ foreground: '0xc4c7d1'
655
+ normal:
656
+ black: '0x666666'
657
+ red: '0xeb606b'
658
+ green: '0xc3e88d'
659
+ yellow: '0xf7eb95'
660
+ blue: '0x80cbc4'
661
+ magenta: '0xff2f90'
662
+ cyan: '0xaeddff'
663
+ white: '0xffffff'
664
+ bright:
665
+ black: '0xa1a1a1'
666
+ red: '0xeb606b'
667
+ green: '0xc3e88d'
668
+ yellow: '0xf7eb95'
669
+ blue: '0x7dc6bf'
670
+ magenta: '0x6c71c4'
671
+ cyan: '0x35434d'
672
+ white: '0xffffff'
673
+
674
+ nord: &nord
675
+ primary:
676
+ background: '0x2E3440'
677
+ foreground: '0xD8DEE9'
678
+ normal:
679
+ black: '0x3B4252'
680
+ red: '0xBF616A'
681
+ green: '0xA3BE8C'
682
+ yellow: '0xEBCB8B'
683
+ blue: '0x81A1C1'
684
+ magenta: '0xB48EAD'
685
+ cyan: '0x88C0D0'
686
+ white: '0xE5E9F0'
687
+ bright:
688
+ black: '0x4C566A'
689
+ red: '0xBF616A'
690
+ green: '0xA3BE8C'
691
+ yellow: '0xEBCB8B'
692
+ blue: '0x81A1C1'
693
+ magenta: '0xB48EAD'
694
+ cyan: '0x8FBCBB'
695
+ white: '0xECEFF4'
696
+
697
+ oceanic_next: &oceanic_next
698
+ primary:
699
+ background: '0x1b2b34'
700
+ foreground: '0xd8dee9'
701
+ normal:
702
+ black: '0x29414f'
703
+ red: '0xec5f67'
704
+ green: '0x99c794'
705
+ yellow: '0xfac863'
706
+ blue: '0x6699cc'
707
+ magenta: '0xc594c5'
708
+ cyan: '0x5fb3b3'
709
+ white: '0x65737e'
710
+ bright:
711
+ black: '0x405860'
712
+ red: '0xec5f67'
713
+ green: '0x99c794'
714
+ yellow: '0xfac863'
715
+ blue: '0x6699cc'
716
+ magenta: '0xc594c5'
717
+ cyan: '0x5fb3b3'
718
+ white: '0xadb5c0'
719
+
720
+ one_dark: &one_dark
721
+ primary:
722
+ background: '0x1e2127'
723
+ foreground: '0xabb2bf'
724
+ normal:
725
+ black: '0x1e2127'
726
+ red: '0xe06c75'
727
+ green: '0x98c379'
728
+ yellow: '0xd19a66'
729
+ blue: '0x61afef'
730
+ magenta: '0xc678dd'
731
+ cyan: '0x56b6c2'
732
+ white: '0xabb2bf'
733
+ bright:
734
+ black: '0x5c6370'
735
+ red: '0xe06c75'
736
+ green: '0x98c379'
737
+ yellow: '0xd19a66'
738
+ blue: '0x61afef'
739
+ magenta: '0xc678dd'
740
+ cyan: '0x56b6c2'
741
+ white: '0xffffff'
742
+
743
+ papercolor_light: &papercolor_light
744
+ primary:
745
+ background: '0xeeeeee'
746
+ foreground: '0x878787'
747
+ cursor:
748
+ text: '0xeeeeee'
749
+ cursor: '0x878787'
750
+ normal:
751
+ black: '0xeeeeee'
752
+ red: '0xaf0000'
753
+ green: '0x008700'
754
+ yellow: '0x5f8700'
755
+ blue: '0x0087af'
756
+ magenta: '0x878787'
757
+ cyan: '0x005f87'
758
+ white: '0x444444'
759
+ bright:
760
+ black: '0xbcbcbc'
761
+ red: '0xd70000'
762
+ green: '0xd70087'
763
+ yellow: '0x8700af'
764
+ blue: '0xd75f00'
765
+ magenta: '0xd75f00'
766
+ cyan: '0x005faf'
767
+ white: '0x005f87'
768
+
769
+ pencil_dark: &pencil_dark
770
+ primary:
771
+ background: '0x212121'
772
+ foreground: '0xf1f1f1'
773
+ normal:
774
+ black: '0x212121'
775
+ red: '0xc30771'
776
+ green: '0x10a778'
777
+ yellow: '0xa89c14'
778
+ blue: '0x008ec4'
779
+ magenta: '0x523c79'
780
+ cyan: '0x20a5ba'
781
+ white: '0xe0e0e0'
782
+ bright:
783
+ black: '0x818181'
784
+ red: '0xfb007a'
785
+ green: '0x5fd7af'
786
+ yellow: '0xf3e430'
787
+ blue: '0x20bbfc'
788
+ magenta: '0x6855de'
789
+ cyan: '0x4fb8cc'
790
+ white: '0xf1f1f1'
791
+
792
+ pencil_light: &pencil_light
793
+ primary:
794
+ background: '0xf1f1f1'
795
+ foreground: '0x424242'
796
+ normal:
797
+ black: '0x212121'
798
+ red: '0xc30771'
799
+ green: '0x10a778'
800
+ yellow: '0xa89c14'
801
+ blue: '0x008ec4'
802
+ magenta: '0x523c79'
803
+ cyan: '0x20a5ba'
804
+ white: '0xe0e0e0'
805
+ bright:
806
+ black: '0x212121'
807
+ red: '0xfb007a'
808
+ green: '0x5fd7af'
809
+ yellow: '0xf3e430'
810
+ blue: '0x20bbfc'
811
+ magenta: '0x6855de'
812
+ cyan: '0x4fb8cc'
813
+ white: '0xf1f1f1'
814
+
815
+ snazzy: &snazzy
816
+ primary:
817
+ background: '0x282a36'
818
+ foreground: '0xeff0eb'
819
+ normal:
820
+ black: '0x282a36'
821
+ red: '0xff5c57'
822
+ green: '0x5af78e'
823
+ yellow: '0xf3f99d'
824
+ blue: '0x57c7ff'
825
+ magenta: '0xff6ac1'
826
+ cyan: '0x9aedfe'
827
+ white: '0xf1f1f0'
828
+ bright:
829
+ black: '0x686868'
830
+ red: '0xff5c57'
831
+ green: '0x5af78e'
832
+ yellow: '0xf3f99d'
833
+ blue: '0x57c7ff'
834
+ magenta: '0xff6ac1'
835
+ cyan: '0x9aedfe'
836
+ white: '0xf1f1f0'
837
+
838
+ solarized_dark: &solarized_dark
839
+ primary:
840
+ background: '0x002b36'
841
+ foreground: '0x839496'
842
+ normal:
843
+ black: '0x073642'
844
+ red: '0xdc322f'
845
+ green: '0x859900'
846
+ yellow: '0xb58900'
847
+ blue: '0x268bd2'
848
+ magenta: '0xd33682'
849
+ cyan: '0x2aa198'
850
+ white: '0xeee8d5'
851
+ bright:
852
+ black: '0x002b36'
853
+ red: '0xcb4b16'
854
+ green: '0x586e75'
855
+ yellow: '0x657b83'
856
+ blue: '0x839496'
857
+ magenta: '0x6c71c4'
858
+ cyan: '0x93a1a1'
859
+ white: '0xfdf6e3'
860
+
861
+ solarized_light: &solarized_light
862
+ primary:
863
+ background: '0xfdf6e3'
864
+ foreground: '0x586e75'
865
+ normal:
866
+ black: '0x073642'
867
+ red: '0xdc322f'
868
+ green: '0x859900'
869
+ yellow: '0xb58900'
870
+ blue: '0x268bd2'
871
+ magenta: '0xd33682'
872
+ cyan: '0x2aa198'
873
+ white: '0xeee8d5'
874
+ bright:
875
+ black: '0x002b36'
876
+ red: '0xcb4b16'
877
+ green: '0x586e75'
878
+ yellow: '0x657b83'
879
+ blue: '0x839496'
880
+ magenta: '0x6c71c4'
881
+ cyan: '0x93a1a1'
882
+ white: '0xfdf6e3'
883
+
884
+ taerminal: &taerminal
885
+ primary:
886
+ background: '0x26282a'
887
+ foreground: '0xf0f0f0'
888
+ cursor:
889
+ background: '0xf0f0f0'
890
+ foreground: '0x26282a'
891
+ normal:
892
+ black: '0x26282a'
893
+ red: '0xff8878'
894
+ green: '0xb4fb73'
895
+ yellow: '0xfffcb7'
896
+ blue: '0x8bbce5'
897
+ magenta: '0xffb2fe'
898
+ cyan: '0xa2e1f8'
899
+ white: '0xf1f1f1'
900
+ bright:
901
+ black: '0x6f6f6f'
902
+ red: '0xfe978b'
903
+ green: '0xd6fcba'
904
+ yellow: '0xfffed5'
905
+ blue: '0xc2e3ff'
906
+ magenta: '0xffc6ff'
907
+ cyan: '0xc0e9f8'
908
+ white: '0xffffff'
909
+
910
+ tango_dark: &tango_dark
911
+ primary:
912
+ background: '0x2e3436'
913
+ foreground: '0xd3d7cf'
914
+ normal:
915
+ black: '0x2e3436'
916
+ red: '0xcc0000'
917
+ green: '0x4e9a06'
918
+ yellow: '0xc4a000'
919
+ blue: '0x3465a4'
920
+ magenta: '0x75507b'
921
+ cyan: '0x06989a'
922
+ white: '0xd3d7cf'
923
+ bright:
924
+ black: '0x555753'
925
+ red: '0xef2929'
926
+ green: '0x8ae234'
927
+ yellow: '0xfce94f'
928
+ blue: '0x729fcf'
929
+ magenta: '0xad7fa8'
930
+ cyan: '0x34e2e2'
931
+ white: '0xeeeeec'
932
+
933
+ tender: &tender
934
+ primary:
935
+ background: '0x282828'
936
+ foreground: '0xeeeeee'
937
+ normal:
938
+ black: '0x282828'
939
+ red: '0xf43753'
940
+ green: '0xc9d05c'
941
+ yellow: '0xffc24b'
942
+ blue: '0xb3deef'
943
+ magenta: '0xd3b987'
944
+ cyan: '0x73cef4'
945
+ white: '0xeeeeee'
946
+ bright:
947
+ black: '0x4c4c4c'
948
+ red: '0xf43753'
949
+ green: '0xc9d05c'
950
+ yellow: '0xffc24b'
951
+ blue: '0xb3deef'
952
+ magenta: '0xd3b987'
953
+ cyan: '0x73cef4'
954
+ white: '0xfeffff'
955
+
956
+ terminal_app: &terminal_app
957
+ primary:
958
+ background: '0x000000'
959
+ foreground: '0xb6b6b6'
960
+ normal:
961
+ black: '0x000000'
962
+ red: '0x990000'
963
+ green: '0x00a600'
964
+ yellow: '0x999900'
965
+ blue: '0x0000b2'
966
+ magenta: '0xb200b2'
967
+ cyan: '0x00a6b2'
968
+ white: '0xbfbfbf'
969
+ bright:
970
+ black: '0x666666'
971
+ red: '0xe50000'
972
+ green: '0x00d900'
973
+ yellow: '0xe5e500'
974
+ blue: '0x0000ff'
975
+ magenta: '0xe500e5'
976
+ cyan: '0x00e5e5'
977
+ white: '0xe5e5e5'
978
+
979
+ thelovelace: &thelovelace
980
+ primary:
981
+ background: '0x1D1F28'
982
+ foreground: '0xFDFDFD'
983
+ normal:
984
+ black: '0x282A36'
985
+ red: '0xF37F97'
986
+ green: '0x5ADECD'
987
+ yellow: '0xF2A272'
988
+ blue: '0x8897F4'
989
+ magenta: '0xC574DD'
990
+ cyan: '0x79E6F3'
991
+ white: '0xFDFDFD'
992
+ bright:
993
+ black: '0x414458'
994
+ red: '0xFF4971'
995
+ green: '0x18E3C8'
996
+ yellow: '0xEBCB8B'
997
+ blue: '0xFF8037'
998
+ magenta: '0x556FFF'
999
+ cyan: '0x3FDCEE'
1000
+ white: '0xBEBEC1'
1001
+
1002
+ tokyo-night: &tokyo-night
1003
+ primary:
1004
+ background: '0x1a1b26'
1005
+ foreground: '0xa9b1d6'
1006
+ normal:
1007
+ black: '0x32344a'
1008
+ red: '0xf7768e'
1009
+ green: '0x9ece6a'
1010
+ yellow: '0xe0af68'
1011
+ blue: '0x7aa2f7'
1012
+ magenta: '0xad8ee6'
1013
+ cyan: '0x449dab'
1014
+ white: '0x787c99'
1015
+ bright:
1016
+ black: '0x444b6a'
1017
+ red: '0xff7a93'
1018
+ green: '0xb9f27c'
1019
+ yellow: '0xff9e64'
1020
+ blue: '0x7da6ff'
1021
+ magenta: '0xbb9af7'
1022
+ cyan: '0x0db9d7'
1023
+ white: '0xacb0d0'
1024
+
1025
+ tokyo-night-storm: &tokyo-night-storm
1026
+ primary:
1027
+ background: '0x24283b'
1028
+ foreground: '0xa9b1d6'
1029
+ normal:
1030
+ black: '0x32344a'
1031
+ red: '0xf7768e'
1032
+ green: '0x9ece6a'
1033
+ yellow: '0xe0af68'
1034
+ blue: '0x7aa2f7'
1035
+ magenta: '0xad8ee6'
1036
+ cyan: '0x449dab'
1037
+ white: '0x9699a8'
1038
+ bright:
1039
+ black: '0x444b6a'
1040
+ red: '0xff7a93'
1041
+ green: '0xb9f27c'
1042
+ yellow: '0xff9e64'
1043
+ blue: '0x7da6ff'
1044
+ magenta: '0xbb9af7'
1045
+ cyan: '0x0db9d7'
1046
+ white: '0xacb0d0'
1047
+
1048
+ tomorrow_night: &tomorrow_night
1049
+ primary:
1050
+ background: '0x1d1f21'
1051
+ foreground: '0xc5c8c6'
1052
+ cursor:
1053
+ text: '0x1d1f21'
1054
+ cursor: '0xffffff'
1055
+ normal:
1056
+ black: '0x1d1f21'
1057
+ red: '0xcc6666'
1058
+ green: '0xb5bd68'
1059
+ yellow: '0xe6c547'
1060
+ blue: '0x81a2be'
1061
+ magenta: '0xb294bb'
1062
+ cyan: '0x70c0ba'
1063
+ white: '0x373b41'
1064
+ bright:
1065
+ black: '0x666666'
1066
+ red: '0xff3334'
1067
+ green: '0x9ec400'
1068
+ yellow: '0xf0c674'
1069
+ blue: '0x81a2be'
1070
+ magenta: '0xb77ee0'
1071
+ cyan: '0x54ced6'
1072
+ white: '0x282a2e'
1073
+
1074
+ tomorrow_night_bright: &tomorrow_night_bright
1075
+ primary:
1076
+ background: '0x000000'
1077
+ foreground: '0xeaeaea'
1078
+ normal:
1079
+ black: '0x000000'
1080
+ red: '0xd54e53'
1081
+ green: '0xb9ca4a'
1082
+ yellow: '0xe6c547'
1083
+ blue: '0x7aa6da'
1084
+ magenta: '0xc397d8'
1085
+ cyan: '0x70c0ba'
1086
+ white: '0x424242'
1087
+ bright:
1088
+ black: '0x666666'
1089
+ red: '0xff3334'
1090
+ green: '0x9ec400'
1091
+ yellow: '0xe7c547'
1092
+ blue: '0x7aa6da'
1093
+ magenta: '0xb77ee0'
1094
+ cyan: '0x54ced6'
1095
+ white: '0x2a2a2a'
1096
+
1097
+ wombat: &wombat
1098
+ primary:
1099
+ background: '0x1f1f1f'
1100
+ foreground: '0xe5e1d8'
1101
+ normal:
1102
+ black: '0x000000'
1103
+ red: '0xf7786d'
1104
+ green: '0xbde97c'
1105
+ yellow: '0xefdfac'
1106
+ blue: '0x6ebaf8'
1107
+ magenta: '0xef88ff'
1108
+ cyan: '0x90fdf8'
1109
+ white: '0xe5e1d8'
1110
+ bright:
1111
+ black: '0xb4b4b4'
1112
+ red: '0xf99f92'
1113
+ green: '0xe3f7a1'
1114
+ yellow: '0xf2e9bf'
1115
+ blue: '0xb3d2ff'
1116
+ magenta: '0xe5bdff'
1117
+ cyan: '0xc2fefa'
1118
+ white: '0xffffff'
1119
+
1120
+ xterm: &xterm
1121
+ primary:
1122
+ background: '0x000000'
1123
+ foreground: '0xffffff'
1124
+ normal:
1125
+ black: '0x000000'
1126
+ red: '0xcd0000'
1127
+ green: '0x00cd00'
1128
+ yellow: '0xcdcd00'
1129
+ blue: '0x0000ee'
1130
+ magenta: '0xcd00cd'
1131
+ cyan: '0x00cdcd'
1132
+ white: '0xe5e5e5'
1133
+ bright:
1134
+ black: '0x7f7f7f'
1135
+ red: '0xff0000'
1136
+ green: '0x00ff00'
1137
+ yellow: '0xffff00'
1138
+ blue: '0x5c5cff'
1139
+ magenta: '0xff00ff'
1140
+ cyan: '0x00ffff'
1141
+ white: '0xffffff'
1142
+
1143
+ colors: *challenger_deep