Reworded a few things
[stack/conf/irssi-colors-solarized.git] / README.mkd
1 Solarized Color Theme for irssi
2 ===============================
3
4 Initially created by Huy Z \<huy-git-pub circled-a huyzing.com\>, this is a
5 repository of themes for the [irssi] IRC chat client that support Ethan
6 Schoonover’s [Solarized] color scheme.
7
8 ![Solarized Dark main screenshot](https://github.com/huyz/irssi-colors-solarized/raw/master/img/screen-irssi-main-in-iTerm-solarized-dark.png)
9
10 [irssi]:                http://www.irssi.org/
11 [Solarized]:            http://ethanschoonover.com/solarized
12
13 Visit the Solarized homepage
14 ----------------------------
15
16 See the [Solarized] homepage for screenshots, details and color theme
17 implementations for terminal emulators and other applications, such as Vim,
18 Emacs, and Mutt.
19
20 Universal theme
21 ---------------
22
23 The first irssi theme, called "universal", was designed to work best with both
24 Solarized Dark and Light palettes, but also to work under default terminal
25 colors. In other words, this theme was designed with a "fallback" scenario: if
26 you happen to find yourself on a terminal where the Solarized palette has not
27 been set up, you won't have elements become invisible or incrediby hard to
28 read.
29
30 Thus, this theme was designed with these 4 palettes in mind:
31
32 -   Solarized Dark: the theme works best when the terminal emulator is
33     set to this scheme
34 -   Solarized Light: the theme works, when the terminal emulator is set
35     to this scheme, almost as well as with Solarized Dark (you probably won't
36     notice the difference, but if you do, it could be optimized slightly by
37     switching the theme's use of some of the Solarized base colors)
38 -   Default terminal ANSI Colors with a dark background
39 -   Default terminal ANSI Colors with a light background
40
41 This theme was designed to be clean and functional, starting from the default
42 theme distributed with irssi.  Colors are strictly used for functionality and
43 the number of colors visible is minimized when possible. Colors were selected
44 based on the characteristics of the text characters to be displayed:
45
46 -   Visibility generally follows importance, with an attempt to let unimportant
47     text fade into the background (which is not always possible when
48     simultaneously supporting dark and light backgrounds)
49 -   Loud colors are chosen to call attention to noteworthy messages
50
51 ### Supported Scripts ###
52
53 The following third-party scripts are supported:
54
55 -   [adv\_windowlist.pl](http://anti.teamidiot.de/static/nei/*/Code/Irssi/)
56 -   [usercount.pl](http://scripts.irssi.org/html/usercount.pl.html)
57 -   [trackbar.pl](http://scripts.irssi.org/html/trackbar.pl.html)
58
59 ### Screenshots ###
60
61 This is how the "universal" theme for irssi looks under different palettes.
62 Click images to see screenshots.
63
64 Solarized Dark (this example uses iTerm2 on OS X):
65
66 [![Solarized Dark](https://github.com/huyz/irssi-colors-solarized/raw/master/img/screen-irssi-in-iTerm2-solarized_dark-th.png)](https://github.com/huyz/irssi-colors-solarized/raw/master/img/screen-irssi-in-iTerm2-solarized\_dark.png)
67
68 Solarized Light (this example uses iTerm2 on OS X):
69
70 [![Solarized Light](https://github.com/huyz/irssi-colors-solarized/raw/master/img/screen-irssi-in-iTerm2-solarized_light-th.png)](https://github.com/huyz/irssi-colors-solarized/raw/master/img/screen-irssi-in-iTerm2-solarized\_light.png)
71
72 Default dark terminal colors (this example uses Apple's Terminal.app on OS X):
73
74 [![default dark](https://github.com/huyz/irssi-colors-solarized/raw/master/img/screen-irssi-in-Terminal.app-dark-th.png)](https://github.com/huyz/irssi-colors-solarized/raw/master/img/screen-irssi-in-Terminal.app-dark.png)
75
76 Default light terminal colors (this example uses iTerm on OS X):
77
78 [![default light](https://github.com/huyz/irssi-colors-solarized/raw/master/img/screen-irssi-in-iTerm-light-th.png)](https://github.com/huyz/irssi-colors-solarized/raw/master/img/screen-irssi-in-iTerm-light.png)
79
80 Downloads
81 ---------
82
83 If you have come across these themes via the [irssi-only repository] on github,
84 you may want to check the main [Solarized repository] to see if there is an
85 official theme.
86
87 In the future, the [irssi-only repository] may be kept in sync with the main
88 [Solarized repository], but the [irssi-only repository] may be left separate
89 for installation convenience and to include the latest improvements.
90
91 At this time, issues, bug reports, changelogs are to be reported at the
92 [irssi-only repository].
93
94 [Solarized repository]:  https://github.com/altercation/solarized
95 [irssi-only repository]: https://github.com/huyz/irssi-colors-solarized
96
97
98 Installation
99 ------------
100
101 1.  Configure your terminal emulator (See the section "Understanding Solarized Colors in
102     Terminals" for a detailed explanation behind these settings)
103
104     1.  Make sure that you have changed your terminal emulator's color settings to
105         the Solarized palette.
106
107     2.  Make sure that bold text is displayed using bright colors. For example,
108         -   For iTerm2 on OS X, this means that Text Preferences must have the `Draw
109             bold text in bright colors` checkbox *selected*.
110         -   For Apple's Terminal.app on OS X, this means that Text Settings must
111             have the `Use bright colors for bold text` checkbox *selected*.
112
113     3.  It's recommended to turn off the display of bold typeface for bold
114         text.  For example,
115         -   For iTerm2 on OS X, this means that Text Preferences should have the
116             `Draw bold text in bold font` checkbox *unselected*.
117         -   For Apple's Terminal.app on OS X, this means that Text Settings
118             should have the `Use bold fonts` checkbox *unselected*.
119         -   For XTerm, this may mean setting the `font` and `boldFont` to be the
120             same in your .Xresources or .Xdefaults, e.g.:
121
122                 xterm*font: fixed
123                 xterm*boldFont: fixed
124
125     Example: for iTerm2, these are the correct settings:
126
127     ![iTerm bold settings](https://github.com/huyz/irssi-colors-solarized/raw/master/img/screen-iTerm2-bold-options.png)
128
129 2.  Obtain `solarized-universal.theme`
130
131     a) Option A: Download `solarized-universal.theme` from [irssi-only repository]
132        and place it in your `~/.irssi` directory
133
134     b) Option B: To always have the latest version, clone the git repository:
135
136         $ git clone git://github.com/huyz/irssi-colors-solarized.git
137         $ ln -s $PWD/irssi-colors-solarized/solarized-universal.theme ~/.irssi/.
138
139 3.  Change your `~/.irssi/config` to include the following settings, while making
140     sure to replace `YOUR_NICKNAME` with your IRC nickname:
141
142         settings = {
143             ...
144             "fe-common/core" = {
145                 ...
146                 # Solarized
147                 theme = "solarized-universal";
148                 hilight_color = "= %R";
149             };
150             ...
151         };
152         hilights = (
153                 { text = "YOUR_NICKNAME"; color = "%M"; nick = "yes"; word = "yes"; }
154         );
155         statusbar = {
156             ...
157             items = {
158                 ...
159                 # Solarized
160                 lag = "{sb Lag: %m$0-%n}";
161                 act = "{sb Act: $0-}";
162                 more = "%k%3-- more --%n";
163             };
164             ...
165         };
166
167 4.  Optionally, if you have the `adv_windowlist.pl` or `trackbar.pl` scripts
168     installed, modify your `~/.irssi/config` so that:
169
170         settings = {
171             ...
172             "perl/core/scripts" = {
173                 ...
174                 ### For Solarized adv_windowlist.pl script
175                 awl_display_key_active = "%k%2[$Q=$N:$C]%n";
176                 awl_display_nokey_active = "%k%2[$N:$C]%n";
177                 awl_display_key = "[$Q:$H$C$S]";
178                 awl_display_nokey = "[$N:$H$C$S]";
179         
180                 ### For Solarized trackbar.pl script
181                 trackbar_style = "%B";
182             };
183             ...
184         };
185
186 Understanding Solarized Colors in Terminals
187 -------------------------------------------
188
189 ### Solarized Colors vs. ANSI Colors ###
190
191 8-color terminal programs such as irssi use color codes that correspond to the
192 expected 8 normal ANSI colors.  irssi additionally supports bold, which
193 terminal emulators will usually display by using the *bright* versions of the 8
194 ANSI colors and/or by using a bold typeface with a heavier weight. (Note that
195 different terminal emulators may have slightly different ideas of what color
196 values to use when displaying the 16 [ANSI color escape
197 codes](http://en.wikipedia.org/wiki/ANSI_escape_code#Colors).)
198
199 In order to be displayed by 8-color terminal programs, which cannot specify RGB
200 values, Solarized must replace the default ANSI colors.  Since the Solarized
201 palette uses 16 colors, not only must this color scheme replace the 8 normal
202 colors but must also take over the 8 *bright* colors, for a total of 16 colors.
203 This means that a Solarized terminal application loses the ability to bold text
204 but gains 8 more Solarized colors.
205
206 About half of the Solarized palette is reminiscent of the original ANSI
207 colors, e.g. Solarized red is close to ANSI red (or more precisely, the
208 general consensus of what ANSI red should look like).  But the rest of the
209 Solarized colors do not correspond to any ANSI colors, e.g. there is no ANSI
210 color that corresponds to Solarized orange or purple.
211
212 This means that, for example, if the irssi theme wants to display "green", a
213 Solarized terminal will display something close to green, but if the theme
214 wants to display "bold yellow" or "bright yellow", a Solarized terminal will
215 not be able to display it.  However, a Solarized theme will be able to display
216 the new colors orange and purple and also several shades of gray.  This is
217 again thanks to the replacement of the ANSI *bright* colors; e.g. ANSI "bold
218 red", which is usually displayed as "bright red", will now show as Solarized
219 orange, while ANSI "bold blue", which is usually displayed as "bright blue",
220 will now be a shade of gray.
221
222 ### Terminal Emulator ###
223
224 Because irssi is an ANSI 8-color terminal program, it is entirely dependent on
225 the terminal emulator for the display of its colors.  You cannot directly tell
226 an irssi theme to display Solarized orange, e.g. by specifying an RGB value.
227 Instead, the theme's colors must be chosen using the ANSI color codes with the
228 expectation that the terminal emulator will display them as appropriate
229 Solarized colors.  For example, the irssi color format `%R` which normally
230 would be "bold red" is expected to be displayed by the terminal emulator as
231 Solarized orange.
232
233 So in order for irssi to display the Solarized palette, you have to set your
234 Terminal emulator's color settings to the Solarized palette. The [Solarized
235 repository] includes theme settings for some popular terminal emulators as
236 well as Xresources; or you can download them from the official [Solarized]
237 homepage. If you use the irssi themes *without* having changed your
238 emulator's palette, you will get a strange selection of colors that may be
239 hard to read.
240
241 Yes, this means that, to use the Solarized theme for irssi, you need to change
242 color settings for not one but two different programs: your terminal emulator
243 and irssi.  The two sets of settings will work in concert to display Solarized
244 colors appropriately.
245
246 ### Bold Settings ###
247
248 Historically, there has been a one-to-one correspondence between the bolded
249 versions of the 8 default ANSI colors and the bright versions of the 8 default
250 colors.  Back in the day, when a color program demanded the display of bold
251 text, it was probably just easier for terminal emulators to display a brighter
252 version of whatever color the text was (and expect the user to interpret that
253 as bold) than to display a typeface with a bold weight
254
255 Nowadays, it is easy for terminal emulators to display bold typefaces, so it
256 doesn't make sense for bolded text to change color, but the confusing
257 association remains. In fact, new terminal emulators allow users to break the
258 correspondence between bold and bright and can simply change the font.
259
260 However, ANSI 8-color terminal applications such as irssi only have a
261 conception of bold and don't know about the possibility of using up to 16
262 colors.  So to use all 16 Solarized colors, we change the semantics of "bold"
263 in the theme to mean that we want to access the 8 new Solarized colors,
264 including the grays. Recall the example above, where we described that the
265 irssi color format `%R`, which would have normally displayed bold red, is
266 expected to show up as Solarized orange.
267
268 This is why it is important to *not* break the association between bold and
269 bright colors. Many terminal emulators offer an option to disable the use of
270 bright colors for bold, and you must not do so.  Often, new users of Solarized
271 will be confused when they change their terminal emulator's color palette to
272 Solarized but haven't yet installed Solarized-specific color themes for all
273 their terminal applications (e.g. mutt, ls's dircolors, irssi, and their
274 colorized shell prompts).  They will see texts that are hard to read or
275 disappear entirely.  The solution isn't to disable bright colors; the solution
276 is to install Solarized color themes for all terminal applications and then you
277 will have all 16 colors.
278
279 Also, because the semantics of "bold" are lost in favor of more colors, it
280 also makes sense to disable the display of bold text as a bold typeface.  It
281 won't hurt to see bold typefaces wherever the new 8 Solarized colors are
282 displayed but it doesn't make much sense anymore.
283
284
285 The Solarized Color Values
286 --------------------------
287
288 L\*a\*b values are canonical (White D65, Reference D50), other values are
289 matched in sRGB space.
290
291     SOLARIZED HEX     16/8 TERMCOL  XTERM/HEX   L*A*B      sRGB        HSB
292     --------- ------- ---- -------  ----------- ---------- ----------- -----------
293     base03    #002b36  8/4 brblack  234 #1c1c1c 15 -12 -12   0  43  54 193 100  21
294     base02    #073642  0/4 black    235 #262626 20 -12 -12   7  54  66 192  90  26
295     base01    #586e75 10/7 brgreen  240 #4e4e4e 45 -07 -07  88 110 117 194  25  46
296     base00    #657b83 11/7 bryellow 241 #585858 50 -07 -07 101 123 131 195  23  51
297     base0     #839496 12/6 brblue   244 #808080 60 -06 -03 131 148 150 186  13  59
298     base1     #93a1a1 14/4 brcyan   245 #8a8a8a 65 -05 -02 147 161 161 180   9  63
299     base2     #eee8d5  7/7 white    254 #d7d7af 92 -00  10 238 232 213  44  11  93
300     base3     #fdf6e3 15/7 brwhite  230 #ffffd7 97  00  10 253 246 227  44  10  99
301     yellow    #b58900  3/3 yellow   136 #af8700 60  10  65 181 137   0  45 100  71
302     orange    #cb4b16  9/3 brred    166 #d75f00 50  50  55 203  75  22  18  89  80
303     red       #dc322f  1/1 red      160 #d70000 50  65  45 220  50  47   1  79  86
304     magenta   #d33682  5/5 magenta  125 #af005f 50  65 -05 211  54 130 331  74  83
305     violet    #6c71c4 13/5 brmagenta 61 #5f5faf 50  15 -45 108 113 196 237  45  77
306     blue      #268bd2  4/4 blue      33 #0087ff 55 -10 -45  38 139 210 205  82  82
307     cyan      #2aa198  6/6 cyan      37 #00afaf 60 -35 -05  42 161 152 175  74  63
308     green     #859900  2/2 green     64 #5f8700 60 -20  65 133 153   0  68 100  60