Terminal pogryzł człowieka: pastel

Pastel to narzędzie wyjątkowo nietypowe. Bo ile osób zawraca sobie głowę generowaniem palety kolorów w terminalu?

Gradient z zielonego do czerwonego?
Pastel to polecenie tekstowe, które umożliwia generowanie kolorów oraz ich analizowanie, konwertowanie i manipulowanie nimi. Program wyczynia te wszystkie akrobacje w obrębie przestrzeni barw RGB (sRGB), HSL, CIELAB, CIELCh i ANSI 8/24-bit. Kolory możemy definiować podając ich nazwy, wartości składowe (np. rgb lub hsl), procent udziału lub po prostu hex. Użytkownik ma pełną kontrolę co zrobić z kolorem – rozjaśnić, czy zmiksować z innym, poprawić niektóre parametry, a może wygenerować całą listę kolorów od do i wybrać ten właściwy. Myli się jednak ten, kto sądzi, że Pastel traktuję całą sprawę algorytmicznie i bezdusznie. Nawet jeżeli i to nie przemawia nikomu do wyobraźni, wystarczy spojrzeć na listę poleceń jakie oferuje program.

~$ pastel help
pastel 0.5.3
A command-line tool to generate, analyze, convert and manipulate colors

USAGE:
    pastel <SUBCOMMAND>

OPTIONS:
    -m, --color-mode <mode>    Specify the terminal color mode: 24bit, 8bit, off, *auto*
    -h, --help                 Prints help information
    -V, --version              Prints version information

SUBCOMMANDS:
    color         Display information about the given color
    list          Show a list of available color names
    random        Generate a list of random colors
    distinct      Generate a set of visually distinct colors
    sort-by       Sort colors by the given property
    pick          Interactively pick a color from the screen (pipette)
    format        Convert a color to the given format
    paint         Print colored text using ANSI escape sequences
    gradient      Generate an interpolating sequence of colors
    mix           Mix two colors in the given colorspace
    saturate      Increase color saturation by a specified amount
    desaturate    Decrease color saturation by a specified amount
    lighten       Lighten color by a specified amount
    darken        Darken color by a specified amount
    rotate        Rotate the hue channel by the specified angle
    complement    Get the complementary color (hue rotated by 180°)
    gray          Create a gray tone from a given lightness
    to-gray       Completely desaturate a color (preserving luminance)
    textcolor     Get a readable text color for the given background color
    help          Prints this message or the help of the given subcommand(s)

Pastel i gpick
Jak tego wszystkiego używać? Wystarczy zdecydować się czy chcemy stworzyć listę kolorów (distinct), gradient (gradient) a może wybrać jeden z listy (pick – wymaga zainstalowania gpick lub innej pipety). Mając listę możemy teraz wybrać interesującą nas barwę i dokonać jednej z dostępnych transformacji. Mix, saturate, desaturate, lighten, darken i tak dalej.

~$ pastel lighten 0.2 orchid orange lawngreen

Jeżeli posiadamy zainstalowane narzędzie gpick lub podobne, kolor który ma zostać zaprezentowany możemy pobrać bezpośrednio z ekranu (pick). Jeżeli natomiast nie jesteśmy przekonani o jaki kolor nam chodzi, program podpowie nam paletę (random), posortuje, wyświetli w formacie jaki jest nam potrzebny.

~$ pastel random -n 20 | pastel sort-by hue | pastel format hex

To niezwykle poręczne narzędzie zostało popełnione w języku Rust. Jednak autorzy zadbali o paczki deb dla Ubuntu i Minta. Natomiast użytkownicy Arch Linuksa i Manjaro sięgają do zasobów AUR:

yaourt -S pastel