1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245
|
# pastel
[](https://github.com/sharkdp/pastel/actions)
[](https://github.com/sharkdp/pastel/releases)
[](https://crates.io/crates/pastel)
[](https://crates.io/crates/pastel)
`pastel` is a command-line tool to generate, analyze, convert and manipulate colors. It supports many different color formats and color spaces like RGB (sRGB), HSL, CIELAB, CIELCh as well as ANSI 8-bit and 24-bit representations.
## In action

## Tutorial
### Getting help
`pastel` provides a number of commands like `saturate`, `mix` or `paint`. To see a complete list, you can simply run
``` bash
pastel
```
To get more information about a specific subcommand (say `mix`), you can call `pastel mix -h` or `pastel help mix`.
### Composition
Many `pastel` commands can be composed by piping the output of one command to another, for example:
``` bash
pastel random | pastel mix red | pastel lighten 0.2 | pastel format hex
```
### Specifying colors
Colors can be specified in many different formats:
```
lightslategray
'#778899'
778899
789
'rgb(119, 136, 153)'
'119,136,153'
'hsl(210, 14.3%, 53.3%)'
```
Colors can be passed as positional arguments, for example:
```
pastel lighten 0.2 orchid orange lawngreen
```
They can also be read from standard input. So this is equivalent:
```
printf "%s\n" orchid orange lawngreen | pastel lighten 0.2
```
You can also explicitly specify which colors you want to read from the input. For example, this mixes `red` (which is read from STDIN) with `blue` (which is passed on the command line):
```
pastel color red | pastel mix - blue
```
### Use cases and demo
#### Converting colors from one format to another
``` bash
pastel format hsl ff8000
```
#### Show and analyze colors on the terminal
``` bash
pastel color "rgb(255,50,127)"
pastel color 556270 4ecdc4 c7f484 ff6b6b c44d58
```
#### Pick a color from somewhere on the screen
``` bash
pastel pick
```
#### Generate a set of N visually distinct colors
```
pastel distinct 8
```
#### Get a list of all X11 / CSS color names
``` bash
pastel list
```
#### Name a given color
``` bash
pastel format name 44cc11
```
#### Print colorized text from a shell script
``` bash
bg="hotpink"
fg="$(pastel textcolor "$bg")"
pastel paint "$fg" --on "$bg" "well readable text"
```
``` bash
pastel paint -n black --on red --bold " ERROR! "
echo " A serious error"
pastel paint -n black --on yellow --bold " WARNING! "
echo " A warning message"
pastel paint -n black --on limegreen --bold " INFO "
echo -n " Informational message with a "
echo -n "highlighted" | pastel paint -n default --underline
echo " word"
```
## Installation
### On Debian-based systems
You can download the latest Debian package from the [release page](https://github.com/sharkdp/pastel/releases) and install it via `dpkg`:
``` bash
wget "https://github.com/sharkdp/pastel/releases/download/v0.12.0/pastel_0.12.0_amd64.deb"
sudo dpkg -i pastel_0.12.0_amd64.deb
```
Alternatively, `pastel` is available in the official Debian repositories (currently in testing and unstable):
```bash
sudo apt update
sudo apt install pastel
```
### On Arch Linux
You can install `pastel` from the [Extra](https://archlinux.org/packages/extra/x86_64/pastel/) repositories:
```
sudo pacman -S pastel
```
### On Nix
You can install `pastel` from the [Nix package](https://github.com/NixOS/nixpkgs/blob/master/pkgs/applications/misc/pastel/default.nix):
```
nix-env --install pastel
```
### On MacOS
You can install `pastel` via [Homebrew](https://formulae.brew.sh/formula/pastel)
```
brew install pastel
```
### On Windows
You can install `pastel` via [Scoop](https://github.com/ScoopInstaller/Main/blob/master/bucket/pastel.json)
```
scoop install pastel
```
#### With Winget
You can install `pastel` via [Winget](https://learn.microsoft.com/en-us/windows/package-manager/):
```bash
winget install sharkdp.pastel
```
### Via snap package
[Get it from the Snap Store](https://snapcraft.io/pastel):
```
sudo snap install pastel
```
### On NetBSD
Using the package manager:
```
pkgin install pastel
```
From source:
```
cd /usr/pkgsrc/graphics/pastel
make install
```
### On other distributions
Check out the [release page](https://github.com/sharkdp/pastel/releases) for binary builds.
### Via cargo (source)
If you do not have cargo, install using [rust's installation documentation](https://doc.rust-lang.org/book/ch01-01-installation.html).
If you have Rust 1.83 or higher, you can install `pastel` from source via `cargo`:
```
cargo install pastel
```
Alternatively, you can install `pastel` directly from this repository by using
```
git clone https://github.com/sharkdp/pastel
cargo install --path ./pastel
```
## Resources
Interesting Wikipedia pages:
* [Color difference](https://en.wikipedia.org/wiki/Color_difference)
* [CIE 1931 color space](https://en.wikipedia.org/wiki/CIE_1931_color_space)
* [CIELAB color space](https://en.wikipedia.org/wiki/CIELAB_color_space)
* [Line of purples](https://en.wikipedia.org/wiki/Line_of_purples)
* [Impossible color](https://en.wikipedia.org/wiki/Impossible_color)
* [sRGB](https://en.wikipedia.org/wiki/SRGB)
* [Color theory](https://en.wikipedia.org/wiki/Color_theory)
* [Eigengrau](https://en.wikipedia.org/wiki/Eigengrau)
Color names:
* [XKCD Color Survey Results](https://blog.xkcd.com/2010/05/03/color-survey-results/)
* [Peachpuffs and Lemonchiffons - talk about named colors](https://www.youtube.com/watch?v=HmStJQzclHc)
* [List of CSS color keywords](https://www.w3.org/TR/SVG11/types.html#ColorKeywords)
Maximally distinct colors:
* [How to automatically generate N "distinct" colors?](https://stackoverflow.com/q/470690/704831)
* [Publication on two algorithms to generate (maximally) distinct colors](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.65.2790)
Other articles and videos:
* [Color Matching](https://www.youtube.com/watch?v=82ItpxqPP4I)
* [Introduction to color spaces](https://ciechanow.ski/color-spaces/)
## License
Licensed under either of
* Apache License, Version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0)
* MIT license ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT)
at your option.
|