├── .gitignore ├── LICENSE.txt ├── OhMyREPL.jl ├── Penumbra.jl ├── Penumbra_Dark++.jl └── Penumbra_Dark+.jl ├── README.md ├── examples ├── penumbra_example_dark.png ├── penumbra_example_dark_contrast++.png ├── penumbra_example_dark_contrast+.png ├── penumbra_example_dark_header.png ├── penumbra_example_dark_small.png ├── penumbra_example_dark_smaller.png ├── penumbra_example_header.png ├── penumbra_example_light.png ├── penumbra_example_light_header.png ├── penumbra_example_light_small.png └── penumbra_example_light_smaller.png ├── iTerm2 ├── penumbra_dark++.itermcolors ├── penumbra_dark+.itermcolors ├── penumbra_dark.itermcolors └── penumbra_light.itermcolors ├── logo ├── penumbra_6.png ├── penumbra_6.svg ├── penumbra_7.png └── penumbra_7.svg ├── penumbra.tsv └── swatches ├── penumbra_swatch_base_balanced.png ├── penumbra_swatch_base_balanced.svg ├── penumbra_swatch_base_contrast++.png ├── penumbra_swatch_base_contrast++.svg ├── penumbra_swatch_base_contrast+.png ├── penumbra_swatch_base_contrast+.svg ├── penumbra_swatch_dark_balanced.png ├── penumbra_swatch_dark_balanced.svg ├── penumbra_swatch_dark_contrast++.png ├── penumbra_swatch_dark_contrast++.svg ├── penumbra_swatch_dark_contrast+.png ├── penumbra_swatch_dark_contrast+.svg ├── penumbra_swatch_light_balanced.png └── penumbra_swatch_light_balanced.svg /.gitignore: -------------------------------------------------------------------------------- 1 | .vscode 2 | .DS_Store -------------------------------------------------------------------------------- /LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2021 Neal McKee 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining 4 | a copy of this software and associated documentation files (the 5 | "Software"), to deal in the Software without restriction, including 6 | without limitation the rights to use, copy, modify, merge, publish, 7 | distribute, sublicense, and/or sell copies of the Software, and to 8 | permit persons to whom the Software is furnished to do so, subject to 9 | the following conditions: 10 | 11 | The above copyright notice and this permission notice shall be 12 | included in all copies or substantial portions of the Software. 13 | 14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 15 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 16 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 17 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 18 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 19 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | -------------------------------------------------------------------------------- /OhMyREPL.jl/Penumbra.jl: -------------------------------------------------------------------------------- 1 | #= 2 | execute 3 | ] add OhMyREPL 4 | ] add Crayons 5 | in your REPL, then copy the code below into your startup.jl file at ~\.julia\config\ 6 | =# 7 | 8 | try 9 | @eval using OhMyREPL 10 | catch e 11 | @warn "error while importing OhMyREPL" e 12 | end 13 | 14 | import OhMyREPL: Passes.SyntaxHighlighter 15 | using Crayons 16 | 17 | penumbra = SyntaxHighlighter.ColorScheme() 18 | SyntaxHighlighter.symbol!(penumbra, crayon"#00A0BE") 19 | SyntaxHighlighter.comment!(penumbra, crayon"#636363") 20 | SyntaxHighlighter.string!(penumbra, crayon"#46A473") 21 | SyntaxHighlighter.call!(penumbra, crayon"#7E87D6") 22 | SyntaxHighlighter.op!(penumbra, crayon"#CB7459") 23 | SyntaxHighlighter.keyword!(penumbra, crayon"#BD72A8") 24 | SyntaxHighlighter.function_def!(penumbra, crayon"#7E87D6") 25 | SyntaxHighlighter.error!(penumbra, crayon"#CB7459") 26 | SyntaxHighlighter.argdef!(penumbra, crayon"#00A0BE") 27 | SyntaxHighlighter.macro!(penumbra, crayon"#7E87D6") 28 | SyntaxHighlighter.number!(penumbra, crayon"#A38F2D") 29 | SyntaxHighlighter.text!(penumbra, crayon"#8F8F8F") 30 | SyntaxHighlighter.add!("Penumbra", penumbra) 31 | 32 | colorscheme!("Penumbra") 33 | -------------------------------------------------------------------------------- /OhMyREPL.jl/Penumbra_Dark++.jl: -------------------------------------------------------------------------------- 1 | #= 2 | execute 3 | ] add OhMyREPL 4 | ] add Crayons 5 | in your REPL, then copy the code below into your startup.jl file at ~\.julia\config\ 6 | =# 7 | 8 | try 9 | @eval using OhMyREPL 10 | catch e 11 | @warn "error while importing OhMyREPL" e 12 | end 13 | 14 | import OhMyREPL: Passes.SyntaxHighlighter 15 | using Crayons 16 | 17 | penumbra_darkest = SyntaxHighlighter.ColorScheme() 18 | SyntaxHighlighter.symbol!(penumbra_darkest, crayon"#1AC2E1") 19 | SyntaxHighlighter.comment!(penumbra_darkest, crayon"#636363") 20 | SyntaxHighlighter.string!(penumbra_darkest, crayon"#61C68A") 21 | SyntaxHighlighter.call!(penumbra_darkest, crayon"#97A6FF") 22 | SyntaxHighlighter.op!(penumbra_darkest, crayon"#F48E74") 23 | SyntaxHighlighter.keyword!(penumbra_darkest, crayon"#E18DCE") 24 | SyntaxHighlighter.function_def!(penumbra_darkest, crayon"#97A6FF") 25 | SyntaxHighlighter.error!(penumbra_darkest, crayon"#F48E74") 26 | SyntaxHighlighter.argdef!(penumbra_darkest, crayon"#1AC2E1") 27 | SyntaxHighlighter.macro!(penumbra_darkest, crayon"#97A6FF") 28 | SyntaxHighlighter.number!(penumbra_darkest, crayon"#C7AD40") 29 | SyntaxHighlighter.text!(penumbra_darkest, crayon"#AEAEAE") 30 | SyntaxHighlighter.add!("Penumbra Dark Contrast+", penumbra_darkest) 31 | 32 | colorscheme!("Penumbra Dark Contrast+") 33 | -------------------------------------------------------------------------------- /OhMyREPL.jl/Penumbra_Dark+.jl: -------------------------------------------------------------------------------- 1 | #= 2 | execute 3 | ] add OhMyREPL 4 | ] add Crayons 5 | in your REPL, then copy the code below into your startup.jl file at ~\.julia\config\ 6 | =# 7 | 8 | try 9 | @eval using OhMyREPL 10 | catch e 11 | @warn "error while importing OhMyREPL" e 12 | end 13 | 14 | import OhMyREPL: Passes.SyntaxHighlighter 15 | using Crayons 16 | 17 | penumbra_darker = SyntaxHighlighter.ColorScheme() 18 | SyntaxHighlighter.symbol!(penumbra_darker, crayon"#00B0D2") 19 | SyntaxHighlighter.comment!(penumbra_darker, crayon"#636363") 20 | SyntaxHighlighter.string!(penumbra_darker, crayon"#4EB67F") 21 | SyntaxHighlighter.call!(penumbra_darker, crayon"#8C96EC") 22 | SyntaxHighlighter.op!(penumbra_darker, crayon"#E18163") 23 | SyntaxHighlighter.keyword!(penumbra_darker, crayon"#D07EBA") 24 | SyntaxHighlighter.function_def!(penumbra_darker, crayon"#8C96EC") 25 | SyntaxHighlighter.error!(penumbra_darker, crayon"#E18163") 26 | SyntaxHighlighter.argdef!(penumbra_darker, crayon"#00B0D2") 27 | SyntaxHighlighter.macro!(penumbra_darker, crayon"#8C96EC") 28 | SyntaxHighlighter.number!(penumbra_darker, crayon"#B49E33") 29 | SyntaxHighlighter.text!(penumbra_darker, crayon"#9E9E9E") 30 | SyntaxHighlighter.add!("Penumbra Dark Contrast+", penumbra_darker) 31 | 32 | colorscheme!("Penumbra Dark Contrast+") 33 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

2 | penumbra logo 3 |

