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