summaryrefslogtreecommitdiff
path: root/public/term-colors.html
blob: 4a8d866b6088c637d21efeb14040d6d5011e9c22 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>An explanation of common terminal emulator color codes — Luke T. Shumaker</title>
  <link rel="stylesheet" href="assets/style.css">
  <link rel="alternate" type="application/atom+xml" href="./index.atom" name="web log entries"/>
</head>
<body>
<header><a href="/">Luke T. Shumaker</a> » <a href=/blog>blog</a> » term-colors</header>
<article>
<h1 id="an-explanation-of-common-terminal-emulator-color-codes">An
explanation of common terminal emulator color codes</h1>
<p>This is based on a post on <a
href="http://www.reddit.com/r/commandline/comments/1aotaj/solarized_is_a_sixteen_color_palette_designed_for/c8ztxpt?context=1">reddit</a>,
published on 2013-03-21.</p>
<blockquote>
<p>So all terminals support the same 256 colors? What about 88 color
mode: is that a subset?</p>
</blockquote>
<p>TL;DR: yes</p>
<p>Terminal compatibility is crazy complex, because nobody actually
reads the spec, they just write something that is compatible for their
tests. Then things have to be compatible with that terminal’s
quirks.</p>
<p>But, here’s how 8-color, 16-color, and 256 color work. IIRC, 88 color
is a subset of the 256 color scheme, but I’m not sure.</p>
<p><strong>8 colors: (actually 9)</strong> First we had 8 colors (9 with
“default”, which doesn’t have to be one of the 8). These are always
roughly the same color: black, red, green, yellow/orange, blue, purple,
cyan, and white, which are colors 0–7 respectively. Color 9 is
default.</p>
<p><strong>16 colors: (actually 18)</strong> Later, someone wanted to
add more colors, so they added a “bright” attribute. So when bright is
on, you get “bright red” instead of “red”. Hence 8*2=16 (plus two more
for “default” and “bright default”).</p>
<p><strong>256 colors: (actually 274)</strong> You may have noticed,
colors 0–7 and 9 are used, but 8 isn’t. So, someone decided that color 8
should put the terminal into 256 color mode. In this mode, it reads
another byte, which is an 8-bit RGB value (2 bits for red, 2 for green,
2 for blue). The bright property has no effect on these colors. However,
a terminal can display 256-color-mode colors and 16-color-mode colors at
the same time, so you actually get 256+18 colors.</p>

</article>
<footer>
  <aside class="sponsor"><p>I'd love it if you <a class="em"
      href="/sponsor/">sponsored me</a>.  It will allow me to continue
      my work on the GNU/Linux ecosystem.  Thanks!</p></aside>

<p>The content of this page is Copyright © 2013 <a href="mailto:lukeshu@lukeshu.com">Luke T. Shumaker</a>.</p>
<p>This page is licensed under the <a href="https://creativecommons.org/licenses/by-sa/4.0/">CC BY-SA 4.0</a> license.</p>
</footer>
</body>
</html>