xcolor 0.2.0

Lightweight color picker for X11
xcolor-0.2.0 is not a library.

xcolor 🌈

Build Status Latest Version Rust Documentation License: MIT

Lightweight color picker for X11. Use mouse cursor to select colors visible anywhere on the screen to view their RGB representation.

Installation

Currently, the easiest way to install xcolor is to use cargo:

$ cargo install xcolor

Building and running xcolor requires xcb libraries to be present. There are also statically linked releases available on the GitHub releases page. These binaries should work on most current Linux systems without any additional dependencies.

Usage

Simply invoke the xcolor command to select a color. The selected color will be printed to the standard output.

xcolor 0.1.0
Samuel Laurén <samuel.lauren@iki.fi>
Lightweight color picker for X11

USAGE:
    xcolor [OPTIONS]

FLAGS:
    -h, --help       Prints help information
    -V, --version    Prints version information

OPTIONS:
    -c, --custom <FORMAT>    Custom output format
    -f, --format <NAME>      Output format (defaults to hex) [possible values: hex, HEX, plain, rgb]

Formatting

By default, the color values will be printed in lowercase hexadecimal format. The output format can be changed using the -f FORMAT switch. The possible format values are listed bellow:

Format Specifier Description Example Custom Format Equivalent
hex Lowercase hexadecimal (default) #ff00ff #%{02hr}%{02hg}%{02hb}
HEX Uppercase hexadecimal #00FF00 #%{02Hr}%{02Hg}%{02Hb}
rgb Decimal RGB rgb(255, 255, 255) rgb(%{r}, %{g}, %{b})
plain Decimal with semicolon separators 0;0;0 %{r};%{g};%{b}

Custom Formatting

The -f switch provides quick access to some commonly used formatting options. However, if custom output formatting is desired, this can be achieved using the -c FORMAT switch. The FORMAT parameter specifies a template for the output and supports a simple template language.

FORMAT templates can contain special expansions that are written inside %{...} blocks. These blocks will be expanded into color values according to the specifiers defined inside the block. Here are some examples of valid format strings and what they might translate to:

Format String Possible Output
%{r} %{g} %{b} 255, 0, 100
Green: %{-4g} Green: ---7
#%{02hr}%{02hg}%{02hb} #00ff00
%{016Br} 0000000000000011

Expansion blocks in format strings always contain a channel specifier (r for red, g for green, and b for blue). Additionally, they can contain an optional number format specifier (h for lowercase hexadecimal, H for uppercase hexadecimal, o for octal, B for binary, and d for decimal) and an optional padding specifier consisting of a character to use for padding and the length the string should be padded to. We can use these rules to decode the above example string:

  %{016Br}
    | |||
    | ||`- Channel (red)
    | |`-- Number format specifier (binary)
    | `--- Padding length (16)
    `----- Character to use for padding (0)

In the output, we get the contents of the red color channel formatted in binary and padded with zeroes to be sixteen characters long.