spitewaste 0.1.001

Sign up to get free protection for your applications and to get access to all the features.
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