4 | 5 | ![dark theme code example](./examples/penumbra_example_header.png) 6 | 7 | # Penumbra 8 | 9 | Penumbra is a mathematically balanced colour scheme constructed in a perceptually uniform colour space with base colours inspired by the shades of colour occurring in nature due to the light of the sun and the sky. It cleanly separates the perceptual properties of colours while optimally utilizing the available colour space of typical displays. 10 | 11 | The nine base colours are (almost fully, see below) symmetric and used to build the main light and dark theme, drawing from differently sized accent colour palettes as necessary. Additionally, there are two variants of the dark theme with enhanced contrast, ideal for anyone with mild to moderate visual impairments. Due to the constraints of the design principles, they are even particularly *unsuitable* for people with colour vision deficiency. 12 | 13 | The accent colour palettes also lend themselves to encoding quantitative information in data visualizations. 14 | 15 | ![penumbra base balanced swatch](./swatches/penumbra_swatch_base_balanced.png) 16 | ![penumbra dark balanced swatch](./swatches/penumbra_swatch_dark_balanced.png) 17 | ![penumbra light balanced swatch](./swatches/penumbra_swatch_light_balanced.png) 18 | 19 | [penumbra.tsv](penumbra.tsv) contains all colours given below as `rgb_hex`, `r` `g` `b` and `h` `s` `l` in the sRGB colour space, as well as their `oklab_luminance`, indexed by `set`, which is either of `balanced`, `contrast+` and `contrast++`, and `palette`, which is either of `base`, `six`, `seven` and `eight`. 20 | 21 | ## Features 22 | 23 | The goal of this colour scheme is to cleanly separate the use of each of the three perceptual properties of colour — luminance, chroma and hue — and optimally utilize the typically available colour space to encode information with each of them. Function is put before aesthetics, but the base colours inspired by nature and low but sufficient contrast attempt to make the overall scheme pleasing to the eye. 24 | 25 | ### 1. Base Colours Inspired By Nature 26 | 27 | The base colours are derived from the CIE D series of standard illuminants that are modeled after natural daylight (and also used to calibrate the white point of almost all consumer displays), ranging from the evening sun through neutrally white summer daylight to shade and overcast skies. Dark colours appearing like shade and light colours like paper illuminated by sunlight creates an overall pleasing aesthetic that still fades into the background as that’s what you are used to when going outside. 28 | 29 | ### 2. Just Enough Contrast 30 | 31 | Designed to exactly meet the minimum contrast level for legibility on electronic visual displays specified in ISO-9241-3. While legibility is important to reduce eye strain, for many people, too much contrast is also subjectively contributing to it. Enhanced contrast versions -- for anyone with mild or moderate visual impairments respectively -- exceed the minimum contrast recommended by the W3C. 32 | 33 | ### 3. Optimal Hue Differentiability 34 | 35 | By using the perceptually uniform colour space [Oklab](https://bottosson.github.io/posts/oklab), I was able to achieve perceptually uniform hue differences between each of the accent colours, ensuring maximum differentiability between highlighted words. Constant chroma ensures none of them stand out from or recede into the page more than others. 36 | 37 | ### 4. Fluidly Readable Code 38 | 39 | Because the text and accent colours have identical luminance, it’s easier to read code like a continuous text and follow logical syntax while maintaining the ability to scan it for highlighted words with higher chroma. 40 | 41 | ### 5. Easily Nameable Colours 42 | 43 | Within the constraints described above, the colour hues are optimized to produce colours as close as possible to intuitively named colours as found in the [xkcd Color Survey](https://blog.xkcd.com/2010/05/03/color-survey-results/). This makes communicating about the colours just that tiny bit easier and quicker. 44 | 45 | ## Examples 46 | 47 | ### Dark 48 | 49 | ![dark theme code example](./examples/penumbra_example_dark.png) 50 | 51 | ### Light 52 | 53 | ![light theme code example](./examples/penumbra_example_light.png) 54 | 55 | ### Dark Contrast+ 56 | 57 | ![dark contrasty theme code example](./examples/penumbra_example_dark_contrast+.png) 58 | 59 | ### Dark Contrast++ 60 | 61 | ![dark high contrast theme code example](./examples/penumbra_example_dark_contrast++.png) 62 | 63 | ## Available For / Installation 64 | 65 | ### Editors and IDEs 66 | 67 | * **VS Code** available from the [extension marketplace](https://marketplace.visualstudio.com/items?itemName=PenumbraTheme.penumbra), [Open VSX](https://open-vsx.org/extension/PenumbraTheme/penumbra) or its own [repository](https://github.com/nealmckee/penumbra_vscode) 68 | * **Vim** Currently in early draft phase, please help out by testing it [here](https://github.com/nealmckee/penumbra/issues/6) 69 | 70 | ### Terminal Emulators 71 | 72 | * **iTerm2** import itermcolour files from this repository in the preferences pane 73 | 74 | ### Other 75 | 76 | * **JuliaREPL with OhMyREPL** add the Packages OhMyREPL.jl and Crayons.jl to your (base) environment and copy the code from one of the files (corresponding to the desired contrast level) into your startup.jl file 77 | * **R Plotting** install from its own [repository](https://github.com/hughjonesd/penumbra) with `remotes::install_github("hughjonesd/penumbra")` 78 | 79 | ## Intended Usage 80 | 81 | The recommended font is `Fira Code`. 82 | 83 | ### Base Colours 84 | 85 | #### For a dark theme 86 | 87 | * **Sun+** “white”, text in highlighted sections, emphasized borders 88 | * **Sun** selections, light borders, strongly emphasized content 89 | * **Sun-** optional 90 | * **Sky+** emphasized content and emphasized UI text 91 | * **Sky** foreground, code, main content colour, text both in editors and UI elements 92 | * **Sky-** comments, de-emphasized content 93 | * **Shade+** foreground UI elements, rulers, indentation guides and similar 94 | * **Shade** main background colour 95 | * **Shade-** “black”, de-emphasized/receded background elements, selections, dark UI elements 96 | 97 | #### For a light theme 98 | 99 | * **Shade-** “white”, text in highlighted sections, emphasized borders 100 | * **Shade** selections, light borders, strongly emphasized content 101 | * **Shade+** optional 102 | * **Sky-** emphasized content and emphasized UI text 103 | * **Sky** foreground, code, main content colour, text both in editors and UI elements 104 | * **Sky+** comments, de-emphasized content 105 | * **Sun-** foreground UI elements, rulers, indentation guides and similar 106 | * **Sun** main background colour 107 | * **Sun+** “black”, de-emphasized/receded background elements, selections, dark UI elements 108 | 109 | When additional in-between shades are desired, it’s recommended to use transparency to blend other appropriate base colours with the background colour. 110 | 111 | See the VS Code theme for an example of canonical usage. 112 | 113 | ### Accent Colour Palettes 114 | 115 | Used for syntax highlighting and wherever colour is required in the UI. If avoidable, do not use additional colours in the UI that aren’t required for content highlighting. Usually, context is enough to not confuse their uses -- each additional colour just reduces differentiability. 116 | 117 | **Choose one palette (as large as necessary, as small as possible) and never mix and match!** Otherwise, the advantages of hue optimization are lost. 118 | 119 | If palettes smaller than 6 are desired, choose subsets as following: 120 | 121 | * **5** omit one colour from a six colour palette (**not recommended**) 122 | * **4** every other colour from an eight colour palette (two possible sets) 123 | * **3** every other colour from a six colour palette (two possible sets) 124 | * **2** every third colour from a six colour palette (three possible sets) 125 | * **1** any one colour from a six colour palette (or any palette) 126 | 127 | #### Data Visualizations 128 | 129 | For qualitative data, choose a palette as described above (balanced for optimum contrast, contrast++ for optimum chroma) for the number of categories in the data. Additionally, if there is adjacency like in a bar chart or pie chart, choose adjacent colours so that the hue difference is maximized. For example for six categories: the colours of a palette of half the size (3), then the other three beginning with the one that is not adjacent to the last (and ending with the one that is not adjacent to the first if adjacency is circular). 130 | 131 | This is all meant for your own exploratory visualizations, for publications it is better to use a palette that's safe for people with colour vision deficiency. Penumbra was also specifically designed for electronic displays and not made to be print safe. 132 | 133 | ## Construction 134 | 135 | I implemented transformations from the XYZ colour space to [Oklab](https://bottosson.github.io/posts/oklab/) and from Oklab to sRGB in Julia (and LCH based on Oklab respectively). Combined with Colors.jl, this allowed conversion from any supported colour space to Oklab. 136 | 137 | ### Base Colors 138 | 139 | xy values for a range of correlated colour temperatures (CCT, will be added to the main tsv file in the future) were obtained from an online conversion tool. 140 | 141 | For each luminance value, the largest circle of constant luminance and constant chroma colours with varying hues around D65 neutral grey in OKlab still within the sRGB Gamut was approximated numerically (small hue steps instead of a continuous circle, increasing chroma in small increments until reaching the edge). This gave a roughly linear relationship for maximum chroma from 0.0 at L=0.0 to a maximum at approximately L=0.75 back to 0.0 at L=1.0. 142 | 143 | Therefore, in order to be able to maximize chroma and with that the distances between the accent colours, the central base colour should be chosen to have as high luminance as possible while still maintaining sufficient contrast (3:1 in accordance with ISO-9241-3) when used for text on the light background colour. 144 | 145 | xyY luminance (Y) was tuned by hand (to sufficient precision to exceed integer differences in 8bit sRGB values) for each base colour to achieve symmetrical luminance levels in Oklab. The second-lightest colour was chosen to be roughly the lightest colour with CCT 5000K within the sRGB gamut, again tuned by hand. Every other colour was arranged symmetrically with few decimal luminance values to obtain the intended contrast for its usage. 146 | 147 | This meant that the lightest two colours then would be outside the sRGB gamut, so they were chosen with the correct Oklab hue for the CCT but reduced chroma to fit within sRGB gamut while maintaining approximately the same perceptual differences between neighbors as in the dark colours (in the end slightly larger). 148 | 149 | For the higher contrast palettes, some of the medium (including the central colour) and dark colours were moved to multiples of previously used luminance intervals, with matching new CCTs for the dark ones. The exact choices of which luminance differences to maintain and which to increase were dependent on intended usage. This made standard text to background relationships compliant (or very close to it) with W3C guidelines for contrast (AA for contrast+, AAA for contrast+++) without further effort. 150 | 151 | ### Accent Colour Palettes 152 | 153 | The accent colours were obtained by performing the chroma optimization described above, only with a set of n (=palette size) equally spaced colours on a circle of equal chroma and luminance (the latter matching the central base colour) giving mostly slightly higher chroma maxima. 154 | 155 | These were repeated with small hue rotation increments (0.1°) and each evaluated according to their CIED2000 colour distance to a hue ordered selection of the most common named colours (red, green, blue, their inverses and the two next most common colours differentiated by hue, not luminance) according to the [xkcd Color Survey](https://blog.xkcd.com/2010/05/03/color-survey-results/). 156 | 157 | For each of the three Oklab luminance values and palette sizes, the palette with the least sum root mean squared distances was chosen. For the smaller palettes, the subsets of colours were chosen by hand for 6 (to match terminal colours) and to minimize the minimum sum RMS distances for 7. 158 | 159 | ## Limitations 160 | 161 | Because some base colours have non-zero chroma, the perceptual difference to the accent colours will not be truly uniform. All the base colours are still low in chromaticity though so this was deemed an acceptable trade-off for improved aesthetics. (Compensating for this would break the clean separation of colour properties.) 162 | 163 | More generally, Oklab was derived from CAM16 *under normal/average viewing conditions*. When these are not met, uniformity is no longer guaranteed and the balanced dark theme is probably closest to achieving the design goals perfectly. Improvements could only be made by directly using CAM16 to choose colours for every background, screen brightness, ambient light etc. separately. This would explode the complexity of this endeavor. Similar to the rationale given for the derivation of Oklab, it’s in most cases better and more efficient to aim for average viewing conditions rather than provide a myriad of options for any possible scenario. 164 | 165 | The xkcd colour survey did not have a representative sample of the world population and the colour names were all in English. Colour naming is strongly influenced by culture, so someone from a very different background might find the choices based on the survey a lot less intuitive. I was not able to find truly representative data of similar quality though any tips would be appreciated. On the plus side, the demographic of potential users of this colour scheme is very likely to largely overlap with the demographic of xkcd readers. 166 | 167 | Because differences between the accent colours are solely in hue, people with colour vision deficiency (CVD) will have more difficulty discriminating between them compared to using differences in all properties. Luminance (slightly) and chroma also no longer appear constant since colours are projected onto a plane compared to a trichromat 3D colour space in people with complete bichromacy. In order to provide adequate syntax highlighting, one would have to use both chroma and luminance, making the latter unavailable to encode other information like emphasis and UI structure. This would require a different approach from the ground up. 168 | 169 | Some terminal applications rely on the luminance differences between the “traditional” terminal colors both between each other and to foreground and background, most of which are purposefully broken in this color scheme. Nothing becomes entirely unreadable but legibility might suffer drastically. There is no way to account for this while still adhering to the overall design philosophy of this colour scheme. If you regularly use such applications, this scheme is sadly just not for you. Terminal themes also purposefully don’t include “bright” colours as most modern terminal emulators use bold text instead in most cases where these would be required. 170 | 171 | ## The Colours 172 | 173 | ### Accent Colour Palettes 174 | 175 | |colour | 6 balanced | 7 balanced | 8 balanced 176 | --- | --- | --- | --- 177 | |red | #CB7459 | #CA7081 | #CA736C | 178 | |orange | | #C27D40 | #BA823A | 179 | |yellow | #A38F2D | #92963A | #8D9741 | 180 | |green | #46A473 | #3EA57B | #47A477 | 181 | |cyan | #00A0BE | #00A0BA | #00A2AF | 182 | |blue | #7E87D6 | #6E8DD5 | #5794D0 | 183 | |purple | | #AC78BD | #9481CC | 184 | |magenta| #BD72A8 | | #BC73A4 | 185 | 186 | ### Base Colours 187 | 188 | |name | balanced 189 | --- | --- 190 | |sun+ | #FFFDFB | 191 | |sun | #FFF7ED | 192 | |sun- | #F2E6D4 | 193 | |sky+ | #BEBEBE | 194 | |sky | #8F8F8F | 195 | |sky- | #636363 | 196 | |shade+ | #3E4044 | 197 | |shade | #303338 | 198 | |shade- | #24272B | 199 | 200 | ### Accent Colour Palettes with Enhanced Brightness and Chroma 201 | 202 | |colour | 6 contrast+ | 7 contrast+ | 8 contrast+ | 6 contrast++ | 7 contrast++ | 8 contrast++ 203 | --- | --- | --- | --- | --- | --- | --- 204 | |red | #E18163 | #DF7C8E | #DF7F78 | #F48E74 | #F18AA1 | #F58C81 | 205 | |orange | | #D68B47 | #CE9042 | | #EA9856 | #E09F47 | 206 | |yellow | #B49E33 | #A1A641 | #9CA748 | #C7AD40 | #B4B44A | #A9B852 | 207 | |green | #4EB67F | #44B689 | #50B584 | #61C68A | #58C792 | #54C794 | 208 | |cyan | #00B0D2 | #00B1CE | #00B3C2 | #1AC2E1 | #16C3DD | #00C4D7 | 209 | |blue | #8C96EC | #7A9BEC | #61A3E6 | #97A6FF | #83ADFF | #6EB2FD | 210 | |purple | | #BE85D1 | #A48FE1 | | #CC94E6 | #B69CF6 | 211 | |magenta| #D07EBA | | #D080B6 | #E18DCE | | #E58CC5 | 212 | 213 | ### Base Colours with Enhanced Contrast 214 | 215 | |name | contrast+ | contrast ++ 216 | --- | --- | --- 217 | |sun+ | #FFFDFB | #FFFDFB | 218 | |sun | #FFF7ED | #FFF7ED | 219 | |sun- | #F2E6D4 | #F2E6D4 | 220 | |sky+ | #CECECE | #DEDEDE | 221 | |sky | #9E9E9E | #AEAEAE | 222 | |sky- | #636363 | #636363 | 223 | |shade+ | #3E4044 | #3E4044 | 224 | |shade | #24272B | #181B1F | 225 | |shade- | #181B1F | #0D0F13 | 226 | 227 | ## Contributions 228 | 229 | Any implementations or ports, as well as improvements and additional feature for existing ones are very welcome. Just submit a pull request here or in the respective repository or create your own. 230 | 231 | ## Acknowledgments 232 | 233 | The search for a theme led me to [Solarized](https://github.com/altercation/solarized) by Ethan Schoonover, which I was ultimately not satisfied with but inspired me to try and improve on its ideas. 234 | 235 | [Oklab](https://bottosson.github.io/posts/oklab/) by Björn Ottosson gave me the tools to be able to painlessly design the colours. 236 | 237 | The [xkcd Color Survey](https://blog.xkcd.com/2010/05/03/color-survey-results/) provided a quantitative basis for colour names. 238 | 239 | [Pluto Notebooks](https://github.com/fonsp/Pluto.jl) with [Colors.jl](https://github.com/JuliaGraphics/Colors.jl) for the Julia language made it effortless to work with colour in a systematic but visual way. 240 | 241 | ## Contact 242 | 243 | TODO 244 | -------------------------------------------------------------------------------- /examples/penumbra_example_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nealmckee/penumbra/b2a4b15c10b14fdd990d0bdc29e7b044afc718af/examples/penumbra_example_dark.png -------------------------------------------------------------------------------- /examples/penumbra_example_dark_contrast++.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nealmckee/penumbra/b2a4b15c10b14fdd990d0bdc29e7b044afc718af/examples/penumbra_example_dark_contrast++.png -------------------------------------------------------------------------------- /examples/penumbra_example_dark_contrast+.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nealmckee/penumbra/b2a4b15c10b14fdd990d0bdc29e7b044afc718af/examples/penumbra_example_dark_contrast+.png -------------------------------------------------------------------------------- /examples/penumbra_example_dark_header.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nealmckee/penumbra/b2a4b15c10b14fdd990d0bdc29e7b044afc718af/examples/penumbra_example_dark_header.png -------------------------------------------------------------------------------- /examples/penumbra_example_dark_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nealmckee/penumbra/b2a4b15c10b14fdd990d0bdc29e7b044afc718af/examples/penumbra_example_dark_small.png -------------------------------------------------------------------------------- /examples/penumbra_example_dark_smaller.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nealmckee/penumbra/b2a4b15c10b14fdd990d0bdc29e7b044afc718af/examples/penumbra_example_dark_smaller.png -------------------------------------------------------------------------------- /examples/penumbra_example_header.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nealmckee/penumbra/b2a4b15c10b14fdd990d0bdc29e7b044afc718af/examples/penumbra_example_header.png -------------------------------------------------------------------------------- /examples/penumbra_example_light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nealmckee/penumbra/b2a4b15c10b14fdd990d0bdc29e7b044afc718af/examples/penumbra_example_light.png -------------------------------------------------------------------------------- /examples/penumbra_example_light_header.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nealmckee/penumbra/b2a4b15c10b14fdd990d0bdc29e7b044afc718af/examples/penumbra_example_light_header.png -------------------------------------------------------------------------------- /examples/penumbra_example_light_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nealmckee/penumbra/b2a4b15c10b14fdd990d0bdc29e7b044afc718af/examples/penumbra_example_light_small.png -------------------------------------------------------------------------------- /examples/penumbra_example_light_smaller.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nealmckee/penumbra/b2a4b15c10b14fdd990d0bdc29e7b044afc718af/examples/penumbra_example_light_smaller.png -------------------------------------------------------------------------------- /iTerm2/penumbra_dark++.itermcolors: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Ansi 0 Color 6 | 7 | Alpha Component 8 | 1 9 | Blue Component 10 | 0.12156862765550613 11 | Color Space 12 | sRGB 13 | Green Component 14 | 0.10588235408067703 15 | Red Component 16 | 0.094117648899555206 17 | 18 | Ansi 1 Color 19 | 20 | Alpha Component 21 | 1 22 | Blue Component 23 | 0.45490196347236633 24 | Color Space 25 | sRGB 26 | Green Component 27 | 0.55686277151107788 28 | Red Component 29 | 0.95686274766921997 30 | 31 | Ansi 10 Color 32 | 33 | Alpha Component 34 | 1 35 | Blue Component 36 | 0.54117649793624878 37 | Color Space 38 | sRGB 39 | Green Component 40 | 0.7764706015586853 41 | Red Component 42 | 0.3803921639919281 43 | 44 | Ansi 11 Color 45 | 46 | Alpha Component 47 | 1 48 | Blue Component 49 | 0.25098040699958801 50 | Color Space 51 | sRGB 52 | Green Component 53 | 0.67843139171600342 54 | Red Component 55 | 0.78039216995239258 56 | 57 | Ansi 12 Color 58 | 59 | Alpha Component 60 | 1 61 | Blue Component 62 | 1 63 | Color Space 64 | sRGB 65 | Green Component 66 | 0.65098041296005249 67 | Red Component 68 | 0.59215688705444336 69 | 70 | Ansi 13 Color 71 | 72 | Alpha Component 73 | 1 74 | Blue Component 75 | 0.80784314870834351 76 | Color Space 77 | sRGB 78 | Green Component 79 | 0.55294120311737061 80 | Red Component 81 | 0.88235294818878174 82 | 83 | Ansi 14 Color 84 | 85 | Alpha Component 86 | 1 87 | Blue Component 88 | 0.88235294818878174 89 | Color Space 90 | sRGB 91 | Green Component 92 | 0.7607843279838562 93 | Red Component 94 | 0.10196078568696976 95 | 96 | Ansi 15 Color 97 | 98 | Alpha Component 99 | 1 100 | Blue Component 101 | 0.9843137264251709 102 | Color Space 103 | sRGB 104 | Green Component 105 | 0.99215686321258545 106 | Red Component 107 | 1 108 | 109 | Ansi 2 Color 110 | 111 | Alpha Component 112 | 1 113 | Blue Component 114 | 0.54117649793624878 115 | Color Space 116 | sRGB 117 | Green Component 118 | 0.7764706015586853 119 | Red Component 120 | 0.3803921639919281 121 | 122 | Ansi 3 Color 123 | 124 | Alpha Component 125 | 1 126 | Blue Component 127 | 0.25098040699958801 128 | Color Space 129 | sRGB 130 | Green Component 131 | 0.67843139171600342 132 | Red Component 133 | 0.78039216995239258 134 | 135 | Ansi 4 Color 136 | 137 | Alpha Component 138 | 1 139 | Blue Component 140 | 1 141 | Color Space 142 | sRGB 143 | Green Component 144 | 0.65098041296005249 145 | Red Component 146 | 0.59215688705444336 147 | 148 | Ansi 5 Color 149 | 150 | Alpha Component 151 | 1 152 | Blue Component 153 | 0.80784314870834351 154 | Color Space 155 | sRGB 156 | Green Component 157 | 0.55294120311737061 158 | Red Component 159 | 0.88235294818878174 160 | 161 | Ansi 6 Color 162 | 163 | Alpha Component 164 | 1 165 | Blue Component 166 | 0.88235294818878174 167 | Color Space 168 | sRGB 169 | Green Component 170 | 0.7607843279838562 171 | Red Component 172 | 0.10196078568696976 173 | 174 | Ansi 7 Color 175 | 176 | Alpha Component 177 | 1 178 | Blue Component 179 | 0.92941176891326904 180 | Color Space 181 | sRGB 182 | Green Component 183 | 0.9686274528503418 184 | Red Component 185 | 1 186 | 187 | Ansi 8 Color 188 | 189 | Alpha Component 190 | 1 191 | Blue Component 192 | 0.38823530077934265 193 | Color Space 194 | sRGB 195 | Green Component 196 | 0.38823530077934265 197 | Red Component 198 | 0.38823530077934265 199 | 200 | Ansi 9 Color 201 | 202 | Alpha Component 203 | 1 204 | Blue Component 205 | 0.45490196347236633 206 | Color Space 207 | sRGB 208 | Green Component 209 | 0.55686277151107788 210 | Red Component 211 | 0.95686274766921997 212 | 213 | Background Color 214 | 215 | Alpha Component 216 | 1 217 | Blue Component 218 | 0.12156862765550613 219 | Color Space 220 | sRGB 221 | Green Component 222 | 0.10588235408067703 223 | Red Component 224 | 0.094117648899555206 225 | 226 | Badge Color 227 | 228 | Alpha Component 229 | 0.5 230 | Blue Component 231 | 0.29803922772407532 232 | Color Space 233 | sRGB 234 | Green Component 235 | 0.61176472902297974 236 | Red Component 237 | 0.89803922176361084 238 | 239 | Bold Color 240 | 241 | Alpha Component 242 | 1 243 | Blue Component 244 | 0.87058824300765991 245 | Color Space 246 | sRGB 247 | Green Component 248 | 0.87058824300765991 249 | Red Component 250 | 0.87058824300765991 251 | 252 | Cursor Color 253 | 254 | Alpha Component 255 | 1 256 | Blue Component 257 | 0.92941176891326904 258 | Color Space 259 | sRGB 260 | Green Component 261 | 0.9686274528503418 262 | Red Component 263 | 1 264 | 265 | Cursor Guide Color 266 | 267 | Alpha Component 268 | 0.25 269 | Blue Component 270 | 0.7764706015586853 271 | Color Space 272 | sRGB 273 | Green Component 274 | 0.60784316062927246 275 | Red Component 276 | 0.20784313976764679 277 | 278 | Cursor Text Color 279 | 280 | Alpha Component 281 | 1 282 | Blue Component 283 | 0.38823530077934265 284 | Color Space 285 | sRGB 286 | Green Component 287 | 0.38823530077934265 288 | Red Component 289 | 0.38823530077934265 290 | 291 | Foreground Color 292 | 293 | Alpha Component 294 | 1 295 | Blue Component 296 | 0.68235296010971069 297 | Color Space 298 | sRGB 299 | Green Component 300 | 0.68235296010971069 301 | Red Component 302 | 0.68235296010971069 303 | 304 | Link Color 305 | 306 | Alpha Component 307 | 1 308 | Blue Component 309 | 0.98039215803146362 310 | Color Space 311 | sRGB 312 | Green Component 313 | 0.70980393886566162 314 | Red Component 315 | 0.3803921639919281 316 | 317 | Selected Text Color 318 | 319 | Alpha Component 320 | 1 321 | Blue Component 322 | 0.38823530077934265 323 | Color Space 324 | sRGB 325 | Green Component 326 | 0.38823530077934265 327 | Red Component 328 | 0.38823530077934265 329 | 330 | Selection Color 331 | 332 | Alpha Component 333 | 1 334 | Blue Component 335 | 0.92941176891326904 336 | Color Space 337 | sRGB 338 | Green Component 339 | 0.9686274528503418 340 | Red Component 341 | 1 342 | 343 | 344 | 345 | -------------------------------------------------------------------------------- /iTerm2/penumbra_dark+.itermcolors: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Ansi 0 Color 6 | 7 | Alpha Component 8 | 1 9 | Blue Component 10 | 0.12156862765550613 11 | Color Space 12 | sRGB 13 | Green Component 14 | 0.10588235408067703 15 | Red Component 16 | 0.094117648899555206 17 | 18 | Ansi 1 Color 19 | 20 | Alpha Component 21 | 1 22 | Blue Component 23 | 0.38823530077934265 24 | Color Space 25 | sRGB 26 | Green Component 27 | 0.5058823823928833 28 | Red Component 29 | 0.88235294818878174 30 | 31 | Ansi 10 Color 32 | 33 | Alpha Component 34 | 1 35 | Blue Component 36 | 0.49803921580314636 37 | Color Space 38 | sRGB 39 | Green Component 40 | 0.7137255072593689 41 | Red Component 42 | 0.30588236451148987 43 | 44 | Ansi 11 Color 45 | 46 | Alpha Component 47 | 1 48 | Blue Component 49 | 0.20000000298023224 50 | Color Space 51 | sRGB 52 | Green Component 53 | 0.61960786581039429 54 | Red Component 55 | 0.70588237047195435 56 | 57 | Ansi 12 Color 58 | 59 | Alpha Component 60 | 1 61 | Blue Component 62 | 0.92549020051956177 63 | Color Space 64 | sRGB 65 | Green Component 66 | 0.58823531866073608 67 | Red Component 68 | 0.54901963472366333 69 | 70 | Ansi 13 Color 71 | 72 | Alpha Component 73 | 1 74 | Blue Component 75 | 0.729411780834198 76 | Color Space 77 | sRGB 78 | Green Component 79 | 0.49411764740943909 80 | Red Component 81 | 0.81568628549575806 82 | 83 | Ansi 14 Color 84 | 85 | Alpha Component 86 | 1 87 | Blue Component 88 | 0.82352942228317261 89 | Color Space 90 | sRGB 91 | Green Component 92 | 0.69019609689712524 93 | Red Component 94 | 0.0 95 | 96 | Ansi 15 Color 97 | 98 | Alpha Component 99 | 1 100 | Blue Component 101 | 0.9843137264251709 102 | Color Space 103 | sRGB 104 | Green Component 105 | 0.99215686321258545 106 | Red Component 107 | 1 108 | 109 | Ansi 2 Color 110 | 111 | Alpha Component 112 | 1 113 | Blue Component 114 | 0.49803921580314636 115 | Color Space 116 | sRGB 117 | Green Component 118 | 0.7137255072593689 119 | Red Component 120 | 0.30588236451148987 121 | 122 | Ansi 3 Color 123 | 124 | Alpha Component 125 | 1 126 | Blue Component 127 | 0.20000000298023224 128 | Color Space 129 | sRGB 130 | Green Component 131 | 0.61960786581039429 132 | Red Component 133 | 0.70588237047195435 134 | 135 | Ansi 4 Color 136 | 137 | Alpha Component 138 | 1 139 | Blue Component 140 | 0.92549020051956177 141 | Color Space 142 | sRGB 143 | Green Component 144 | 0.58823531866073608 145 | Red Component 146 | 0.54901963472366333 147 | 148 | Ansi 5 Color 149 | 150 | Alpha Component 151 | 1 152 | Blue Component 153 | 0.729411780834198 154 | Color Space 155 | sRGB 156 | Green Component 157 | 0.49411764740943909 158 | Red Component 159 | 0.81568628549575806 160 | 161 | Ansi 6 Color 162 | 163 | Alpha Component 164 | 1 165 | Blue Component 166 | 0.82352942228317261 167 | Color Space 168 | sRGB 169 | Green Component 170 | 0.69019609689712524 171 | Red Component 172 | 0.0 173 | 174 | Ansi 7 Color 175 | 176 | Alpha Component 177 | 1 178 | Blue Component 179 | 0.92941176891326904 180 | Color Space 181 | sRGB 182 | Green Component 183 | 0.9686274528503418 184 | Red Component 185 | 1 186 | 187 | Ansi 8 Color 188 | 189 | Alpha Component 190 | 1 191 | Blue Component 192 | 0.38823530077934265 193 | Color Space 194 | sRGB 195 | Green Component 196 | 0.38823530077934265 197 | Red Component 198 | 0.38823530077934265 199 | 200 | Ansi 9 Color 201 | 202 | Alpha Component 203 | 1 204 | Blue Component 205 | 0.38823530077934265 206 | Color Space 207 | sRGB 208 | Green Component 209 | 0.5058823823928833 210 | Red Component 211 | 0.88235294818878174 212 | 213 | Background Color 214 | 215 | Alpha Component 216 | 1 217 | Blue Component 218 | 0.16862745583057404 219 | Color Space 220 | sRGB 221 | Green Component 222 | 0.15294118225574493 223 | Red Component 224 | 0.14117647707462311 225 | 226 | Badge Color 227 | 228 | Alpha Component 229 | 0.5 230 | Blue Component 231 | 0.25490197539329529 232 | Color Space 233 | sRGB 234 | Green Component 235 | 0.56078433990478516 236 | Red Component 237 | 0.81568628549575806 238 | 239 | Bold Color 240 | 241 | Alpha Component 242 | 1 243 | Blue Component 244 | 0.80784314870834351 245 | Color Space 246 | sRGB 247 | Green Component 248 | 0.80784314870834351 249 | Red Component 250 | 0.80784314870834351 251 | 252 | Cursor Color 253 | 254 | Alpha Component 255 | 1 256 | Blue Component 257 | 0.92941176891326904 258 | Color Space 259 | sRGB 260 | Green Component 261 | 0.9686274528503418 262 | Red Component 263 | 1 264 | 265 | Cursor Guide Color 266 | 267 | Alpha Component 268 | 0.25 269 | Blue Component 270 | 0.7764706015586853 271 | Color Space 272 | sRGB 273 | Green Component 274 | 0.60784316062927246 275 | Red Component 276 | 0.20784313976764679 277 | 278 | Cursor Text Color 279 | 280 | Alpha Component 281 | 1 282 | Blue Component 283 | 0.38823530077934265 284 | Color Space 285 | sRGB 286 | Green Component 287 | 0.38823530077934265 288 | Red Component 289 | 0.38823530077934265 290 | 291 | Foreground Color 292 | 293 | Alpha Component 294 | 1 295 | Blue Component 296 | 0.61960786581039429 297 | Color Space 298 | sRGB 299 | Green Component 300 | 0.61960786581039429 301 | Red Component 302 | 0.61960786581039429 303 | 304 | Link Color 305 | 306 | Alpha Component 307 | 1 308 | Blue Component 309 | 0.90196079015731812 310 | Color Space 311 | sRGB 312 | Green Component 313 | 0.64313727617263794 314 | Red Component 315 | 0.35686275362968445 316 | 317 | Selected Text Color 318 | 319 | Alpha Component 320 | 1 321 | Blue Component 322 | 0.38823530077934265 323 | Color Space 324 | sRGB 325 | Green Component 326 | 0.38823530077934265 327 | Red Component 328 | 0.38823530077934265 329 | 330 | Selection Color 331 | 332 | Alpha Component 333 | 1 334 | Blue Component 335 | 0.92941176891326904 336 | Color Space 337 | sRGB 338 | Green Component 339 | 0.9686274528503418 340 | Red Component 341 | 1 342 | 343 | 344 | 345 | -------------------------------------------------------------------------------- /iTerm2/penumbra_dark.itermcolors: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Ansi 0 Color 6 | 7 | Alpha Component 8 | 1 9 | Blue Component 10 | 0.16862745583057404 11 | Color Space 12 | sRGB 13 | Green Component 14 | 0.15294118225574493 15 | Red Component 16 | 0.14117647707462311 17 | 18 | Ansi 1 Color 19 | 20 | Alpha Component 21 | 1 22 | Blue Component 23 | 0.3490196168422699 24 | Color Space 25 | sRGB 26 | Green Component 27 | 0.45490196347236633 28 | Red Component 29 | 0.79607844352722168 30 | 31 | Ansi 10 Color 32 | 33 | Alpha Component 34 | 1 35 | Blue Component 36 | 0.45098039507865906 37 | Color Space 38 | sRGB 39 | Green Component 40 | 0.64313727617263794 41 | Red Component 42 | 0.27450981736183167 43 | 44 | Ansi 11 Color 45 | 46 | Alpha Component 47 | 1 48 | Blue Component 49 | 0.17647059261798859 50 | Color Space 51 | sRGB 52 | Green Component 53 | 0.56078433990478516 54 | Red Component 55 | 0.63529413938522339 56 | 57 | Ansi 12 Color 58 | 59 | Alpha Component 60 | 1 61 | Blue Component 62 | 0.83529412746429443 63 | Color Space 64 | sRGB 65 | Green Component 66 | 0.52941179275512695 67 | Red Component 68 | 0.49803921580314636 69 | 70 | Ansi 13 Color 71 | 72 | Alpha Component 73 | 1 74 | Blue Component 75 | 0.65882354974746704 76 | Color Space 77 | sRGB 78 | Green Component 79 | 0.44705882668495178 80 | Red Component 81 | 0.74117648601531982 82 | 83 | Ansi 14 Color 84 | 85 | Alpha Component 86 | 1 87 | Blue Component 88 | 0.7450980544090271 89 | Color Space 90 | sRGB 91 | Green Component 92 | 0.62745100259780884 93 | Red Component 94 | 0.0 95 | 96 | Ansi 15 Color 97 | 98 | Alpha Component 99 | 1 100 | Blue Component 101 | 0.9843137264251709 102 | Color Space 103 | sRGB 104 | Green Component 105 | 0.99215686321258545 106 | Red Component 107 | 1 108 | 109 | Ansi 2 Color 110 | 111 | Alpha Component 112 | 1 113 | Blue Component 114 | 0.45098039507865906 115 | Color Space 116 | sRGB 117 | Green Component 118 | 0.64313727617263794 119 | Red Component 120 | 0.27450981736183167 121 | 122 | Ansi 3 Color 123 | 124 | Alpha Component 125 | 1 126 | Blue Component 127 | 0.17647059261798859 128 | Color Space 129 | sRGB 130 | Green Component 131 | 0.56078433990478516 132 | Red Component 133 | 0.63529413938522339 134 | 135 | Ansi 4 Color 136 | 137 | Alpha Component 138 | 1 139 | Blue Component 140 | 0.83529412746429443 141 | Color Space 142 | sRGB 143 | Green Component 144 | 0.52941179275512695 145 | Red Component 146 | 0.49803921580314636 147 | 148 | Ansi 5 Color 149 | 150 | Alpha Component 151 | 1 152 | Blue Component 153 | 0.65882354974746704 154 | Color Space 155 | sRGB 156 | Green Component 157 | 0.44705882668495178 158 | Red Component 159 | 0.74117648601531982 160 | 161 | Ansi 6 Color 162 | 163 | Alpha Component 164 | 1 165 | Blue Component 166 | 0.7450980544090271 167 | Color Space 168 | sRGB 169 | Green Component 170 | 0.62745100259780884 171 | Red Component 172 | 0.0 173 | 174 | Ansi 7 Color 175 | 176 | Alpha Component 177 | 1 178 | Blue Component 179 | 0.92941176891326904 180 | Color Space 181 | sRGB 182 | Green Component 183 | 0.9686274528503418 184 | Red Component 185 | 1 186 | 187 | Ansi 8 Color 188 | 189 | Alpha Component 190 | 1 191 | Blue Component 192 | 0.38823530077934265 193 | Color Space 194 | sRGB 195 | Green Component 196 | 0.38823530077934265 197 | Red Component 198 | 0.38823530077934265 199 | 200 | Ansi 9 Color 201 | 202 | Alpha Component 203 | 1 204 | Blue Component 205 | 0.3490196168422699 206 | Color Space 207 | sRGB 208 | Green Component 209 | 0.45490196347236633 210 | Red Component 211 | 0.79607844352722168 212 | 213 | Background Color 214 | 215 | Alpha Component 216 | 1 217 | Blue Component 218 | 0.21960784494876862 219 | Color Space 220 | sRGB 221 | Green Component 222 | 0.20000000298023224 223 | Red Component 224 | 0.18823529779911041 225 | 226 | Badge Color 227 | 228 | Alpha Component 229 | 0.5 230 | Blue Component 231 | 0.30588236451148987 232 | Color Space 233 | sRGB 234 | Green Component 235 | 0.47843137383460999 236 | Red Component 237 | 0.77254903316497803 238 | 239 | Bold Color 240 | 241 | Alpha Component 242 | 1 243 | Blue Component 244 | 0.7450980544090271 245 | Color Space 246 | sRGB 247 | Green Component 248 | 0.7450980544090271 249 | Red Component 250 | 0.7450980544090271 251 | 252 | Cursor Color 253 | 254 | Alpha Component 255 | 1 256 | Blue Component 257 | 0.92941176891326904 258 | Color Space 259 | sRGB 260 | Green Component 261 | 0.9686274528503418 262 | Red Component 263 | 1 264 | 265 | Cursor Guide Color 266 | 267 | Alpha Component 268 | 0.25 269 | Blue Component 270 | 0.7764706015586853 271 | Color Space 272 | sRGB 273 | Green Component 274 | 0.60784316062927246 275 | Red Component 276 | 0.20784313976764679 277 | 278 | Cursor Text Color 279 | 280 | Alpha Component 281 | 1 282 | Blue Component 283 | 0.38823530077934265 284 | Color Space 285 | sRGB 286 | Green Component 287 | 0.38823530077934265 288 | Red Component 289 | 0.38823530077934265 290 | 291 | Foreground Color 292 | 293 | Alpha Component 294 | 1 295 | Blue Component 296 | 0.56078433990478516 297 | Color Space 298 | sRGB 299 | Green Component 300 | 0.56078433990478516 301 | Red Component 302 | 0.56078433990478516 303 | 304 | Link Color 305 | 306 | Alpha Component 307 | 1 308 | Blue Component 309 | 0.7764706015586853 310 | Color Space 311 | sRGB 312 | Green Component 313 | 0.60784316062927246 314 | Red Component 315 | 0.20784313976764679 316 | 317 | Selected Text Color 318 | 319 | Alpha Component 320 | 1 321 | Blue Component 322 | 0.56078433990478516 323 | Color Space 324 | sRGB 325 | Green Component 326 | 0.56078433990478516 327 | Red Component 328 | 0.56078433990478516 329 | 330 | Selection Color 331 | 332 | Alpha Component 333 | 1 334 | Blue Component 335 | 0.83137255907058716 336 | Color Space 337 | sRGB 338 | Green Component 339 | 0.90196079015731812 340 | Red Component 341 | 0.94901961088180542 342 | 343 | 344 | 345 | -------------------------------------------------------------------------------- /iTerm2/penumbra_light.itermcolors: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Ansi 0 Color 6 | 7 | Alpha Component 8 | 1 9 | Blue Component 10 | 0.92941176891326904 11 | Color Space 12 | sRGB 13 | Green Component 14 | 0.9686274528503418 15 | Red Component 16 | 1 17 | 18 | Ansi 1 Color 19 | 20 | Alpha Component 21 | 1 22 | Blue Component 23 | 0.3490196168422699 24 | Color Space 25 | sRGB 26 | Green Component 27 | 0.45490196347236633 28 | Red Component 29 | 0.79607844352722168 30 | 31 | Ansi 10 Color 32 | 33 | Alpha Component 34 | 1 35 | Blue Component 36 | 0.45098039507865906 37 | Color Space 38 | sRGB 39 | Green Component 40 | 0.64313727617263794 41 | Red Component 42 | 0.27450981736183167 43 | 44 | Ansi 11 Color 45 | 46 | Alpha Component 47 | 1 48 | Blue Component 49 | 0.17647059261798859 50 | Color Space 51 | sRGB 52 | Green Component 53 | 0.56078433990478516 54 | Red Component 55 | 0.63529413938522339 56 | 57 | Ansi 12 Color 58 | 59 | Alpha Component 60 | 1 61 | Blue Component 62 | 0.83529412746429443 63 | Color Space 64 | sRGB 65 | Green Component 66 | 0.52941179275512695 67 | Red Component 68 | 0.49803921580314636 69 | 70 | Ansi 13 Color 71 | 72 | Alpha Component 73 | 1 74 | Blue Component 75 | 0.65882354974746704 76 | Color Space 77 | sRGB 78 | Green Component 79 | 0.44705882668495178 80 | Red Component 81 | 0.74117648601531982 82 | 83 | Ansi 14 Color 84 | 85 | Alpha Component 86 | 1 87 | Blue Component 88 | 0.7450980544090271 89 | Color Space 90 | sRGB 91 | Green Component 92 | 0.62745100259780884 93 | Red Component 94 | 0.0 95 | 96 | Ansi 15 Color 97 | 98 | Alpha Component 99 | 1 100 | Blue Component 101 | 0.16862745583057404 102 | Color Space 103 | sRGB 104 | Green Component 105 | 0.15294118225574493 106 | Red Component 107 | 0.14117647707462311 108 | 109 | Ansi 2 Color 110 | 111 | Alpha Component 112 | 1 113 | Blue Component 114 | 0.45098039507865906 115 | Color Space 116 | sRGB 117 | Green Component 118 | 0.64313727617263794 119 | Red Component 120 | 0.27450981736183167 121 | 122 | Ansi 3 Color 123 | 124 | Alpha Component 125 | 1 126 | Blue Component 127 | 0.17647059261798859 128 | Color Space 129 | sRGB 130 | Green Component 131 | 0.56078433990478516 132 | Red Component 133 | 0.63529413938522339 134 | 135 | Ansi 4 Color 136 | 137 | Alpha Component 138 | 1 139 | Blue Component 140 | 0.83529412746429443 141 | Color Space 142 | sRGB 143 | Green Component 144 | 0.52941179275512695 145 | Red Component 146 | 0.49803921580314636 147 | 148 | Ansi 5 Color 149 | 150 | Alpha Component 151 | 1 152 | Blue Component 153 | 0.65882354974746704 154 | Color Space 155 | sRGB 156 | Green Component 157 | 0.44705882668495178 158 | Red Component 159 | 0.74117648601531982 160 | 161 | Ansi 6 Color 162 | 163 | Alpha Component 164 | 1 165 | Blue Component 166 | 0.7450980544090271 167 | Color Space 168 | sRGB 169 | Green Component 170 | 0.62745100259780884 171 | Red Component 172 | 0.0 173 | 174 | Ansi 7 Color 175 | 176 | Alpha Component 177 | 1 178 | Blue Component 179 | 0.21960784494876862 180 | Color Space 181 | sRGB 182 | Green Component 183 | 0.20000000298023224 184 | Red Component 185 | 0.18823529779911041 186 | 187 | Ansi 8 Color 188 | 189 | Alpha Component 190 | 1 191 | Blue Component 192 | 0.7450980544090271 193 | Color Space 194 | sRGB 195 | Green Component 196 | 0.7450980544090271 197 | Red Component 198 | 0.7450980544090271 199 | 200 | Ansi 9 Color 201 | 202 | Alpha Component 203 | 1 204 | Blue Component 205 | 0.3490196168422699 206 | Color Space 207 | sRGB 208 | Green Component 209 | 0.45490196347236633 210 | Red Component 211 | 0.79607844352722168 212 | 213 | Background Color 214 | 215 | Alpha Component 216 | 1 217 | Blue Component 218 | 0.92941176891326904 219 | Color Space 220 | sRGB 221 | Green Component 222 | 0.9686274528503418 223 | Red Component 224 | 1 225 | 226 | Badge Color 227 | 228 | Alpha Component 229 | 0.5 230 | Blue Component 231 | 0.30588236451148987 232 | Color Space 233 | sRGB 234 | Green Component 235 | 0.47843137383460999 236 | Red Component 237 | 0.77254903316497803 238 | 239 | Bold Color 240 | 241 | Alpha Component 242 | 1 243 | Blue Component 244 | 0.38823530077934265 245 | Color Space 246 | sRGB 247 | Green Component 248 | 0.38823530077934265 249 | Red Component 250 | 0.38823530077934265 251 | 252 | Cursor Color 253 | 254 | Alpha Component 255 | 1 256 | Blue Component 257 | 0.26666668057441711 258 | Color Space 259 | sRGB 260 | Green Component 261 | 0.25098040699958801 262 | Red Component 263 | 0.24313725531101227 264 | 265 | Cursor Guide Color 266 | 267 | Alpha Component 268 | 0.25 269 | Blue Component 270 | 0.7764706015586853 271 | Color Space 272 | sRGB 273 | Green Component 274 | 0.60784316062927246 275 | Red Component 276 | 0.20784313976764679 277 | 278 | Cursor Text Color 279 | 280 | Alpha Component 281 | 1 282 | Blue Component 283 | 0.7450980544090271 284 | Color Space 285 | sRGB 286 | Green Component 287 | 0.7450980544090271 288 | Red Component 289 | 0.7450980544090271 290 | 291 | Foreground Color 292 | 293 | Alpha Component 294 | 1 295 | Blue Component 296 | 0.56078433990478516 297 | Color Space 298 | sRGB 299 | Green Component 300 | 0.56078433990478516 301 | Red Component 302 | 0.56078433990478516 303 | 304 | Link Color 305 | 306 | Alpha Component 307 | 1 308 | Blue Component 309 | 0.7764706015586853 310 | Color Space 311 | sRGB 312 | Green Component 313 | 0.60784316062927246 314 | Red Component 315 | 0.20784313976764679 316 | 317 | Selected Text Color 318 | 319 | Alpha Component 320 | 1 321 | Blue Component 322 | 0.56078433990478516 323 | Color Space 324 | sRGB 325 | Green Component 326 | 0.56078433990478516 327 | Red Component 328 | 0.56078433990478516 329 | 330 | Selection Color 331 | 332 | Alpha Component 333 | 1 334 | Blue Component 335 | 0.26666668057441711 336 | Color Space 337 | sRGB 338 | Green Component 339 | 0.25098040699958801 340 | Red Component 341 | 0.24313725531101227 342 | 343 | 344 | 345 | -------------------------------------------------------------------------------- /logo/penumbra_6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nealmckee/penumbra/b2a4b15c10b14fdd990d0bdc29e7b044afc718af/logo/penumbra_6.png -------------------------------------------------------------------------------- /logo/penumbra_6.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 19 | 58 | 60 | 65 | 69 | 76 | 82 | 88 | 94 | 98 | 102 | 106 | 110 | 114 | 120 | 121 | 122 | 123 | -------------------------------------------------------------------------------- /logo/penumbra_7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nealmckee/penumbra/b2a4b15c10b14fdd990d0bdc29e7b044afc718af/logo/penumbra_7.png -------------------------------------------------------------------------------- /penumbra.tsv: -------------------------------------------------------------------------------- 1 | set palette name rgb_hex r g b h s l oklab_luminance 2 | balanced base sun+ FFFDFB 255 253 251 30 100 99 0.995 3 | balanced base sun FFF7ED 255 247 237 33 100 96 0.98 4 | balanced base sun- F2E6D4 242 230 212 36 53 89 0.93 5 | balanced base sky+ BEBEBE 190 190 190 0 0 74 0.8 6 | balanced base sky 8F8F8F 143 143 143 0 0 56 0.65 7 | balanced base sky- 636363 99 99 99 0 0 38 0.5 8 | balanced base shade+ 3E4044 62 64 68 219 4 25 0.37 9 | balanced base shade 303338 48 51 56 217 7 20 0.32 10 | balanced base shade- 24272B 36 39 43 214 8 15 0.27 11 | balanced six red CB7459 203 116 89 14 52 57 0.65 12 | balanced six yellow A38F2D 163 143 45 49 56 40 0.65 13 | balanced six green 46A473 70 164 115 148 40 45 0.65 14 | balanced six cyan 00A0BE 0 160 190 189 100 37 0.65 15 | balanced six blue 7E87D6 126 135 214 233 51 66 0.65 16 | balanced six magenta BD72A8 189 114 168 316 36 59 0.65 17 | balanced seven red CA7081 202 112 129 348 45 61 0.65 18 | balanced seven orange C27D40 194 125 64 28 51 50 0.65 19 | balanced seven yellow 92963A 146 150 58 62 44 40 0.65 20 | balanced seven green 3EA57B 62 165 123 155 45 44 0.65 21 | balanced seven cyan 00A0BA 0 160 186 188 100 36 0.65 22 | balanced seven blue 6E8DD5 110 141 213 221 55 63 0.65 23 | balanced seven purple AC78BD 172 120 189 285 34 60 0.65 24 | balanced eight red CA736C 202 115 108 4 46 60 0.65 25 | balanced eight orange BA823A 186 130 58 33 52 47 0.65 26 | balanced eight yellow 8D9741 141 151 65 66 39 42 0.65 27 | balanced eight green 47A477 71 164 119 150 39 46 0.65 28 | balanced eight cyan 00A2AF 0 162 175 184 100 34 0.65 29 | balanced eight blue 5794D0 87 148 208 209 56 57 0.65 30 | balanced eight purple 9481CC 148 129 204 255 42 65 0.65 31 | balanced eight magenta BC73A4 188 115 164 319 35 59 0.65 32 | contrast+ base sun+ FFFDFB 255 253 251 30 100 99 0.995 33 | contrast+ base sun FFF7ED 255 247 237 33 100 96 0.98 34 | contrast+ base sun- F2E6D4 242 230 212 36 53 89 0.93 35 | contrast+ base sky+ CECECE 206 206 206 0 0 80 0.85 36 | contrast+ base sky 9E9E9E 158 158 158 0 0 61 0.7 37 | contrast+ base sky- 636363 99 99 99 0 0 38 0.5 38 | contrast+ base shade+ 3E4044 62 64 68 219 4 25 0.37 39 | contrast+ base shade 24272B 36 39 43 214 8 15 0.27 40 | contrast+ base shade- 181B1F 24 27 31 214 12 10 0.22 41 | contrast+ six red E18163 225 129 99 14 67 63 0.7 42 | contrast+ six yellow B49E33 180 158 51 49 55 45 0.7 43 | contrast+ six green 4EB67F 78 182 127 148 41 50 0.7 44 | contrast+ six cyan 00B0D2 0 176 210 189 100 41 0.7 45 | contrast+ six blue 8C96EC 140 150 236 233 71 73 0.7 46 | contrast+ six magenta D07EBA 208 126 186 316 46 65 0.7 47 | contrast+ seven red DF7C8E 223 124 142 349 60 68 0.7 48 | contrast+ seven orange D68B47 214 139 71 28 63 55 0.7 49 | contrast+ seven yellow A1A641 161 166 65 62 43 45 0.7 50 | contrast+ seven green 44B689 68 182 137 156 45 49 0.7 51 | contrast+ seven cyan 00B1CE 0 177 206 188 100 40 0.7 52 | contrast+ seven blue 7A9BEC 122 155 236 222 75 70 0.7 53 | contrast+ seven purple BE85D1 190 133 209 285 45 67 0.7 54 | contrast+ eight red DF7F78 223 127 120 4 61 67 0.7 55 | contrast+ eight orange CE9042 206 144 66 33 58 53 0.7 56 | contrast+ eight yellow 9CA748 156 167 72 66 39 46 0.7 57 | contrast+ eight green 50B584 80 181 132 150 40 51 0.7 58 | contrast+ eight cyan 00B3C2 0 179 194 184 100 38 0.7 59 | contrast+ eight blue 61A3E6 97 163 230 210 72 64 0.7 60 | contrast+ eight purple A48FE1 164 143 225 255 57 72 0.7 61 | contrast+ eight magenta D080B6 208 128 182 319 45 65 0.7 62 | contrast++ base sun+ FFFDFB 255 253 251 30 100 99 0.995 63 | contrast++ base sun FFF7ED 255 247 237 33 100 96 0.98 64 | contrast++ base sun- F2E6D4 242 230 212 36 53 89 0.93 65 | contrast++ base sky+ DEDEDE 222 222 222 0 0 87 0.9 66 | contrast++ base sky AEAEAE 174 174 174 0 0 68 0.75 67 | contrast++ base sky- 636363 99 99 99 0 0 38 0.5 68 | contrast++ base shade+ 3E4044 62 64 68 219 4 25 0.37 69 | contrast++ base shade 181B1F 24 27 31 214 12 10 0.22 70 | contrast++ base shade- 0D0F13 13 15 19 219 18 6 0.17 71 | contrast++ six red F48E74 244 142 116 12 85 70 0.75 72 | contrast++ six yellow C7AD40 199 173 64 48 54 51 0.75 73 | contrast++ six green 61C68A 97 198 138 144 46 57 0.75 74 | contrast++ six cyan 1AC2E1 26 194 225 189 79 49 0.75 75 | contrast++ six blue 97A6FF 151 166 255 231 100 79 0.75 76 | contrast++ six magenta E18DCE 225 141 206 313 58 71 0.75 77 | contrast++ seven red F18AA1 241 138 161 346 78 74 0.75 78 | contrast++ seven orange EA9856 234 152 86 26 77 62 0.75 79 | contrast++ seven yellow B4B44A 180 180 74 59 41 49 0.75 80 | contrast++ seven green 58C792 88 199 146 151 49 56 0.75 81 | contrast++ seven cyan 16C3DD 22 195 221 187 81 47 0.75 82 | contrast++ seven blue 83ADFF 131 173 255 219 100 75 0.75 83 | contrast++ seven purple CC94E6 204 148 230 280 62 74 0.75 84 | contrast++ eight red F58C81 245 140 129 5 85 73 0.75 85 | contrast++ eight orange E09F47 224 159 71 34 71 57 0.75 86 | contrast++ eight yellow A9B852 169 184 82 68 41 52 0.75 87 | contrast++ eight green 54C794 84 199 148 153 50 55 0.75 88 | contrast++ eight cyan 00C4D7 0 196 215 185 100 42 0.75 89 | contrast++ eight blue 6EB2FD 110 178 253 211 97 71 0.75 90 | contrast++ eight purple B69CF6 182 156 246 257 83 78 0.75 91 | contrast++ eight magenta E58CC5 229 140 197 321 63 72 0.75 92 | -------------------------------------------------------------------------------- /swatches/penumbra_swatch_base_balanced.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nealmckee/penumbra/b2a4b15c10b14fdd990d0bdc29e7b044afc718af/swatches/penumbra_swatch_base_balanced.png -------------------------------------------------------------------------------- /swatches/penumbra_swatch_base_balanced.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 19 | 45 | 47 | 52 | 59 | 62 | 69 | 76 | 83 | 90 | 97 | 104 | 111 | 118 | 125 | 132 | sun+ 143 | sun 154 | sun- 165 | sky+ 176 | sky 187 | sky- 198 | shade+ 209 | shade 220 | shade- 231 | 232 | penumbra base balanced 243 | 244 | 245 | -------------------------------------------------------------------------------- /swatches/penumbra_swatch_base_contrast++.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nealmckee/penumbra/b2a4b15c10b14fdd990d0bdc29e7b044afc718af/swatches/penumbra_swatch_base_contrast++.png -------------------------------------------------------------------------------- /swatches/penumbra_swatch_base_contrast++.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 19 | 45 | 47 | 52 | 59 | 62 | 69 | 76 | 83 | 90 | 97 | 104 | 111 | 118 | 125 | 132 | sun+ 143 | sun 154 | sun- 165 | sky+ 176 | sky 187 | sky- 198 | shade+ 209 | shade 220 | shade- 231 | 232 | penumbra base contrast++ 243 | 244 | 245 | -------------------------------------------------------------------------------- /swatches/penumbra_swatch_base_contrast+.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nealmckee/penumbra/b2a4b15c10b14fdd990d0bdc29e7b044afc718af/swatches/penumbra_swatch_base_contrast+.png -------------------------------------------------------------------------------- /swatches/penumbra_swatch_base_contrast+.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 19 | 45 | 47 | 52 | 59 | 62 | 69 | 76 | 83 | 90 | 97 | 104 | 111 | 118 | 125 | 132 | sun+ 143 | sun 154 | sun- 165 | sky+ 176 | sky 187 | sky- 198 | shade+ 209 | shade 220 | shade- 231 | 232 | penumbra base contrast+ 243 | 244 | 245 | -------------------------------------------------------------------------------- /swatches/penumbra_swatch_dark_balanced.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nealmckee/penumbra/b2a4b15c10b14fdd990d0bdc29e7b044afc718af/swatches/penumbra_swatch_dark_balanced.png -------------------------------------------------------------------------------- /swatches/penumbra_swatch_dark_balanced.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 16 | 42 | 44 | 49 | 56 | 60 | 67 | 74 | 81 | 88 | 95 | 102 | 109 | 116 | 123 | 130 | 137 | 144 | 151 | 158 | 165 | 172 | 179 | 186 | 193 | 200 | 207 | 214 | 221 | 228 | 235 | red 246 | orange 257 | yellow 268 | green 279 | cyan 290 | blue 301 | purple 312 | magenta 323 | six 334 | seven 345 | eight 356 | 357 | penumbra dark balanced 368 | 369 | 370 | -------------------------------------------------------------------------------- /swatches/penumbra_swatch_dark_contrast++.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nealmckee/penumbra/b2a4b15c10b14fdd990d0bdc29e7b044afc718af/swatches/penumbra_swatch_dark_contrast++.png -------------------------------------------------------------------------------- /swatches/penumbra_swatch_dark_contrast++.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 16 | 42 | 44 | 49 | 56 | 59 | 61 | 68 | 75 | 82 | 89 | 96 | 103 | 110 | 117 | 124 | 131 | 138 | 145 | 152 | 159 | 166 | 173 | 180 | 187 | 194 | 201 | 208 | 215 | 222 | 229 | 236 | red 247 | orange 258 | yellow 269 | green 280 | cyan 291 | blue 302 | purple 313 | magenta 324 | six 335 | seven 346 | eight 357 | 358 | 359 | penumbra dark contrast++ 370 | 371 | 372 | -------------------------------------------------------------------------------- /swatches/penumbra_swatch_dark_contrast+.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nealmckee/penumbra/b2a4b15c10b14fdd990d0bdc29e7b044afc718af/swatches/penumbra_swatch_dark_contrast+.png -------------------------------------------------------------------------------- /swatches/penumbra_swatch_dark_contrast+.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 16 | 42 | 44 | 49 | 56 | 59 | 66 | 73 | 80 | 87 | 94 | 101 | 108 | 115 | 122 | 129 | 136 | 143 | 150 | 157 | 164 | 171 | 178 | 185 | 192 | 199 | 206 | 213 | 220 | 227 | 234 | red 245 | orange 256 | yellow 267 | green 278 | cyan 289 | blue 300 | purple 311 | magenta 322 | six 333 | seven 344 | eight 355 | 356 | penumbra dark contrast+ 367 | 368 | 369 | -------------------------------------------------------------------------------- /swatches/penumbra_swatch_light_balanced.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nealmckee/penumbra/b2a4b15c10b14fdd990d0bdc29e7b044afc718af/swatches/penumbra_swatch_light_balanced.png -------------------------------------------------------------------------------- /swatches/penumbra_swatch_light_balanced.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 16 | 42 | 44 | 49 | 56 | 59 | 66 | 73 | 80 | 87 | 94 | 101 | 108 | 115 | 122 | 129 | 136 | 143 | 150 | 157 | 164 | 171 | 178 | 185 | 192 | 199 | 206 | 213 | 220 | 227 | 234 | red 245 | orange 256 | yellow 267 | green 278 | cyan 289 | blue 300 | purple 311 | magenta 322 | 325 | six 336 | seven 347 | eight 358 | 359 | 360 | penumbra light balanced 371 | 372 | 373 | --------------------------------------------------------------------------------